per
Veteran Member
About a month ago I completed a documented firmware-disassembly of a few versions of the Tandberg Data TDV-5010 keyboard firmware. The TDV-5010 is best known as a 122-key PS/2 keyboard from Tandberg, made from 1989 and until the mid 1990s. These were in particular made for some of their customers, for example Norsk Data before their 1992 bankruptcy. Not sure how popular these were outside Norway, but I'll mention it here just in case.
I put the work on GitHub, so it is possible to see the changes between the different versions I have been able to get a dump from.
So what can you do with this? For once it documents the evolution of this firmware, but more importantly it makes it very straightforwards to patch the layout of these keyboards. Most of this is defined in some data-tables at the end of the code, with only a few keys (backspace, scroll-lock, arrow-down) having some form of hardcoded behaviour elsewhere in the code. This patching can for instance be done to re-assign the extra 20 non-standard keys of these keyboards into standard recognized keys (ie. F13-F24, GUI keys, Media keys, WWW keys, etc..). Without patching, the extra keys will use the non-standard scancode prefix of 80h, which can confuse some applications not expecting this scheme. Should you decide to patch, you also need to update the checksum. The checksum function is the 8bit add-with-carry operation, and the expected sum should equal 0AAh.
I put the work on GitHub, so it is possible to see the changes between the different versions I have been able to get a dump from.
Commits · Frodevan/TDV-5010_Firmware
Disassembled firmware of multiple versions of the TDV-5010 Firmware type 968551. Implementing a 122-key PS/2 Keyboard using an Intel 8051 controller. - Commits · Frodevan/TDV-5010_Firmware
github.com
So what can you do with this? For once it documents the evolution of this firmware, but more importantly it makes it very straightforwards to patch the layout of these keyboards. Most of this is defined in some data-tables at the end of the code, with only a few keys (backspace, scroll-lock, arrow-down) having some form of hardcoded behaviour elsewhere in the code. This patching can for instance be done to re-assign the extra 20 non-standard keys of these keyboards into standard recognized keys (ie. F13-F24, GUI keys, Media keys, WWW keys, etc..). Without patching, the extra keys will use the non-standard scancode prefix of 80h, which can confuse some applications not expecting this scheme. Should you decide to patch, you also need to update the checksum. The checksum function is the 8bit add-with-carry operation, and the expected sum should equal 0AAh.