Yet another crazy idea from Dr Acula's shed!
One Z80 chip, two propeller chips, VGA, TV, SD card, touchscreen, 512k ram, I2C port, keyboard, audio.
The aim of this little project is to try to extend CP/M so it runs on a touchscreen.
Touchscreens are great for graphics but they are a bit tricky in that they need fast data transfer to be able to refresh a screen of text or move sprites around in a game. That generally means external ram. But I think there might be another way, if one uses a propeller chip and dedicates as much as possible of the hub ram to a graphics buffer. Ballpark calculations, say 100 ascii characters, 24k of hub ram gives 240 bytes per character. Each pixel is 2 bytes, so that is 120 pixels. 7x5 fonts are fine, 14x10 is too big, 12x8 fonts will fit.
It would be great to also have a VGA and TV display. And audio, and an SD card, and a keyboard etc etc, and after thinking about this a lot, I think a two propeller solution works quite well.
The Z80 chip is there, well, just because. It could be replaced with a propeller chip running a Z80 emulation and that might happen down the track.
Ever since I was a kid (1970s) a computer was a box on the desk with a screen (for my dad, a computer was a room full of equipment, and when you typed "LOAD", someone in another room went and physically got a big roll of paper tape and LOADED it. But I digress). So every few years up until very recently, computers got faster and the screens got bigger and the operating systems got slower. And then suddenly, a few years ago, people wanted mobile computers, and the whole paradigm changed. So it has been back to the drawing board and operating systems (such as Android) have had to be written almost from scratch.
So I figured, if people are writing operating systems from scratch, why not go back to CP/M, which is IMHO, simple enough that it is possible for one person to understand the whole thing. CP/M is quite simple behind the scenes - it has a whole lot of numbered BIOS and BDOS calls, and there is room for more to be added. Some of the later versions even had block memory moves, which is just perfect for moving sprites around on a screen.
But CP/M also has some flaws. It was written in an age where disk formats had not been standardised, and so its disk operating system is now incompatible with modern systems. No matter - CP/M was also designed to be modular, so let's take the numbered disk functions (open a file, write a record, close a file etc) and replace them with calls to a propeller chip running FSRW or Kye's disk object. This has the bonus of making CP/M much smaller, which leaves room for other clever things. The upside is that it should be possible for CP/M to load and run files off an SD card that has been formatted with FAT32, so no need to use a disk translation program.
The SD card, VGA, TV and keyboard are all standard propeller peripherals. There is an I2C header for connecting to more digital and analog I/O pins. There are three pins dedicated to interprop comms, and this could be an SPI interface which (theoretically) should match speed of the SPI interface to an SD card, so the second propeller can get SD files as well.
The traditional way of booting up a Z80 is with an eprom, but this means one needs an eprom programmer. So this design uses a couple of I2C expansion chips to move a boot program into ram and then start the Z80. The expansion chips also do the 3V to 5V translation, and also the pins can individually be set to HiZ once the bootloader starts. Finally, these chips also handle the memory banking. However, the I2C bus is slow, and so for faster comms to and from the Z80, there are 4 input and 4 output pins to a propeller chip.
In general terms, I'd like to see a version of CP/M running on a touchscreen.
This project is maybe only of interest to the hardcore retro computer enthusiasts, but for those that might be interested, I'm getting some boards made, and as with a number of previous projects, I'm happy to do a 'hardware for software' swap.