A couple of years ago, a fellow named Dr. Acula designed a neat little Parallax Propeller based board that implemented a full CP/M system providing a Z80 with dual serial, 512k Ram, VGA, PS/2 Keyboard, and SD storage. I *had* to get one.
The cool thing about this board is there is not a Z80 in sight – None, Nada, Nill. The Z80 is implemented in a cog as a sub process within the Propeller chip. It is a software implementation of the Z80 in Parallax machine code. The Parallax Propeller is a neat chip.
The Paralax Propeller
In about 2006 the Parallax corporation released the Propeller 1 – It provided some interesting features;
- Eight 32-bit cores – Called Cogs
- 32 GPIO CMOS I/O pins
- Clock from DC to 80 MHz
- Execution Speed: 0 to 160 MIPS (20 MIPS/cog)
- Available as a 40 pin DIP, or a 44 pin QFP
The reason why the Propeller get its name, is that there is a constant p[rocess that moves shared memory within the chip round between the cogs. This allows each cog to communicate. 20 MIPS per cog (core) is quite a nice feat. Very quickly, developers discovered that you could implement a VGA screen driver in software in one of the cores, using a simple resistive divider to define the RGB color space. You could also emulate entire CPUs in another cog, and break down a complex system into a series of parallel executed subsystems. Hence, the Dracblade.
The Dracblade provides a simple hardware environment to connect a 512K ram chip to the propeller, as well as a small amount of glue logic to support the SD card and serial interfaces.
Software running in the system is unaware that it is being executed in a virtual environment – Plug a serial terminal in, and you boot to a CP/M prompt. Below is a print of the silkscreen layer for the Dracblade. The developer went to a lot of effort to provide multiple regulator options. Most of the regulators are able to be deployed as switching units – cheaper than linear regulators, and more efficient.
Here is a downloadable copy of the schematic:
And the PCB files in Eagle:
Being an older project, many or the developers appear to have moved on to other projects, and the various mailing lists have gone quiet.
Here is a copy of the SDCard, as well as all of the Propeller SPIN files for the system. Note that the because the source uses conditional compilation functions (#define, #ifdef, etc) It can not be compiled with the Parallax spin tool – There is a project from 10 years ago, written by Brad, called ‘Brads Spin tool’ BST, that compiles the source fine.
Here is a copy of Brads Spin tool:
And here is the latest version of the source code repository that I could locate:
When you compile the code, make sure that the following options are set in BST:
Files on the SD card have to be written in FAT16 format, and I believe that it is also important for them to be contiguous, so I reformat the SD each time I copy image files onto the card.
Finally, here is a copy of the Sd card that goes with the above source. It implements a CP/M system, using a VGA display, and when MP/M is started, it starts the second user on the serial port.
Anyhow, that provides enough information os that I can go back to the project in the future without relying on web copies of material.