IBM LPFK reverse engineering

Michael B. Brutman mbbrutman-cctalk at
Tue Aug 19 22:33:03 CDT 2008

Ethan Dicks wrote:
> Thanks for the writeup.  I look forward to trying this out on my LPFKs
> when I get home.
> The protocol you describe is radically different from the one that
> codeninja describes at  My first guess
> is that there are two versions of the firmware running around, but is
> there any way to confirm that?  Minor variations in IBM part numbers or
> what the keyboards were intended to attach to?

I don't know where the codeninja guy got his information.  After all of 
the research that I've done I don't think that he has a normal LPFK. 
His came from an engineering department and may have been modified, just 
like Dave & the guys here were talking about modifying theirs.

> In terms of usage, were there overlay cards for different applications, or
> how did you tell what keys meant what?  Were the LEDs used in practice
> to light up to confirm keypress, or were they used to indicate which
> functions were enabled, or what?

I have a blank overlay and a CADAM overlay that labels the keystrokes. 
I will probably scan the blank shortly so that people can download and 
make their own.

I think in practice the LEDs were used to indicate functions that were 
toggled on.  And as you mentioned, they could also be set to show you 
what functions were legal/available to select.

The only real wrinkle with this protocol is that the host has to 
'confirm' each keypress by relighting the entire keyboard.  (Their is no 
way to change just one key - you have to send the entire bitmap down.) 
It makes sense though - selecting one key could often have a side-effect 
on what other keys/functions would be available.

> I've used dialboxes with graphic workstations in the past, but I've never
> worked with a keypad like this.  I'm just trying to get a handle on how
> it was used.  I have my own ideas about what to use one for (LCDproc, an
> open source project I work on, for example), but I'm just curious why
> this keypad has the features it does and how it was originally used.
> Thanks!
> -ethan

I decided to be painful to myself and I fired up the PCjr and Zbasic, a 
crufty old BASIC compiler.  Zbasic is nice because it supports a 
primitive form of structured BASIC, but it's definitely got some bugs in 
the COM handling code.  The PCjr is only spec'ed to handle up to 2400 
bps, but for single character transmissions like this it is doing fine.

I'm looking forward to running a telnet BBS on it and using the keypad 
as a combination status indicator/input device.  That way I can know how 
busy the machine is an interact with it in a limited way without turning 
the monitor on.

Evil grin ..  each lit button represents a connection to kill. :-)


More information about the cctech mailing list