Visicalc on your iPhone
November 19, 2012 7:50 AM   Subscribe

Dan Bricklin, father of the spreadsheet, discovers VisiCalc running in a JavaScript emulator of an IBM PC 5150.

Runs in Android and iOS. Clock limited to 4.77 MHz.
posted by backseatpilot (34 comments total) 12 users marked this as a favorite
 
This is just to say

Dan Bricklin
is my friend's dad,
and took us out
for Chinese food
once.
posted by subtle-t at 7:53 AM on November 19, 2012 [11 favorites]


I was terrified this was an obituary. Yay spreadsheets!
posted by These Premises Are Alarmed at 7:55 AM on November 19, 2012 [4 favorites]


To run the software in the "emulator" link:

-Let the emulator boot up.
-Skip through the date/time prompts to get to the A> prompt.
-From the drop down menu at the bottom of the window, select "VisiCalc" and press the "Load Drive" button
-Type "VC" into the A> prompt and press enter.
posted by backseatpilot at 7:57 AM on November 19, 2012 [1 favorite]


I just did a virtual reformatting of the virtual floppy disk used to boot the virtual IBM PC.

Now it's virtually useless.
posted by RonButNotStupid at 7:58 AM on November 19, 2012 [9 favorites]


so, it doesn't seem to recognize an '=' sign. So presumably functions are written differently in Visicalc?
posted by leotrotsky at 8:01 AM on November 19, 2012


If you want to play adventure, you'll need to put the virtual floppy in drive A:, then reboot (ctrl-alt-delete)
posted by eriko at 8:06 AM on November 19, 2012


I just did a virtual reformatting of the virtual floppy disk used to boot the virtual IBM PC.

Hah! I did the same thing. Too bad there's no emulated hard drive, since I still remember how to do a low level format. Debug g=c800:5.

Good times. Good times.
posted by bondcliff at 8:06 AM on November 19, 2012 [1 favorite]


I am pretty sure it is the same Jeff who got a shoutout from Raymond Chen last week during Chen's writup of his ridiculous MS Money Patch. When Raymond Chen says "I mentioned that this patch made me feel like my retired colleague Jeff, who had a reputation for accomplishing astonishing programming tasks in his spare time", you must be some kind of goddamn wizard.
posted by Ad hominem at 8:10 AM on November 19, 2012 [3 favorites]


Chen's writup of his ridiculous MS Money Patch

"Money Sunset Deluxe" might be the best name for a software product ever.
posted by scose at 8:30 AM on November 19, 2012 [3 favorites]


Wow, just watching the directories print out by typing DIR is kind of a nostalgia trip. That specific font, displaying a dir /w at that specific speed, reminds me of how absolutely fascinating and mysterious those early machines were, back before anyone really knew anything. We had no idea the PC was a pile of shit in an incredibly well-built case, with a great keyboard, much less that the pile of shit would go on to rule the world. Back then, shitty or not shitty, all computers were kind of cool.

Well, except the PCjr.
posted by Malor at 8:31 AM on November 19, 2012 [3 favorites]


I am pretty sure it is the same Jeff who got a shoutout from Raymond Chen last week during Chen's writup of his ridiculous MS Money Patch.

Yup. Here's the Challenger 1P simulator that Dan mentions.

When Raymond Chen says "I mentioned that this patch made me feel like my retired colleague Jeff, who had a reputation for accomplishing astonishing programming tasks in his spare time", you must be some kind of goddamn wizard.
'Jeff corrected me. "If this was something I used to do before coffee, that probably meant I was up all night. Persistence >= talent."'
I like this guy.
posted by zamboni at 8:59 AM on November 19, 2012 [2 favorites]


Well, except the PCjr.

Guess which one my dad bought.
posted by ChurchHatesTucker at 9:01 AM on November 19, 2012


Fabrice Bellard (qemu creator, French super-duper-hacker) did something similar last year. http://bellard.org/jslinux/
posted by gen at 9:20 AM on November 19, 2012 [1 favorite]


> Well, except the PCjr.

Lady I know just bought an imac. Chicklet keyboard. Plus ca change.
posted by jfuller at 9:29 AM on November 19, 2012


Yeah, but you can actually type on Apple keyboards. They look like those old crappy ones, but they're very comfortable to work with.

The PCjr? Not so much.
posted by Malor at 9:37 AM on November 19, 2012


No, as a Model-M hoarding keyboard snob, I can attest the new Apple keyboards are among the best they've ever built in terms of key feel. I can zip right along on it, just a little slower than with the buckle-spring key switches, with fewer typos than traditional keyboards - the "chicklet spacing" lends itself to my no-look hunt-and-peck typing style. Some folks may be put off by the lack of an incline, tho - I can't imagine it's very RSA friendly.
posted by Slap*Happy at 9:42 AM on November 19, 2012


The nostalgia this invokes almost literally hurts.
posted by Doofus Magoo at 9:43 AM on November 19, 2012


so, it doesn't seem to recognize an '=' sign. So presumably functions are written differently in Visicalc?

You just type the number, label, or formula and it auto-recognizes whether it is a 'value' or 'label'. 'Value or 'Label' will show up near the upper left corner as soon as you start typing. So type 12 + A1 and it will show label and the cell result will be to add 12 to cell A1.

However:

- Cells starting with a digit or +- etc. are auto-recognized as Value--force a cell to be recognized as a Value by starting with +. So +A1+A2 will add those two cells.

- Cells starting with a letter are auto-recognized as Label--to force a cell to be recognized as a Label start with a quotation mark ". So "12+3 will be recognized as a Label (ie, a text string), not a formula.

Functions start with @, so @SUM(A2.A10), @MAX(A2.A10), @SQRT(A1) etc.

Commands start with /, so /C clears the sheet, /IR inserts a row, /P prints, /SS saves the file, etc.

I'm not sure how to (or if you can!) edit an existing function or label.

Complete instructions dating from 1984 here.
posted by flug at 9:51 AM on November 19, 2012 [4 favorites]


It's kind of funny, typing in a 2012 date at the prompt. I'm not even lying!
posted by Malor at 9:51 AM on November 19, 2012 [2 favorites]


I'm not sure how to (or if you can!) edit an existing function or label.

Answering my own question, you select the cell you want to edit, then /E, then edit away.

Also, one of the slickest features of Visicalc is that you don't have to type in cell names. For instance, just type + and start moving around with the arrow keys. It auto-enters the cell name for you, of whatever cell you arrow to.

Of course, all modern spreadsheets have that feature--but it is pretty damn slick for 1979.

Complete VisiCalc80 user manual (for the HP 86/87) is here. It is quite entertaining in several different ways--for instance, several carefully illustrated pages showing in detail how to use the backspace key.

We forget how groundbreaking and new some of these things were, like the backspace key and being able to move the cursor around freely using the arrow keys.

Just for example, I remember watching a demo of the brand new Apple Pascal system back in maybe 1979. They came to a point where a Pascal program let the user enter a string, which in this case was a sentence or two long. "And if you make a mistake while entering the text and need to correct it, here is how you do it!" followed by about the most convoluted and error-prone procedure you could possibly imagine--type a special character, then type all the previous characters you wanted to delete backwards, then type the new corrected version, etc etc etc. And if you make a typo in all that long convoluted process all you had to do was to repeat the whole process ad infinitum. They had forgotten to implement the arrow keys and good old backspace in Pascal's text input routines, and kludgy replacement was death on wheels . . .

All hail the arrow keys and backspace!
posted by flug at 10:37 AM on November 19, 2012 [3 favorites]


> Clock limited to 4.77 MHz.

Screamer! The Apple II, for which visicalc was first written, ran at 1 mHz.
posted by jfuller at 10:52 AM on November 19, 2012


Yes, but the 6502 at 1Mhz was very comparable to the PC at 4.77Mhz. The PC's big advantage was more memory, but the architecture was so brain dead that it was barely faster. Well, unless you added a math chip, which was appallingly expensive.
posted by Malor at 11:21 AM on November 19, 2012 [4 favorites]


FWIW the summer of 1982 I worked as a (civilian) intern for the Air Force in an engineering group. They had two PCs, one an IBM 5150 and the other a dual boot MS-DOS/CPM machine, something like the Victor 9000.

The dual boot machine was remarkable--if I recall it had two different CPUs and would boot to either one depending on which boot floppy you used. However we had dreams of interfacing between CPM and MS-Dos, or maybe transferring data or programs between the two, and THAT never worked at all. A lot of the IBM PC programs wouldn't work on it, either.

Since nobody really knew how to use either one, I spent most of the summer hogging them both to write a massive IBM BASIC program to do something or other. I'm pretty sure nobody else even touched any of it after I left. And it most have been something ultra top secret because EVEN I can't remember what it was all about 30 years later. But--the joy of programming with edlin, that I remember! It was similar to the joy of Apple Pascal readln (which I mentioned above), but multiplied by a multi-hundred line complicated/convoluted BASIC program with some very long lines to edit and re-re-re-re-re-type, character by character . . .
posted by flug at 11:25 AM on November 19, 2012


Well, the PC had one other big plus, beyond supporting a lofty 640K. (in theory, mind, because nobody could afford 640 entire K of RAM. What, are you made of money over there?)

Because it was a 16-bit processor, it dealt in memory pages that were 65,535 bytes long, instead of the 255-byte pages in the 6502. It's a lot easier to program in the larger chunks. Easier, however, is not easy: the 64K segmented memory model was probably the biggest complaint about x86.
posted by Malor at 11:30 AM on November 19, 2012


Ad hominem:
"his ridiculous MS Money Patch"
As one of the five remaining users of MS Money, I appreciate this.
posted by charred husk at 11:35 AM on November 19, 2012 [1 favorite]


This is getting me even more excited about 0x10c, the new space game from the Minecraft creator where the spaceships all run on a fictional 6502-like chip from 1988 called the DCPU-16. The game hasn't been released yet, but the CPU specs (as well as specs for various pieces of hardware, including a holographic display) have. A community has sprung up around it, with scads of emulators and developer tools already out there.

I'm a huge nerd, but I'm about thirty years old, so 16-bit CPU assembly is a bit before my time- I was hugely into BASIC at the time, owing largely to the Vic-20 my parents bought when I was born. By the time I advanced to the level of competency where I'd be writing robust code, 32-bit CPUs were everywhere and C++ was ascendant, so I learned the higher-order way of things. I tried to learn 486/DX assembly but oooof- I can't even imagine what fresh hell it would look like on an 64-bit Quad Core.

Reading over the DCPU specs, Assembly finally makes sense- I feel like I'd be heavily into it if I were five to ten years younger or my parents weren't big on buying new computers every few years. I'm looking forward to hacking together some cool shit and learning more about the roots of the hobby I love despite growing up in a more system resources post-scarcity culture.
posted by maus at 2:10 PM on November 19, 2012


Back then, shitty or not shitty, all computers were kind of cool.

I have a confession to make.

When I was in kindergarten I went over a friend's house and we played games on his parents' Apple IIc. The whole time I kept saying over and over that "my Dad has a real computer", which at the time was an IBM AT, though I didn't know that. I only knew that the Apple IIc was made of plastic and had games with color graphics on it, whereas my Dad's computer had an amber display, didn't have any games, and was used for serious work, and I was enough of a little snot to remind everyone of this.

I was an IBM youth.
posted by RonButNotStupid at 2:56 PM on November 19, 2012 [2 favorites]


Wut no Multiplan?
posted by charlie don't surf at 3:21 PM on November 19, 2012


This is a good thread.
posted by JHarris at 3:33 PM on November 19, 2012


the 6502 at 1Mhz ...

IIRC, no 6502 instruction took more than 4 clock cycles. At 1MHz That's >= 250,000 instructions/second. The most used ops were 1 or 2 cycles. The C64 could run 20 copies of a fairly complex math-driven animation in the "window" of a C64 (all "drawn" in RAM, no video card) without glitching. I wonder if javascript can do that yet.

Best of all, with the whole OS in ROM ... no updates, no re-installs.
posted by Twang at 3:35 PM on November 19, 2012 [1 favorite]


Javascript in current browsers is very, very fast. I would be absolutely shocked if it couldn't outstrip a C64 by many times in terms of processing and output capacity.

It might even be able to emulate a 64 well enough to do that. Maybe. They're saying 80MHz x86 emulation in Javascript, on a 3.4Ghz Sandy Bridge chip, so that's probably enough extra overhead to do a 1MHz 6502, plus the 64's video and sound chips.
posted by Malor at 4:44 PM on November 19, 2012


Another thought, a fair bit later:

Best of all, with the whole OS in ROM ... no updates, no re-installs.

Worth pointing out, perhaps, is the the 64 had 4K of system routines, and then another 8K of ROM devoted to BASIC. And then the 1541 had a whole 'nother 6502, with 16K of ROM; the firmware on the 1541 was bigger than on the main computer.

The BASIC ROM was just an interpreter that could run BASIC programs, but could also load and run straight binaries. The 4K of system ROM offered no arbitration, no hardware abstraction, and only a few tiny callable library routines, for doing stuff like printing text and scrolling the screen, so you didn't have to roll the code yourself.

So, sure, no updates or re-installs, but no OS either.
posted by Malor at 7:02 PM on November 19, 2012


A few weeks ago I got a text message from an unknown number. "Is this still deo rei? Z." it said. I knew a couple of Z's, but this terse message could only have come from one person: my old friend Z. I hadn't spoken to him in years. I sent back: "Yes. This [Z's last name]?". He replied: "Yes. If you want you can come pick up your Atari ST. I have to get rid of it." He had borrowed the ST from me some seventeen years ago. Now he needed to get rid of it. I wondered why. Did he get into trouble with the landlord? It wasn't unlikely. We had lost touch over the years but we used to be very close. He was the kind of person who could never come to any kind of understanding with the world or any part of it, except for music. We used to have all-night sessions listening to records and drinking tea, without speaking much. We tried to understand the world through music. Later we drifted apart. Was he clearing out old stuff to make room for the new? Did he change?

I picked up the computer the next day. When I got home I plugged it in and reached for the power switch on the back of the machine. My fingers recognized it immediately. I had done so much programming on that machine, an obsession that later became a job and then a source of apprehension. I turned it on. It came to life with a little whirr and then it booted into the desktop. It whirred a bit more, the mouse cursor flickered a few times, and then it just sat there. No welcome screen. No friendly instructions. No branding except for a small Atari logo in the top left corner. Everything had changed since that machine first appeared on my desk. Promises had been made and broken. Dreams had been found and lost. Friends had become acquaintances and then memories. But the machine hadn't changed. It just sat there waiting for me, like the day I first took it out of the box, my hands trembling with excitement. I drank a cup of tea before I turned it off. Machines have no sense of ceremony.
posted by deo rei at 3:52 AM on November 20, 2012 [4 favorites]


Commodore questions?

- The fastest instruction on the C64 is NOP, which takes two cycles. There are several other two-cycle instructions, mostly those that operate immediately on a one-byte operand with no further addressing required.
- The slowest (documented) instructions tend to be complex instructions that use Absolute,X addressing, some of which take 7 cycles. (If they used (Indirect,X) they'd take even longer, but the slowest instructions don't explicitly support that mode.)
- The C64's default memory map has two 4K units of ROM banked in, one for BASIC and one for the Kernal, but the two rely on each other and make calls between chips.
posted by JHarris at 11:38 AM on November 20, 2012


« Older I'm not a scientist, man.   |   "challenging Casanova" Newer »


This thread has been archived and is closed to new comments