VOGONS


First post, by Dark_Lord

User metadata
Rank Newbie
Rank
Newbie

Hi all,

I am currently on a diagnostics odyssey for a fellow user from the German forum Dosforum. The board in question is a Gigabyte GA-486VF.

His original question was extremely strange, namely: When typing a ":", the system crashes. Turns out: The issue only happens when he is using the German keyboard layout (keyb gr). Turned out: There is more. While without a keyboard driver or with keyb us, anything is working fine, with keyb gr, something crashes when pressing any of the lock keys or shift. Additionally when pressing num lock, the caps lock LED turns on. When unplugging and replugging the keyboard (I know, not recommended as it was not intended as a hot-plug device), everything works again until the next of the mentioned keys is pressed. This made me think that it is actually not the system crashing but the keyboard through receiving some bad host-to-device commands.

What you need to know about the German keyboard driver is that it actually mimics an old mechanical typewriter. While in the US layout, Caps Lock is a toggle button, in German layout, Caps Lock latches Caps (no matter how often you press it) and Shift releases the Caps Lock again.

My idea is to use my RetroARDUInput (Vogons introduction here RetroArduInput - Use USB devices on your vintage computrs) to diagnose the board as I could monitor the interaction over the USB Serial port.

Result: Neither with the German nor with the US layout, the Arduino recognizes any Host to Device communication when the keyboard LEDs shall be set - not even a handshake!

Things tried first:
- The board came with an AMIKEY-2 keyboard controller - the owner already bought a second one. No success.
- Digging on The Retro Web for different BIOS versions for the GA-486VF/VS (they actually share the same BIOS as they are identical except for the RAM slots). No success

When looking at the pictures on The Retro Web and Google Image Search, I only found this board with a Lance keyboard controller - or one with an NEC. This made me think: They are all 8042 clones where the "secret sauce" is the microcode programmed to the chip. I remembered that Necroware had a repair of a board dealing with a keyboard controller problem, but I did not find the particular video. So I went to the other German forum Dosreloaded where he is active and asked him, he linked me this video: https://www.youtube.com/watch?v=l1FCdiAio5M&t=1s
Fun fact: This is actually the board that he repaired in this video, identified by the repaired spot under one of the Cache ICs. He replaced a Lance chip by the Amikey2 and in the end of the video tested the LED function in the BIOS (remember, normal keyboards register it somehow correctly when no keyboard driver is loaded). What he had to do to reach this state is to change a jumper bridge to change the clock of the keyboard controller as the Lance uses only 2/3 of the 14.3MHz typical for most 8042 clones.

He actually sent me a collection of his keyboard controllers, most were Intel/American Megatrends branded and worked completely the same as the AMIKEY2. One was labelled MB-300E and actually acted up completely until I changed the clock to the lower frequency again (now installing a jumper to be able to change it without soldering). With the 2/3 clock, the MB-300E behaved exact as all AMI with normally working keyboard until you hit a critical button with German keyboard driver loaded.

Going down the rabbit hole even deeper I found this Vogons thread Re: Amikey-2 pinout and there links that lead me to this schematic https://alexandrugroza.ro/microelectronics/sy … c-schematic.png

And there, the keyboard outputs are inverted with one inverter of a 7406 in between. However, on the Gigabyte board, the KBDO and KBCO pins are not inverted but directly connected to the keyboard port - meaning that KBDI , KBDO and the Keyboard Data Pin on the DIN connector are all directly bridged, same for KBCI, KBCO and the Keyboard Clock Pin on the DIN connector.

So next idea: Make a small PCB with a 40-pin socket for the keyboard controller, two 20-pin precision headers (to go into the socket of the keyboard controller) and a 7406 that goes with one inverter each in between of the KBDO and KBCO between controller and socket, inverting the signal from the AMIKEY-2. Said and done, but then the keyboard is completely dead. Looked into the diagram again, found pullup resistors, added them, again nothing. So it is seemingly not that easy as just inverting the signals.

I was digging through my other boards to see if I at least can find a board that has a non-inverted keyboard controller and found an NEC-branded controller on my 286 Headland HT-12 board - but before I start dismantling the whole system to get a good grip on the controller chip, I measured continuity between the keyboard data pin on the DIN connector and Pin 39 and 38 on the keyboard controller - 39 had continuity, 38 not, meaning 38 (KBDO) is inverted.

And this gives me to think: Even with an NEC or Lance controller, it could still be that the output is inverted due to a different firmware, meaning you can keep buying keyboard controllers until you have the luck to find one with a non-inverted output firmware.

Another last idea: Reprogram the EPROM in an existing 8042 - but first: Where could I find a firmware and second: With what? I have a TL866, but the XGECU Software does not list the 8042 as a supported chip, also not under potential other names.

Any ideas?

Reply 1 of 1, by Dark_Lord

User metadata
Rank Newbie
Rank
Newbie

Unfortunately, there was no reply so far, but I must confess this problem was so weird, I almost expected this 😀

The board is in the meantime fully repaired and I put the odyssey I went through on Youtube.

If you are interested, through which steps I went to identify the problems, you can look here:

English version:
https://youtu.be/oLy90e2j7ws

German version:
https://youtu.be/2Hm5jdN9iVU