I have included the 16-Bit IDE interface and have renamed this card to Multi-Card 1.
I found a suitable solution to having a VGA output and PS/2 Keyboard input and have created a prototype card that works really well.
This card is based on the ASCII Video Terminal created by Geoff Graham, he has given me permission to use his design and code in this project as long as I acknowledge him as the creator, which I am more than happy to do. (Also check out his other projects, he has a few good ones on his site!)
It is a VT100 compatible terminal interface based on a PIC32 MCU, it basically converts the ASCII data fed into the serial TX into text for the VGA (or composite), and then reads from the PS/2 keyboard and sends the data as ASCII through the serial TX line. I basically fitted the 16C550 UART circuit to allow the circuit to interface to the M62 bus.
Here is the current prototype card.
I set the console output in the BIOS to write to the address the VGA card is set to, and the console input is read from the same address. Software wise it is treated as a UART with a computer connected as a terminal. The UART on the Z80-SBC is now used as a general purpose serial port. (I currently use it for sending binary files from the PC)
Here is the VGA card in the M62 system with the other cards. (from left to right: IDE/CF, Z80-SBC, RAM/NVRAM expansion, VGA)
I am yet to finalise the schematics and PCB design, once I do they will be available on this page. There may be a few more additions onto this card as I don’t like to waste PCB space by leaving it empty 🙂
First fabricated version of Multi-card 1
I populated the board when it arrived and I didn’t have the correct VCap for the PIC32, this seems to be causing it not to enumerate via the USB but the VGA output and keyboard input appears to be working fine. I will order some correct caps in soon and see if it improves the status. I am using a 10uF electrolytic capacitor when I really be using a multi-layer ceramic or a tantalum type.
There was an issue with the IDE’s reset being stuck high (inactive), but it appears that I have used an OR gate instead of an AND gate.
I jumpered out the gate to test it and it all works fine. The 74HCT32 just needs swapping out for a 74HCT08 without any changes to the PCB required. The only problem with that is the PCB has “74HCT32” silkscreened on it still, but that’s purely cosmetic.
The only other issue I have found is that I forgot to include a header for 5V for the IDE/CF adaptor. I just tapped into the 5V and GND on a decoupling capacitor.
Here is the first fabricated card built up for testing, it went together nicely. I switched from SMT resistors and capacitors to through hole for v1.1, the resistors are 1/8W sized to keep them small, but I didn’t have all the values in that size so I had to put some in on funny angles 🙂
I put different coloured pin headers for the different address jumpers, I thought it was nicer to look at.
Here is the card with the IDE/CF adaptor installed (and the right angle adaptor), this works pretty good (with the exception of not being able to use the USB).
The Multi-Card in the M62 with the SBC. These 2 cards are a combination of 5 cards:
- Z80 CPU card
- UART interface card
- ROM/RAM card
- VGA and PS/2 keyboard interface card
- IDE interface card
These images were generated by JLCPCB during the submission of the Gerbers, you can see that I put plenty of silkscreen labelling on this card.
I have kept with the theme of the SBC card of putting the values for the components on the silkscreen. There is also the Baud rate settings for the VGA/PS2 interface under the UART chip on the bottom of the board.
Under the VGA socket there are 3 positions for SMT resistors. The idea is to populate one of these with a 0R resistor (or jumper wire) to select which colour you wish to use with the VGA. It would be nice to do all 3 and have white but the display gets very faint, I just use green 🙂 I might add a transistor to allow driving of all 3 in the next revision.
I will update some more when I get the PIC32 circuit fully tested with the correct values.