• Please review our updated Terms and Rules here

Keyboard replacer?

NutmegCT

Experienced Member
Joined
Jul 24, 2009
Messages
153
Location
Connecticut
Is there such a critter as a "keyboard replacer"?

Software that lets me use my laptop as a replacement for my non-working Osborne keyboard?

I'm assuming a USB laptop connection, somehow sending OAK type signals into the ribbon cable to the Osborne?

Thanks.
Tom M.
 
Just for fun, I wrote a ps/2 keyboard to parallel. I'm not sure what a Osborne requires but I suspect a parallel would work. There are several people that have similar with more bells and whistles. Still, mine is easily modified but does require a usb to 3.3v serial ( sometimes incorrectly called 3.3v rs232 ). This is only required to program it. It uses a blue pill ( cost about $3 ). You'd need to add some pullup resistors, possible connector and wires. It runs from 5V.
Dwight
 
Hi,
Silicon Chip just published an interface which accepts a modern USB mouse or keyboard (so I'm not sure if a laptop could output its keyboard data out its USB directly) but in any case this adapter outputs a serial TTL signal in its default mode. It has all sorts of features like VT100 emulation, standard Microsoft serial mouse format, ASCII translations etc. So it might be possible with a modern keyboard to use this as an interface with your computer via its serial input. The serial output from this unit can also be connected via a serial to USB chip to feed the usb input of a modern computer, for test purposes & verification. Obviously you would need to subscribe to S/C to get the whole article. S/C normally provide the programmed micro:

http://www.siliconchip.com.au/Issue/2019/February/USB+Mouse+and+Keyboard+Interface+for+Micros.

If you emailed S/C they would probably know if it would work for your application.
 
Well, one approach would be to re-direct keyboard input to the RS-232 port. Depending on IO byte support from Osborne, a command such as STAT CON:=BAT: will do that.

The problem you have is executing that command with a non-functioning keyboard in the first place. However it could be auto-executed on boot up. If you could modify your boot floppy, or have another Osborne user do this for you, then you could simply use your laptop with a USB-RS-232 converter.
 
Thanks gentlemen. I figured there would be some gurus who understand what I'm hoping to find.

Chuck mentions something called a "naked switch matrix". I'm a WW2 aviation researcher (New England Air Museum) and orchardist (Old Sturbridge Village) - and know *nothing* about electronics!

There's no voltage running to the Osborne keyboard. It's simply an x/y grid, which creates a closed circuit for each key pressed. Here's the matrix:

http://www.vcfed.org/forum/attachment.php?attachmentid=50537&d=1546003434

and here's the keyboard cable connector at the logic board:

http://www.vcfed.org/forum/attachment.php?attachmentid=50203&d=1546002982

The only way I'd ever attempt something like this is to have someone standing over me saying things like "Solder the tip of the blue wire to pin 6" - as I have no skill at tracing circuits or following schematics.

Or I'd be happy to pay someone to make it!
Tom M.
 
How about programming skills? Do you know C or maybe Forth programming languages? I've got other projects in the fire but to create such a project for pay we are talking more than you'd be willing to pay. As helping you through a project, we can always find time to help. The circuit I have could always be adapted as it is a relatively simple modification but still time consuming. It would be worth while to learn some elementary stuff.
Dwight
 
Anyway, my suggested project requires nothing more that a couple of modules, some wire, a connector, some resistors and a PS2 type keyboard. You'd need a PC to generate programs and such. Much of the programming is already done.
It would require some learning but not all that much. You'd be surprised at how easy it would be.
Dwight
 
Thanks Dwight. I'm afraid I only used BASIC back in the day. Both my laptop and my desktop run Windows 10.

Before attempting the project, I'd need to know actual details of what's to be done - the actual parts I'd need, how it would operate, wiring, and how it would feed the logic board connector. The result would have to be pretty much a 100% keyboard replacement, as the current keyboard doesn't work and there's no way to feed commands such as the "STAT CON:=BAT:"

I've been in situations before where a relatively simple technical suggestion turned out to be way more complicated than we thought, and never accomplished the goal. Remind me to share the gory details of restoring an 1874 church organ last summer.

Tom M.
 
I was looking at the schematic and see that it might be a little more complicated. It uses the free running address buss to scan the key board. There is no indication going to the key board that that particular address is intended to be used for a read to the key board. This would mean that a micro controller would be busy doing a lot of watching. It is still not really difficult. The hardest part is knowing when the Osborne has actually received the key. I suppose it could look for a particular address sequence. It would be something like a combination lock. When a particular sequence of addresses happen you know that the key was read. It has the chance of aliasing as the keyboard only has 8 address lines to it and not the full 16 bits.
If we ran two wires out from the Obsorne's, we'd have enough information to see the keyboard reads. That would allow us to detect the read. On each read we could look at the address bits and if it was a a single bit active, we could ready the next addressed key.
Their'd be some experimentation to do but not that much.
I'm looking at:
http://www.bitsavers.org/pdf/osborne/2F00040-00_Service2ndEdition_1983.pdf
page 274
Dwight
 
Dwight - would it be any help that I have the small circuit board that takes the keyboard's x and y matrix input and turns it into the signal for the cable that feeds the logic board?

Keep in mind - I understand (sorta) all you said in post #13, but have no idea how to do any of that.

Thanks.
Tom M.
 
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.
 
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.

How would you distinguish some ransom address and a scan? You still need to know when a hit on the address is really a scan of the keyboard and not just some random address read. The keyboard only sees 8 bits changing but no easy way to determine if they are a key board scan or a random address hit. The keyboard controller needs to know it was a keyboard scan to stop providing that data.
It might be possible to look at the timing between hits.
Dwight
 
Maybe I'm not reading enough into the design, but why does it matter? The O1 keyboard design uses 8 inverters to drive the rows and reads the columns. There's a tristate enable on the keyboard output. Other than that, it's basically a stupid switch matrix sampled from the O1 BIOS at a 60Hz rate. There's not even a keyboard "strobe" signal.

What I'm proposing is a 256 bit dual-ported RAM (read by O1, written by MCU) with independent address lines. The MCU never gets to see what the O1 is doing--and doesn't care--it just sets and clears bits in the RAM. You might be able to get away without dual-porting, if you slipped in between Z80 accesses (should be easy). In any case, you could implement the interface in a CPLD without much trouble.

For a look at the code, see page 442.
 
Dwight - would it be any help that I have the small circuit board that takes the keyboard's x and y matrix input and turns it into the signal for the cable that feeds the logic board?

Keep in mind - I understand (sorta) all you said in post #13, but have no idea how to do any of that.

Thanks.
Tom M.


Hi Tom
The computer does reads on 8 particular addresses, using the lowest address bit. Normally the entire set of addresses are used for both I/O, instruction fetch and data read. The only information to the pins is the address and not purpose. There are two lines to the read buffer to the data bus that do tell this. They are A9 and a I/O sel ( in/out select ) signal to the enable of the buffer, as seen on the schematic I pointed to. These can be use to detect when the code is specifically looking at the data.
I suspect the keyboard reading routine does a simple shift of a 1 bit across the low addresses of the I/O addresses. like this:
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
loop back.
It would do this over and over until is saw a bit hit on the read, indicating a cross hit. The keyboard controller could then provide the appropriate key to the Osborne, seeing the particular strobe. This part is relatively simple. The problem is to know when it is a unique keyboard strobe and not just a random address. One has to know when the keyboard input has been excepted to stop sending it.
Dwight
 
Maybe I'm not reading enough into the design, but why does it matter? The O1 keyboard design uses 8 inverters to drive the rows and reads the columns. There's a tristate enable on the keyboard output. Other than that, it's basically a stupid switch matrix sampled from the O1 BIOS at a 60Hz rate. There's not even a keyboard "strobe" signal.

What I'm proposing is a 256 bit dual-ported RAM (read by O1, written by MCU) with independent address lines. The MCU never gets to see what the O1 is doing--and doesn't care--it just sets and clears bits in the RAM. You might be able to get away without dual-porting, if you slipped in between Z80 accesses (should be easy). In any case, you could implement the interface in a CPLD without much trouble.

For a look at the code, see page 442.

So you think just holding the value for a particular length of time would be enough? How would you know that it was not off doing something else and miss the key boards data?
Dwight
 
Take a look at the code and notes. The keyboard matrix is scanned every 1/60th of a second. No "particular length of time" logic needed. Set the appropriate bit on PS/2 (or USB) "make" code and clear it on "break" code. Simple.
 
Back
Top