From 912e6785e7a440a3fe23fe4772197c40a5828b87 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Wed, 1 Jul 2020 22:23:55 +1000 Subject: bus/mackbd: Added more notes, including a scan code table. --- src/devices/bus/mackbd/keyboard.cpp | 80 +++++++++++++++++++++++++++++++++++++ src/devices/bus/mackbd/mackbd.cpp | 9 +++++ src/devices/bus/mackbd/pluskbd.cpp | 33 ++++++++++----- 3 files changed, 111 insertions(+), 11 deletions(-) diff --git a/src/devices/bus/mackbd/keyboard.cpp b/src/devices/bus/mackbd/keyboard.cpp index e60386b6a50..f4aa2d1bfd4 100644 --- a/src/devices/bus/mackbd/keyboard.cpp +++ b/src/devices/bus/mackbd/keyboard.cpp @@ -27,6 +27,17 @@ ineffciently) reads the other eight keys via a three-by-three matrix. + Known MPU silkscreens (date code from real example): + + P8021H 1273 + 8409 + ©INTEL '81 + + MAB8021P + R044 + DND418V3 S + 341-0222B + +-----------+---------------+-------------------+ | Pin | Keyboard | Keypad | +-----------+---------------+-------------------+ @@ -87,6 +98,75 @@ | T1 | Ent + | +------+-----------------+ + +------+-------+-------+-------+ + | Code | ANSI | ISO | Pad | + +------+-------+-------+-------+ + | 0x01 | A | A | | + | 0x03 | S | S | . | + | 0x05 | D | D | * | + | 0x07 | F | F | | + | 0x09 | H | H | | + | 0x0b | G | G | | + | 0x0d | Z | § | + | + | 0x0f | X | Z | Clr | + | 0x11 | C | X | , | + | 0x13 | V | C | | + | 0x15 | | / | | + | 0x17 | B | V | | + | 0x19 | Q | Q | Ent | + | 0x1b | W | W | / | + | 0x1d | E | E | - | + | 0x1f | R | R | | + | 0x21 | Y | Y | | + | 0x23 | T | T | | + | 0x25 | 1 | 1 | 0 | + | 0x27 | 2 | 2 | 1 | + | 0x29 | 3 | 3 | 2 | + | 0x2b | 4 | 4 | 3 | + | 0x2d | 6 | 6 | 4 | + | 0x2f | 5 | 5 | 5 | + | 0x31 | = | = | 6 | + | 0x33 | 9 | 9 | 7 | + | 0x35 | 7 | 7 | | + | 0x37 | - | - | 8 | + | 0x39 | 8 | 8 | 9 | + | 0x3b | 0 | 0 | | + | 0x3d | ] | ] | | + | 0x3f | O | O | | + | 0x41 | U | U | | + | 0x43 | [ | [ | | + | 0x45 | I | I | | + | 0x47 | P | P | | + | 0x49 | Rtn | \ | | + | 0x4b | L | L | | + | 0x4d | J | J | | + | 0x4f | ' | ' | | + | 0x51 | K | K | | + | 0x53 | ; | ; | | + | 0x55 | \ | Rtn | | + | 0x57 | , | M | | + | 0x59 | / | . | | + | 0x5b | N | B | | + | 0x5d | M | N | | + | 0x5f | . | , | | + | 0x61 | Tab | Tab | | + | 0x63 | Spc | Ent | | + | 0x65 | ` | ` | | + | 0x67 | Bsp | Bsp | | + | 0x69 | Ent | Spc | | + | 0x6b | | | | + | 0x6d | | | | + | 0x6f | Cmd | Cmd | | + | 0x71 | Shift | Shift | | + | 0x73 | Caps | Caps | | + | 0x75 | Opt | Opt | | + | 0x77 | | | | + | 0x79 | | | | + | 0x7b | | | | + | 0x7d | | | | + | 0x7f | | | | + +------+-------+-------+-------+ + Known part numbers: * M0110 (U.S. - ANSI) * M0110B (British - ISO) diff --git a/src/devices/bus/mackbd/mackbd.cpp b/src/devices/bus/mackbd/mackbd.cpp index 76f1cebb99c..aa3713e5fd4 100644 --- a/src/devices/bus/mackbd/mackbd.cpp +++ b/src/devices/bus/mackbd/mackbd.cpp @@ -65,6 +65,15 @@ * 0x36: Perform self test Peripheral responds with 0x7d (pass) or 0x77 (failure). + Responses to polling commands 0x10 and 0x14 have the first bit clear + for key down events or set for key up events. + + The keypad passes polling commands 0x10 and 0x14 on to the keyboard + if it has no response to send. If the keypad has a key transition + to report, it responds with the octet 0x79. After receiving this + response, the host should send command 0x10 to receive the key + transition event from the keypad. + Additionally, if bit 5 of the octet sent to the peripheral is set (0x40), the octet is passed on to a daisy-chained peripheral with this bit cleared. The response from the daisy-chained peripheral is diff --git a/src/devices/bus/mackbd/pluskbd.cpp b/src/devices/bus/mackbd/pluskbd.cpp index 325bcef4236..41da3f01f43 100644 --- a/src/devices/bus/mackbd/pluskbd.cpp +++ b/src/devices/bus/mackbd/pluskbd.cpp @@ -4,17 +4,17 @@ Apple M0110A keyboard with integrated keypad - This keyboard was only available in U.S./ANSI layout. International - markets continued to receive the M0110/M0120 keyboard/keypad. - - A version was made with katakana labels on the key caps in addition - to the Latin labels, ¥ (Yen) replacing \ (backslash), and カナ - (kana) replacing Caps Lock. It is still has the ANSI "typewriter - shift" arrangement for Latin characters and ASCII punctuation (it - doesn't use the JIS "bit shift" arrangement), all keys are in the - same positions, and there are no additional keys. It's functionally - identical to the U.S. version (including the kana key mechanically - locking like Caps Lock). + This keyboard emulates an M0120 keypad with an M0110 keyboard + plugged in to it. Keypad keys and arrow keys produce scan codes + with the 0x79 prefix. The keyboard simulates holding shift when + pressing the = / * + keys on the keypad. + + This keyboard was only available in ANSI layout, no ISO layout + variants were made. International markets continued to receive the + M0110/M0120 keyboard/keypad. International variants of the M0110A + were eventually produced, differing only in key cap labels. All + keys have the same shapes, sizes, positions and scan codes as they + do on the U.S. version. Emulation based entirely on examining the MPU program and observing behaviour. There may be additional hardware in the keyboard that is @@ -64,6 +64,17 @@ | DB7 | V B N M , . / X C | +-----+-----------------------------------------------------------+ + Known part numbers: + * M0110A (U.S.) + * M0110A F (French) + * M0110A J (Japanese) + + The Japanese version has katakana labels on the key caps in addition + to the Latin labels, ¥ (Yen) replacing \ (backslash), and カナ + (kana) replacing Caps Lock. It is still has the ANSI "typewriter + shift" arrangement for Latin characters and ASCII punctuation (it + doesn't use the JIS "bit shift" arrangement). + ***************************************************************************/ #include "emu.h" -- cgit v1.2.3