EMMA 02

MSI/88e

  • Home
  • CDP18S020
    • General Information
    • I/O Map
  • COMX-35
    • General Information
    • F&M
    • Did You Know...?
    • I/O Map
    • Memory
    • Video
    • Sound
    • Keyboard
    • Cassette
    • Expansion Box
    • Disk
    • Printers
    • Thermal
    • PL-80
    • 32K RAM
    • 80 Column
    • F&M EPROM
    • F&M Joy Card
    • Super Board
    • COMX BASIC V1.00
  • COMiX-35
  • COSMAC Elf
    • General Information
    • I/O Map
    • Front Panels
  • COSMAC Elf 2000
    • General Information
    • I/O Map
    • Memory
    • Video
  • COSMAC Microtutor I
    • General Information
    • I/O Map
  • COSMAC Microtutor II
    • General Information
    • I/O Map
  • COSMAC VIP
    • General Information
    • I/O Map
    • Memory
    • Video
    • Sound
    • Keyboard
    • Cassette
    • STK
    • Chip-8 and 8X
    • Test-Word
    • Floating Point BASIC 2.2
  • COSMAC VIP II
    • General Information
    • I/O Map
    • Floating Point BASIC 2.2
  • Cidelsa
    • General Information
    • I/O Map
    • Memory
    • Video
    • Sound
  • Conic
  • Cosmicos
    • General Information
    • I/O Map
    • Front Panels
    • Mops & Hexmops
    • ASCII Monitor
    • HEX Monitor & UT4
  • CT Payphone
    • General Information
    • I/O Map
    • Memory
    • Keyboard
  • CyberVision
  • EDUKIT
    • General Information
    • I/O Map
    • Front Panel
  • EFA-Datorn
  • ETI-660
  • FRED I
    • General Information
    • I/O Map
    • Front Panel
    • Cassette
    • Software
    • CARDTRAN Syntax
  • FRED II
    • General Information
    • I/O Map
    • Front Panel
    • Cassette
    • Software
    • FPL-2
    • FPL-4
    • FEL-1
  • FRED III
    • General Information
    • I/O Map
    • Memory
    • Software
    • GPL-2
    • GPL-2b
    • GPL-3
    • GPL-4
  • HEC1802
  • HUG1802
    • General Information
    • I/O Map
    • Memory
    • Video
    • Sound
    • Keyboard
    • Cassette
    • Monitor
    • Chip-8 ETI-660
  • Infinite UC1800
    • General Information
    • I/O Map
    • Front Panel
  • JVIP
  • Macbug
  • Membership Card
    • General Information
    • I/O Map
  • MSI/88e
    • General Information
    • PCB
    • I/O Map
    • Memory
    • Display
    • Keyboard
    • Pseudo Code
  • Netronics Elf II
    • General Information
    • I/O Map
    • Front Panels
    • Keyboard
    • Giant Board
    • BASIC/Math
  • Oscom Nano
    • General Information
    • I/O Map
    • Memory
    • Video
    • Sound
    • Keyboard
    • Casette
  • PECOM 32 and 64
    • General Information
    • Software
    • I/O Map
    • Memory
    • Video
    • Sound
    • Keyboard
    • Casette
    • PECOM 32 BASIC
    • PECOM 64 BASIC 1.0 & 4.0
  • Pico/Elf V2
    • General Information
    • I/O Map
  • PTC-701
    • General Information
    • I/O Map
    • Memory
    • Video
    • Keyboard
    • PTC R1.7 Pseudo Code
    • PTC R2.0 Pseudo Code
  • Quest Super Elf
    • General Information
    • I/O Map
    • Front Panel
  • RCA APT VP4801
    • General Information
    • I/O Map
    • Memory
  • RCA CCGS
  • RCA CDS
    • General Information
    • I/O Map
  • RCA CMC
    • General Information
    • I/O Map
  • RCA MS2000
    • General Information
    • I/O Map
    • MicroDos
  • RCA MCDS
    • General Information
    • I/O Map
  • RCA Studio II
    • General Information
    • I/O Map
    • Memory
    • Video
    • Keyboard
    • Built-in Software
    • Cartridge Software
    • Homebrew Software
    • Chip-8
    • ST2
  • RCA Studio III
    • General Information
    • I/O Map
    • Memory
    • Video
    • Keyboard
    • Cartridge Software
  • RCA Studio IV
    • General Information
    • I/O Map
    • Memory
    • Video
    • Keyboard
    • ST4 Syntax
  • RCA Video Coin
    • General Information
    • I/O Map
    • Memory
    • GPL-A (2K RAM)
    • GPL-A (2K ROM)
    • GPL-2
    • GPL-3
    • GPL-4
  • SBC1802
  • Studio 2020
  • System 00
    • General Information
    • I/O Map
    • Front Panel
    • Operating Procedures
    • SYSTEM00 Syntax
  • Telmac 1800
    • General Information
    • I/O Map
    • Memory
    • Video
    • Keyboard
    • Cassette
  • Telmac 2000
    • General Information
    • I/O Map
    • Memory
    • Video
    • Sound
    • Keyboard
    • Cassette
  • Telmac TMC-600
    • General Information
    • Software
    • I/O Map
    • Memory
    • Video
    • Sound
    • Keyboard
    • Cassette
    • Telmac SBASIC v24.3
  • VELF
    • General Information
    • I/O Map
    • BIOS
    • Video
    • Keyboard
  • VIP2K MC
    • General Information
    • I/O Map
    • Memory
    • Video
    • Chip-8
  • VIS1802
  • VP3000
    • General Information
    • I/O Map
  • VT1802
  • Visicom COM-100
    • General Information
    • I/O Map
    • Memory
    • Video
    • Keyboard
    • Built-in Software
    • Cartridge Software

 

 

 

 

 

 

 

 

 

 

 

 

Keyboard

The MSI/88e has 27 keys on a membrane matrix keyboard (ASSY 27409 KEYBOARD MSI/88e-a), arranged as a 7×4 matrix with ENTER as a double-height key spanning rows 6-7 (28 matrix positions minus the row 7 continuation of ENTER). There is no dedicated keyboard controller: the matrix is scanned by the CPU, multiplexed with the display refresh.

Key Layout

Row Column 1 Column 2 Column 3 Column 4
1 STAT ▼ (down) ▲ (up) SRCH
2 PAGE DISP ACC ▶ (right) BACK SP
3 CLEAR SEND CLR MEM MOD
4 = 7 8 9
5 - 4 5 6
6 ENTER (double height) 1 2 3
7 (ENTER continues) CTL CHG 0 RTN

Scanning

The keyboard rows are the MAN2815 digit-select lines: row 1 is strobed with OUT 2 = 0x43 (digit 0, frame start) and rows 2-7 are strobed with OUT 2 = 0x42 (digits 1-15). The columns are read on INP 1 bits 0-2 (columns 1-3) and bit 6 (column 4), active low: a released column reads 1, so an idle read returns 0x47.

Example:

OUT 1 [00]; OUT 4 [00]    ; anti-ghost blank
OUT 2 [43|42]             ; digit select = keyboard row strobe
OUT 1 [seg]; OUT 4 [seg]  ; segment data for the digit
INP 1; ANI 07H; XRI 07H   ; keyboard columns, active low
BZ  -> no key             ; all 1s = no key pressed

The remaining INP 1 bits are not part of the matrix: bit 3 is the battery/voltage flag and bit 4 (mask 0x10) is a key/status line polled separately by the boot code.

Key Code Computation

The debounce/encode logic at 0x0484-0x0495 computes the key code from the slot (which digit/row was active when the key was seen) and the column.

Example:

key code = digit_slot + 9 * column

The encode logic adds 9 per set bit position (two conditional ADI 09H at 0x0491/0x0493); the exact column weighting, including the column-4 (bit 6) case, is not yet fully traced.

PC Key Mapping

The front panel buttons and the matrix share the same PC key assignments:

MSI/88e Key PC Key MSI/88e Key PC Key
0 - 9 0 - 9 ENTER RETURN
= = STAT S
- - SRCH R
▼ (down) D PAGE P
▲ (up) U DISP ACC A
▶ (right) F BACK SP B
CLEAR C SEND T
CLR MEM M MOD O
CTL CHG G RTN N

Emma 02 Implementation

The emulator models the keyboard as a standard matrix keyboard with <out mask="0x7F">2</out> (rows: raw OUT 2 value) and <in mask="0x47" pol="rev">1</in> (columns: INP 1 bits 0-2 and 6, active low). The row addresses are the raw strobe values written by the firmware: 0x43 for row 1 and 0x42 for rows 2-7, with column bits 0x01, 0x02, 0x04 and 0x40.

A known limitation of the standard matrix keyboard: it latches the raw OUT 2 value, so keypad rows 2-7 collapse onto the single 0x42 strobe (row 1 stays distinct at 0x43). All 27 keys register on INP 1, but the firmware’s slot-multiplex row decode (which of rows 2-7 was pressed) cannot be resolved by a plain matrix.

The Emma 02 front panel buttons drive all 27 keys directly, so the emulated terminal remains fully usable. Tying the matrix rows to the multitil digit state would be a possible future emulator enhancement.