Discussion
VisiCalc reconstructed
bonsai_spool: Are there good command-line interfaces for spreadsheets? I don't do anything super financially-important and I'd prefer to stay in the terminal for quick editing of things, especially if I can have Vi keybindings.
rauli_: I actually created one for some time ago. It's nothing special but it has Vi keybindings.https://github.com/RauliL/levite
vslira: This is brilliant! Thank you for creating it
afandian: Quote: #define MAXIN 128 // max cell input length enum { EMPTY, NUM, LABEL, FORMULA }; // cell types struct cell { int type; float val; char text[MAXIN]; // raw user input }; #define NCOL 26 // max number of columns (A..Z) #define NROW 50 // max number of rows struct grid { struct cell cells[NCOL][NROW]; }; I doubt that 171 KB of static allocation would fly on an Apple II! I do wonder how they did memory allocation, it must have been tricky with all the fragmentation.
vidarh: According to Bob Frankston, Bricklin's co-founder[1]:> The basic approach was to allocate memory into fixed chunks so that we wouldn't have a problem with the kind of breakage that occurs with irregular allocation. Deallocating a cell freed up 100% of its storage. Thus a given spreadsheet would take up the same amount of space no matter how it was created. I presumed that the spreadsheet would normally be compact and in the upper left (low number rows and cells) so used a vector of rows vectors. The chunks were also called cells so I had to be careful about terminology to avoid confusion. Internally the term "cell" always meant storage cell. These cells were allocated from one direction and the vectors from the other. When they collided the program reorganized the storage. It had to do this in place since there was no room left at that point -- after all that's why we had to do the reorganization.> The actual representation was variable length with each element prefixed by a varying length type indicator. In order to avoid having most code parse the formula the last by was marked $ff (or 0xff in today's representation). It turned out that valid cell references at the edges of the sheet looked like this and created some interesting bugs.[1] https://www.landley.net/history/mirror/apple2/implementingvi... and https://news.ycombinator.com/item?id=34303825
zie: There is SC and now sc-im: https://github.com/andmarti1424/sc-imYou can also literally run Lotus 123 if you want. Someone has binaries to make it work on linux. or under dosemu
freedomben: Neat, thank you! sc-im looks amazing, and it's even in the Fedora repos (though the repo version doesn't support xlsx, so I'll compile myself and try it out)
breadsniffer: Anyone know what kind of departments/parts of business were the first adopters of visicalc?
ivanpribec: Reminds me of spreadsheet-fortran (https://github.com/lwsinclair/spreadsheet-fortran), a project creating a VisiCalc lookalike in FORTRAN 66, which even runs on a PDP-11.
khazhoux: I’m genuinely worried that we’re the last generation who will study and appreciate this craft. Because now a kid learning to program will just say “Write me a terminal spreadsheet app in plain C.”
TMWNN: Accountants, and individuals within all kinds of businesses (what we today would call shadow IT). Imagine something like this:* Person who deals with numbers all day goes to a computer store to browse.* He sees VisiCalc, and immediately understands what it can do. It *blows his mind*.* He wants to buy it right away. Pays for $2000 Apple II computer with disk drives to run $100 software; price is no object.* Shows friends and colleagues.* They rush to computer store. Repeat.