During the development I had to make several difficult decisions:
1. The platform
I had a number of contenders initially for the choice. Quickly dismissed all the “old-school” such as the ones from Zilog, Motorola, Intel, as well my favourite 6502. There are hundreds of systems (including some of mine) already built around them, so there won’t be anything new with just another one. In addition to that, some parts are getting obsolete and very difficult to find. And finally, there won’t be any educational benefit to anyone in a system that uses architecture which has not been mainstream for many years already.
I then went through all other current 8-bit platforms and in the end narrowed the choice down to two options – PIC18 or AVR8. The latter is arguably the best 8-bit architecture every created and presents a really attractive option. I however decided to build the computer around PIC18 because no one has ever made a decent open and expandable system around it, and it also offers more fun in the process.
As much controversial and unloved the 8-bit PIC architecture is, it is also the most used one. The number of PICs currently ticking worldwide dwarfs any other 8-bit platform, and is many times greater than all systems with all the original “dinosaurs” put together. No one knows everything of course, but there is no excuse to anyone not to know the 8-bit PIC architecture :-)
Besides, programming for PIC with all its limitations and quirks has its own charm and fun that one can’t find while developing on a more sophisticated core.
I had hard time finding a suitable chip that won’t be too limited for the purpose. The number of PIC18s that can address external memory is counting on the fingers of one hand. Finally, I chose the excellent PIC18F87K22. It is an amazing piece of tech that ticks all the boxes – 8-bit PIC18 core, active market product, external memory bus, can operate as open system microprocessor instead of closed system microcontroller, not full of internal peripheries, reasonable package, and finally – no USB. About the last one - I personally consider the USB an insult to all engineers, hardware and software, so finding a good chip that doesn’t have it - I could not be any luckier than that. The PIC18F87K22 is a modern 8-bit chip that fits exactly my needs for this project!
2. The system architecture
Unlike all previous computing systems that I have built, this one is not a single-board computer. Instead, it is a hybrid in which the main board can still be operational on its own, but offers only the most basic functionality while everything else needs to be added on a system bus as controller boards. This model creates maximum flexibility in terms of hacking potential. My inspiration and benchmark for this system came both from the excellent RC2014 computer, and the “master of them all” – the original IBM PC (although technically it is considered a 16-bit machine), however I put a slightly different goal ahead with an attempt to create a true 21st century 8-bit system that appeals not only to the 40+ generation while still maintaining the “retro” style.
I also wanted to stick to maximum simplicity in every move, so the system bus has the basic control lines, but no complex glue logic or anything of the sort. There is also the PIC18 on the main board, however a controller can disable it and install a different processor, or work alongside to create a multiprocessor system. Disabling the on-board PIC is done in the simplest possible manner – a controller simply needs to hold the MCLR line low (that doesn’t affect the main bus RESET line).
The PIC18F87K22 chip is a weird case of an 8-bit architecture with 16-bit external data bus (exactly the opposite of Intel 8088!). Fortunately there is the possibility to configure the external bus to use 8 bits only. I took that route for simplicity. The chip also comes with a small number...Read more »