A Personal History of Microcomputing (Part 1)

[All the parts in this history]

I started writing this several years ago, never finished it...  stumbled across it just now and I thought maybe if I post this I'd be motivated to write more.

This is of course just my perspective and it's probably wrong in places, but it is my perspective.  So there you go.  Lots of fun memories.  Hope you enjoy. 

[You can also tweet me @ricomariani, cheers.]

A Personal History of Microcomputing

I can’t possibly cover this topic in anything like a detailed way and so you may ask what I’m doing trying to write down this little paltry bit of history.  Well for one thing I’m not going to be able to remember it forever and inasmuch as this is my history I’d like to record it before I forget.  But that’s not usually a good enough reason for me to do anything so I should add that another reason, perhaps the main reason, is that I’m so very, very, tired of hearing other made up histories that forget so much of what happened, even fairly simple things, and that attribute important bits of progress to all the wrong people.
So while I can’t write about everything I can write about some things, some things that I saw and even experienced myself.  And I hope that some of those things are interesting to others, and that they remember, too.
The first things I remember
I’m writing this on 11/1/2012 and I’m about to try to go back in time to the first relevant memory I have of this industry.   I’m fairly sure it was 1975, 5th grade for me, and I picked up a book from our school library that was called “Automatic Data Processing” or maybe it was “Automated Data Processing”.  I checked that book out of the library at least 3 times.  I never read much of it.  I’m not sure what it was doing in a grade school library.  I remember one cool thing about it was that it had a little decoder chart for the unusual symbols written at the bottom of personal checks.  I know that I tried to read it cover to cover but I didn’t have much success.  I guess I shouldn’t be too astonished, I was only 10 years old at the time.
The reason I bring this up is that in many ways this was what computer science was like at the time.  It wasn’t exactly brand new but it was perhaps the province of very large businesses and governments and there wasn’t very much that was personal about it, except for those magnetic ink markings on personal checks.
I did not know then that at about the same time in 1975 a small company called Microsoft was being founded.  I did not know that Intel had produced some very interesting silicon chips that would herald the first microcomputer.  I don’t think anyone I knew had a Pong game.  I had a Brother personal electric typewriter which was a pretty cool thing to have and that was the closest to word processing that I had ever experienced.  I didn’t use anything like white-out on account of I couldn’t afford it.
I was a lot more concerned about the fact that Canada was going to adopt the metric system than I was about any of these things.  The computer technology on Star Trek (which I saw in reruns) and The Six Million Dollar Man seemed equally reasonable to me.  I wasn’t old enough to think Erin Moran of Happy Days (Joannie) was really cute but I soon would be.  That’s 1975.
People Start Experiencing Computers
If you ever saw an original MITS Altair 8800 you would be really not impressed.  I mean so seriously not impressed that even McKayla Maroney could not adequately capture this level of unimpressedness (but I know someone who could :)).  If I had to pick, in 1975, goofing around with an Altair and vs. playing around with a hand-wound copper armature suspended on a couple of nails to make a motor, the motor would win every time.  And I think more important than that, a few thousand people actually experienced the Altair.  The Altair did not take North America or the world by storm.  In fact you could live your life just fine and not be aware of their existence at all and that is certainly where I was.
However, there were lots of things starting to become normal and even common that were foreshadowing the personal computer. 
I think I first noticed it happening in watches.  You remember the kind, well there were two kinds really, the first kind was the type where you had to push a button and an LED display would then tell you what time it was?  This was important because of course you couldn’t have the LED display on all the time as it would run down the battery far too quickly.   Which meant glancing at your watch was right out -- you needed that button.   I think there was a commercial where a fellow was fencing and trying to see what time it was and it wasn’t going so good because he had to push the button.  I’m not sure why you would need to know what time it was while fencing but it did make the point dramatically that you had to push a button. 
The other type of watch was LCD, and I suppose the fact that you can still get LCD watches today and not so much LED (but they are making a comeback as flashlights) speaks volumes.  These devices had rudimentary features that allowed them to do their jobs.  They were not in any way generally programmable, at least not by end-users.  But groundwork was being laid.  You could do an entire volume on just wearable computers.
I only knew one person with an LED watch, but I knew a lot of people that had assorted LED games.  You might want to stop and think about that.  We’re talking about a game here where the primary display is a few 8 segment LED clusters, the same as you found on calculators and such.  These games were very ambitious indeed claiming to be things like football simulations.  An Xbox 360 these are not and Madden Football was many, many, years away.  But somehow the up-and-down dodge-the-barely-moving-bad-guys football experience, punctuated by the crisp sound of what had to be piezo-electric crystal powered sound was pretty impressive.  As was the number of batteries you had to sacrifice to the thing.  Now to be sure I never took one apart and I wouldn’t have known what a piezo-electric speaker was at the time anyway but I’d bet you a nickel those games were powered by a simple microprocessor and some ROM.  They made more of a cultural dent than the Altair.   And they were more accessible than say Pong, which was present but hardly ubiquitous itself.
I’ve completely glossed over calculators at this point.  And maybe rightly so; even a four-function-doorstop of a calculator with no “memory” function was sufficiently expensive that you were unlikely to encounter them.

And much was I was down on the Altair, within a few years, another Intel based computing system would become much more popular – Space Invaders.  Which for many of us was the first “non-pong-like game” they ever experienced or were inspired by.

In summary, I think it’s fair to say that at this point, the late seventies, you could still be excused if you had never touched anything like a microcomputer.  But that was likely to change soon.

My First Computers

I was taking an math enrichment program in junior high school and though our junior high didn’t have a computer, there was this HP minicomputer that made the rounds.  I’m not sure what it was exactly but I’ve looked at some pictures and specifications and I’m pretty convinced that it was an HP Model 9830A with the thermal printer and card-reader options.  We mostly fed it cards even though it had a console.  The thing was at our school for an entire two weeks, and we spent the week before it arrived learning flowcharting and BASIC.

I was totally hooked.  I stayed late at school every day the thing was there and then kept writing programs I couldn’t even run anywhere on paper pads the whole rest of the year.  So in the 9th grade I made a major right turn career wise and I signed up for computer science classes in high school which I otherwise likely would not have done.

As I started 10th grade in the fall of 1979, I landed in a classroom that had three, count’em, Commodore PET microcomputers and one Radio-Shack TRS80.  I’m not sure why the “Trash-80” was unpopular, it’s actually a formidable device in own right but for reasons lost to history the PETs were what everyone really used.   I knew this was going to be a cool class when I walked in because I’d seen a PET on “The Price Is Right” so it had to be awesome.  I still remember my first day looking at one of those things, the teacher had it up front and was reviewing some basic commands and I was hypnotized by the flashing cursor. 

I worked on those computers at great length so I can tell you something about them and maybe something about the software eco-system they had.  The “PET 2001” was powered by a 6502 processor and had 8k of RAM (with famously 7167 bytes free for you at startup), and 8k of ROM for BASIC and I/O support.  Plus another 1k of RAM for video memory.  The IO system was not especially complicated, like most of the era it was just memory mapped IO and it was enough to read in a keyboard, and talk to the built-in cassette tape drive.  There was support for IEEE488 in the initial version but it didn’t work due to bugs, except for this one printer which included built in workarounds for the bugs.   IEEE488 “actually worked” in the 2001N series.

However, even on that original 8k PET you could do some pretty cool things.  The ROM included built in BASIC and so there were a variety of games and it was not that hard to make your own, and we did.  I was perennially working on a version of Space Invaders and then Asteroids.  It was always mostly working.  There were dozens of race track style games, some even first person.  There was a cool monthly digital magazine, “CURSOR” that had something new and slick every issue.  I remember hacking on the model rail simulator with special zeal.  There were decent chess programs, and even more, less decent chess programs available if you were willing to type them in yourself.

But what about practicality?  Even that computer, such as it was, could do word processing for you.  By the time I started using them, WordPro3 was already available.  I think they even had features that allowed you to print while you were still making edits!  Amazing!  You could insert new lines where you pleased and even copy text from one place to another without requiring you to travel forward in time to the Macintosh era.  In fact every microcomputer worth mentioning, with anything like a general purpose display, could do these basic functions.  They certainly were not peculiar to the PET.

If you wanted high quality sound, why, naturally you would attach a breadboard with about a dozen suitably sized resistors and an OP-AMP to your parallel port and then you could mix 4 sources and enjoy high quality 8-bit digital to analog sound playback.  Your experience is limited only by the quality of your resistors!  Naturally your playback program included 6 bit precision wave tables for sine waves that you could sample/mix to get your four voices because none were built in.  For bonus points add an FM modulator to your circuit and you could listen to it on your FM-radio at the frequency of your choice instead of attaching a speaker.   Of course stereo wasn’t possible on account of there weren’t enough output pins on the parallel port for 16 bits.

Of course if you wanted to just hear some variable pitch “beeping” and make music like that, that was easier.  You could just crank up the shift rate on the output port designed to be part of a UART (the CB2) and vary the shift rate according to the music.  The preferred way to hear that was to attach an alligator clip to the port with electric tape on the bottom teeth so as to not short it out (because the signal was on top and connectors were far too expensive) and then connect that to a suitable speaker.  This technique was popular in games because it didn’t tie up the processor shifting out waveforms.

My electronics teacher had an even simpler 6502 computer system that became the first thing I ever brought home.  The KIM-1 came with an impressive array of books on the 6502 architecture, which I was especially excited about because I wanted to learn to program the PET in Machine Language (the capitals were evident when we said it) and of course they had the same microprocessor.   But the really cool thing was Jim Butterfield’s “The First Book of KIM” which was simply outstanding in terms of having cool little programs that did something and taught you something. 

The KIM had a display that consisted of six 7-segment LEDs.  That’s it.  Enough to show the address and contents of a single byte of memory in hexadecimal.   On that display you could play a little pong type game, Hunt the Wumpus, navigate a star field, simulate a lunar landing, and more… if you were willing to enter the programs with the little calculator tablet.  With only 1k of memory you could be on a first-name basis with every byte of your program and indeed you pretty much had to be.  But then, that was the point.  And the KIM’s exposed guts encouraged even more hardware hacking than the PET did, so we soon had interesting keyboards attached and more. 

Still, I don’t recall ever doing anything especially practical on the device, it was a lot of elaborate playing around. It was an excellent training area and I suppose that’s what it was designed for more than anything else so I shouldn’t be surprised. 

The 6502 training was useful and soon I was squeezing programs into the spare cassette buffer of the PET like a champ.  Hybrid BASIC and assembly language programs were pretty common, whereas full assembly language programs often had nothing more than an enigmatic listing

10 SYS(1039)

The hybrids often had little SYS 826 and friends sprinkled in there.  So while a working knowledge of machine language helped you to understand a few more snippets of PETTREK, really the more interesting thing you could do with it is learn a lot more about how your computer worked.

Remember the PET had only 8k of ROM, which was actually a lot compared to its cousins, but still not so much that you couldn’t disassemble every last byte and then start pretending to be the CPU starting from the reset vector.   From there it wasn’t too long until you had figured that JSR $FFD2 was used to write a character and even why that worked.  Those ROMs were full of great techniques…