Comment Ob. War Story (Score 1) 167
I worked at Motorola in the late '80s in the Cellular Infrastructure Group. Moto's cellular switch was Z80 based, but it was a helluva hack. The thing had six Z-80s arranged in three nodes, each with an active processor and a hot standby. We had a custom MMU that extended the address space to 24 bits and could be mapped in 4096-byte blocks. Of the 16MB address space, 4MB was shared and simultaneously accessible by the active and standby processors.
It was mostly programmed in assembly, but we did have a "high level" language called MPL (Motorola Programming Language) which was little more than a big macro set around the assembly. It was very naive, had no optimization, generated crap code, and was buggy as hell. I always called it a pessimizing compiler. There was a newer, less buggy version available but we didn't use it. We had too many hacks and work-arounds that depended on the buggy behavior in the original.
All the code was, of course, linked into a single monolithic executable and loaded from tape. It took about 20-30 minutes to load the program. The processor board had a serial debugger terminal which could be used to poke changes directly into running memory. Each memory page had some space reserved for patches. I sometimes had to patch live customer machines by entering an assembly routine byte-by-byte into memory via the serial terminal and finally patching a CALL instruction into the appropriate address in main executable memory. And hoping really hard that I hadn't made any typos.
Later in its life peripheral boards were being built that were 68000 and PowerPC based and much more powerful than the main Z80 boards. The Z80 software was so crufty by then that the peripherals had hardware hacks to work around weird software behavior just because it was too damned hard to change the software.
Ah, memories...