8031, 8085, 1802 are alive!


8031, 8085A and 1802 RetroShields are alive now. Pictures at the end.

Considering I never used these processors before and can run BASIC in a few days, I’m convinced RetroShield will be very useful for me to experience more 8-bit processors. It took about few hours to bring up 8031 and 8085 and run BASIC. 8031 (8051) is clearly an embedded processor, reminded me of Arduino. 8085A was similar to Z80.

1802 was the MOST interesting processor I have ever used in my life. I don’t think words can explain it, you need to experience it.

As I was looking at the memory read/write waveforms, I started as “yeah, I’ve seen this before”. But no. It took me awhile to unwire my brain about how 8-bit microprocessors work. Then I got it. I think it is better to call 1802 a micro-manager instead of micro-processor. It executes commands but its difference comes in thru I/O and DMA operations. Where other processors get out of the bus completely, 1802 seems to facilitate transactions between memory and I/O device. For example, when it is executing OUT instruction, 1802 will drive the memory system to output a byte and tell I/O device to latch it.

1802 software-wise, I’m still learning but I can tell initially your brain will hurt because any of the registers (R0..R15) can be used as Program Counter! Following programs was very difficult for me. There are no JSR/RET commands for subroutines, even stack ops seem to be handled by register operations. It looks like there are some naming/register conventions people follow, which should help.

1802 bring-up made me very curious about it, why it was designed this way and why it was picked for the various spacecrafts like Galileo and Hubble (is it because of its architecture or smth to do with radiation?)

6809E is still my most respected processor (buttery rich instruction set, fast execution), but 1802 is up now there for its different-ness. If I could have one nitpick about 1802, it would be 8 cycles per instruction.

Pictures or it didn’t happen :)

Setup to confirm control signals with a logic analyzer:


8031 running Paulmon2 which includes disassembler:


8085 running Mon85, commands and disassembly output:


1802 is running Tinybasic HOLLYWOOD DEMO :)

Arduino receives serial thru Q output. I’m still having problems sending serial thru EF#. 8031 code works great, so there must be some timing issue someplace.