55 comments

[ 4.6 ms ] story [ 109 ms ] thread
Interesting read, and I look forward to playing with the program later!

Also, the link to other history sites is very enticing.

In short, thanks for providing me my next set of rabbit holes!

But if you actually need a simple spreadsheet, then Google probably has you covered (and yes, I know we all hate google).
...or if you need one that works in a terminal, I've got you covered :)

https://lock.cmpxchg8b.com/spreadsheet.html

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.

I'll have to check out sc-im. You had me at CSV!

>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.

There's also Teapot, with FLTK or ncurses-based UI: https://kmandla.wordpress.com/2010/08/11/how-to-use-teapot-l...

Archived homepage of the project: https://web.archive.org/web/20211124073408/https://www.synta...

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.

transformer calculator: https://ludens.cl/Electron/trafos/trafos.html

I was successful in that I was able to put the logic in what would have been a ten line program into, well, this 150 line monstrosity.

same transformer calculator as a view: https://pastebin.com/xyDeAV7R

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.

Most of my spreadsheets are long lived, I wouldn't want to risk tying them to something ephemeral like a Google account.
If only it was Lotus 1-2-3, it would all come rushing back.

/FileRetrieve, /DataTable.

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.

http://www.trs-80.org/visicalc/

(comment deleted)
This article needs to make up its mind about which VisiCalc is "original". The 1979 Apple II one, or the 1981 IBM PC one.

There can only be one "original".

article says:

"The original VisiCalc program that ran on the IBM PC in 1981 still runs on today's PCs."

There was no VisiCalc program that was both original, and that ran on the IBM PC in 1981.
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 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 :-) :-(.

Some of the early spreadsheets had an option to NOT to "realtime" recalculation - you'd make your changes and then call a calculate.

This comes in useful with large spreadsheets and multiple cell dependencies.

IIRC the move to the "current" live evaluation allowing back-references was a major selling point for Excel.

> Some of the early spreadsheets had an option to NOT to "realtime" recalculation - you'd make your changes and then call a calculate.

Some of the early spreadsheets...including every version of Excel.

>still runs on today's PCs

I guess it ran on 1999 PCs but not 2022 PCs. It won't run for me on Windows 10.

Tried it on my kid's gaming PC just now. Windows 10 complains about it not being 64 bit.

Runs fine in DOSBox. Left it open, he'll be so excited when he gets home from school!

Runs on "today's" PC with a 32 bit Windows
Should run on a floppy with FreeDOS :-P

(AFAIK FreeDOS has better support for modern PCs than MS-DOS though you might find some that also boot MS-DOS)

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":

    1,0
    "=""0.3"""

 [1] https://atariwiki.org/wiki/attach/VisiCalc/DIF_Technical_Specification.pdf
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

I did this with WordPerfect for DOS thanks to a guide posted here years ago https://blog.cmpxchg8b.com/2020/09/finding-console-word-proc...

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.
Given how short it is, I wonder if someone's got an annotated disassembly.
Remember: To quit, use "/SQY" (Storage, Quit, Yes).
/SQY .. ah, the Q.E.D of the early 80s.
(comment deleted)
The most important app in PC history.
The first killer app. It made the Apple II a must-buy.
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.

Ah, the power of the /. My fingers fell right back into those patterns.