3 ms·
The Alto was super-slow, even by standards of the time. It had a very, very limited CPU running an emulation of a more powerful ISA that app code was compiled t
by ncmncm 4y ago
The Alto was super-slow, even by standards of the time. It had a very, very limited CPU running an emulation of a more powerful ISA that app code was compiled to.
Things we expect to have dedicated hardware for -- network interface, display screen painter, disk interface, laser printer driver -- were just interrupt routines all on the one CPU. Programs competed for CPU time with feeding pixels out to the CRT-scanning electron beam, and with bits moving directly to and from disk-head R/W coils.
It did switch between those tasks pretty quickly, not like most machines then or today: there was no foolishness about saving and restoring registers. Each interrupt task was assigned a couple of registers permanently, including its own program counter, so an interrupt only ever just flipped which program counter was in charge.
The app-level instruction interpreter got to use what few registers remained.
So, on an interrupt, it would execute a half-dozen instructions to move one machine word, and yield. There were 16 PCs that ran in strict priority order, with the user-program instruction interpreter last in line. Each "yield" put the current PC back to the entry point for the next word to be processed, and the next live lower-priority PC determined the instruction to run next.
The OS was just one of those user programs.
It resembled the I/O processor on CDC mainframes of the time. It just ran the programs, too, not only the I/O.
But it really is amazing what they got it to do. Later machines e.g. Dorado and Dolphin had more stuff done in hardware so could be faster.