Software Arts published an official technical specification of the DIF file format in 1983. [1] (to save a file in the DIF format, /S#S in VC)
It is certainly an interesting format, and Excel completely mangles the data (whether it was intentional is up for debate). For example, the value
1,0
"0.3"
represents the literal string 0.3 in VisiCalc (the 1,0 indicates that the next line is a string). Excel ignores the typing and tries to parse as a value, interpreting it as the number 0.3. Like with CSV, there's an awkward formula workaround for generating a file with the text "0.3":
I seem to remember that VisiCalc didn't follow the dependency graph among cells; it evaluated across the rows and columns something like left to right, top to down.
That could work reasonably well, even in a new spreadsheet today. At worst you may need to iterate where the graph would settle everything in one round and you don't have to think about circularity since you're already having to iterate on acyclic situations.
Spreadsheets are often structured to mimic the flow of calculations in paper documents: top down, left to right data flows. A spreadsheet whose cells never reference anything to the right or below would calculate in one round.
Yep... there wasn't enough code or RAM to do anything fancy. If you had a spreadsheet of any real complexity (i.e. much more than a screen worth) it was not unusual to disable auto recalc as things got painful fast on a 1MHz 8-bit CPU.
None of this was really an issue for early adopters whose primary alternative was typically paper, pencil, a [pocket|desk] calculator and a whole lot of writing.
100% remember that one. Still got a habit of checking refresh or not … silly these days but so natural then.
Wordstar, visicalc and dBase II (need z80 and 80 column card to really use them). The office suite begins here.
Still remember to work with one senior user to debug her spreadsheet program (may be 123). No fun at all. In fact we said end user programming is not part of the scope of work. But the word “senior” meant something I supposed :-) :-(.
dosemu2 is perfect for old software like this, it's not just an emulator but has a mode that translates VGA text mode operations into terminal operations so becames almost like a native application in your terminal
Emu2 allows to run 8086 software in text mode too, such as Turbo Pascal: https://github.com/dmsc/emu2 But what I'd like would be to have a Sixel backend for the EGA/VGA modes. Then by just using an xterm, ever over OpenSSH, I could run old retro DOS games under that.
I remember seeing visicalc for the first time in a Radio Shack store on a TRS-80 Model 1, around 1980-1981 and it was so very different than the rest of the very analog world at that time, totally fascinating.
Takes me back to my Uni years (late 90s) were at one point we had do implement a (DOS based) spreadsheet program, all with stack based equation parsing and cell references.
It was a really cool project which allowed me to understand the insides of spreadsheets.
The article mentions that the Apple II version was first. I think it was clear that they are referring to the original IBM PC version, not that the IBM PC version was the original version of Visicalc
Of the VisiCalc programs that ran on the IBM PC, there was an original member of that class, and it existed in 1981.
You are misparsing the sentence, applying “original“ as a modifier to the wrong phrase (“VisiCalc program“ and not “VisiCalc program that ran on the IBM PC”.)
Nope; the parse, though not the only possible one, is perfectly valid.
It's a parse that many readers will make.
Knowing that it's not the right parse requires background information.
Consider "The original Yacc that ran on Version 3 Unix in 1975". Here, background information steers us toward that same parse; we don't think about there having being some previous Yacc.
What also steers the reader toward that parse is that it's the opening sentence of an article. So there is no contrasting frame established such as that different versions of VisiCalc are being compared. The topic seems to be VisiCalc, whatever that is, and evidently the original one ran on the IBM PC in 1981. That's the message.
If something is described as original in the opening sentence, then it looks like the meaning is the main one of "original": unprecedented, new, not derived from anything else. Not like "don't forget your original document in the photocopier".
I'm pretty sure OP meant the original (first) release for IBM PC, which happened in 1981. I'm not sure if you're being naively pedantic or intentionally obtuse here.
Its most relevant feature seems to be 3-dimensional tables. From the home page: "Instead of the unflexible and complicated syntax used to address the values of cells in traditional spread sheets ("B1" or "R1C2"), teapot uses for a more functional approach: "@(1,2,0)". This results in an easily understandable syntax and despite the very few basic functions, very powerful semantics."
Haven't used it myself but I was quite curious about it a few years ago.
EDIT: Has anybody succeeded in entirely replacing his/her spreadsheet needs with e.g. awk scripts? Seems like a nice exercise in the "first simplify your data structures, then analyze" paradigm.
I have pretty much replaced my spreadsheets with postgres(sqlite would have worked as well, but... I really like postgres) simple calculations end up as views, more complicated ones end up as an external script. a postgres function would work, but I find external scripts easier to manage.
Once, as a sort of programing kata, I wanted to see if I could turn a simple spreadsheet I found on the internet into a view.
Takeaway: the relational database works well to replace the spreadsheet when the spreadsheet is used as a data store, not so much when the spreadsheet is used as a programing language. but for that, the purpose built programing language is far superior.
I used sc to calculate my timesheets for a year or two before migrating to LibreOffice out of convenience. The office manager found it amusing that I'd print off the sc files on a dot matrix printer that was still kicking around, but occasionally I'd accidentally "put" instead of "write" and the .sc listing would come screaming out of the printer for a few pages.
>Perhaps I’ll update this article in 3 months with my experiences and describe any limitations I ran into… or if I gave up and switched to something else.
And? BTW, I've really enjoyed all of your deep dives into DOS software. There is a nostalgia element for sure, but I still think many elements of those UIs were incredibly efficient (e.g. the Lotus 1-2-3 menus system you described) even compared to today.
Thanks! I still use 123 basically daily, It's really grown on me and I can use it very efficiently.
I wrote a display driver to fix a few quirks when using it in a modern terminal (https://github.com/taviso/lotusdrv), but once that was working I don't really have any complaints, it really works beautifully.