mirror of
https://git.k-space.ee/arti/vt1200.git
synced 2026-10-30 12:03:54 +02:00
Distils public docs into reference/keyboard-mouse/PROTOCOL.md for the level-1 Keyboard (27) / Mouse (26) device tests: - keyboard: 4800 8N1 RS-423, self-test via FD -> 01 00 00 00 (errors 3D/3E) - mouse: 4800 8O1 RS-232, self-test via 'T' -> 4-byte report (errors 3D/3E, >=0x20 fatal) - separate ports: DUART2 A=keyboard, B=mouse (NOT daisy-chained) MAME already has an LK201 device (src/mame/dec/lk201.cpp/.h) but no DEC mouse.
7.9 KiB
7.9 KiB
Keyboard / mouse protocol — sources
Retrieval date for everything below: 2026-10-16 (all fetched by this session). Originals are preserved in this directory; text/OCR extractions are kept alongside where they were produced. Nothing here is VT1200-specific — see the note at the end.
Primary DEC documents
| Source | Local file | What it covers |
|---|---|---|
VCB02 Video Subsystem Technical Manual, EK-104AA-TM-001, DEC Educational Services, Feb 1987 (per vt100.net). Appendix B = LK201 Keyboard Spec, Appendix C = Mouse Spec, Appendix D = Digitizing Tablet. |
vcb02-technical-manual-ek-104aa-tm-001.pdf (scanned, 26 MB, no text layer) + vcb02-ek-104aa-tm-001-archive-djvu.txt (archive.org OCR of the same item, useful but noisy) |
The authoritative DEC spec for the LK201 keyboard protocol, the VSXXX-AA/-GA mouse, and the VSXXX-AB tablet. URL: https://vt100.net/dec/ek-104aa-tm-001.pdf (mirror of archive.org item 104aatm1). |
| VCB02 Video Subsystem Technical Manual, AZ-GLGAB-MN, DEC Educational Services, Feb 1986 (the edition Dan McMahill credits with "cleaning out the remaining mysteries"). | vcb02-az-glgab-mn-feb86-text.pdf + vcb02-az-glgab-mn-feb86-text.txt (pdftotext -layout) |
Same appendices, cleaner OCR. Appendix B (LK201) and Appendix C (Mouse) tables are readable here — this is the copy the facts in PROTOCOL.md are quoted from. URL: https://archive.org/download/bitsavers_decqbusvcbhnicalManualFeb86_19080378/AZ-GLGAB-MN_VCB02_Technical_Manual_Feb86_text.pdf |
| LK401 Keyboard Product Specification, DEC PS 3032041-0-0, 17 Jan 1990 (rev CX01). | vt100net-lk401.pdf + vt100net-lk401.txt |
The keyboard the VT1200 actually ships. States LK401 is "electrically and firmware functionally compatible" with the LK201, frame format (start + 8 data + stop), 4800 baud, self-test 4-byte result, key matrix/divisions. URL: https://vt100.net/mirror/antonio/lk401.pdf |
| LK201 schematic, MP01395, Oct 1983. | bitsavers-MP01395_LK201_Schematic_Oct83.pdf (scanned, no text layer) |
Hardware reference for the keyboard matrix / serial driver. URL: http://bitsavers.trailing-edge.com/pdf/dec/terminal/lk201/MP01395_LK201_Schematic_Oct83.pdf |
| LK201-AA 8051 firmware, part 23-004M2-00. | bitsavers-23-004M2-00_LK201AA_Firmware.zip (23-004M2-00.BIN, .hex) |
Firmware image for the older 8051 LK201. Note: MAME's lk201 device emulates the 6805 LK201 and wants 23-001s9-00.bin, which is not in this zip. URL: http://bitsavers.trailing-edge.com/pdf/dec/terminal/lk201/23-004M2-00_LK201AA_Firmware.zip |
| VT330/VT340 Programmer Reference Manual, Chapter 15 "Using a Mouse or Tablet". | vt100net-vt3xx-gp-chapter15.html |
Corroborates the VSXXX-AA mouse and VSXXX-AB tablet as DEC terminal locator devices on a dedicated "locator port" with the micro-DIN connector. URL: https://vt100.net/docs/vt3xx-gp/chapter15.html |
Reverse-engineered / driver sources (usable as documentation)
| Source | Local file | What it covers |
|---|---|---|
| Dan McMahill, "LK201 Keyboard Interface" (NetBSD docs). | netbsd-lk201-interface.html |
The single best public write-up of the LK201 protocol: 4800 8N1, connector pinout, all host→keyboard commands, the 4-byte power-up self-test result and error codes, key modes/divisions, autorepeat. URL: https://www.netbsd.org/docs/Hardware/Machines/DEC/lk201.html |
| NetBSD, LK201 keycode/division table. | netbsd-lk201-keycodes.html |
Complete keycode→key map, grouped by the 14 divisions. URL: https://www.netbsd.org/docs/Hardware/Machines/DEC/lk201_keycodes.html |
| Paul Flo Williams, vt100.net "LK201 Keyboard". | vt100net-lk201-keyboard.html |
A real captured VT320↔LK201 POST exchange (hex), including the FD self-test request and the 01 00 00 00 reply, and the stuck-key variant 01 00 3D AE. URL: https://vt100.net/keyboard.html |
Linux drivers/input/keyboard/lkkbd.c. |
linux-lkkbd.c |
Working LK201/LK401 driver. Command bytes (FD AB D3 E9, modes, LEDs, bell/keyclick), error codes 3D/3E, and the AB ID reply distinguishing LK201 (byte=1) from LK401 (byte=2). URL: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/drivers/input/keyboard/lkkbd.c |
Linux drivers/input/mouse/vsxxxaa.c. |
linux-vsxxxaa.c |
Working VSXXX-AA/-GA/AB driver: 4800 8o1, 'T' self-test trigger, POR/REL/ABS packet layouts, error-code semantics. URL: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/drivers/input/mouse/vsxxxaa.c |
elkay (issinoho), a modern LK401→USB adapter. |
elkay/ (git clone, shallow) |
docs/protocol.md and firmware/include/lk.h — a clean, implementation-grade restatement of the LK201/LK401 protocol including the E9 LK401-mode command. URL: https://github.com/issinoho/elkay |
lk201emu (pkoning2), LK201 emulator firmware. |
lk201emu/ (git clone, shallow) |
Arduino firmware that impersonates an LK201: shows exactly what to reply to FD (01 00 00 00) and AB. URL: https://github.com/pkoning2/lk201emu |
vtbt (tsowell), Bluetooth→LK201 bridge. |
vtbt/ (git clone, shallow) |
Another independent LK201 host implementation (ESP32), useful for cross-checking timing/sequence. URL: https://github.com/tsowell/vtbt |
libgii man page "LK201/LK401 keyboard input". |
libgii-input-lk201.7.html |
States LK201 and LK401 share the connector and serial format. URL: https://www.ibiblio.org/ggicore/documentation/libgii/1.0.x/input-lk201.7.html |
| comp.sys.dec post "The DEC round mouse VSXXX-AA" (Fred Kleinsorge, 1998). | vaxarchive-vsxxx.html |
Mouse pinout, 4800 8o1, command set, REL and self-test byte layouts. URL: https://vaxarchive.org/hardware/vsxxx.html |
| AllPinouts, "Mouse / Digitizer DEC 7-pin". | allpinouts-dec-7pin.html |
Connector pinout and the "4800, 8 data bits, odd parity, 1 stop bit" figure for VSXXX-AA/-GA/AB. URL: https://allpinouts.org/pinouts/connectors/input_device/mouse-digitizer-dec-7-pin/ |
Our own repository (cross-checks)
../EK-V1000-SV-002_service-guide.txt— VT1000/VT1200 service guide. Says the terminal uses the LK400 series keyboard (LK401 standard, LK402 word-processing); lists the Keyboard Test (27) and Mouse Test (26) as "firmware requests that the keyboard/mouse do its self-test and display any error code"; shows a separate mouse port with its own loopback connector (12-25628-01).../../docs/EK-V1200-UG-001_installing-VT1200.txt— "The keyboard cable connects to the system box" and "The mouse connects to the system box"; lists a dedicated Pointing Device Connector (Table C-2).../rom-strings.txt— terminal ROM namesLK401.C, and carries the messages "The keyboard ROM reported a fault at power-up" and "A key was held down during power-up", matching the LK201/LK401 error codes3E/3D.
Found but NOT retrieved (visible gaps)
| Source | Why | Note |
|---|---|---|
| LK400 Keyboard Firmware Requirements | Not located publicly. | The LK401 spec (line 678) points at this document as the definition of the terminal→keyboard command protocol. This is the one document that would make LK401 coverage first-class rather than "inherited from LK201". |
| VT1200-specific keyboard/mouse protocol | Does not appear to exist. | No VT1000/VT1200/VXT2000 manual documents the wire protocol; the manuals only say "uses the LK400 series keyboard / a 3-button mouse". |
MAME keyboard ROM 23-001s9-00.bin (6805 LK201) |
Not in the bitsavers zip we have (that zip is the 8051 23-004M2). |
Needed if we want to run MAME's lk201 device rather than a HLE model. |
bitsavers.org/pdf/dec/terminal/lk201/ directory listing |
403 to our fetcher; used the trailing-edge HTTP mirror instead. |
Functional equivalent retrieved. |
vaxarchive.org/hardware/vsxxx.html over plain HTTP |
406 (ModSecurity). | Retrieved over HTTPS with a browser UA. |
github.com/.../raw/... for the two Linux drivers |
GitHub raw returned a 429 rate-limit stub. | Re-fetched from git.kernel.org instead (identical drivers). |