The keypad/LCD emulates a simple serial terminal on COM2 at 57600 baud. It uses the AT89C2051 LCD chipset.
Curt Timmerman's LCD perl example works great for talking to the LCD if set to 57600.
Joe is working on figuring out the LEDs. We learned that Control-D sent to the LCD lights up the PC light and the LAN light.
The BIOS is listening on COM2 all the time for control information. The hard-shutdown sequence (258 - don't use, as it doesn't unmount filesystems) still works even without the original OS (Royce)
Here is Royce's perl script that demonstrates crude LCD writes, and some pictures of the load screen and the default screen displayed when the script terminates.
Details:
According to
a post from Julian Elischer,
the LCD lives on COM2.
The InterJet BIOS was customized to send POST data out COM2 to the LCD.
____________________ | Whistle InterJet | | | | Self test : 64 | | Power check: Good | | | | Loading system... | |____________________|Here we see that the kernel is picking up COM2 on sio1:
sio1 at port 0x2f8-0x2ff irq 3 on isa0 sio1: type 16550AHowever, if you configure minicom to point to /dev/cuaa1 (COM2), starting minicom causes the following string to appear at the bottom of the screen:
|ATAS7=45 S0=0 L1 V1 |
The resulting device is a little more cooperative.
Here are the graphics mode commands: Ctrl-A [byte] - set X coordinate (col) Ctrl-B [byte] - set Y coordinate (row) Ctrl-C [NUM] [byte1] ... [byteNUM] - draw bitmap graphics Each byte is an 8 bit vertical stripe. Note that the Y coordinate counts 8 vertical bits at a time; it's range is 0 - 7. Also: [Ctrl-F] - Turn off inverted text [Ctrl-G] - Turn on inverted text [Esc] W - Enable hardware watchdog (!) LCD will reset the box if no data received for 10 seconds (you can send a NUL byte) The other thing is that the LCD firmware goes nutty if you try to draw off the screen, so you have to "clip" your own drawings..
Some of the characters appear to do interesting things (in minicom vt102):
backspace works as expected (non-destructive); backspace beyond screen edge is ignored Enter carriage return without linefeed alt-[*] all alt keys appear oto be ignored; captured by host OS Control-B moved down a row? Control-C activates a weird drawing character set hitting a few F keys seems to turn this mode off (?) Control-F11 appears to be a drawing character as well Control-D turned on amber PC light and green LAN light Control-H move back a column Control-I horizontal tab; appears to be 8-stop Control-J moved down a row Control-L clear screenRebooting the machine does not clear the LCD. It must be power-cycled or manually cleared.
Joe's key mappings::) It looks like the keyboard/lcd is just a simple serial terminal on com2 at 57600 baud. Here's what the keys send:
0-9 0-9 * * # # softkey1 ^ softkey2 v softkey3 < softkey4 > X 0x09 (tab) return 0x0d (cr)
The original program that talked to the LCD was called paneld
.
Regarding the LCD+keypad: I unscrewed my InterJet and looked up the chipset (1x KS0107B + 2x KS0108B) and found out that these are just LCD-drivers (see: http://www.perfectlcd.com/form/IC_spec/samsung/ks0107.pdf and http://www.perfectlcd.com/form/IC_spec/samsung/ks0108.pdf). This means that the motherboard doesn't talk RS232 to the board. Removing the label from the chip next to the flatcable proved this, this chip is the AT89C2051. This is a little CPU with Flash, RAM, 16 I/O lines and RS232-UART on board (all in a 20-pin chip, nice!). Unfortunately this makes the search for the LCD-command-set useless since it has been written into this controller and is most likely totally custom build by Whistle. Which means that only the old guys from Whistle might be able to produce all the instructions.