The 8-bit era: Eight processor designs
thechipletter.substack.com
thechipletter.substack.com
A glaring omission in this list is the Intel MCS-51 architecture, which - despite being horrible to program for in this day and age - still powers billions of devices worldwide, with 8051 derivatives often being embedded as a housekeeping core into all sorts of specialized ASICs and 8051-compatible microcontrollers being the staple of cheap electronics. It was never meant to compete with general purpose processors such as the Z80, and its awkwardly limited instruction set reflects that, but it still managed to become the de facto CPU architecture for monitors, power tools, RGB lighting, SD cards and whatnot.
If anyone is interested in the results of the poll which looks like a dead heat between the 6800/9 and Z80, then the winner was Motorola. So I'm now deep in research on the 6800, hopefully to result in a post in the near future.
This past summer, Tony has been retrieving his 8-inch Motorola Exorciser floppies. He encouraged me to work on my Motorola Exorciser emulator- it now emulates a 6809 version of the Exorciser:
https://github.com/jhallen/exorsim
(check out the long discussions in the issues...)
"Blue Monday" on QasarBeach Fairlight CMI emulator:
https://www.righto.com/2021/11/reverse-engineering-yamaha-dx...
Well I found the schematics: it uses a 6805 and a 6303!
http://www.midimanuals.com/manuals/yamaha/dx7/schematics/yam...
This is a good overview of key 80s gear, including the E-Mu, Linn Drum, DX7, Fairlight, Mirage, etc. https://www.musicradar.com/news/10-synths-that-defined-the-8...
The Z80 was still being used in embedded designs in the 90s. One company I worked at was still supporting Z80 systems and s/w at least until around '94. Possibly later, as I didn't work on those.
In the UK, I never saw a 6809 used in embedded designs (late 80s - mid 90s), I did see plenty of Z80s and 8051 derivatives.
However by that period (late 80s on) a lot of those embedded designs were using NEC V20/V30, as they made for easier systems to program than plain 8bit systems; plus the price range of the systems I had experience with allowed it.
Am186EM we loved that one. 100 pin PQFP with unmultiplexed bus, CMOS up to 40Mhz, including UART, SPI etc.
Also liked the V20/V30 too, built a PC card comm controller with those. You are correct, it was normal to use MS-DOS compilers, although I did have to get a special-purpose debugger (code; interface was uart) for the '186.
With those kinds of products, it's 'annoying' that Intel sort of gave away the embedded space.
(agree: 8051 is high up there in the 'microcontroller' space.)
I saw a couple, mostly only because we'd used OS/9 based dev machines.
The 6805/HC05/HC08/HC11 family was far more popular for embedded use in the motorola familial branch though.
If you're including 'derivatives', then the 68hc11 and related (6800 with extra stuff) were/are wildly popular in the embedded space and are still today being produced by NXP. You can buy them from stock at Digikey.
The 6809 never superseded the 6800 at anything in the market other than being cool. And then the 68000 ate whatever market it might have had left.
Agreed on the 8051. There's probably a dozen within 20' of you right now.
One of my Amiga's had 4 CPU families: A 6502 core on the keyboard, a Z80 on the SCSI controller, an x86 on a bridge board (the Amiga 2000 had ISA slots, and one of them was in-line with a Zorro slot so you could get a board that let you run x86 software using a window on the Amiga desktop as the output; I don't remember if the bridge board itself was an 8088 or 8086, but I upgraded it with a 286 accelerator card) and of course the 68000 (+ a 68020 expansion)....
Looks like it's this one I remember:
In that sense, the 8-bit Commodores were a bit like mainframes - one could load a data transform program to run on the floppy drive and run it without bothering the host. I believe it goes a bit further than the Atari family in that.
https://www.digikey.com/en/products/detail/zilog/Z84C0008PEG...
I guess we're still living in the 8-bit era, technically. ;)
(Most of his money is made in licensing the soft core, but I love that he continues to support the hobbyist market by making ridiculously obsolete 40-pin PDIPs!)
Crazy.
I wonder if to this we should add the Atmel Atmega328P, which is omnipresent in microcontrollers, not the least of which is the Arduino. It's always described as "8-bit" though it has wider addressing than that and is capable of doing 16-bit and 32-bit math. It's a Harvard architecture.
Unlike many of those 8-bit computers the AVR-8 doesn’t have any 16-bit arithmetic other than increment/decrement address modes that use the X, Y and Z register pairs unless you count the 8x8 MUL instruction that returns a 16-bit result or the MOVW instruction which copies a register pair and not just 1 register.
Certainly many in this article were originally designed for what now would be microcontroller applications, but the fact that they couldn't then do on-chip ROM let hobbyists repurpose them into general-purpose microcomputers.
Now we've added things to microcontrollers (serial ports, GPIO pins, timers, etc.) and other things to microprocessors (FPUs and memory managers). But back in the day, was a Z80 a microcontroller or a microprocessor? Yes.
[Edit: "Memory" including both RAM and ROM. Microprocessors usually didn't have code - even boot code - in internal ROM.]
Z80 + some mods = Sharp LR35902 used in original Gameboy
6502 + some mods = 6502 used in original NESThe NES had zero modification to the 6502 core, except that the binary-coded decimal flag was hardcoded to always be off (to avoid infringing on the one patent that MOS filed; chip design was not copyrightable at the time).
This isn't really properly correct. The 6809 was backwards compatible with the 6800 only at the assembly source code level, not the opcode level. That is, I believe you could run your 6800 code through a 6809 assembler and probably get a valid program, but 6800 binaries would not run. The opcode encoding was different.
Also does a bit of a disservice to the 6809 to just call it a successor to the 6800, as it is in many ways the most "deluxe" of all the 8 bit processors. It wasn't just more instructions, but more/wider registers, as well.
https://m.media-amazon.com/images/I/51Pu7b17-CL._SR600%2C315...
Let's all pour one out for the D register.
I guess there was also the ability to interface the 68k with 6800/6809 support chips on the bus, though.
The 68000 was very VAX and PDP-11 inspired.
I wonder why popups are some kind of web design go-to these days? Don't they get feedback from users that we hate these annoying things?
I suspect they don't care.
> Simplicity > > With some practice, you could keep the whole of an 8-bit processor’s instruction set in your head.
Is it just a matter of replacing all instructions/chips/buses to be 32 bit/lane? Or is it just that in practice the 32 bit CPUs have more complex ISAs?
The reason I ask is that I'm learning RV32I, and writing a simple implementation, and wondering if there's any additional didactic value in me learning 8-bit CPUs.
Also because of the above, 16/32/64-bit ISAs have to support dealing with bytes, so they end up either including instructions to explicitly deal with them, or constantly having to mask the upper bits of values/registers.
Unfortunately 8-bit CPUs were also almost always tied with 16-bit address buses. Back then when memory was super costly, this was fine. But later on, it became their biggest limitation and all sorts of awkward paging/segmenting stuff was caked on top in order to make them work with memory sizes greater than 64k.
I sometimes wonder how things would have gone if we'd settled on having "bytes" be 12-bits (like the PDP-8) or something instead, with the first gen of address buses being 24 bits. That would have made the first generation of home computers have a lot more longevity.
Hell, I believe the PDP-11 only had 16-bit registers, imagine if we'd just started our journey that way.
Most of the small RV32 microcontrollers have a low pin count lots of on-board devices, and it's not as straightforward as gluing together a CPU, RAM, ROM, and some IO devices on a breadboard.
Basically, an answer to the questopn "how would a breadboard computer built in 1977 look if the RV32 ISA existed?"
But 8-bit CPUs have more than 8 address lines, because 256 bytes total for combined RAM, ROM and I/O space is not useful. That number I think is typically 16 although Signetics 2650 had only 12 (with the instruction set only supporting 12-bit addresses), and the Atari 6507 (6502 derivative) had 13 (instruction set still supporting 16-bit addresses but the upper 3 bits of addresses were basically ignored).
> Is it just a matter of replacing all instructions/chips/buses to be 32 bit/lane?
Depends on the 8-bit CPU really.
- The Z80 lets you combine specific register pairs to work with 16 bits and address memory through them.
- The 6502 does not, but has the whole "zero page" thing where the first 256 bytes of RAM can contain 16-bit data and pointers.
- Both the Z80 and 6502 have a stack pointer register (the 6502's being 8-bit and fixed to point to RAM locations 512-767). But the 2650 had an internal 8-byte stack and stack pointer.
- The 8051 (and the 8048 I think) has lots of instructions for manipulating individual bits in registers and RAM, and also has a division between the memory that opcodes are fetched from versus data. None of the above work like that (the F8 might).
These are things that are no longer possible on modern computers (but in return we gained a lot of performance by decoupling hardware components).
* "Graphics and sound weren’t hidden behind ‘APIs’."
* Programs were written in 8 bit assembly
* Generally, the 8 bit CPU was considered a complete package, rather than just one small piece as RV32I is.
Those sound nice to have for didactic purposes. 32 bit could do that, but the RISC-V ecosystem/community seems keener on integration with wider world, rather than keeping a small complete system.
I'll check out some 8 bit ecosystems/communities. Video game space seems active? Or maybe there's a RV32I community for writing retro style games, with some simple graphics support?
I stalled once I started trying to integrate with the SD Card on my dev board. It got un-fun and then I got distracted by the apocalypse.
But I still think it's a neat idea, to tie RISC-V to that kind of "instant on" hobbyist architecture.
EDIT: looks like this "IceStation" project ended up doing mostly what I was intending, and started not long after me, but actually shipped something. Mine was targeting a Xilinx Artix-7 board, tho.
Wow, https://github.com/dan-rodrigues/icestation-32 looks cool. Sorry for the comment spam. :)
I had a small OKI databook once with a variety of 4-bit cpus in them (most if not all CMOS, iirc). Obviously geared towards deeply embedded uses like toys, sensors, basically: battery powered uses where speed isn't important but every uA counts.
Allthough it's possible those OKI parts where just 2nd sources of ones in the WP list.
https://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-...
https://floooh.github.io/visual2a03remix/
The 6502 CPU is in the lower-right quadrant.
(and here for comparison the 6502 on its own: https://floooh.github.io/visual6502remix/)
http://www.visual6502.org/images/pages/Nintendo_RP2A_die_sho...