The Real World's 1st Multi-User/Multi-Tasking Micro
Last week I wrote that the first multi-user, multi-tasking micro was the AlphaMicro AM100 computer. Well, it turns out that it was the first to be commercially successful, but not the first in its class. Sam Holland was responsible for building the first mu-mt micro. As luck would have it, his company ran out of funding before it could make a big charge on the market.
I'm really glad Sam got in touch first because the level of my tech history tank has risen quite a bit and second because Sam is now deeply into supercomputers. Tom's Hardware is adding a focus on these behemoths and next month we'll publish a story from Sam about them.
From: Sam Holland
Actually the first multi tasking, etc. PC was built by a small Silicon Valley company I started up in the mid 70's called Extensys Corp. We designed, built and actually shipped one unit called the EX3000 before we went belly up due to lack of funding.
The system used the S100 bus, the Intel 8080 chip(s) and could have up to 4 processors, up to 64 memory boards of 64K each, was multi user, multi processing and multi tasking. We wrote our own operating system and assembler. We used compilers written by Paul Allen of Microsoft when they were still located in New Mexico.
The Extensis EX3000 pulled together four emerging technologies; multiprocessor supercomputers, 8 bit microprocessors, the S100 bus standard and multiprocessor, multitasking multi-user operating systems.
Back in the mid 1970s the maximum addressable memory for 8 bit microprocessors was 65,536 (64k) Bytes - yes that's Bytes, not mega Bytes. Extensis had developed a 64k Byte S100 memory board that was, at that time, state of the art. We used 16k bit dynamic RAM from Intel that did not qualify for the full bit density. Intel packaged these chips as 8k parts at a more affordable price. We used the opportunity to use 64 devices to fill the entire 64k Byte address space.
Selling the board was a bit difficult because the market was leery of dynamic memory. Up to that point only static memory was available, and because dynamic memory lost its data unless power was continuously applied to the refresh logic and memory chips, naturally, many engineers were worried. In addition, dynamic ram controllers were nonexistent, so refresh logic, etc. had to be designed with standard TTL logic, independently from the RAM chips themselves. However, we were able to cram all the logic on a 6 (or was it 4) layer S100 standard board. We noticed that the 6 layer board was another marketing hurdle to overcome - the vast majority of S100 boards were 2 layer and the PC board industry was just becoming proficient at multi-layer board manufacturing, at least at a reasonable price.
We next, innocently, added another useful feature: multiple bank memories. Multi banking meant that we could place more than one fully populated 64k byte memory board on the same S100 bus. We had an on board bank latch that extended the S100 bus address by 6 bits, to a maximum of 64 boards, or 4 MB. The latch could be set by software writing to a specific I/O port. The address of the I/O port correlated to a physical memory board. This allowed software to carefully switch between memory banks.
The board was mildly successful. As memory serves me, we sold about 200 boards at the lofty price of around $1,000. As soon as the memory board starting selling, we discovered that board to board memory transfers were extremely slow, due to microprocessor instruction set limitations. We solved that problem by designing and producing a direct memory access (DMA) board. That board could be programmed, again by writing to specific I/O ports, to transfer blocks of memory between boards or the same board.
The last obstacle to overcome was the S100 bus itself. The S100 specification was a bit loose and allowed for flexibility in interpretation. The different S100 bus manufacturers interpreted the spec to their best advantage. Basically we had 2 or 3 versions of the board, depending on which manufactured product it was to be used in.
By the time we had memory and DMA boards, it was a simple extension of innocent logic to produce a microprocessor board. In typical Extensis fashion, we designed the board for multiple instances. In this case we allowed 64 processor boards be used on a single S100 bus system. Naturally we had to write an operating system from the ground up, to support the architecture.