Vintage PC pages
Home -> Vintage PCs -> IBM 3270 PC -> IBM 6110344 Keyboard

The IBM 6110344 Keyboard

Note: You need a browser capable of displaying SVG images to see the keyboard layouts.

The IBM 6110344 is a 122-key model F keyboard, originally intended for use with the IBM 3270 PC. It is possible to connect it to a standard AT-class PC.

The keyboard has a 5-pin DIN plug that uses the 240-degree spacing. Its pinout is the same as the 1390876:

A normal AT keyboard uses the 180-degree spacing and this pinout:

Therefore the keyboard can be connected to an AT or PS/2 connector, either by making a simple adaptor, or by swapping the lead with one from a real IBM AT keyboard. Both use the same 3×2 Berg connector at the keyboard end.

DIP switches / Identity

The keyboard has eight DIP switches. According to the guide to operations, they should be ignored. If you do change them, they change bits in the keyboard ID (returned by command 0xF2). If all switches are left open (or disconnected) the ID returned is 0xBF 0xBF. Closing a switch sets the corresponding bit to 0.

Switches 1-6 correspond to bits 5-0 of the first ID byte. Switches 7-8 correspond to bits 5-4 of the second ID byte. The header on the controller PCB, to which the DIP switches are connected, has 12 pairs of pins and is silkscreened "KBDID A" (on the first 6 pairs) and "KBDID B" (on the second six). The other four pairs of pins correspond to bits 3-0 of the second ID byte; these would need to be set with jumpers.

LEDs

There are no LEDs, and the keyboard rejects commands to set LEDs.

Controller Swap

The controller PCB is identical to the one in the PC AT keyboard; both use an 8048 microcontroller to read keys and transmit them to the computer, and the key matrices are compatible. It is possible to create a hybrid controller image, which improves compatibility with AT-class PCs. This is now described in its own page.

Scancodes

The 6110344 uses the AT keyboard protocol and Scancode set 3. Since the 3270 PC predates the AT, this is probably the earliest use of this protocol and scancode set on a PC, and suggests that both originate in the world of 3270 terminals.

The keys on the 6110344 are laid out like this:

Markings in blue apply when the PC is behaving as a PC, rather than as a terminal.

When in use, the keyboard always uses Scancode set 3. It rejects requests to change the scancode set. The scancodes it returns are identical to the 1390876:

Notes:

Scancode translation

On a true 3270 PC, the Set 3 scancodes from the keyboard are converted to Set 1 (XT) scancodes by the keyboard card. Unlike on an AT, where the mapping takes place within the controller, the conversion is done by the BIOS and can be changed. The default mapping gives these codes:

If the PC has a 'simple' keyboard controller card, the translation table is visible in memory at 0CAA60h. If it has a 'complicated' card, the default table is at 0CB640h, but it is not visible in memory except when keypresses are actually being handled. Either way, a custom table address can be set using INT 52h, with AH=1 and DX=segment of new table. The table has three bytes per 3270 scancode:

Flags are:

0
Beep and ignore key
1
Simulate Shift up, scancode, Shift down.
2
Simulate Shift down, scancode, Shift up.
3
Simulate scancode only.
4
If scancode is 52h (Ins pressed), simulate a release immediately after the press. Otherwise behave as 3.
5
If numlock is on, behave as 2. Otherwise behave as 4.
6
If numlock is off, behave as 1. Otherwise behave as 4.
7
If Shift up and Numlock on, or Shift down and Numlock off, then behave as 3. Otherwise behave as 0.
8
If Ctrl and Alt are not both pressed, behave as 3. If key is F2 and the standard keymap is in use, then select custom keymap. If key is not F2 and a custom keymap is in use, select the standard keymap. Then behave as 3.
9
If shift down and Numlock off, behave as 1. If shift up and Numlock on, behave as 2. Otherwise behave as 0.
10-15
Do not use these - they will crash the PC.

The default scancode mapping table in the ROM is listed below. It only returns scancodes for keys that are present on a real XT; the others just beep.

3270 scancode3270 keyUnshifted XT scancode Unshifted flagsShifted XT scancode Shifted flagsComments
00000000
01▫ ↔ □000000
02000000 Keyboard never returns this scancode.
03ChgSc/Jump/CrSel000000
04WS/Ctrl/ExSel000000
05Help/SysRq000000'Simple' controller.
05Help/SysRqD93D93'Complicated' controller.
06Clear/Test000000
07PF13B (F1)83B (F1)8 Ctrl+Alt+PF1 selects standard keymap
08PF13000000
09CTRL1D (Ctrl)41D (Ctrl)4
0ACopy/Auto/Pause000000
0BErase EOF/ErInp000000
0CFinish/Attn000000
0DLeft TAB0F (Tab)30F (Tab)3
0E~ `29 (`)329 (`)3
0FPF23C (F2)83C (F2)8 Ctrl+Alt+PF2 selects custom keymap
10PF14000000
11Reset/Quit000000
12Left SHIFT2A (Shift)42A (Shift)4
13> <33 (,)234 (.)3
14CAPS LOCK3A (Caps Lock)43A (Caps Lock)4
15Q10 (Q)310 (Q)3
1612 (1)32 (1)3
17PF33D (F3)33D (F3)3
18PF15000000
19Left ALT38 (Alt)438 (Alt)4
1AZ2C (Z)32C (Z)3
1BS1F (S)31F (S)3
1CA1E (A)31E (A)3
1DW11 (W)311 (W)3
1E203 (2)303 (2)3
1FPF43E (F4)33E (F4)3
20PF16000000
21C2E (C)32E (C)3
22X2D (X)32D (X)3
23D20 (D)320 (D)3
24E12 (E)312 (E)3
25405 (4)305 (4)3
26304 (3)304 (3)3
27PF53F (F5)33F (F5)3
28PF17000000
29SPACE39 (Space)339 (Space)3
2AV2F (V)32F (V)3
2BF21 (F)321 (F)3
2CT14 (T)314 (T)3
2DR13 (R)313 (R)3
2E506 (5)306 (5)3
2FPF640 (F6)340 (F6)3
30PF18000000
31N31 (N)331 (N)3
32B30 (B)330 (B)3
33H23 (H)323 (H)3
34G22 (G)322 (G)3
35Y15 (Y)315 (Y)3
36607 (6)307 (6)3
37PF741 (F7)341 (F7)3
38PF19000000
39Right ALT38 (Alt)438 (Alt)4
3AM32 (M)332 (M)3
3BJ24 (J)324 (J)3
3CU16 (U)316 (U)3
3D708 (7)308 (7)3
3E809 (8)309 (8)3
3FPF842 (F8)342 (F8)3
40PF20000000
41, ,33 (,)333 (,)3
42K25 (K)325 (K)3
43I17 (I)317 (I)3
44O18 (O)318 (O)3
4500B (0)30B (0)3
4690A (9)30A (9)3
47PF943 (F9)343 (Tab)3
48PF21000000
49. .34 (.)334 (.)3
4A? /35 (/)335 (/)3
4BL26 (L)326 (L)3
4C; :27 (;)327 (;)3
4DP19 (P)319 (P)3
4E_ -0C (-)30C (-)3
4FPF1044 (F10)344 (F10)3
50PF22000000
51000000 Unused key position under right SHIFT
52" '28 (')328 (')3
53} {1B (])31B (])3
54! cent1A ([)31A ([)3
55+ =0D (=)30D (=)3
56PF11000000
57PF23000000
58ENTER1C (Return)31C (Return)3
59Right SHIFT36 (Right Shift)436 (Right Shift)4
5ACR1C (Return)31C (Return)3
5B| \2B (\)32B (\)3
5C000000 Unused key position under Return
5D000000 Unused key position under Backspace
5EPF12000000
5FPF24000000
60Down50 (Down)550 (Down)6
61Left4B (Left)54B (Left)6
62↖ key between cursors000000
63Up48 (Up)548 (Up)6
64Backtab000000
65Insert52 (Insert)552 (Insert)6
66Backspace0E (Backspace)30E (Backspace)3
67Dup / PA1000000
68Unused key position under keypad 0000000
69Keypad 14F (Keypad 1)34F (Keypad 1)3
6ARight4D (Right)54D (Right)6
6BKeypad 44B (Keypad 4)34B (Keypad 4)3
6CKeypad 747 (Keypad 7)347 (Keypad 7)3
6DDel53 (Del)353 (Del)3
6EField Mark / PA2000000
6FPA3000000
70Keypad 052 (Keypad 0)452 (Keypad 0)3
71Keypad .53 (Keypad .)353 (Keypad .)3
72Keypad 250 (Keypad 2)350 (Keypad 2)3
73Keypad 54C (Keypad 5)34C (Keypad 5)3
74Keypad 64D (Keypad 6)34D (Keypad 6)3
75Keypad 848 (Keypad 8)348 (Keypad 8)3
76ESC01 (Esc)301 (Esc)3
77NumLk45 (Num Lock)345 (Num Lock)3
78000000 Unused key position under keypad Enter
79Enter/+4E (Keypad +)34E (Keypad +)3
7AKeypad 351 (Keypad 3)351 (Keypad 3)3
7BKeypad -4A (Keypad -)34A (Keypad -)3
7CRight TAB0F (Tab)3000
7DKeypad 949 (Keypad 9)349 (Keypad 9)3
7EScrLk46 (Scroll Lock)446 (Scroll Lock)4
7F000000 Keyboard never returns these scancodes.
80000000
81000000
82000000
83Print/*/Ident37 (Keypad *)437 (Keypad *)4
84Space39 (Space)339 (Space)3

Commands

The keyboard accepts the following commands. Most of them behave as documented for the 102-key PS/2 keyboard, but there are a couple of exceptions:

CommandDescription
EEDiagnostic echo.
F2Read keyboard ID (usually BF BF).
F3 xxSet repeat rate and delay.
F4Enable keyboard (clear errors).
F5Disable keyboard.
F6Set defaults.
F7Set all keys to repeat. No keys will send break codes.
F8Set all keys to give make/break codes. No keys will repeat.
F9Set all keys to give make codes only. No keys will repeat or send break codes.
FABehaves as FB. On a 102-key PS/2 keyboard, would set all keys to repeat and to give make/break codes.
FBSet specified key(s) to repeat. They will not send break codes. Followed by a list of scancodes, which should be terminated by F4.
FCSet specified key(s) to give make/break codes. They will not repeat. Followed by a list of scancodes, which should be terminated by F4.
FDSet specified key(s) to give make codes only. They will not repeat or send break codes. Followed by a list of scancodes, which should be terminated by F4.
FEResend last scancode.
FFReset. The keyboard will respond with AA (as for the 102-key keyboard) followed by the 2-byte keyboard ID.

The F0 command (set / get scancode set) and ED command (set LEDs) are not supported.


John Elliott 27 June 2011.