Z1a - The Future
This project took a back seat for a while due to Real Life and Other Things, but there are still many things I'd like to get around to doing.
What I'm currently working on is moving the CPU, memory, I/O and logic to a single board, and creating a custom (probably 3D-printed) case for it, so that it actually looks like a 1980s home computer rather than a mess of circuit boards. There will still be an external bus connector, plus an internal one for the video card, which will sit above and parallel to the main board. I'll bring various GPIO ports and the Z180's serial ports to external connectors, so that I can also make plug-in adaptors for RS232 ports, Centronics printer interface, etc.
I'll take the opportunity to make a few changes to the design. The four I/O ports will expand to eight, with some used internally, such as the memory paging register. I might add a latch so that the IDE port can be full 16-bit. The keyboard will be read using A8-A15 and port 0xFE as per the Sinclair ZX81 and ZX Spectrum, with an eye to possible future compatibility. I'll keep my existing keyboard for now, and later maybe redesign it for a Sinclair-compatible layout.
This time I might try a 4-layer PCB, using the internal layers for ground and +5v planes, and keeping all the signals on the outside.
I'd like to have some kind of audio capability on-board. I'm considering either using an 825x timer chip to make beepy noises as per early IBM PC compatibles, or putting an ADC and DAC on one of the IO ports for audio in/out. If I combine the two, the timer chip could drive memory->IO DMA requests to a suitable audio bitrate. Having audio in/out available would also allow loading from and saving to cassette tape if I really want to relive the worst of 1980s computing.
For the time being I'll use the same video card, but with a straight rather than a right-angled bus connector. But I also have plans to redesign it using discrete 74-series logic instead of cheating with a microcontroller. I'd like to add more video modes, like a 4-bit 512x240 mode, and a 4-bit 256x240 mode, and maybe reproduce the ZX Spectrum video mode. It'd be nice to be able to turn the Z1a into a turbo-charged Spectrum clone.
Any spare PCB space will be filled with unpopulated and unconnected DIL footprints, for later modifications.
Keyboard
- Get a stabiliser kit for the wobbly spacebar.
- Ideally, I'd like some key caps with a more retro look.
- Redesign the PCB so that the alphanumerics, Space, Shift, Ctrl and Enter are in a Sinclair compatible layout.
Software
- Add some more features to the BASIC, including arrays and either fixed-point or floating-point maths.
- Port the CP/M operating system to the Z1a.
- Try using the Z180's onboard DMA controllers to speed up things like screen-clearing and scrolling.
Audio
- Add a sound card. A bit tricky this one, because I want something a little more sophisticated than the ZX Spectrum's 1-bit beeper, but old-school sound chips are no longer in production, and I don't want to cheat like I did with the video card. It turns out that the Intel 8253 timer chip, which drove the speaker in older IBM-compatible PCs, is still in production, so I might do something with one of those.
- Add a MIDI port or two.
Video
- Maybe add some new features:
- Fix the unevenly-sized pixels by adding left and right borders.
- Add a 512x240 16-colour video mode, so there's an 80-column mode for CP/M software that needs it.
- Add a 256x240 16-colour video mode, so there's enough VRAM for double-buffering.
- Add a PAL-compatible timing mode, to output old-school composite video or RGB over SCART
- Redesign the video card. The microcontroller feels like cheating, so I'd like to use discrete logic instead. I might have to use surface-mount chips, which would widen the available range of chips and let me fit more in the available space.
Other I/O
- Add a parallel printer port (my current inkjet is old enough to still have a parallel port!).
- Redesign the I/O board with a proper 16-bit IDE interface, so it can access the whole of a drive.