The ROM operating system and bootloader of CyberVision 2001 (U22) is a 1 KB, 2708-compatible mask ROM, CDP1834. It handles screen and video initialization, memory management, tape data interpretation, cassette deck motor control and character display.
OPERATING SYSTEM FUNCTIONALITY
The basic flow of the operating system ROM, from a user’s perspective is:
- User physically powers on the CyberVision 2001.
- ROM readies the system, activates the cassette motor, clears the screen and displays “CYBERVISION”
- User inserts a tape into the embedded cassette deck and presses Play.
- ROM monitors cassette data input (from RIGHT channel audio) scanning for valid or invalid byte data, and will show the following:
- “STANDBY . . .” When a valid data stream has been opened and bytes are being read.
- “CHECK THE TAPE.” When an invalid data stream has been detected.
- After the necessary data has been loaded (2 KB Data RAM), the data is output to the screen for program execution (2 KB Video RAM).
- At various points the program data will activate or deactivate cassette playback to handle program flow and user interactivity.
DATASHEET DESCRIPTION
The RCA-CDP1834 and CDP1834C are 8192-bit mask-programmable CMOS read-only memories organized as 1024-words x 8-bits and designed for use in CDP1800-series microprocessor systems. The CDP1834-series ROMs are completely static; no clocks are required.
Two chip-select inputs (CS1, CS2) are provided for memory expansion. The polarity of each Chip-Select is user mask-programmable. The CDP1834-series is pin-compatible with industry type 2708 EPROM. The CDP1834 has a recommended operating voltage range of 4 to 10.5 volts and the CDP1834C has a recommended operating voltage range of 4 to 6.5 volts. The CDP1834 and the CDP1834C are supplied in 24-lead dual-inline ceramic packages (D suffix) and in 24-lead dual-in-line plastic packages (E suffix). The CDP1834C is also available in chip form (H suffix).
ROM DUMP
The initial (corrupted) ROM of the CyberVision 2001 was first dumped in March 2023. Two versions of the ROM would eventually be obtained to ensure a pristine copy exists. The original copy had a stuck forth bit, and was initially shared by Matt Pilz on March 2, 2023. It was disassembled and reconstructed with high confidence by a group of 1802 enthusiasts across more than 100 posts over at the COSMAS ELF Group. Special thanks for the disassembly and repair effort go to Marcel van Tongeren, Nobuyoshi and Herb Johnson.
A second clean copy from a known operational CyberVision was graciously dumped on March 25, 2023, thanks to CyberVision owner Josh Denty. with assistance from The Bloop Museum to create BIN and HEX dumps of the ROM. This clean copy was able to be compared to the original ROM dump and restoration effort, to verify all 1024 bytes across the two and a double-verification that we have a pure ROM. With this, an original clean ROM of the CyberVision 2001 operating system now exists, as presented below in HEX binary.
Download ROM and Disassembly (Includes 2708, 2716 and 2732 Prepared ROM images and Commented ASM).
F8 80 B0 FE AC F8 FF AF F8 07 BF F8 05 BB 8C AB F8 81 B1 F8 31 A1 F8 83 B3 F8 B9 A3 F8 08 B4 8C A4 F8 83 B5 F8 BC A5 F8 40 B9 F8 20 A9 D1 F8 81 B1 F8 55 A1 F8 83 B5 F8 BC A5 F8 0B B4 F8 CA A4 F8 83 B6 F8 C1 A6 D1 F8 80 B8 F8 D0 A8 ED 7B 30 5A C4 C4 C4 C4 C4 C4 C4 C4 C4 8C AA F8 07 BD F8 FF AD D8 F8 A5 F3 32 90 8A FB FF 3A 62 F8 0B B4 F8 CA A4 F8 83 B6 F8 E2 A6 F8 81 B1 F8 55 A1 D1 C4 F8 81 B1 F8 2A A1 D1 30 10 C4 C4 C4 C4 8C AA D8 F8 A5 F3 32 9D 8A FB FF 3A 62 30 6D C0 83 F2 D8 F0 B6 D8 F0 A6 D8 F0 B7 D8 F0 A7 D8 F0 AE E6 D8 97 5F 96 EF F3 32 BC E6 60 30 B0 87 5F 86 F3 3A B8 ED 8E 3A 8E 7A 30 E5 C4 14 36 24 88 C4 D0 3D D0 6A 1A 30 CF 88 88 88 88 88 88 88 88 88 88 88 88 88 88 C4 EF 8B 73 9B 73 F8 C0 73 F8 FF AF ED C0 07 FD F8 6D A0 D0 C4 D0 F0 FE 8C C4 C4 C4 3B 04 FC 01 B6 F0 FE FC 00 F6 A6 F8 81 BE F8 D4 AE EE 86 F3 32 1C 60 8E FB FC 3A 12 EF 8E FF D4 5F F4 A6 ED C0 80 F9 C4 C4 D0 69 3E 2B 69 30 29 D0 84 A8 94 B8 99 AA 08 E3 F2 E5 F1 58 18 2A 8A 3A 37 84 FC 40 A4 3B 4C 94 FC 01 B4 29 89 3A 31 ED 30 30 16 D0 84 AE 94 BE 06 7E 33 53 46 A7 F8 82 B7 47 B8 07 A8 8C AA E5 48 F1 54 14 48 F1 54 14 48 F1 54 ED 1A 8A FB 03 3A 84 8E FC 03 AE A4 9E B4 30 59 84 FC 3E A4 3B 68 94 FC 01 B4 30 68 D0 F8 08 B4 99 A4 24 C4 89 AE 2E 8E 32 90 84 FC 40 A4 3B 9A 94 FC 01 B4 30 9A D0 9C 3A B1 F8 01 BC F8 BF BE F8 BF AE F8 F0 FC 01 3A B9 8E FC 01 AE 3A B7 9E FC 01 BE 3A B4 9C FF 01 BC 9C 32 AA 30 B1 C4 C4 17 0E 16 26 0D 15 25 0C 14 24 08 10 20 40 00 09 11 21 41 01 0A 12 22 42 02 0B 13 23 43 03 44 04 45 05 46 06 0F 07 27 47 00 00 00 48 82 50 82 59 82 62 82 6B 82 74 82 7D 82 86 82 8F 82 98 82 A1 82 AA 82 B3 82 BC 82 C5 82 CE 82 D7 82 E0 82 E9 82 F2 82 FB 83 04 83 0D 83 16 83 1F 83 28 83 31 83 3A 83 43 83 4C 83 55 83 5E 83 67 83 70 83 79 83 82 83 8B 83 94 83 9D 83 A6 83 AF 09 0C 01 15 00 15 18 0C 10 02 05 00 00 15 00 08 1C 00 09 0C 01 09 0C 10 1C 0C 04 09 0C 01 08 0C 11 18 0C 10 05 00 05 1C 0C 15 00 00 14 0D 0C 04 1C 0C 01 18 0C 10 09 0C 01 17 0C 01 18 0C 10 0C 0C 05 00 25 00 00 14 00 09 0C 01 19 0C 11 18 0C 10 09 0C 01 18 0C 15 18 0C 10 09 0C 01 1D 0C 15 14 00 14 0D 0C 01 1D 0C 11 1C 0C 10 09 0C 01 15 00 00 18 0C 10 0D 06 00 15 00 15 1C 24 00 0D 0C 04 1D 0C 00 1C 0C 04 0D 0C 04 1D 0C 00 14 00 00 09 0C 01 15 08 05 18 0C 10 05 00 05 1D 0C 15 14 00 14 08 0D 00 00 15 00 08 1C 00 00 0E 04 01 2A 00 18 24 00 05 02 04 1D 11 00 14 20 04 05 00 00 15 00 00 1C 0C 04 07 02 05 15 10 15 14 00 14 07 00 05 15 18 15 14 00 14 0D 0C 05 15 00 15 1C 0C 14 0D 0C 01 1D 0C 10 14 00 00 0D 0C 05 15 00 15 1C 2C 16 0D 0C 01 1D 0D 10 14 20 04 09 0C 01 18 0C 01 18 0C 10 0C 0D 04 00 15 00 00 14 00 05 00 05 15 00 15 18 0C 10 05 00 05 15 00 15 20 24 00 05 00 05 15 05 15 1C 1C 14 05 00 05 22 26 00 14 00 14 05 00 05 20 25 00 00 14 00 0C 0C 05 02 24 00 1C 0C 04 3D 33 3E 3F 32 2F 3F 3B 3F 00 05 00 00 14 00 00 14 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 40 80 C0 3F 7F BF FF 4E 4E 18 44 16 1C 36 3E 24 38 24 30 2E 4E 4E 4E 88 4E 38 3A 14 2E 1A 4E 16 44 4E 4C 4C 4C 4E 4E 88 18 22 1C 18 28 4E 3A 22 1C 4E 3A 14 32 1C 4C 88 F8 CA A4 D1 F8 80 B8 F8 D0 A8 D8 C0 80 A0
(Easter Egg: As first spotted by Nobuyoshi, the otherwise unused and inaccessible data bytes between 80C9—80CE contain “14H, 36H, 24H” which map to the letters “ARI” in ROM. This is the company that produced the ROM and software for the CyberVision 2001.)
The binary can be programmed to any 2708, 2716 or 2732 EPROM as a drop-in replacement to the original CDP1834. Since the CyberVision 2001 logic board and original mask ROM had no connection to pins 19 and 21, there is no need to lift pins or otherwise alter any of the above EPROMs. For 2716 and 2732 variants, I recommend duplicating the 1 KB data so it replicates at each 1 KB so that you don’t have to worry about grounding the extra address lines or any interference. For convenience, the ZIP file above includes 2708, 2716 and 2732-formatted binary files.
Programming to an original 2708 will require a special EPROM programmer or adapter, due to its unusual voltages. For this reason and the general obscurity of 2708 chips, I would advise to simply program to 2716 chips as described above. If you do want a modern programmer for reading and writing 2704, 2708, TMS2716, MCM68764 and MCM6877 EPROMs, there is an excellent Arduino-based solution by Matt Millman that I followed as part of my early 2708 exploration in this CyberVision project. It is a handy piece of equipment for various vintage dumping and recovery efforts.
ROM DISASSEMBLY
A month-long effort of disassembling the original corrupted ROM was carried out by the COSMAC ELF 1802 group, with Marcel van Tongeren, Nobuyoshi and Herb Johnson taking on the brunt of the work as a collaborative session. Following the acquisition of Josh’s clean ROM, we were able to do a final comparison of the 24 deviating bytes to arrive at the final disassembly. I have made some additional annotations. This disassembly can be compiled into a byte-compatible ROM using Herb’s A18 cross-assembler, using a syntax such as:
A18 “cybervision2001.asm” -b “cybervision.bin”
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; CyberVision 2001 ROM Disassembly
; Original ROM by John Powers / ARI, '77
;
; March 27, 2023 - REV 1.0
;
; ROM Sources and Credits:
; Josh Denty
; The Bleep Museum
; Matt Pilz
;
; Disassembly and 1802 Experts:
; Marcel van Tongeren
; https://www.emma02.hobby-site.com/
; Herb Johnson
; https://retrotechnology.com/
; Nobuyoshi
;
; Assemble using Herb Johnson's A18 Cross-Assembler
; https://www.retrotechnology.com/memship/a18.html
;
; CyberVision Information Center
; https://CyberVision.MattPilz.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Origin set to 08000H, EOF = 083FFH
ORG 08000H
; CPU Type:
CPU 1802
; Labels:
R8000 EQU 8000H
R8010 EQU 8010H
R805A EQU 805AH
R8062 EQU 8062H
R806D EQU 806DH
R808E EQU 808EH
R8090 EQU 8090H
R809D EQU 809DH
J80A0 EQU 80A0H
R80B0 EQU 80B0H
R80B8 EQU 80B8H
R80BC EQU 80BCH
R80CF EQU 80CFH
S80D0 EQU 80D0H
R80E5 EQU 80E5H
J80F9 EQU 80F9H
R8104 EQU 8104H
R8112 EQU 8112H
R811C EQU 811CH
R8129 EQU 8129H
R812B EQU 812BH
R8130 EQU 8130H
S8131 EQU 8131H
R8137 EQU 8137H
R814C EQU 814CH
R8153 EQU 8153H
R8159 EQU 8159H
R8168 EQU 8168H
R8184 EQU 8184H
R8190 EQU 8190H
R819A EQU 819AH
R81AA EQU 81AAH
R81B1 EQU 81B1H
R81B4 EQU 81B4H
R81B7 EQU 81B7H
R81B9 EQU 81B9H
J83F2 EQU 83F2H
; Character Table:
CHR_0 EQU 8250H
CHR_1 EQU 8259H
CHR_2 EQU 8262H
CHR_3 EQU 826BH
CHR_4 EQU 8274H
CHR_5 EQU 827DH
CHR_6 EQU 8286H
CHR_7 EQU 828FH
CHR_8 EQU 8298H
CHR_9 EQU 82A1H
CHR_A EQU 82AAH
CHR_B EQU 82B3H
CHR_C EQU 82BCH
CHR_D EQU 82C5H
CHR_E EQU 82CEH
CHR_F EQU 82D7H
CHR_G EQU 82E0H
CHR_H EQU 82E9H
CHR_I EQU 82F2H
CHR_J EQU 82FBH
CHR_K EQU 8304H
CHR_L EQU 830DH
CHR_M EQU 8316H
CHR_N EQU 831FH
CHR_O EQU 8328H
CHR_P EQU 8331H
CHR_Q EQU 833AH
CHR_R EQU 8343H
CHR_S EQU 834CH
CHR_T EQU 8355H
CHR_U EQU 835EH
CHR_V EQU 8367H
CHR_W EQU 8370H
CHR_X EQU 8379H
CHR_Y EQU 8382H
CHR_Z EQU 838BH
CHR_QUE EQU 8394H
CHR_EXP EQU 839DH
CHR_PER EQU 83A6H
CHR_SPC EQU 83AFH
; Unused or indirect labels:
; S802E
; S8047
; S8063
; S8080
; S8088
; S8091
; S80A1
; S80A4
; S80A7
; S80AA
; S80AD
; S80B1
; S812A
; S8155
; R819E
; R81D4
; S83F6
; S83FD
; Out of range branches or addresses:
; 07FDH referenced from 80F1H
; Register Definitions:
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
RA EQU 10
RB EQU 11
RC EQU 12
RD EQU 13
RE EQU 14
RF EQU 15
; Start code segment
R8000
LDI 80H ;8000: F8 80
PHI R0 ;8002: B0 Bootstrap to 0x8000
SHL ;8003: FE
PLO RC ;8004: AC RC.0 = 0 used to set D to 0 with one byte instruction
LDI 0FFH ;8005: F8 FF
PLO RF ;8007: AF
LDI 07H ;8008: F8 07
PHI RF ;800A: BF RF = 0x7FF end RAM and used as stack pointed
LDI 05H ;800B: F8 05
PHI RB ;800D: BB
GLO RC ;800E: 8C
PLO RB ;800F: AB RB = 0x5 used as start address in RAM
R8010
LDI 81H ;8010: F8 81
PHI R1 ;8012: B1
LDI 31H ;8013: F8 31
PLO R1 ;8015: A1 R1 = 0x8131 - clear screen routine
LDI 83H ;8016: F8 83
PHI R3 ;8018: B3
LDI 0B9H ;8019: F8 B9
PLO R3 ;801B: A3 R3 = 0x83B9 M(R3) = 0 used to 'clear' screen bits
LDI 08H ;801C: F8 08
PHI R4 ;801E: B4
GLO RC ;801F: 8C
PLO R4 ;8020: A4 R4 = 0x800 pointer to VRAM
LDI 83H ;8021: F8 83
PHI R5 ;8023: B5
LDI 0BCH ;8024: F8 BC
PLO R5 ;8026: A5 R5 = 0x83BC M(R5) = 0xC0 to set screen bits b6/b7
LDI 40H ;8027: F8 40
PHI R9 ;8029: B9 R9.1 = 0x40, 64 (63 used) bytes per 3 screen lines
LDI 20H ;802A: F8 20
PLO R9 ;802C: A9 R9.0 = 0x20, 32 * 3 lines = 96 lines
SEP R1 ;802D: D1 CALL clear screen
S802E
LDI 81H ;802E: F8 81
PHI R1 ;8030: B1
LDI 55H ;8031: F8 55
PLO R1 ;8033: A1 R1 = 0x8155 - screen output routine
LDI 83H ;8034: F8 83
PHI R5 ;8036: B5
LDI 0BCH ;8037: F8 BC
PLO R5 ;8039: A5 R5 = 0x83BC M(R5) = 0xC0 to set screen bits b6/b7
LDI 0BH ;803A: F8 0B
PHI R4 ;803C: B4
LDI 0CAH ;803D: F8 CA
PLO R4 ;803F: A4 R4 = 0x0BCA pointer to VRAM
LDI 83H ;8040: F8 83
PHI R6 ;8042: B6
LDI 0C1H ;8043: F8 C1
PLO R6 ;8045: A6 R6 = 0x83C1 pointer to text string CYBERVISION
SEP R1 ;8046: D1 CALL screen output routine
S8047
LDI 80H ;8047: F8 80
PHI R8 ;8049: B8
LDI 0D0H ;804A: F8 D0
PLO R8 ;804C: A8 R8 = 0x80D0 - tape input routine
SEX RD ;804D: ED Set RD as stack pointed, used to store tape input
SEQ ;804E: 7B Q=1 / start tape motor
BR R805A ;804F: 30 5A goto 0x805A
NOP ;8051: C4
NOP ;8052: C4
NOP ;8053: C4
NOP ;8054: C4
NOP ;8055: C4
NOP ;8056: C4
NOP ;8057: C4
NOP ;8058: C4
NOP ;8059: C4
R805A
GLO RC ;805A: 8C
PLO RA ;805B: AA RA.0 = 0, received byte counter
LDI 07H ;805C: F8 07
PHI RD ;805E: BD
LDI 0FFH ;805F: F8 FF
PLO RD ;8061: AD RD = 0x7FF, stack pointer used to store tape input
R8062
SEP R8 ;8062: D8 CALL get byte from tape
S8063
LDI 0A5H ;8063: F8 A5
XOR ;8065: F3
BZ R8090 ;8066: 32 90 IF first byte = 0xA5, tape is ok goto 0x8090
GLO RA ;8068: 8A First byte != 0xA5 potential tape error
XRI 0FFH ;8069: FB FF
BNZ R8062 ;806B: 3A 62 Goto 8062 to load next byte if <255 received
R806D
LDI 0BH ;806D: F8 0B If RA.0 = 255 we have received 255 bytes != 0xA5
PHI R4 ;806F: B4 meaning tape error...
LDI 0CAH ;8070: F8 CA
PLO R4 ;8072: A4 R4 = 0x0BCA pointer to VRAM
LDI 83H ;8073: F8 83
PHI R6 ;8075: B6
LDI 0E2H ;8076: F8 E2
PLO R6 ;8078: A6 R6 = 0x83E2 pointer to text string CHECK THE TAPE
LDI 81H ;8079: F8 81
PHI R1 ;807B: B1
LDI 55H ;807C: F8 55
PLO R1 ;807E: A1 R1 = 0x8155 - screen output routine
SEP R1 ;807F: D1 CALL screen output routine
S8080
NOP ;8080: C4
LDI 81H ;8081: F8 81
PHI R1 ;8083: B1
LDI 2AH ;8084: F8 2A
PLO R1 ;8086: A1 R1 = 0x812A - keypad input routine
SEP R1 ;8087: D1 CALL to keypad input routine
S8088
BR R8010 ;8088: 30 10 Key pressed restart to try and reload
NOP ;808A: C4
NOP ;808B: C4
NOP ;808C: C4
NOP ;808D: C4
R808E
GLO RC ;808E: 8C
PLO RA ;808F: AA RA.0 = 0, received byte counter
R8090
SEP R8 ;8090: D8 Tape ok - second byte via CALL get byte from tape
S8091
LDI 0A5H ;8091: F8 A5
XOR ;8093: F3
BZ R809D ;8094: 32 9D If second byte = 0xA5 goto 0x809D and then 0x83F2
GLO RA ;8096: 8A Second byte != 0xA5 potential tape error
XRI 0FFH ;8097: FB FF
BNZ R8062 ;8099: 3A 62 Goto 8062 to load next byte if <255 received
BR R806D ;809B: 30 6D If RA.0 = 255 we have received 255 bytes != 0xA5
R809D
LBR J83F2 ;809D: C0 83 F2
J80A0
SEP R8 ;80A0: D8
S80A1
LDX ;80A1: F0
PHI R6 ;80A2: B6
SEP R8 ;80A3: D8
S80A4
LDX ;80A4: F0
PLO R6 ;80A5: A6
SEP R8 ;80A6: D8 R6 = byte 4/5 - start location in RAM
S80A7
LDX ;80A7: F0
PHI R7 ;80A8: B7
SEP R8 ;80A9: D8
S80AA
LDX ;80AA: F0
PLO R7 ;80AB: A7
SEP R8 ;80AC: D8 R7 = byte 6/7 - end location in RAM
S80AD
LDX ;80AD: F0
PLO RE ;80AE: AE RE.0 = byte 8 - nonzero if more is to be loaded.
SEX R6 ;80AF: E6 Set R6 as stack pointer to start loading
R80B0
SEP R8 ;80B0: D8 CALL get byte from tape
S80B1
GHI R7 ;80B1: 97
STR RF ;80B2: 5F
GHI R6 ;80B3: 96
SEX RF ;80B4: EF
XOR ;80B5: F3 Compare high byte load location (R6) with end (R7)
BZ R80BC ;80B6: 32 BC If equal check low byte on 0x80BC
R80B8
SEX R6 ;80B8: E6 Not ready so stack back to R6 and load next byte
IRX ;80B9: 60 R6++
BR R80B0 ;80BA: 30 B0
R80BC
GLO R7 ;80BC: 87
STR RF ;80BD: 5F
GLO R6 ;80BE: 86
XOR ;80BF: F3 Compare low byte load location (R6) with end (R7)
BNZ R80B8 ;80C0: 3A B8 If not equal continue loading next byte
SEX RD ;80C2: ED First program loaded, set RD as stack pointer
GLO RE ;80C3: 8E
BNZ R808E ;80C4: 3A 8E Load next program if RE.1 / byte 8 was not 0?
REQ ;80C6: 7A Done, Q=0 / stop tape motor
BR R80E5 ;80C7: 30 E5 Goto 80E5
DB 0C4H ;80C9: C4
DB 14H ;80CA: 14
DB 36H ;80CB: 36
DB 24H ;80CC: 24
DB 88H ;80CD: 88
DB 0C4H ;80CE: C4
R80CF
SEP R0 ;80CF: D0
S80D0
BN2 S80D0 ;80D0: 3D D0 Wait until tape data is available EF2
INP 2 ;80D2: 6A Store tape byte on stack
INC RA ;80D3: 1A Increase received byte counter
BR R80CF ;80D4: 30 CF Return
DB 88H ;80D6: 88
DB 88H ;80D7: 88
DB 88H ;80D8: 88
DB 88H ;80D9: 88
DB 88H ;80DA: 88
DB 88H ;80DB: 88
DB 88H ;80DC: 88
DB 88H ;80DD: 88
DB 88H ;80DE: 88
DB 88H ;80DF: 88
DB 88H ;80E0: 88
DB 88H ;80E1: 88
DB 88H ;80E2: 88
DB 88H ;80E3: 88
NOP ;80E4: C4
R80E5
SEX RF ;80E5: EF RF stack pointer (0x7FF)
GLO RB ;80E6: 8B
STXD ;80E7: 73
GHI RB ;80E8: 9B
STXD ;80E9: 73
LDI 0C0H ;80EA: F8 C0
STXD ;80EC: 73 Stack 0x7FD: C0 00 05 to branch to RAM start address
LDI 0FFH ;80ED: F8 FF
PLO RF ;80EF: AF Stack back to 0x7FF
SEX RD ;80F0: ED RD stack pointer and goto 0x7FD and then 0x5
LBR 07FDH ;80F1: C0 07 FD
LDI 6DH ;80F4: F8 6D
PLO R0 ;80F6: A0 R0.0 = 0x6D, i.e. goto 806D return from RAM routine?
SEP R0 ;80F7: D0 Not used?
NOP ;80F8: C4
; subroutine 80FA: return the character code for the key code in M(RX)
; R6.1 = (keycode & 0x80) ? 1 : 0
; M(RF) = character code(0x00 -- 0x27), 0x28 if no match
; R6.0 = 2 * M(RF)
; D, R6, RE destroyed
; return with X=0xD
J80F9
SEP R0 ;80F9: D0
LDX ;80FA: F0
SHL ;80FB: FE
GLO RC ;80FC: 8C
NOP ;80FD: C4
NOP ;80FE: C4
NOP ;80FF: C4
BNF R8104 ;8100: 3B 04
ADI 01H ;8102: FC 01
R8104
PHI R6 ;8104: B6
LDX ;8105: F0
SHL ;8106: FE
ADI 00H ;8107: FC 00
SHR ;8109: F6
PLO R6 ;810A: A6
LDI 81H ;810B: F8 81
PHI RE ;810D: BE
LDI 0D4H ;810E: F8 D4
PLO RE ;8110: AE
SEX RE ;8111: EE
R8112
GLO R6 ;8112: 86
XOR ;8113: F3
BZ R811C ;8114: 32 1C
IRX ;8116: 60
GLO RE ;8117: 8E
XRI 0FCH ;8118: FB FC
BNZ R8112 ;811A: 3A 12
R811C
SEX RF ;811C: EF
GLO RE ;811D: 8E
SMI 0D4H ;811E: FF D4
STR RF ;8120: 5F
ADD ;8121: F4
PLO R6 ;8122: A6
SEX RD ;8123: ED
LBR J80F9 ;8124: C0 80 F9
NOP ;8127: C4
NOP ;8128: C4
R8129
SEP R0 ;8129: D0
S812A
INP 1 ;812A: 69
R812B
BN3 R812B ;812B: 3E 2B
INP 1 ;812D: 69
BR R8129 ;812E: 30 29
R8130
SEP R0 ;8130: D0
S8131
GLO R4 ;8131: 84
PLO R8 ;8132: A8
GHI R4 ;8133: 94
PHI R8 ;8134: B8
GHI R9 ;8135: 99
PLO RA ;8136: AA
R8137
LDN R8 ;8137: 08
SEX R3 ;8138: E3
AND ;8139: F2
SEX R5 ;813A: E5
OR ;813B: F1
STR R8 ;813C: 58
INC R8 ;813D: 18
DEC RA ;813E: 2A
GLO RA ;813F: 8A
BNZ R8137 ;8140: 3A 37
GLO R4 ;8142: 84
ADI 40H ;8143: FC 40
PLO R4 ;8145: A4
BNF R814C ;8146: 3B 4C
GHI R4 ;8148: 94
ADI 01H ;8149: FC 01
PHI R4 ;814B: B4
R814C
DEC R9 ;814C: 29
GLO R9 ;814D: 89
BNZ S8131 ;814E: 3A 31
SEX RD ;8150: ED
BR R8130 ;8151: 30 30
R8153
INC R6 ;8153: 16
SEP R0 ;8154: D0
S8155
GLO R4 ;8155: 84
PLO RE ;8156: AE
GHI R4 ;8157: 94
PHI RE ;8158: BE
R8159
LDN R6 ;8159: 06
SHLC ;815A: 7E
BDF R8153 ;815B: 33 53
LDA R6 ;815D: 46
PLO R7 ;815E: A7
LDI 82H ;815F: F8 82
PHI R7 ;8161: B7
LDA R7 ;8162: 47
PHI R8 ;8163: B8
LDN R7 ;8164: 07
PLO R8 ;8165: A8
GLO RC ;8166: 8C
PLO RA ;8167: AA
R8168
SEX R5 ;8168: E5
LDA R8 ;8169: 48
OR ;816A: F1
STR R4 ;816B: 54
INC R4 ;816C: 14
LDA R8 ;816D: 48
OR ;816E: F1
STR R4 ;816F: 54
INC R4 ;8170: 14
LDA R8 ;8171: 48
OR ;8172: F1
STR R4 ;8173: 54
SEX RD ;8174: ED
INC RA ;8175: 1A
GLO RA ;8176: 8A
XRI 03H ;8177: FB 03
BNZ R8184 ;8179: 3A 84
GLO RE ;817B: 8E
ADI 03H ;817C: FC 03
PLO RE ;817E: AE
PLO R4 ;817F: A4
GHI RE ;8180: 9E
PHI R4 ;8181: B4
BR R8159 ;8182: 30 59
R8184
GLO R4 ;8184: 84
ADI 3EH ;8185: FC 3E
PLO R4 ;8187: A4
BNF R8168 ;8188: 3B 68
GHI R4 ;818A: 94
ADI 01H ;818B: FC 01
PHI R4 ;818D: B4
BR R8168 ;818E: 30 68
; subroutine 8191:
; R4 = 0800H + (R9.1 - 1) * 40H + (R9.0 - 1)
; (calculate VRAM address)
; D, RE destroyed (RE.1 preserved if R9.1 > 0)
R8190
SEP R0 ;8190: D0
LDI 08H ;8191: F8 08
PHI R4 ;8193: B4
GHI R9 ;8194: 99
PLO R4 ;8195: A4
DEC R4 ;8196: 24
NOP ;8197: C4
GLO R9 ;8198: 89
PLO RE ;8199: AE
R819A
DEC RE ;819A: 2E
GLO RE ;819B: 8E
BZ R8190 ;819C: 32 90
R819E
GLO R4 ;819E: 84
ADI 40H ;819F: FC 40
PLO R4 ;81A1: A4
BNF R819A ;81A2: 3B 9A
GHI R4 ;81A4: 94
ADI 01H ;81A5: FC 01
PHI R4 ;81A7: B4
BR R819A ;81A8: 30 9A
; subroutine 81AB
; wait x seconds (assuming 2.52MHz) where
; x = (RC.1 == 0) ? 1 : RC.1
; (about x*313446 clock cycles)
; D, RC.1, RE destroyed
R81AA
SEP R0 ;81AA: D0
GHI RC ;81AB: 9C
BNZ R81B1 ;81AC: 3A B1
LDI 01H ;81AE: F8 01
PHI RC ;81B0: BC
R81B1
LDI 0BFH ;81B1: F8 BF
PHI RE ;81B3: BE
R81B4
LDI 0BFH ;81B4: F8 BF
PLO RE ;81B6: AE
R81B7
LDI 0F0H ;81B7: F8 F0
R81B9
ADI 01H ;81B9: FC 01
BNZ R81B9 ;81BB: 3A B9
GLO RE ;81BD: 8E
ADI 01H ;81BE: FC 01
PLO RE ;81C0: AE
BNZ R81B7 ;81C1: 3A B7
GHI RE ;81C3: 9E
ADI 01H ;81C4: FC 01
PHI RE ;81C6: BE
BNZ R81B4 ;81C7: 3A B4
GHI RC ;81C9: 9C
SMI 01H ;81CA: FF 01
PHI RC ;81CC: BC
GHI RC ;81CD: 9C
BZ R81AA ;81CE: 32 AA
BR R81B1 ;81D0: 30 B1
NOP ;81D2: C4
NOP ;81D3: C4
; table: character code to keycode
R81D4
DB 17H, 0EH, 16H, 26H, 0DH, 15H, 25H, 0CH, 14H, 24H ; 0 to 9
DB 08H, 10H, 20H, 40H, 00H, 09H, 11H, 21H, 41H, 01H ; A to J
DB 0AH, 12H, 22H, 42H, 02H, 0BH, 13H, 23H, 43H, 03H ; K to T
DB 44H, 04H, 45H, 05H, 46H, 06H ; U to Z
DB 0FH, 07H, 27H, 47H ; ON, ENT, OFF, CLR
DB 00H ;81FC: 00
DB 00H ;81FD: 00
DB 00H ;81FE: 00
DB 48H ;81FF: 48
;table at 8200 based on Nobuyoshi char info
DW CHR_0 ;8200-82 50 * 0
DW CHR_1 ;8202-82 59 * 1
DW CHR_2 ;8204-82 62 * 2
DW CHR_3 ;8206-82 6B * 3
DW CHR_4 ;8208-82 74 * 4
DW CHR_5 ;820A-82 7D * 5
DW CHR_6 ;820C-82 86 * 6
DW CHR_7 ;820E-82 8F * 7
DW CHR_8 ;8210-82 98 * 8
DW CHR_9 ;8212-82 A1 * 9
DW CHR_A ;8214-82 AA * A
DW CHR_B ;8216-82 B3 * B
DW CHR_C ;8218-82 BC * C
DW CHR_D ;821A-82 C5 * D
DW CHR_E ;821C-82 CE * E
DW CHR_F ;821E-82 D7 * F
DW CHR_G ;8220-82 E0 * G
DW CHR_H ;8222-82 E9 * H
DW CHR_I ;8224-82 F2 * I
DW CHR_J ;8226-82 FB * J
DW CHR_K ;8228-83 04 * K
DW CHR_L ;822A-83 0D * L
DW CHR_M ;822C-83 16 * M
DW CHR_N ;822E-83 1F * N
DW CHR_O ;8230-83 28 * O
DW CHR_P ;8232-83 31 * P
DW CHR_Q ;8234-83 3A * Q
DW CHR_R ;8236-83 43 * R
DW CHR_S ;8238-83 4C * S
DW CHR_T ;823A-83 55 * T
DW CHR_U ;823C-83 5E * U
DW CHR_V ;823E-83 67 * V
DW CHR_W ;8240-83 70 * W
DW CHR_X ;8242-83 79 * X
DW CHR_Y ;8244-83 82 * Y
DW CHR_Z ;8246-83 8B * Z
DW CHR_QUE ;8248-83 94 * ?
DW CHR_EXP ;824A-83 9D * !
DW CHR_PER ;824C-83 A6 * . period
DW CHR_SPC ;824E-83 AF * space
;end of table, start of char bit-values
; nine bytes, each byte contributes first SIX lower bits.
; numbers 0-9, letters A-Z, punctuation, space.
DB 09H ;8250: 09 ;0
DB 0CH ;8251: 0C
DB 01H ;8252: 01
DB 15H ;8253: 15
DB 00H ;8254: 00
DB 15H ;8255: 15
DB 18H ;8256: 18
DB 0CH ;8257: 0C
DB 10H ;8258: 10
DB 02H ;8259: 02 ;1
DB 05H ;825A: 05
DB 00H ;825B: 00
DB 00H ;825C: 00
DB 15H ;825D: 15
DB 00H ;825E: 00
DB 08H ;825F: 08
DB 1CH ;8260: 1C
DB 00H ;8261: 00
DB 09H ;8262: 09 ;2
DB 0CH ;8263: 0C
DB 01H ;8264: 01
DB 09H ;8265: 09
DB 0CH ;8266: 0C
DB 10H ;8267: 10
DB 1CH ;8268: 1C
DB 0CH ;8269: 0C
DB 04H ;826A: 04
DB 09H ;826B: 09 ;3
DB 0CH ;826C: 0C
DB 01H ;826D: 01
DB 08H ;826E: 08
DB 0CH ;826F: 0C
DB 11H ;8270: 11
DB 18H ;8271: 18
DB 0CH ;8272: 0C
DB 10H ;8273: 10
DB 05H ;8274: 05 ;4
DB 00H ;8275: 00
DB 05H ;8276: 05
DB 1CH ;8277: 1C
DB 0CH ;8278: 0C
DB 15H ;8279: 15
DB 00H ;827A: 00
DB 00H ;827B: 00
DB 14H ;827C: 14
DB 0DH ;827D: 0D ;5
DB 0CH ;827E: 0C
DB 04H ;827F: 04
DB 1CH ;8280: 1C
DB 0CH ;8281: 0C
DB 01H ;8282: 01
DB 18H ;8283: 18
DB 0CH ;8284: 0C
DB 10H ;8285: 10
DB 09H ;8286: 09 ;6
DB 0CH ;8287: 0C
DB 01H ;8288: 01
DB 17H ;8289: 17
DB 0CH ;828A: 0C
DB 01H ;828B: 01
DB 18H ;828C: 18
DB 0CH ;828D: 0C
DB 10H ;828E: 10
DB 0CH ;828F: 0C ;7
DB 0CH ;8290: 0C
DB 05H ;8291: 05
DB 00H ;8292: 00
DB 25H ;8293: 25
DB 00H ;8294: 00
DB 00H ;8295: 00
DB 14H ;8296: 14
DB 00H ;8297: 00
DB 09H ;8298: 09 ;8
DB 0CH ;8299: 0C
DB 01H ;829A: 01
DB 19H ;829B: 19
DB 0CH ;829C: 0C
DB 11H ;829D: 11
DB 18H ;829E: 18
DB 0CH ;829F: 0C
DB 10H ;82A0: 10
DB 09H ;82A1: 09 ;9
DB 0CH ;82A2: 0C
DB 01H ;82A3: 01
DB 18H ;82A4: 18
DB 0CH ;82A5: 0C
DB 15H ;82A6: 15
DB 18H ;82A7: 18
DB 0CH ;82A8: 0C
DB 10H ;82A9: 10
DB 09H ;82AA: 09 ;A
DB 0CH ;82AB: 0C
DB 01H ;82AC: 01
DB 1DH ;82AD: 1D
DB 0CH ;82AE: 0C
DB 15H ;82AF: 15
DB 14H ;82B0: 14
DB 00H ;82B1: 00
DB 14H ;82B2: 14
DB 0DH ;82B3: 0D ;B
DB 0CH ;82B4: 0C
DB 01H ;82B5: 01
DB 1DH ;82B6: 1D
DB 0CH ;82B7: 0C
DB 11H ;82B8: 11
DB 1CH ;82B9: 1C
DB 0CH ;82BA: 0C
DB 10H ;82BB: 10
DB 09H ;82BC: 09 ;C
DB 0CH ;82BD: 0C
DB 01H ;82BE: 01
DB 15H ;82BF: 15
DB 00H ;82C0: 00
DB 00H ;82C1: 00
DB 18H ;82C2: 18
DB 0CH ;82C3: 0C
DB 10H ;82C4: 10
DB 0DH ;82C5: 0D ;D
DB 06H ;82C6: 06
DB 00H ;82C7: 00
DB 15H ;82C8: 15
DB 00H ;82C9: 00
DB 15H ;82CA: 15
DB 1CH ;82CB: 1C
DB 24H ;82CC: 24
DB 00H ;82CD: 00
DB 0DH ;82CE: 0D ;E
DB 0CH ;82CF: 0C
DB 04H ;82D0: 04
DB 1DH ;82D1: 1D
DB 0CH ;82D2: 0C
DB 00H ;82D3: 00
DB 1CH ;82D4: 1C
DB 0CH ;82D5: 0C
DB 04H ;82D6: 04
DB 0DH ;82D7: 0D ;F
DB 0CH ;82D8: 0C
DB 04H ;82D9: 04
DB 1DH ;82DA: 1D
DB 0CH ;82DB: 0C
DB 00H ;82DC: 00
DB 14H ;82DD: 14
DB 00H ;82DE: 00
DB 00H ;82DF: 00
DB 09H ;82E0: 09 ;G
DB 0CH ;82E1: 0C
DB 01H ;82E2: 01
DB 15H ;82E3: 15
DB 08H ;82E4: 08
DB 05H ;82E5: 05
DB 18H ;82E6: 18
DB 0CH ;82E7: 0C
DB 10H ;82E8: 10
DB 05H ;82E9: 05 ;H
DB 00H ;82EA: 00
DB 05H ;82EB: 05
DB 1DH ;82EC: 1D
DB 0CH ;82ED: 0C
DB 15H ;82EE: 15
DB 14H ;82EF: 14
DB 00H ;82F0: 00
DB 14H ;82F1: 14
DB 08H ;82F2: 08 ;J
DB 0DH ;82F3: 0D
DB 00H ;82F4: 00
DB 00H ;82F5: 00
DB 15H ;82F6: 15
DB 00H ;82F7: 00
DB 08H ;82F8: 08
DB 1CH ;82F9: 1C
DB 00H ;82FA: 00
DB 00H ;82FB: 00 ;J
DB 0EH ;82FC: 0E
DB 04H ;82FD: 04
DB 01H ;82FE: 01
DB 2AH ;82FF: 2A
DB 00H ;8300: 00
DB 18H ;8301: 18
DB 24H ;8302: 24
DB 00H ;8303: 00
DB 05H ;8304: 05 ;K
DB 02H ;8305: 02
DB 04H ;8306: 04
DB 1DH ;8307: 1D
DB 11H ;8308: 11
DB 00H ;8309: 00
DB 14H ;830A: 14
DB 20H ;830B: 20
DB 04H ;830C: 04
DB 05H ;830D: 05 ;L
DB 00H ;830E: 00
DB 00H ;830F: 00
DB 15H ;8310: 15
DB 00H ;8311: 00
DB 00H ;8312: 00
DB 1CH ;8313: 1C
DB 0CH ;8314: 0C
DB 04H ;8315: 04
DB 07H ;8316: 07 ;M
DB 02H ;8317: 02
DB 05H ;8318: 05
DB 15H ;8319: 15
DB 10H ;831A: 10
DB 15H ;831B: 15
DB 14H ;831C: 14
DB 00H ;831D: 00
DB 14H ;831E: 14
DB 07H ;831F: 07 ;N
DB 00H ;8320: 00
DB 05H ;8321: 05
DB 15H ;8322: 15
DB 18H ;8323: 18
DB 15H ;8324: 15
DB 14H ;8325: 14
DB 00H ;8326: 00
DB 14H ;8327: 14
DB 0DH ;8328: 0D ;O
DB 0CH ;8329: 0C
DB 05H ;832A: 05
DB 15H ;832B: 15
DB 00H ;832C: 00
DB 15H ;832D: 15
DB 1CH ;832E: 1C
DB 0CH ;832F: 0C
DB 14H ;8330: 14
DB 0DH ;8331: 0D ;P
DB 0CH ;8332: 0C
DB 01H ;8333: 01
DB 1DH ;8334: 1D
DB 0CH ;8335: 0C
DB 10H ;8336: 10
DB 14H ;8337: 14
DB 00H ;8338: 00
DB 00H ;8339: 00
DB 0DH ;833A: 0D ;Q
DB 0CH ;833B: 0C
DB 05H ;833C: 05
DB 15H ;833D: 15
DB 00H ;833E: 00
DB 15H ;833F: 15
DB 1CH ;8340: 1C
DB 2CH ;8341: 2C
DB 16H ;8342: 16
DB 0DH ;8343: 0D ;R
DB 0CH ;8344: 0C
DB 01H ;8345: 01
DB 1DH ;8346: 1D
DB 0DH ;8347: 0D
DB 10H ;8348: 10
DB 14H ;8349: 14
DB 20H ;834A: 20
DB 04H ;834B: 04
DB 09H ;834C: 09 ;S
DB 0CH ;834D: 0C
DB 01H ;834E: 01
DB 18H ;834F: 18
DB 0CH ;8350: 0C
DB 01H ;8351: 01
DB 18H ;8352: 18
DB 0CH ;8353: 0C
DB 10H ;8354: 10
DB 0CH ;8355: 0C ;T
DB 0DH ;8356: 0D
DB 04H ;8357: 04
DB 00H ;8358: 00
DB 15H ;8359: 15
DB 00H ;835A: 00
DB 00H ;835B: 00
DB 14H ;835C: 14
DB 00H ;835D: 00
DB 05H ;835E: 05 ;U
DB 00H ;835F: 00
DB 05H ;8360: 05
DB 15H ;8361: 15
DB 00H ;8362: 00
DB 15H ;8363: 15
DB 18H ;8364: 18
DB 0CH ;8365: 0C
DB 10H ;8366: 10
DB 05H ;8367: 05 ;V
DB 00H ;8368: 00
DB 05H ;8369: 05
DB 15H ;836A: 15
DB 00H ;836B: 00
DB 15H ;836C: 15
DB 20H ;836D: 20
DB 24H ;836E: 24
DB 00H ;836F: 00
DB 05H ;8370: 05 ;W
DB 00H ;8371: 00
DB 05H ;8372: 05
DB 15H ;8373: 15
DB 05H ;8374: 05
DB 15H ;8375: 15
DB 1CH ;8376: 1C
DB 1CH ;8377: 1C
DB 14H ;8378: 14
DB 05H ;8379: 05 ;X
DB 00H ;837A: 00
DB 05H ;837B: 05
DB 22H ;837C: 22
DB 26H ;837D: 26
DB 00H ;837E: 00
DB 14H ;837F: 14
DB 00H ;8380: 00
DB 14H ;8381: 14
DB 05H ;8382: 05 ;Y
DB 00H ;8383: 00
DB 05H ;8384: 05
DB 20H ;8385: 20
DB 25H ;8386: 25
DB 00H ;8387: 00
DB 00H ;8388: 00
DB 14H ;8389: 14
DB 00H ;838A: 00
DB 0CH ;838B: 0C ;Z
DB 0CH ;838C: 0C
DB 05H ;838D: 05
DB 02H ;838E: 02
DB 24H ;838F: 24
DB 00H ;8390: 00
DB 1CH ;8391: 1C
DB 0CH ;8392: 0C
DB 04H ;8393: 04
DB 3DH ;8394: 3D ;? (Inverted)
DB 33H ;8395: 33
DB 3EH ;8396: 3E
DB 3FH ;8397: 3F
DB 32H ;8398: 32
DB 2FH ;8399: 2F
DB 3FH ;839A: 3F
DB 3BH ;839B: 3B
DB 3FH ;839C: 3F
DB 00H ;839D: 00 ;!
DB 05H ;839E: 05
DB 00H ;839F: 00
DB 00H ;83A0: 00
DB 14H ;83A1: 14
DB 00H ;83A2: 00
DB 00H ;83A3: 00
DB 14H ;83A4: 14
DB 00H ;83A5: 00
DB 00H ;83A6: 00 ; Period
DB 00H ;83A7: 00
DB 00H ;83A8: 00
DB 00H ;83A9: 00
DB 00H ;83AA: 00
DB 00H ;83AB: 00
DB 14H ;83AC: 14
DB 00H ;83AD: 00
DB 00H ;83AE: 00
DB 00H ;83AF: 00 ; Space
DB 00H ;83B0: 00
DB 00H ;83B1: 00
DB 00H ;83B2: 00
DB 00H ;83B3: 00
DB 00H ;83B4: 00
DB 00H ;83B5: 00
DB 00H ;83B6: 00
DB 00H ;83B7: 00
;end of char bits
DB 00H ;83B8: 00
DB 00H ;83B9: 00
DB 40H ;83BA: 40
DB 80H ;83BB: 80
DB 0C0H ;83BC: C0
DB 3FH ;83BD: 3F
DB 7FH ;83BE: 7F
DB 0BFH ;83BF: BF
;message table with help from Matt's screenshots - Marcel
DB 0FFH ;83C0: FF
DB 4EH ;83C1: 4E ;space
DB 4EH ;83C2: 4E ;space
DB 18H ;83C3: 18 ; C
DB 44H ;83C4: 44 ; Y
DB 16H ;83C5: 16 ; B
DB 1CH ;83C6: 1C ; E
DB 36H ;83C7: 36 ; R
DB 3EH ;83C8: 3E ; V
DB 24H ;83C9: 24 ; I
DB 38H ;83CA: 38 ; S
DB 24H ;83CB: 24 ; I
DB 30H ;83CC: 30 ; O
DB 2EH ;83CD: 2E ; N
DB 4EH ;83CE: 4E ; space
DB 4EH ;83CF: 4E ; space
DB 4EH ;83D0: 4E ; space
DB 88H ;83D1: 88
DB 4EH ;83D2: 4E ; space
DB 38H ;83D3: 38 ; S
DB 3AH ;83D4: 3A ; T
DB 14H ;83D5: 14 ; A
DB 2EH ;83D6: 2E ; N
DB 1AH ;83D7: 1A ; D
DB 4EH ;83D8: 4E ; space
DB 16H ;83D9: 16 ; B
DB 44H ;83DA: 44 ; Y
DB 4EH ;83DB: 4E ; space
DB 4CH ;83DC: 4C ; .
DB 4CH ;83DD: 4C ; .
DB 4CH ;83DE: 4C ; .
DB 4EH ;83DF: 4E ; space
DB 4EH ;83E0: 4E ; space
DB 88H ;83E1: 88
DB 18H ;83E2: 18 ; C
DB 22H ;83E3: 22 ; H
DB 1CH ;83E4: 1C ; E
DB 18H ;83E5: 18 ; C
DB 28H ;83E6: 28 ; K
DB 4EH ;83E7: 4E ; space
DB 3AH ;83E8: 3A ; T
DB 22H ;83E9: 22 ; H
DB 1CH ;83EA: 1C ; E
DB 4EH ;83EB: 4E ; space
DB 3AH ;83EC: 3A ; T
DB 14H ;83ED: 14 ; A
DB 32H ;83EE: 32 ; P
DB 1CH ;83EF: 1C ; E
DB 4CH ;83F0: 4C ; .
DB 88H ;83F1: 88
J83F2
LDI 0CAH ;83F2: F8 CA
PLO R4 ;83F4: A4 R4 = 0x0BCA pointer to VRAM
SEP R1 ;83F5: D1 CALL screen output routine to show STAND BY ...
S83F6
LDI 80H ;83F6: F8 80
PHI R8 ;83F8: B8
LDI 0D0H ;83F9: F8 D0
PLO R8 ;83FB: A8
SEP R8 ;83FC: D8 Load third byte and return to 0x80A0
S83FD
LBR J80A0 ;83FD: C0 80 A0
END
Last Updated on March 28, 2023.