Programming on Early Microcomputers: A Retrospective
Pre-IBM personal computers were a unique bunch, even for the times. How we progressed to what we have today is a journey that started with the Altair and IMSAI.
Put down the iPhone for a second, and consider what computing was about when it wasn’t all linked up like it is today. When machines needed to do stuff all by themselves, with no supplemental resources available to them. When local storage was all there was to be had.
That is the context of the early machines: computers that blazed a path (which I think was not clear at the time even to their creators) for how people could use small machines, which we ever-so-preciously called microcomputers (compared to minicomputers such as the DEC VAX, which were all the rage in geek circles). These were the experiments that lead to the mainstream forms of personal computing that followed.
Before there could be personal computers, there had to be microprocessors. And to get any useful work done with these, they had to be programmed or they were just lumps of silicon. (Nothing was included with the earliest microcomputers. Nothing.) This took smarts and work. You had to submit to the processor on hands and knees and do everything the way it expected or the doggone thing wouldn’t work at all.
Well, someone did it the right way. The first microprocessor-based machine computer used in a wide way with users was the Altair 8080. It was sold by start-up MITS of Albuquerque, New Mexico who got it on the cover of Popular Electronics (one of the pre-eminent electronics hobby publication of its time), in January, 1975. There seem to be some urban legends about who was involved in the actual Altair design, but it got done.
From the would-be programmer’s view, though, the machines were similar to early automotive products. While the promise of the Altair (and its descendants) to bring computers to a personal level continued to attract hobbyists for years, this puppy had its limitations. Before you could begin doing anything, one had to enter the bootstrap loader programming for it (in octal, yet) through a bank of small toggle switches on the front, and watch the output on a bank of lights on the front panel. The bootstrap loader was a computing concept dated existed back to the IBM 1401. In the 1401, you actually set the word length in memory, then loaded the machine language instructions at these word length boundaries that would startup the computer.
If you had an ASR-33 Teletyper (which cost about $2,000 around then, compared to the $397 for the base Altair kit), you could use it as an input device and a printer. The punched paper tape the ASR-33 used became a storage medium. However, you still had to toggle in the boot loader through switches.
Of course, the Altair’s limit of 256 bytes of program memory (bytes, not Kbytes) made entering instructions somewhat simple.
The reality of programming a machine of this kind was that you worked with the hardware much more directly than with the current generation of computers. No software development layers (such as, say, an operating system) were available to the programmer. The lack of tools meant that most programming had to be based on Assembly language which could directly accessed the microprocessor’s register hardware. That was much more efficient than even something like Tiny BASIC. Tiny BASIC needed to access assembly-level structures in order to even run.
Faced with ASR’s hardware unavailability— a new one took over a year to show up after placing an order — MITS came up with an interface that worked with cassette tapes. The tapes, primarily used at that time for music, were easy to purchase. This tape interface worked well and became very popular due to its relatively low cost and reliability. And most people already probably had a cassette player available somewhere. Bad loads could happen, for sure; but in most tries it did work.
Most people who bought Altairs had some sort of memory board added onto them so that the computer could actually do something useful. 4Kbytes was the minimum to run the Tiny BASIC programming language (even though Tiny BASIC only used 2K of memory), with 12K of memory needed for Extended BASIC.
Now, “something useful” was a big concept in these times. Just making a computer run was the first step, of course. But then, getting something you needed done with the computer (like solve some problem) was much harder. You had to analyze whatever the problem was, express it in the BASIC language, then find a way to store the results for analysis. Altairs let you see the possibility of actually having problems solved, if you worked at it – though memory and storage were major constraints. I could argue that this problem forced most developers to think through their programming in detail, and that it was a good thing. So was the need to build the hardware oneself; it helped developers understand the relationship between the software and the machine, so “software performance” was intimately tied to the process.
Of course, others were hot on MITS’s tail.
The next microcomputer effort of note was the IMSAI 8080. It featured the same microprocessor as the Altair; and, more importantly, it used the same S-100 bus developed by Altair. Adoption of the bus was greatly encouraged by its’ use in the IMSAI. It gave the hardware designers a standard to jump on for the specialized boards they would make, and these boards would then not have to be tied down to one specific machine manufacturer. S-100 adoption was a way to connect the boards to a machine no matter the maker of the computer. The board makers wanted that to happen in a very bad way, and probably was among our first examples of PC industry standardization. So it did.
S-100 was by no means a perfect standard, as further development of bus protocols would show. XMODEM, a protocol developed by early telecommunication pioneers, shared that attribute with S-100, protocol-wise. S-100 worked, just like 300-baud XMODEM did. But what S-100 really meant was that when you upgraded the base processor hardware, you didn’t have to throw away the expensive-relative-to-the-base-machine-price memory board you had already bought. You could just plug it into your new one. A win for users, and a win for board makers. Especially since the technology moved forward so fast that people – at least techies – really did upgrade quite often.
There were many similarities between Altair and IMSAI, but the IMSAI removed some programming annoyances that operating the Altair required. You still had to enter the octal loading program on the front panel; but the actual switches were upgraded in the IMSAI to make them work much, much better. A small thing, but perhaps it is the first user-facing action taken by computer manufacturers in response to customer feedback, to improve product satisfaction.
South West Technical Products (SWTPC) went down a totally different path with its machines by using a different processor than the Altair. They used the microprocessor in their products that was introduced by Motorola to compete with Intel, the M6800. SWTPC used these newer chips, designing a computer that was simpler to build and program than the Altair design, and also it cost much less to manufacture.
Stan Veit (the owner of the Computer Mart store of New York and a true pioneer – he later founded Computer Shopper magazine) put it this way in his history of the personal computer:
“The secret [of how the computer operated] was in a ROM chip which contained a monitor program called MIKBUG. When you turned on the system, it came to life and permitted your computer to communicate with a terminal. MIKBUG was also a mini-operating system that allowed you to display and change data in memory, dump memory to tape, load a program, display or change the contents of registers, and jump to and execute a program in memory. It also had a routine for debugging programs. All of these system functions were initiated and monitored by a serial terminal. In addition to these system features, MIKBUG understood Hex notation instead of machine code needed for programming front panel switches on other computers.”
This MIKBUG was a huge advance for usability and operations simplicity. It didn’t take 15 minutes of loading Assembly code via toggle switches to get the machine up and running. Yes, SWTPC had its own unique bus for the machine (the SS-50); but the microprocessor required far fewer support chips to function.
It was an easy kit to build as well. The boards of the kit had much wider solder areas when compared to S-100 busses, which was a great help in making it easy to complete it. (And yes, naturally we all had soldering irons! Don’t you?)
These two machines were the grandfathers of the PCs. Of course, there were other companies that took things past these first, halting steps, such as the TRS-80 or the Model 100, the widely beloved machines from Radio Shack. But these puppies were the first to dance, and as the old saying goes: It’s not how well it did it; it’s that they did it at all.