-
-
UFE CPC6218 Kbd. Daughterboard Installed (Closeup)
-
-
UFE CPC6218 Kbd. Daughterboard Installed (Full)
-
-
UFE CPC6218 Kbd. Daughterboard Scan (Top)
-
-
UFE CPC6218 Kbd. Daughterboard in Operation
This time, a post unrelated to Cumulus (a Cumulus-related update will follow shortly).
At the request of my friend Alcofribas, I’ve been designing and building (in parallel with my work on Cumulus) a CPC6128 keyboard daughterboard for UFE. It allows one to control the UFE floppy emulator using the host keyboard on a CPC6128, just like one does on an Amiga 500 or 1200.
This daughterboard ended up being a bit complicated to setup (at least moreso than the other UFE keyboard daughterboard designs). The existing ribbon connectors on the CPC mainboard are desoldered and female headers are installed in their place. The ribbon connectors are then soldered to the daughterboard. The daughterboard has male headers that match the female headers installed on the CPC mainboard. So, the daughterboard sits upside down on top of the CPC mainboard, and the case cover can be closed without any problems. The rest of the installation is the same as any UFE installation.
The board contains a PIC16F877 along with three 74LS245 chips, four headers/connectors and lots of pull-ups. The 245 octal buffers control the connections between the CPC mainboard and the CPC keyboard, so that UFE can prevent the CPC host from receiving keypresses when its user interface is active. The PIC controls everthing, scans the key matrix and transmits keypresses to the UFE mainboard over I2C.
It seems to work well, but at the moment there is one complication: For the daughterboard to be able to detect the activation keypress, the CPC host must be actively scanning the keyboard. I am told that this may become a problem with some demos and games. So, I’ll need to devise a way to make the daughterboard scan the keyboard at times for the activation keystroke without interfering with the host scan of the keyboard. The most likely solution is that the daughterboard will determine when (or if) it needs to scan the keyboard, by dynamically adapting to the host’s scanning patterns. I am sure that with some more experimentation and practical thinking, a satisfactory solution may be obtained here.