PI2VZ Restoration Project
The purpose of this page is to document my attempts to restore a dead VZ300 using a Raspberry PI. The PI will fit inside the VZ case, emulating the Z80 cpu, 6847 graphics chip and interface with the original keyboard.
A customized version of VZEM will boot on powerup from the SD card. Pressing ctrl + shift + break will open a file manager allowing loading of snapshots, cassette and disk images. A 2gb SD card will leave appx 500mb free for VZ files. This is the equivalent of 6000 VZ floppies!
The intent is to make the emulation as close to the real VZ experience as possible, however the following improvements will be supported:
- 4mb bank switchable RAM
- Support for all of the graphics modes of the 6847
- Custom ROM support, eg “unofficial” v2.1 rom which re-enables all the hidden basic commands
As the machine is a raspberry pi inside a VZ300, I’m calling the hybrid machine a “PZ300” J
The original hardware:
This is the VZ300 mainrboard removed from the case. The major components are a Z80 cpu, Motorola 6847 vdp and 18k ram. Technology is circa 1983
And this is the Raspberry PI inside the VZ300 case. The PI boots from an SD card which is plugged in the left side of the board. The yellow plug at top centre is the composite video out, to the right is the audio line out jack. Power is supplied via a 5volt mini usb connector.
The PI is much smaller than the VZ300 mainboard but vastly more powerful, capable of emulating the cpu and graphics of the original hardware in real time.
Here is the original VZ300 keyboard. A 16 pin ribbon cable connects the keyboard to the VZ300 mainboard. For this project the VZ300 keyboard will be interfaced with the PI.
Verify the VZ keyboard is operational by wiring it to an external power source and using it to light up some LEDs.
The keyboard has 45 keys wired in a 8x6 matrix – below is the explanation from the technical manual and the original circuit diagram
The keyboard circuit will need to simulate the 8 keyboard lines, taking each line to logic low in sequence then reading the 6 data bits.
For example, to check if the “2” key is pressed the address lines for A0-A7 would be 11101111. The pullup resistors keep the data bits to logic high. So if no keys were pressed the data bits from D0-D5 would be 111111. Pressing the “2” key when the address line is 11101111 will join that column to logic low, so if no other keys are pressed the data bit pattern would be 111101
The circuit to verify this will wire the 8 address lines to the 3.3v line, making all rows logic high. To verify the “2” key, the A3 address line will be connected to ground. If no keys are pressed on the A3 line, all LEDs should be lit. Pressing the “2” key will drop bit1 to zero, and that LED should go out.
23rd September – Started soldering the VZ keyboard wires to a 25 pin plug. Once completed I’ll create a male connector with wires that can plug into a breadboard for testing, and a second connector for interfacing with the PI
24th September – Tested internal keyboard LED, nice and bright. All this really verifies is the soldering to the LED and ground lines are sound, and internal keyboard LED is still ok.