summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2020-07-01 22:23:55 +1000
committer Vas Crabb <vas@vastheman.com>2020-07-01 22:23:55 +1000
commit912e6785e7a440a3fe23fe4772197c40a5828b87 (patch)
tree9f212465b88d9abed4ac768e8a8b0aa8f61d9966
parentfee93592d2471aac74d8e731608f655936d8c4b9 (diff)
bus/mackbd: Added more notes, including a scan code table.
-rw-r--r--src/devices/bus/mackbd/keyboard.cpp80
-rw-r--r--src/devices/bus/mackbd/mackbd.cpp9
-rw-r--r--src/devices/bus/mackbd/pluskbd.cpp33
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"