General Information
The MSI/88e is a handheld data entry and collection terminal with cassette recording and acoustic (telephone) data transmission. It is based on the RCA CDP1802 CMOS microprocessor and runs from an 8 KB system ROM. The unit is battery powered and keeps its data and programs in battery-backed CMOS RAM.
The firmware is a stack-based threaded bytecode interpreter: the operator/monitor logic is stored as a token stream and executed by a small native CDP1802 engine. For details about the bytecode language, see the MSI/88e Pseudo Code section. The complete chip inventory of the PCBs is documented in the PCB section.
Technical specifications
Clock: 2.0 MHz (assumed, to be confirmed)
Memory:
8 KB System ROM (SCM23C65 / CM6400-3)
Battery-backed RAM (10K/12K or 24K board variant)
Display: 2× MAN2815 14-segment LED modules (16 characters)
Keyboard: 27 keys (7×4 matrix, rows multiplexed with display refresh)
I/O: Polled OUT/INP ports, no interrupts
Serial: Q-bit bit-banged FSK for cassette/acoustic; parallel handshake port on OUT 6, OUT 7 and INP 6 (SEND).
Power: Main batteries plus lithium “keepers” backup
Firmware architecture
The 8 KB system ROM contains a stack-based threaded bytecode interpreter that executes the firmware’s operator/monitor logic, stored as a token stream starting at 0x1E2B. The interpreter dispatches single-byte opcodes through a handler table and uses R1 as a working register for computed jumps (it is not an interrupt vector).
The terminal uses no interrupts; all I/O is polled in a main loop. On boot with no program loaded, the firmware runs a self-test / idle-display program and then deliberately powers down (DIS/IDL) to save the batteries. The sync bytes 5A 5B at RAM 0x8103/0x8104 mark “a program is loaded”; an external loader (host or cassette) stores the program entry vector at 0x8203/0x8204 into the battery-backed RAM.
Firmware strings
The message table (~0x0690) contains: ERR, DONE, END, R RDY, T RDY, C RDY, REPLACE CELLS, LOW BATTERY, DOUBLE KEY ERROR, ENTER HEADER, BAUD, DELAY, LOADING. This indicates a portable data logger / recording terminal with a real-time clock that writes time-stamped headers to a cassette recorder and transmits via an acoustic coupler.
Other information
- PCB - complete chip inventory of all boards
- MSI/88e Pseudo Code - the bytecode interpreter language
Technical documents
- msi88.asm - Complete CDP1802 disassembly of the 8 KB system ROM
- MSI/88e Startup Boot Trace - Annotated cold boot trace from reset through native 1802 initialisation and bytecode interpreter startup to the keyboard idle loop
Main emulator features
- 2× MAN2815 14-segment LED display emulation
- Polled OUT/INP I/O, no interrupts
- 27-key matrix keyboard
- Q-bit bit-banged FSK cassette/acoustic output
- MSI/88e bytecode pseudo-code debugger