• Please review our updated Terms and Rules here

Keyboard replacer?

That's how I remember the O1 keyboard--simple passive matrix scanned by the CPU.

Probably the simplest way with an MCU would be a dual-ported 256 bit SRAM. The MCU would write a location corresponding to the (X,Y) address of the key and the Osborne would read it. Since PC keyboards have both a "make" and "break" signal, that simplifies knowing when to write.

Hi Chuck
I see from the code, one could run this based on the 60Hz timing. It would be eazy to sync up to the first row address and provide the needed data in time for the read. I don't think an external RAM is even needed. I believe the it can all be done in code, with no additional hardware, like a multi port RAM being there.
Dwight
 
A simple circuit would be easier than a RAM.
It could be done with:
74LS688
74LS30
74LS32
74LS244
8 pullup resistors
Blue Pill keyboard to column/row
Dwight
 
...or possibly even less than that--with some clever programming, you could do it "barefoot" with a 5V tolerant MCU. Since you know when the keyboard is being read and how often, with a sufficient number of I/Os, you could do the job with software only. When the Z80 is running at 2MHz and your MCU is running at upwards of 70MHz, there's a lot of time to play with.
 
Thinking about it a bit more, you'd only need 9 5V tolerant I/Os. One input for the "select" line; the other 8 are tied both to the row and column lines with pullups. The row lines are driven with a 74LS05 OC inverter, if the schematic is accurate. Initially, the MCU is in input mode on all lines and waits for the output-enable on the tristate buffer connected to the column lines. At the same time, it reads the row address on the 8 input lines, looks up the proper keystroke column output, switches the 8 lines to output mode and places data on the 8 lines until the select line goes inactive. I believe that there are a sufficient number of 5V lines brought out to handle both the O1 interface and the PS2 one without resorting to external level shifters. Since the "blue pill" is a 72MHz 32-bit MCU, there should be plenty of time.
 
The outputs are the only ones that need 5V. You can't put a 5V pullup on a 3.3v only pin.
As for logic, from the O1, you need to see address "FF" and the individual address bits. That is why I had the 74LS688. That allows one to select the row bit to watch for. When you see it you'd enable the 74LS244.
I need to look at the time of the Z80 but I believe your right, all the logic can move into the controller uP. At 72MHz one can get from one to the other. The only issue I see is handling the keyboard's serial. That is a little more tricky. You need to hide that in between watching the O1, for repeated keys. The keyboard can be throttled though but yo have to allow it to complete an entire 8 bits ( plus a start and stop ) at its clock rate. If you stop it in the middle of a send, it has to resend the entire 8 bits. It kind of a funny hand shake. The keyboard owns the clock.
Dwight
 
Why not try to repair the keyboard?

Tell us more about this little intermediate converter board?

If your laptop had a parallel port you could probably do it with just an EPROM...
 
I was looking at your other post. I'd replace the 81LS95 first before giving up on the keyboard. The fact that it was doing funny things with the meter connected to the lead was strange. Also, you never did a complete measurement of the entire chips leads. The part has 20 pins.
Dwight
 
Back
Top