Display
The MSI/88e uses two Litronix/Monsanto MAN2815 8-character 14-segment alphanumeric LED modules on the display board (ASSY 27807), giving a 16-character red display. The display has no controller chip of its own; the CPU drives it directly through the output ports in a polling loop that also scans the keyboard.
Hardware
| Modules | 2× MAN2815 (8 characters each, 14 segments plus decimal point, end-stackable) |
| Characters | 16 (digit 0 = leftmost) |
| Segments | A-F (frame), G (single combined middle bar - the G1/G2 halves are not separately addressed), diagonals h/j/n/p, centre verticals k/m, decimal point |
| Segment drivers | 2× DS8867N segment drivers, SN75492N digit driver, 2× MM74C164N shift registers, 2× MM74C374N latches |
| Refresh | CPU-polled multiplexed refresh in the main loop (no display controller, no interrupts) |
Display Refresh
Each character is one slot in the refresh routine at 0x044B-0x0482. One pass writes one digit:
-
OUT 10x00 andOUT 40x00 - anti-ghost blank before the digit select changes -
OUT 20x43(digit 0, frame start) or0x42(next digit) - digit select, shared with the keyboard row scan -
OUT 1segment LOW byte - segments A-F plus G, bits 0-7 -
OUT 4segment HIGH byte - diagonals and centre verticals, bits 8-13 -
INP 1- keyboard/status read (not a display function)
A boot trace shows roughly ten to eleven slots per refresh pass, which confirms two 8-character modules. OUT 3 is never used for the display. When the terminal powers down after boot (no program loaded), the refresh loop stops and the display freezes at its last content until the next power cycle.
Segment Encoding
bit 0 |
Decimal point |
bits 1-6 |
Frame segments A, B, C, D, E, F |
bit 7 |
G - the middle bar as a single segment |
bits 8-13 |
Diagonals and centre verticals h, j, k, m, n, p |
The firmware’s font is horizontally mirrored: the encoding is confirmed by 0x9E = “3” = segments A, B, C, D, G. To render characters correctly, the emulator treats G as one full middle bar and applies a horizontal mirror (swap B/F and C/E, mirror the diagonals). With this mapping the boot display reads ERR 2 ... 1 cleanly.
Emma 02 Implementation
The emulator models the display as a 16-cell man2815 multitil display: out type multitil on port 1 (segment LOW byte), out type multitil_high on port 4 (segment HIGH byte), and out type multitil_digit on port 2 (digit select). No cycle type multitil is used - digit advance comes from OUT 2, not from a timer - and no in type multitil is needed since the firmware never resets the digit counter via an input port.