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 of internal peripheral modules; I allocated one of the two internal UARTs for the system console, the other one along with one SPI channel and four slave-select select lines, are available on the system bus.
Considering the idea of the project and although the selected PIC can actually do it, there is absolutely no reason for sticking with the now antiquated 5V logic, so the system bus is built around 3.3V logic levels.
3. Physical assembly and cost
I did not approach this design from a purist’s point of view, so there was no need for me to intentionally choose vintage-looking components only for the purpose of retro looks, so the entire design of the main board is surface mount. That was sort of given already, considering that the PIC18 chip only comes as 80-pin QFP package albeit that one is quite easy to solder even with the most basic tools.
I actually find it much easier to solder a large SMT component than a small Through-Hole one, so everything on the main board is human-friendly; with the exception of IC there is no component on the board that is smaller than size 1206 (metric 3216). Being entirely surface mount gives another additional benefit – the entire bottom side of the board is completely flat.
In terms of cost of components, I have tried to use parts that are easily accessible and as cheap as possible. The power module and the PIC18 are the only ones that are a bit more expensive - £4.88 and £3.57 a piece from Digikey, respectively. Everything on the board except the 60-pin SMT female receptacles is available from Digikey and/or Mouser; probably also from Farnell and RS, although I have not verified. The 60-pin connectors I was able to find at very good price on Aliexpress.
The total BOM cost for the main board using the originally specified components from Digikey (except the eight controller slots) is around than £16. A cost-optimised BOM would be less than £10 all inclusive.