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.
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 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.
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
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.
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 :-) :-(.
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":
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.
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.
55 comments
[ 4.6 ms ] story [ 109 ms ] threadhttps://web.archive.org/web/*/http://www.bricklin.com/histor... is an impressive run
Also, the link to other history sites is very enticing.
In short, thanks for providing me my next set of rabbit holes!
https://lock.cmpxchg8b.com/spreadsheet.html
I'll have to check out sc-im. You had me at CSV!
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.
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.
https://en.wikipedia.org/wiki/HP_95LX
It's arguably still better to this day at being a portable spreadsheet computer than phones.
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.
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.
/FileRetrieve, /DataTable.
http://www.trs-80.org/visicalc/
There can only be one "original".
"The original VisiCalc program that ran on the IBM PC in 1981 still runs on today's PCs."
https://www.merriam-webster.com/dictionary/original
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”.)
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".
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.
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.
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 :-) :-(.
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...including every version of Excel.
I guess it ran on 1999 PCs but not 2022 PCs. It won't run for me on Windows 10.
Runs fine in DOSBox. Left it open, he'll be so excited when he gets home from school!
https://github.com/otya128/winevdm
(AFAIK FreeDOS has better support for modern PCs than MS-DOS though you might find some that also boot MS-DOS)
It is certainly an interesting format, and Excel completely mangles the data (whether it was intentional is up for debate). For example, the value
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 did this with WordPerfect for DOS thanks to a guide posted here years ago https://blog.cmpxchg8b.com/2020/09/finding-console-word-proc...
https://archive.org/details/VisiCalc_1.74A_1980_Software_Art...
Keys:
It was a really cool project which allowed me to understand the insides of spreadsheets.