0000 ; 0000 ; SC84 Machine Code Operating System 0000 ; 0000 ; 2020-05-10 0000 ; First crack at recreating source code from bytes OCR'd 0000 ; from the SC84 newsletter, volume 2 number 1. 0000 ; 0000 ; Not verified! 0000 ; 0000 ; Assembles at https://www.asm80.com 0000 ; 0000 ; The code shows it requires a Mostek Serial Timer Interrupt Controller. 0000 ; 0000 ; 2022-06-17 0000 ; Renamed to end in .txt (instead of .z80) so it can be read online. 0000 ; This requires the following line: 0000 .CPU Z80 0000 ; 0000 ; 0000 NULL: EQU 0 0000 SPACE: EQU 0x20 0000 ESC: EQU 0x1b 0000 ; 0000 BEL: EQU 0x07 0000 BS: EQU 0x08 0000 FF: EQU 0x0c 0000 LF: EQU 0x0a 0000 CR: EQU 0x0d 0000 DEL: EQU 0x7F 0000 MAKING_ORIGINAL_BUGGY_VERSION: EQU 0 0000 ; from Wireless World, October 1984, pages 21-24 and 27 0000 ; CTRL G (BEL) causes a `beep' 0000 ; 0000 ; CTRL H (BS) backspaces the cursor one place without deleting. 0000 ; 0000 ; CTRL J (LF) moves the cursor down one line, scrolling the screen if necessary. 0000 ; 0000 ; CTRL L (FF) as for LF. 0000 ; 0000 ; CTRL M (CR) returns the cursor to the leftmost position of the current output line, 0000 ; clearing any characters to the right of the original cursor position, 0000 ; providing it was not already at the left margin. 0000 ; DEL (hex. 07F) backspaces the cursor one position, deleting the character onto which the cursor moves. 0000 ; 0000 ; VDUA also recognises the following ESCAPE sequences 0000 ; (ESCAPE being the hex. character 01 B, decimal 27 or CTRL [). 0000 ; 0000 ; ESC F selects reverse video display of subsequent ascii codes. 0000 ; ESC G selects normal video display of subsequent ascii codes. 0000 ; ESC H moves the cursor to the top left corner of the v.d.u. 0000 ; ESC J erases from cursor position to end of screen 0000 ; ESC K erases from cursor position to end of line 0000 ; 0000 ; ESC Y I c 0000 ; sets the cursor position to line I, column c. 0000 ; I and c are single hex. characters equating to 0000 ; the desired value plus 01F, 0000 ; i.e. the top left corner of the v.d.u. is 020, 020 0000 ; and the bottom left corner (in mode 0) is 03F, 07F. 0000 LINE: EQU 96 ; VDU chars per line 0000 FRAME: EQU 32 ; VDU lines per frame 0000 VDU1: EQU 0xA000 - LINE + FRAME ; set VDU start 0000 ; CRTH EQU > (VDU1 AND 03FH) ; high byte of VDU start 0000 ; CRTL EQU < VDU1 ; low byte of VDU start 0000 CONTRL: EQU 0E0H ; set basic port address for I/O 0000 PORT_0XE0: EQU CONTRL + 0 0000 ; 0000 PORT_0XE4: EQU CONTRL + 4 0000 PORT_0XE5: EQU CONTRL + 5 0000 PORT_0XE6: EQU CONTRL + 6 0000 PORT_0XE7: EQU CONTRL + 7 0000 ; 0000 PORT_0XE8: EQU CONTRL + 8 0000 ; 0000 ; MK3801 direct ports 0000 IDR: EQU CONTRL + 010H ; Indirect Data Register 0000 GPIP: EQU CONTRL + 011H ; General Purpose I/O-Interrupt 0000 IPRB: EQU CONTRL + 012H ; Interrupt Pending Register B 0000 IPRA: EQU CONTRL + 013H ; Interrupt Pending Register A 0000 ISRB: EQU CONTRL + 014H ; Interrupt in-Service Register B 0000 ISRA: EQU CONTRL + 015H ; Interrupt in-Service Register A 0000 IMRB: EQU CONTRL + 016H ; Interrupt Mask Register B 0000 IMRA: EQU CONTRL + 017H ; Interrupt Mask Register A 0000 PVR: EQU CONTRL + 018H ; Pointer/Vector Register 0000 TABCR: EQU CONTRL + 019H ; Timers A and B Control Register 0000 TBDR: EQU CONTRL + 01AH ; Timer B Data Register 0000 TADR: EQU CONTRL + 01BH ; Timer A Data Register 0000 UCR: EQU CONTRL + 01CH ; USART Control Register 0000 RSR: EQU CONTRL + 01DH ; Receiver Status Register 0000 TSR: EQU CONTRL + 01EH ; Transmitter Status Register 0000 UDR: EQU CONTRL + 01FH ; USART Data Register 0000 ; MK3801 indirect ports 0000 SCR: EQU 0 ; Sync Character Register 0000 TDDR: EQU 1 ; Timer D Data Register 0000 TCDR: EQU 2 ; Timer C Data Register 0000 AER: EQU 3 ; Active Edge Register 0000 IERB: EQU 4 ; Interrupt Enable Register 0000 IERA: EQU 5 ; Interrupt Enable Register 0000 DDR: EQU 6 ; Data Direction Register 0000 TCDCR: EQU 7 ; Timer C and D Control Register 0000 .ORG 0x0000 0000 ; 0000 0000 FIRMWARE_SIZE: EQU 0x07ee 0000 ; 0000 21 12 00 0000 21 12 00 LD hl,FIRMWARE_TO_COPY 0003 11 00 F8 LD de,FIRMWARE_DESTINATION 0006 01 EE 07 LD bc,FIRMWARE_SIZE 0009 ED B0 LDIR 000B ; 000b af 000B AF XOR a ; clear A 000C 32 49 FF LD (CURDRV),a 000F ; 000f c3 39 f8 000F C3 39 F8 JP HIGH_ENTRY_POINT ; jump into copied code. 0012 ; 0012 0012 FIRMWARE_TO_COPY: 0012 ; This is actually meant to run at F800, 0012 ; so these are just the code bytes expected. 0012 ; 0012 ; Disassembling these bytes yields 0012 ; wrong code and addresses. 0012 ; They are here just so that they can 0012 ; produce a file that can be compared with 0012 ; an original ROM image (if/when one becomes available). 0012 ; 0012 ; These bytes were disassembled online, using: 0012 ; https://onlinedisassembler.com 0012 ; and edited to a form acceptable to 0012 ; this online assembler: 0012 ; https://www.asm80.com 0012 ; 0012 ; See code at org $F800 later in this file. 0012 C3 3D DB 0xC3,0x3D 0014 F8 C3 55 F8 DB 0xF8,0xC3,0x55,0xF8 0018 C3 60 FC C3 DB 0xC3,0x60,0xFC,0xC3 001C E6 FB C3 E0 DB 0xE6,0xFB,0xC3,0xE0 0020 ; 0020 0020 FD C3 E3 FD DB 0xFD,0xC3,0xE3,0xFD 0024 C3 CE FE C3 DB 0xC3,0xCE,0xFE,0xC3 0028 B6 FD C3 BE DB 0xB6,0xFD,0xC3,0xBE 002C FD C3 34 FC DB 0xFD,0xC3,0x34,0xFC 0030 ; 0030 0030 C3 DB FB C3 DB 0xC3,0xDB,0xFB,0xC3 0034 4C FC C3 E6 DB 0x4C,0xFC,0xC3,0xE6 0038 FD C3 FC FD DB 0xFD,0xC3,0xFC,0xFD 003C C3 0D FE C3 DB 0xC3,0x0D,0xFE,0xC3 0040 ; 0040 0040 9C FE C3 CB DB 0x9C,0xFE,0xC3,0xCB 0044 FD C3 54 FC DB 0xFD,0xC3,0x54,0xFC 0048 C3 99 FA 3E DB 0xC3,0x99,0xFA,0x3E 004C D0 D3 E4 21 DB 0xD0,0xD3,0xE4,0x21 0050 ; 0050 0050 00 00 11 5E DB 0x00,0x00,0x11,0x5E 0054 FF 3E 08 36 DB 0xFF,0x3E,0x08,0x36 0058 C3 23 EB ED DB 0xC3,0x23,0xEB,0xED 005C A0 ED A0 EB DB 0xA0,0xED,0xA0,0xEB 0060 ; 0060 0060 01 05 00 09 DB 0x01,0x05,0x00,0x09 0064 3D 20 F0 31 DB 0x3D,0x20,0xF0,0x31 0068 00 00 CD 4B DB 0x00,0x00,0xCD,0x4B 006C FA FB CD E5 DB 0xFA,0xFB,0xCD,0xE5 0070 ; 0070 0070 FA FE 13 28 DB 0xFA,0xFE,0x13,0x28 0074 0D FE 04 20 DB 0x0D,0xFE,0x04,0x20 0078 1C 21 80 F7 DB 0x1C,0x21,0x80,0xF7 007C DD 21 73 FF DB 0xDD,0x21,0x73,0xFF 0080 ; 0080 0080 18 07 21 80 DB 0x18,0x07,0x21,0x80 0084 00 DD 21 6E DB 0x00,0xDD,0x21,0x6E 0088 FF E5 CD 5E DB 0xFF,0xE5,0xCD,0x5E 008C FA CD E6 FD DB 0xFA,0xCD,0xE6,0xFD 0090 ; 0090 0090 20 FB C3 FC DB 0x20,0xFB,0xC3,0xFC 0094 FD 47 4F CD DB 0xFD,0x47,0x4F,0xCD 0098 E5 FA FE 20 DB 0xE5,0xFA,0xFE,0x20 009C 20 F8 79 81 DB 0x20,0xF8,0x79,0x81 00A0 ; 00A0 00A0 80 FE D8 20 DB 0x80,0xFE,0xD8,0x20 00A4 1F CD 76 FB DB 0x1F,0xCD,0x76,0xFB 00A8 E5 CD 73 FB DB 0xE5,0xCD,0x73,0xFB 00AC C1 E5 A7 ED DB 0xC1,0xE5,0xA7,0xED 00B0 ; 00B0 00B0 42 E3 C1 2B DB 0x42,0xE3,0xC1,0x2B 00B4 CD 7F FB E5 DB 0xCD,0x7F,0xFB,0xE5 00B8 D1 85 6F 30 DB 0xD1,0x85,0x6F,0x30 00BC 01 24 EB ED DB 0x01,0x24,0xEB,0xED 00C0 ; 00C0 00C0 B8 C3 55 F8 DB 0xB8,0xC3,0x55,0xF8 00C4 FE E9 20 1C DB 0xFE,0xE9,0x20,0x1C 00C8 CD 76 FB CD DB 0xCD,0x76,0xFB,0xCD 00CC 7F FB 77 CD DB 0x7F,0xFB,0x77,0xCD 00D0 ; 00D0 00D0 F4 FA CD 4B DB 0xF4,0xFA,0xCD,0x4B 00D4 FA 3A 4E FF DB 0xFA,0x3A,0x4E,0xFF 00D8 B7 28 FA E6 DB 0xB7,0x28,0xFA,0xE6 00DC 5F FE 47 38 DB 0x5F,0xFE,0x47,0x38 00E0 ; 00E0 00E0 E7 C3 5C F8 DB 0xE7,0xC3,0x5C,0xF8 00E4 FE D5 20 27 DB 0xFE,0xD5,0x20,0x27 00E8 CD 76 FB E5 DB 0xCD,0x76,0xFB,0xE5 00EC E5 C1 CD 73 DB 0xE5,0xC1,0xCD,0x73 00F0 ; 00F0 00F0 FB ED 42 E5 DB 0xFB,0xED,0x42,0xE5 00F4 C1 E1 CD 7F DB 0xC1,0xE1,0xCD,0x7F 00F8 FB 5F CD 7F DB 0xFB,0x5F,0xCD,0x7F 00FC FB CD A5 FB DB 0xFB,0xCD,0xA5,0xFB 0100 ; 0100 0100 ED B1 E2 55 DB 0xED,0xB1,0xE2,0x55 0104 F8 2B 73 F5 DB 0xF8,0x2B,0x73,0xF5 0108 CD C7 FA 23 DB 0xCD,0xC7,0xFA,0x23 010C F1 18 F1 FE DB 0xF1,0x18,0xF1,0xFE 0110 ; 0110 0110 F9 20 18 CD DB 0xF9,0x20,0x18,0xCD 0114 76 FB E5 CD DB 0x76,0xFB,0xE5,0xCD 0118 73 FB C1 C5 DB 0x73,0xFB,0xC1,0xC5 011C A7 ED 42 E5 DB 0xA7,0xED,0x42,0xE5 0120 ; 0120 0120 C1 CD 73 FB DB 0xC1,0xCD,0x73,0xFB 0124 D1 EB ED B0 DB 0xD1,0xEB,0xED,0xB0 0128 C3 55 F8 FE DB 0xC3,0x55,0xF8,0xFE 012C DE 20 0B CD DB 0xDE,0x20,0x0B,0xCD 0130 ; 0130 0130 76 FB 36 FF DB 0x76,0xFB,0x36,0xFF 0134 2C 20 FB C3 DB 0x2C,0x20,0xFB,0xC3 0138 55 F8 FE FC DB 0x55,0xF8,0xFE,0xFC 013C 20 0E 21 00 DB 0x20,0x0E,0x21,0x00 0140 ; 0140 0140 00 36 FF 23 DB 0x00,0x36,0xFF,0x23 0144 7C FE F8 20 DB 0x7C,0xFE,0xF8,0x20 0148 F8 C3 3D F8 DB 0xF8,0xC3,0x3D,0xF8 014C F5 CD DA FA DB 0xF5,0xCD,0xDA,0xFA 0150 ; 0150 0150 1B 4A 00 F1 DB 0x1B,0x4A,0x00,0xF1 0154 FE D4 20 50 DB 0xFE,0xD4,0x20,0x50 0158 CD 76 FB CD DB 0xCD,0x76,0xFB,0xCD 015C A5 FB E5 CD DB 0xA5,0xFB,0xE5,0xCD 0160 ; 0160 0160 38 FB CD E5 DB 0x38,0xFB,0xCD,0xE5 0164 FA FE 5F 20 DB 0xFA,0xFE,0x5F,0x20 0168 22 2B 7D E6 DB 0x22,0x2B,0x7D,0xE6 016C 0F FE 0F 20 DB 0x0F,0xFE,0x0F,0x20 0170 ; 0170 0170 07 3E 0D CD DB 0x07,0x3E,0x0D,0xCD 0174 60 FC 18 E7 DB 0x60,0xFC,0x18,0xE7 0178 CD 46 FB 3A DB 0xCD,0x46,0xFB,0x3A 017C 47 FF D6 05 DB 0x47,0xFF,0xD6,0x05 0180 ; 0180 0180 90 47 3E 7F DB 0x90,0x47,0x3E,0x7F 0184 CD 60 FC 10 DB 0xCD,0x60,0xFC,0x10 0188 F9 18 D7 FE DB 0xF9,0x18,0xD7,0xFE 018C 20 28 12 CD DB 0x20,0x28,0x12,0xCD 0190 ; 0190 0190 94 FB CD 85 DB 0x94,0xFB,0xCD,0x85 0194 FB 77 23 CD DB 0xFB,0x77,0x23,0xCD 0198 12 FB 20 C6 DB 0x12,0xFB,0x20,0xC6 019C CD A5 FB 18 DB 0xCD,0xA5,0xFB,0x18 01A0 ; 01A0 01A0 BE E1 CD F7 DB 0xBE,0xE1,0xCD,0xF7 01A4 FA C3 55 F8 DB 0xFA,0xC3,0x55,0xF8 01A8 FE EE 20 04 DB 0xFE,0xEE,0x20,0x04 01AC CD 76 FB E9 DB 0xCD,0x76,0xFB,0xE9 01B0 ; 01B0 01B0 FE E3 20 15 DB 0xFE,0xE3,0x20,0x15 01B4 CD 76 FB E5 DB 0xCD,0x76,0xFB,0xE5 01B8 CD 73 FB CD DB 0xCD,0x73,0xFB,0xCD 01BC A5 FB D1 EB DB 0xA5,0xFB,0xD1,0xEB 01C0 ; 01C0 01C0 1A BE C4 C7 DB 0x1A,0xBE,0xC4,0xC7 01C4 FA 13 23 18 DB 0xFA,0x13,0x23,0x18 01C8 F7 FE CE 20 DB 0xF7,0xFE,0xCE,0x20 01CC 52 21 DC FF DB 0x52,0x21,0xDC,0xFF 01D0 ; 01D0 01D0 39 E5 0E 00 DB 0x39,0xE5,0x0E,0x00 01D4 3A 4E FF B7 DB 0x3A,0x4E,0xFF,0xB7 01D8 28 FA FE 1B DB 0x28,0xFA,0xFE,0x1B 01DC 28 08 CD 7F DB 0x28,0x08,0xCD,0x7F 01E0 ; 01E0 01E0 FB 77 2B 0C DB 0xFB,0x77,0x2B,0x0C 01E4 18 EE CD 34 DB 0x18,0xEE,0xCD,0x34 01E8 FC 0C 0D CA DB 0xFC,0x0C,0x0D,0xCA 01EC 55 F8 CD A5 DB 0x55,0xF8,0xCD,0xA5 01F0 ; 01F0 01F0 FB E1 D9 21 DB 0xFB,0xE1,0xD9,0x21 01F4 00 00 01 00 DB 0x00,0x00,0x01,0x00 01F8 00 D9 41 E5 DB 0x00,0xD9,0x41,0xE5 01FC D1 7E D9 ED DB 0xD1,0x7E,0xD9,0xED 0200 ; 0200 0200 B1 E2 55 F8 DB 0xB1,0xE2,0x55,0xF8 0204 20 F9 E5 D9 DB 0x20,0xF9,0xE5,0xD9 0208 1B 1A 10 0B DB 0x1B,0x1A,0x10,0x0B 020C D9 E1 E5 2B DB 0xD9,0xE1,0xE5,0x2B 0210 ; 0210 0210 CD C7 FA E1 DB 0xCD,0xC7,0xFA,0xE1 0214 D9 18 E3 D9 DB 0xD9,0x18,0xE3,0xD9 0218 ED A1 03 20 DB 0xED,0xA1,0x03,0x20 021C F6 18 E8 FE DB 0xF6,0x18,0xE8,0xFE 0220 ; 0220 0220 F4 CC EE FA DB 0xF4,0xCC,0xEE,0xFA 0224 C3 55 F8 E5 DB 0xC3,0x55,0xF8,0xE5 0228 21 06 00 F5 DB 0x21,0x06,0x00,0xF5 022C 39 F1 E3 08 DB 0x39,0xF1,0xE3,0x08 0230 ; 0230 0230 F5 D9 C5 D5 DB 0xF5,0xD9,0xC5,0xD5 0234 E5 D9 08 F5 DB 0xE5,0xD9,0x08,0xF5 0238 C5 D5 E5 FD DB 0xC5,0xD5,0xE5,0xFD 023C E5 DD E5 06 DB 0xE5,0xDD,0xE5,0x06 0240 ; 0240 0240 10 11 7A FF DB 0x10,0x11,0x7A,0xFF 0244 CD A5 FB 0E DB 0xCD,0xA5,0xFB,0x0E ; not 0x0F at 0247 0248 03 1A 13 CD DB 0x03,0x1A,0x13,0xCD 024C B5 FB 0D 20 DB 0xB5,0xFB,0x0D,0x20 0250 ; 0250 0250 F8 CD 9D FB DB 0xF8,0xCD,0x9D,0xFB 0254 E1 CD 53 FB DB 0xE1,0xCD,0x53,0xFB 0258 10 EA C3 55 DB 0x10,0xEA,0xC3,0x55 025C F8 CD 66 FA DB 0xF8,0xCD,0x66,0xFA 0260 ; 0260 0260 CD DA FA 20 DB 0xCD,0xDA,0xFA,0x20 0264 0D 20 52 45 DB 0x0D,0x20,0x52,0x45 0268 41 44 59 20 DB 0x41,0x44,0x59,0x20 026C 20 20 00 C9 DB 0x20,0x20,0x00,0xC9 0270 ; 0270 0270 CD DA FA 1B DB 0xCD,0xDA,0xFA,0x1B 0274 48 1B 4A 00 DB 0x48,0x1B,0x4A,0x00 0278 3E FF ED 47 DB 0x3E,0xFF,0xED,0x47 027C ED 5E 3E 14 DB 0xED,0x5E,0x3E,0x14 0280 ; 0280 0280 CD B9 FA F8 DB 0xCD,0xB9,0xFA,0xF8 0284 06 F0 02 F1 DB 0x06,0xF0,0x02,0xF1 0288 02 F8 02 F0 DB 0x02,0xF8,0x02,0xF0 028C 02 F8 01 F0 DB 0x02,0xF8,0x01,0xF0 0290 ; 0290 0290 02 F8 07 F0 DB 0x02,0xF8,0x07,0xF0 0294 11 FC 98 FD DB 0x11,0xFC,0x98,0xFD 0298 01 FE 01 F8 DB 0x01,0xFE,0x01,0xF8 029C 03 F0 C0 F7 DB 0x03,0xF0,0xC0,0xF7 02A0 ; 02A0 02A0 C0 F6 01 F8 DB 0xC0,0xF6,0x01,0xF8 02A4 05 F0 C0 F8 DB 0x05,0xF0,0xC0,0xF8 02A8 0C F0 01 21 DB 0x0C,0xF0,0x01,0x21 02AC E7 FE 11 40 DB 0xE7,0xFE,0x11,0x40 02B0 ; 02B0 02B0 FF 01 09 00 DB 0xFF,0x01,0x09,0x00 02B4 ED B0 11 00 DB 0xED,0xB0,0x11,0x00 02B8 00 06 10 CD DB 0x00,0x06,0x10,0xCD 02BC B6 FD 56 ED DB 0xB6,0xFD,0x56,0xED 02C0 ; 02C0 02C0 53 00 80 23 DB 0x53,0x00,0x80,0x23 02C4 1C 10 F7 CD DB 0x1C,0x10,0xF7,0xCD 02C8 BE FD C9 E3 DB 0xBE,0xFD,0xC9,0xE3 02CC C5 47 4E 23 DB 0xC5,0x47,0x4E,0x23 02D0 ; 02D0 02D0 7E 23 ED 79 DB 0x7E,0x23,0xED,0x79 02D4 10 F8 C1 E3 DB 0x10,0xF8,0xC1,0xE3 02D8 C9 CD 53 FB DB 0xC9,0xCD,0x53,0xFB 02DC 3A 47 FF FE DB 0x3A,0x47,0xFF,0xFE 02E0 ; 02E0 02E0 5C D2 A5 FB DB 0x5C,0xD2,0xA5,0xFB 02E4 E6 07 C8 CD DB 0xE6,0x07,0xC8,0xCD 02E8 A0 FB 18 F0 DB 0xA0,0xFB,0x18,0xF0 02EC E3 7E 23 E3 DB 0xE3,0x7E,0x23,0xE3 02F0 ; 02F0 02F0 B7 C8 CD 60 DB 0xB7,0xC8,0xCD,0x60 02F4 FC 18 F5 CD DB 0xFC,0x18,0xF5,0xCD 02F8 B2 FB FE 60 DB 0xB2,0xFB,0xFE,0x60 02FC D8 D6 20 C9 DB 0xD8,0xD6,0x20,0xC9 0300 ; 0300 0300 CD 76 FB 22 DB 0xCD,0x76,0xFB,0x22 0304 78 FF 2A 78 DB 0x78,0xFF,0x2A,0x78 0308 FF CD DA FA DB 0xFF,0xCD,0xDA,0xFA 030C 1B 48 00 0E DB 0x1B,0x48,0x00,0x0E 0310 ; 0310 0310 1F CD A5 FB DB 0x1F,0xCD,0xA5,0xFB 0314 CD 38 FB CD DB 0xCD,0x38,0xFB,0xCD 0318 5D FB 23 CD DB 0x5D,0xFB,0x23,0xCD 031C 12 FB 20 F7 DB 0x12,0xFB,0x20,0xF7 0320 ; 0320 0320 0D 20 EE C9 DB 0x0D,0x20,0xEE,0xC9 0324 CD A0 FB 7D DB 0xCD,0xA0,0xFB,0x7D 0328 E6 03 CC 9D DB 0xE6,0x03,0xCC,0x9D 032C FB 7D E6 0F DB 0xFB,0x7D,0xE6,0x0F 0330 ; 0330 0330 C0 11 F0 FF DB 0xC0,0x11,0xF0,0xFF 0334 19 06 10 7E DB 0x19,0x06,0x10,0x7E 0338 23 FE 20 38 DB 0x23,0xFE,0x20,0x38 033C 04 FE 7F 38 DB 0x04,0xFE,0x7F,0x38 0340 ; 0340 0340 02 3E 2E CD DB 0x02,0x3E,0x2E,0xCD 0344 B5 FB 10 EF DB 0xB5,0xFB,0x10,0xEF 0348 AF C9 CD 53 DB 0xAF,0xC9,0xCD,0x53 034C FB C5 CD 46 DB 0xFB,0xC5,0xCD,0x46 0350 ; 0350 0350 FB C4 A0 FB DB 0xFB,0xC4,0xA0,0xFB 0354 10 FB C1 C9 DB 0x10,0xFB,0xC1,0xC9 0358 7D E6 0F C8 DB 0x7D,0xE6,0x0F,0xC8 035C 4F E6 0C 0F DB 0x4F,0xE6,0x0C,0x0F 0360 ; 0360 0360 81 81 81 47 DB 0x81,0x81,0x81,0x47 0364 C9 7C CD 5E DB 0xC9,0x7C,0xCD,0x5E 0368 FB 7D CD 5E DB 0xFB,0x7D,0xCD,0x5E 036C FB 18 43 7E DB 0xFB,0x18,0x43,0x7E 0370 ; 0370 0370 F5 07 07 07 DB 0xF5,0x07,0x07,0x07 0374 07 CD 67 FB DB 0x07,0xCD,0x67,0xFB 0378 F1 E6 0F FE DB 0xF1,0xE6,0x0F,0xFE 037C 0A 38 02 C6 DB 0x0A,0x38,0x02,0xC6 0380 ; 0380 0380 07 C6 30 18 DB 0x07,0xC6,0x30,0x18 0384 42 CD A0 FB DB 0x42,0xCD,0xA0,0xFB 0388 CD 82 FB 67 DB 0xCD,0x82,0xFB,0x67 038C CD 82 FB 6F DB 0xCD,0x82,0xFB,0x6F 0390 ; 0390 0390 C9 CD A0 FB DB 0xC9,0xCD,0xA0,0xFB 0394 CD 91 FB C5 DB 0xCD,0x91,0xFB,0xC5 0398 07 07 07 07 DB 0x07,0x07,0x07,0x07 039C 47 CD 91 FB DB 0x47,0xCD,0x91,0xFB 03A0 ; 03A0 03A0 80 C1 C9 CD DB 0x80,0xC1,0xC9,0xCD 03A4 B2 FB FE 41 DB 0xB2,0xFB,0xFE,0x41 03A8 38 02 C6 09 DB 0x38,0x02,0xC6,0x09 03AC E6 0F C9 CD DB 0xE6,0x0F,0xC9,0xCD 03B0 ; 03B0 03B0 A0 FB F5 3E DB 0xA0,0xFB,0xF5,0x3E 03B4 20 18 08 F5 DB 0x20,0x18,0x08,0xF5 03B8 3E 0D CD B5 DB 0x3E,0x0D,0xCD,0xB5 03BC FB 3E 0A CD DB 0xFB,0x3E,0x0A,0xCD 03C0 ; 03C0 03C0 B5 FB F1 C9 DB 0xB5,0xFB,0xF1,0xC9 03C4 CD E6 FB CD DB 0xCD,0xE6,0xFB,0xCD 03C8 60 FC F5 DB DB 0x60,0xFC,0xF5,0xDB 03CC E0 E6 80 20 DB 0xE0,0xE6,0x80,0x20 03D0 ; 03D0 03D0 05 F1 F5 CD DB 0x05,0xF1,0xF5,0xCD 03D4 CE FE F1 C9 DB 0xCE,0xFE,0xF1,0xC9 03D8 E3 D5 C5 CD DB 0xE3,0xD5,0xC5,0xCD 03DC D0 FB C1 D1 DB 0xD0,0xFB,0xC1,0xD1 03E0 ; 03E0 03E0 E1 C9 E9 E3 DB 0xE1,0xC9,0xE9,0xE3 03E4 D5 C5 F5 CD DB 0xD5,0xC5,0xF5,0xCD 03E8 D0 FB F1 18 DB 0xD0,0xFB,0xF1,0x18 03EC F1 3A 4E FF DB 0xF1,0x3A,0x4E,0xFF 03F0 ; 03F0 03F0 FE 1D C0 CD DB 0xFE,0x1D,0xC0,0xCD 03F4 34 FC 18 31 DB 0x34,0xFC,0x18,0x31 03F8 E5 2A 44 FF DB 0xE5,0x2A,0x44,0xFF 03FC CD B6 FD CD DB 0xCD,0xB6,0xFD,0xCD 0400 ; 0400 0400 20 FD 21 0A DB 0x20,0xFD,0x21,0x0A 0404 68 22 00 80 DB 0x68,0x22,0x00,0x80 0408 CD BE FD CD DB 0xCD,0xBE,0xFD,0xCD 040C 34 FC 28 FB DB 0x34,0xFC,0x28,0xFB 0410 ; 0410 0410 CD B6 FD 21 DB 0xCD,0xB6,0xFD,0x21 0414 0A 08 22 00 DB 0x0A,0x08,0x22,0x00 0418 80 CD BE FD DB 0x80,0xCD,0xBE,0xFD 041C E1 CD 11 FC DB 0xE1,0xCD,0x11,0xFC 0420 ; 0420 0420 28 D6 C9 CD DB 0x28,0xD6,0xC9,0xCD 0424 25 FC FE 1D DB 0x25,0xFC,0xFE,0x1D 0428 C0 3A 43 FF DB 0xC0,0x3A,0x43,0xFF 042C B7 3E 00 20 DB 0xB7,0x3E,0x00,0x20 0430 ; 0430 0430 01 3C 32 43 DB 0x01,0x3C,0x32,0x43 0434 FF AF C9 F5 DB 0xFF,0xAF,0xC9,0xF5 0438 3A 43 FF B7 DB 0x3A,0x43,0xFF,0xB7 043C 28 06 3A 42 DB 0x28,0x06,0x3A,0x42 0440 ; 0440 0440 FF 32 43 FF DB 0xFF,0x32,0x43,0xFF 0444 F1 C9 3A 4E DB 0xF1,0xC9,0x3A,0x4E 0448 FF B7 C8 E5 DB 0xFF,0xB7,0xC8,0xE5 044C D5 C5 21 4F DB 0xD5,0xC5,0x21,0x4F 0450 ; 0450 0450 FF E5 D1 1B DB 0xFF,0xE5,0xD1,0x1B 0454 1A 01 0F 00 DB 0x1A,0x01,0x0F,0x00 0458 ED B0 C1 D1 DB 0xED,0xB0,0xC1,0xD1 045C E1 C9 3A 4E DB 0xE1,0xC9,0x3A,0x4E 0460 ; 0460 0460 FF B7 C8 3E DB 0xFF,0xB7,0xC8,0x3E 0464 FF C9 F5 3E DB 0xFF,0xC9,0xF5,0x3E 0468 6F E3 E3 3D DB 0x6F,0xE3,0xE3,0x3D 046C 20 FB 10 F7 DB 0x20,0xFB,0x10,0xF7 0470 ; 0470 0470 F1 C9 CD D1 DB 0xF1,0xC9,0xCD,0xD1 0474 FB CD B6 FD DB 0xFB,0xCD,0xB6,0xFD 0478 01 BE FD C5 DB 0x01,0xBE,0xFD,0xC5 047C 21 F1 FC 34 DB 0x21,0xF1,0xFC,0x34 0480 ; 0480 0480 35 20 08 FE DB 0x35,0x20,0x08,0xFE 0484 1B C2 F4 FC DB 0x1B,0xC2,0xF4,0xFC 0488 CB FE C9 CB DB 0xCB,0xFE,0xC9,0xCB 048C 7E 28 4A 36 DB 0x7E,0x28,0x4A,0x36 0490 ; 0490 0490 00 32 F2 FC DB 0x00,0x32,0xF2,0xFC 0494 FE 48 20 09 DB 0xFE,0x48,0x20,0x09 0498 CD 25 FC AF DB 0xCD,0x25,0xFC,0xAF 049C 2A 40 FF 18 DB 0x2A,0x40,0xFF,0x18 04A0 ; 04A0 04A0 60 FE 4A 20 DB 0x60,0xFE,0x4A,0x20 04A4 0C 2A 44 FF DB 0x0C,0x2A,0x44,0xFF 04A8 3E A0 36 20 DB 0x3E,0xA0,0x36,0x20 04AC 23 BC 20 FA DB 0x23,0xBC,0x20,0xFA 04B0 ; 04B0 04B0 C9 FE 4B 20 DB 0xC9,0xFE,0x4B,0x20 04B4 11 2A 44 FF DB 0x11,0x2A,0x44,0xFF 04B8 3A 47 FF D6 DB 0x3A,0x47,0xFF,0xD6 04BC 60 30 FC 36 DB 0x60,0x30,0xFC,0x36 04C0 ; 04C0 04C0 20 23 3C 20 DB 0x20,0x23,0x3C,0x20 04C4 FA C9 FE 59 DB 0xFA,0xC9,0xFE,0x59 04C8 20 03 36 02 DB 0x20,0x03,0x36,0x02 04CC C9 FE 46 18 DB 0xC9,0xFE,0x46,0x18 04D0 ; 04D0 04D0 04 FE 47 20 DB 0x04,0xFE,0x47,0x20 04D4 04 32 F3 FC DB 0x04,0x32,0xF3,0xFC 04D8 C9 D6 20 4F DB 0xC9,0xD6,0x20,0x4F 04DC 3A F2 FC FE DB 0x3A,0xF2,0xFC,0xFE 04E0 ; 03E0 04E0 59 C0 35 28 DB 0x59,0xC0,0x35,0x28 04E4 12 79 FE 20 DB 0x12,0x79,0xFE,0x20 04E8 D0 AF 2A 40 DB 0xD0,0xAF,0x2A,0x40 04EC FF 11 60 00 DB 0xFF,0x11,0x60,0x00 04F0 ; 04F0 04F0 0C 0D 28 0D DB 0x0C,0x0D,0x28,0x0D 04F4 19 18 FA 79 DB 0x19,0x18,0xFA,0x79 04F8 FE 60 D0 06 DB 0xFE,0x60,0xD0,0x06 04FC 00 2A 44 FF DB 0x00,0x2A,0x44,0xFF 0500 ; 0500 0500 09 18 29 00 DB 0x09,0x18,0x29,0x00 0504 00 47 2A 44 DB 0x00,0x47,0x2A,0x44 ; not 0x24 at 0506 0508 FF FE 7F 20 DB 0xFF,0xFE,0x7F,0x20 050C 09 36 20 2B DB 0x09,0x36,0x20,0x2B 0510 ; 0510 0510 3A 47 FF 3D DB 0x3A,0x47,0xFF,0x3D 0514 18 16 FE 20 DB 0x18,0x16,0xFE,0x20 0518 38 24 CD 8E DB 0x38,0x24,0xCD,0x8E 051C FD 77 3A F3 DB 0xFD,0x77,0x3A,0xF3 0520 ; 0520 0520 FC FE 46 20 DB 0xFC,0xFE,0x46,0x20 0524 02 CB FE 23 DB 0x02,0xCB,0xFE,0x23 0528 3A 47 FF 3C DB 0x3A,0x47,0xFF,0x3C 052C 32 47 FF 22 DB 0x32,0x47,0xFF,0x22 0530 ; 0530 0530 44 FF 7D 2E DB 0x44,0xFF,0x7D,0x2E 0534 0E 22 00 80 DB 0x0E,0x22,0x00,0x80 0538 2C 67 22 00 DB 0x2C,0x67,0x22,0x00 053C 80 C9 FE 08 DB 0x80,0xC9,0xFE,0x08 0540 ; 0540 0540 28 CD FE 0D DB 0x28,0xCD,0xFE,0x0D 0544 20 0E 3A 47 DB 0x20,0x0E,0x3A,0x47 0548 FF A7 C8 CD DB 0xFF,0xA7,0xC8,0xCD 054C A9 FC 11 A0 DB 0xA9,0xFC,0x11,0xA0 0550 ; 0550 0550 FF 19 18 D8 DB 0xFF,0x19,0x18,0xD8 0554 FE 07 20 11 DB 0xFE,0x07,0x20,0x11 0558 0E 00 3A 49 DB 0x0E,0x00,0x3A,0x49 055C FF EE 02 D3 DB 0xFF,0xEE,0x02,0xD3 0560 ; 0560 0560 E0 06 C0 10 DB 0xE0,0x06,0xC0,0x10 0564 FE 0D 20 F5 DB 0xFE,0x0D,0x20,0xF5 0568 C9 FE 0C 28 DB 0xC9,0xFE,0x0C,0x28 056C 03 FE 0A C0 DB 0x03,0xFE,0x0A,0xC0 0570 ; 0570 0570 3A 43 FF B7 DB 0x3A,0x43,0xFF,0xB7 0574 28 06 3D 28 DB 0x28,0x06,0x3D,0x28 0578 0C 32 43 FF DB 0x0C,0x32,0x43,0xFF 057C 11 60 00 19 DB 0x11,0x60,0x00,0x19 0580 ; 0580 0580 CD 8E FD 18 DB 0xCD,0x8E,0xFD,0x18 0584 AA 11 0A 40 DB 0xAA,0x11,0x0A,0x40 0588 ED 53 00 80 DB 0xED,0x53,0x00,0x80 058C CD 4C FC 28 DB 0xCD,0x4C,0xFC,0x28 0590 ; 0590 0590 FB 11 0A 08 DB 0xFB,0x11,0x0A,0x08 0594 ED 53 00 80 DB 0xED,0x53,0x00,0x80 0598 CD 34 FC CD DB 0xCD,0x34,0xFC,0xCD 059C 11 FC 18 DC DB 0x11,0xFC,0x18,0xDC 05A0 ; 05A0 05A0 F5 7C FE A0 DB 0xF5,0x7C,0xFE,0xA0 05A4 38 20 2A 40 DB 0x38,0x20,0x2A,0x40 05A8 FF C5 E5 11 DB 0xFF,0xC5,0xE5,0x11 05AC 60 00 19 E5 DB 0x60,0x00,0x19,0xE5 05B0 ; 05B0 05B0 D1 21 00 A0 DB 0xD1,0x21,0x00,0xA0 05B4 A7 ED 52 E5 DB 0xA7,0xED,0x52,0xE5 05B8 C1 E1 EB ED DB 0xC1,0xE1,0xEB,0xED 05BC B0 EB C1 E5 DB 0xB0,0xEB,0xC1,0xE5 05C0 ; 05C0 05C0 36 20 2C 20 DB 0x36,0x20,0x2C,0x20 05C4 FB E1 F1 C9 DB 0xFB,0xE1,0xF1,0xC9 05C8 F5 3A 49 FF DB 0xF5,0x3A,0x49,0xFF 05CC F6 04 18 06 DB 0xF6,0x04,0x18,0x06 05D0 ; 05D0 05D0 F5 3A 49 FF DB 0xF5,0x3A,0x49,0xFF 05D4 E6 FB D3 E0 DB 0xE6,0xFB,0xD3,0xE0 05D8 32 49 FF F1 DB 0x32,0x49,0xFF,0xF1 05DC C9 E5 D5 32 DB 0xC9,0xE5,0xD5,0x32 05E0 ; 05E0 05E0 42 FF 21 00 DB 0x42,0xFF,0x21,0x00 05E4 A0 11 A0 FF DB 0xA0,0x11,0xA0,0xFF 05E8 19 3D 20 FC DB 0x19,0x3D,0x20,0xFC 05EC 22 40 FF D1 DB 0x22,0x40,0xFF,0xD1 05F0 ; 05F0 05F0 E1 C9 DB E8 DB 0xE1,0xC9,0xDB,0xE8 05F4 C9 D3 E8 C9 DB 0xC9,0xD3,0xE8,0xC9 05F8 CD C6 FB CD DB 0xCD,0xC6,0xFB,0xCD 05FC 28 FE 32 49 DB 0x28,0xFE,0x32,0x49 0600 ; 0600 0600 FF D3 E0 3A DB 0xFF,0xD3,0xE0,0x3A 0604 48 FF E6 0F DB 0x48,0xFF,0xE6,0x0F 0608 CD 7D FE E6 DB 0xCD,0x7D,0xFE,0xE6 060C 10 C9 CD C6 DB 0x10,0xC9,0xCD,0xC6 0610 ; 0610 0610 FB 11 84 FE DB 0xFB,0x11,0x84,0xFE 0614 CD 36 FE 3E DB 0xCD,0x36,0xFE,0x3E 0618 80 CD 7B FE DB 0x80,0xCD,0x7B,0xFE 061C E6 1C C9 CD DB 0xE6,0x1C,0xC9,0xCD 0620 ; 0620 0620 C6 FB 11 8A DB 0xC6,0xFB,0x11,0x8A 0624 FE CD 36 FE DB 0xFE,0xCD,0x36,0xFE 0628 3E A0 CD 7B DB 0x3E,0xA0,0xCD,0x7B 062C FE E6 7C C0 DB 0xFE,0xE6,0x7C,0xC0 0630 ; 0630 0630 11 90 FE CD DB 0x11,0x90,0xFE,0xCD 0634 02 FE C8 F6 DB 0x02,0xFE,0xC8,0xF6 ; not 0xCB at 0636 0638 02 C9 DD 7E DB 0x02,0xC9,0xDD,0x7E 063C 00 E6 03 4F DB 0x00,0xE6,0x03,0x4F 0640 ; 0640 0640 06 00 21 4A DB 0x06,0x00,0x21,0x4A 0644 FF 09 7E C9 DB 0xFF,0x09,0x7E,0xC9 0648 CD 28 FE 47 DB 0xCD,0x28,0xFE,0x47 064C 21 49 FF AE DB 0x21,0x49,0xFF,0xAE 0650 ; 0650 0650 E6 F0 F5 7E DB $e6,$f0,$f5,$7e 0654 E6 0E B0 77 DB $e6,$0e,$b0,$77 0658 D3 E0 F1 DB $d3,$e0,$f1 065B ; 065B ; 065b 065B IF 0 ; code in the newsletter volume 1 number 1 DB $c4,$6b,$fe ; call nz, call_fe6b DB $dd,$46,$01 ; ld b,(ix+1) DB $db,$e5 ; in a,($e5) 065B ELSE ; fixed code in the newsletter volume 1 number 3 065B DB E5 DB $db,$e5 ; in a,($e5) 065D C4 6B FE DB $c4,$6b,$fe ; call nz, call_fe6b 0660 DD 46 01 DB $dd,$46,$01 ; ld b,(ix+1) 0663 ENDIF 0663 ; 0663 ; 0663 0663 B8 DB $b8 0664 78 D3 E7 3A DB $78,$d3,$e7,$3a 0668 48 FF C4 7D DB $48,$ff,$c4,$7d 066C FE DD 7E 02 DB $fe,$dd,$7e,$02 0670 ; 0670 ; 0670 0670 D3 E6 DD 6E DB 0xD3,0xE6,0xDD,0x6E 0674 03 DD 66 04 DB 0x03,0xDD,0x66,0x04 0678 ED 53 1E FF DB 0xED,0x53,0x1E,0xFF 067C C9 21 90 FE DB 0xC9,0x21,0x90,0xFE 0680 ; 0680 0680 22 1E FF 3E DB 0x22,0x1E,0xFF,0x3E 0684 C0 CD 7D FE DB 0xC0,0xCD,0x7D,0xFE 0688 DB E6 D3 E5 DB 0xDB,0xE6,0xD3,0xE5 068C C9 0E E7 D3 DB 0xC9,0x0E,0xE7,0xD3 0690 ; 0690 0690 E4 37 DA 80 DB 0xE4,0x37,0xDA,0x80 0694 FE C9 ED A2 DB 0xFE,0xC9,0xED,0xA2 0698 37 FB ED 4D DB 0x37,0xFB,0xED,0x4D 069C ED A3 37 FB DB 0xED,0xA3,0x37,0xFB 06A0 ; 06A0 06A0 ED 4D DB E7 DB 0xED,0x4D,0xDB,0xE7 06A4 37 FB ED 4D DB 0x37,0xFB,0xED,0x4D 06A8 DB E4 B7 FB DB 0xDB,0xE4,0xB7,0xFB 06AC ED 4D 32 48 DB 0xED,0x4D,0x32,0x48 06B0 ; 06B0 06B0 FF C9 F5 DB DB 0xFF,0xC9,0xF5,0xDB 06B4 E0 E6 7F 20 DB 0xE0,0xE6,0x7F,0x20 06B8 0B 3E D0 D3 DB 0x0B,0x3E,0xD0,0xD3 06BC E4 F1 21 3D DB 0xE4,0xF1,0x21,0x3D 06C0 ; 06C0 06C0 F8 E3 18 19 DB 0xF8,0xE3,0x18,0x19 06C4 E5 C5 21 4D DB 0xE5,0xC5,0x21,0x4D 06C8 FF 4F 06 0F DB 0xFF,0x4F,0x06,0x0F 06CC AF 23 BE 28 DB 0xAF,0x23,0xBE,0x28 06D0 ; 06D0 06D0 08 10 FA 3E DB 0x08,0x10,0xFA,0x3E 06D4 07 CD 60 FC DB 0x07,0xCD,0x60,0xFC 06D8 FE 71 C1 E1 DB 0xFE,0x71,0xC1,0xE1 06DC F1 FB ED 4D DB 0xF1,0xFB,0xED,0x4D 06E0 ; 06E0 06E0 F5 DB F1 CB DB 0xF5,0xDB,0xF1,0xCB 06E4 57 20 FA DB DB 0x57,0x20,0xFA,0xDB 06E8 FE CB 7F 28 DB 0xFE,0xCB,0x7F,0x28 06EC FA F1 D3 FF DB 0xFA,0xF1,0xD3,0xFF 06F0 ; 06F0 06F0 C9 00 00 00 DB 0xC9,0x00,0x00,0x00 06F4 00 00 00 00 DB 0x00,0x00,0x00,0x00 06F8 00 00 94 20 DB 0x00,0x00,0x94,0x20 06FC 20 00 94 00 DB 0x20,0x00,0x94,0x00 0700 ; 0700 0700 00 1B 7F 60 DB 0x00,0x1B,0x7F,0x60 0704 68 38 21 07 DB 0x68,0x38,0x21,0x07 0708 20 20 50 08 DB 0x20,0x20,0x50,0x08 070C 08 08 14 00 DB 0x08,0x08,0x14,0x00 0710 ; 0710 0710 00 00 A0 FE DB 0x00,0x00,0xA0,0xFE 0714 00 00 00 00 DB 0x00,0x00,0x00,0x00 0718 00 00 00 00 DB 0x00,0x00,0x00,0x00 071C 00 00 00 00 DB 0x00,0x00,0x00,0x00 0720 ; 0720 0720 00 00 00 00 DB 0x00,0x00,0x00,0x00 0724 00 00 00 00 DB 0x00,0x00,0x00,0x00 0728 00 00 00 00 DB 0x00,0x00,0x00,0x00 072C 00 00 96 FE DB 0x00,0x00,0x96,0xFE 0730 ; 0730 0730 00 00 00 00 DB 0x00,0x00,0x00,0x00 0734 00 00 00 00 DB 0x00,0x00,0x00,0x00 0738 00 00 00 00 DB 0x00,0x00,0x00,0x00 073C 00 00 00 00 DB 0x00,0x00,0x00,0x00 0740 ; 0740 0740 00 00 00 00 DB 0x00,0x00,0x00,0x00 0744 00 00 00 00 DB 0x00,0x00,0x00,0x00 0748 00 00 00 00 DB 0x00,0x00,0x00,0x00 074C 00 00 00 00 DB 0x00,0x00,0x00,0x00 0750 ; 0750 0750 00 00 00 00 DB 0x00,0x00,0x00,0x00 0754 00 00 00 00 DB 0x00,0x00,0x00,0x00 0758 00 00 00 00 DB 0x00,0x00,0x00,0x00 075C 10 20 11 21 DB 0x10,0x20,0x11,0x21 0760 ; 0760 0760 00 00 00 00 DB 0x00,0x00,0x00,0x00 0764 00 00 00 00 DB 0x00,0x00,0x00,0x00 0768 00 00 00 00 DB 0x00,0x00,0x00,0x00 076C 00 00 00 00 DB 0x00,0x00,0x00,0x00 0770 ; 0770 0770 55 F8 00 00 DB 0x55,0xF8,0x00,0x00 0774 00 00 00 00 DB 0x00,0x00,0x00,0x00 0778 00 00 00 00 DB 0x00,0x00,0x00,0x00 077C 00 00 15 FA DB 0x00,0x00,0x15,0xFA 0780 ; 0780 0780 00 00 01 80 DB 0x00,0x00,0x01,0x80 0784 00 00 00 01 DB 0x00,0x00,0x00,0x01 0788 00 F6 00 00 DB 0x00,0xF6,0x00,0x00 078C 49 58 20 49 DB 0x49,0x58,0x20,0x49 0790 ; 0790 0790 59 20 48 4C DB 0x59,0x20,0x48,0x4C 0794 20 44 45 20 DB 0x20,0x44,0x45,0x20 0798 42 43 20 41 DB 0x42,0x43,0x20,0x41 079C 46 20 48 4C DB 0x46,0x20,0x48,0x4C 07A0 ; 07A0 07A0 27 44 45 27 DB 0x27,0x44,0x45,0x27 07A4 42 43 27 41 DB 0x42,0x43,0x27,0x41 07A8 46 27 53 50 DB 0x46,0x27,0x53,0x50 07AC 20 41 54 20 DB 0x20,0x41,0x54,0x20 07B0 ; 07B0 07B0 53 20 20 53 DB 0x53,0x20,0x20,0x53 07B4 20 20 53 20 DB 0x20,0x20,0x53,0x20 07B8 20 53 20 20 DB 0x20,0x53,0x20,0x20 07BC FF FF FF FF DB 0xFF,0xFF,0xFF,0xFF 07C0 ; 07C0 ; The ROM data ends here. 07C0 ; 07C0 ; Now let's look at the disassembly, edited back into source code, 07C0 ; 07C0 ; Fortunately, it does not have a lot of embedded text, 07C0 ; just a bit at the end, so we can assume most of it is code. 07C0 ; 07C0 ; To clarify the in/out code, i/o adddresses are defined here: 07C0 ; 07C0 ; equ 0xe4 07C0 ; F800 .ORG 0xf800 F800 FIRMWARE_DESTINATION: F800 ; F800 ; Starts with a jump table: F800 ; F800 ; F800 C3 3D F8 HRESET: JP do_HRESET F803 C3 55 F8 SRESET: JP do_SRESET F806 C3 60 FC VDUA: JP do_VDUA F809 C3 E6 FB KEY1: JP do_KEY1 F80C C3 E0 FD PARIN: JP do_PARIN F80F C3 E3 FD PAROUT: JP do_PAROUT F812 C3 CE FE PRINT: JP do_PRINT F815 C3 B6 FD VDUON: JP do_VDUON F818 C3 BE FD VDUOFF: JP do_VDUOFF F81B C3 34 FC KEY2: JP do_KEY2 F81E C3 DB FB KEY3: JP do_KEY3 F821 C3 4C FC KEY4: JP do_KEY4 F824 C3 E6 FD RESDSK: JP do_RESDSK F827 C3 FC FD RDDSK: JP do_RDDSK F82A C3 0D FE WRDSK: JP do_WRDSK F82D C3 9C FE STEPR: JP do_STEPR F830 C3 CB FD PSCROL: JP do_PSCROL F833 C3 54 FC TIME: JP do_TIME F836 C3 99 FA SETUP: JP do_SETUP F839 ; Function Description F839 ; name F839 ; F839 ; HRESET Completely reinitializes system and returns to MCOS. F839 ; F839 ; SRESET Reenters MCOS without resetting RSTs to default values. F839 ; F839 ; VDUA Sends the character in A (the accumulator) to the v.d.u. F839 ; Can process all ascii characters (020 to 07E) as well as certain F839 ; control characters, escape sequences F839 ; and reverse-video ascii characters. F839 ; F839 ; KEY1 Waits for a character to appear in the keyboard buffer, F839 ; clears the buffer and returns the key code in A. F839 ; Processes the paging key F839 ; F839 ; PARIN Reads an 8-bit byte from the parallel input port to A. F839 ; F839 ; PAROUT Sends the contents of A to the parallel output port. F839 ; F839 ; PRINT Sends the character in A to the serial output port. F839 ; F839 ; VDUON Switches the v.d.u. into the memory map at 08000 to 09FFF. F839 ; F839 ; VDUOFF Switches the v.d.u. out of memory map. F839 ; F839 ; KEY2 Tests keyboard buffer, F839 ; returning 000 if empty F839 ; or clearing the buffer and F839 ; returning the key code if not. F839 ; F839 ; KEY3 Similar to KEY2, but processes the paging F839 ; character and does not clear buffer. F839 ; F839 ; KEY4 Tests the keyboard buffer, F839 ; returning 000 if empty F839 ; or 0FF if not. F839 ; Does not clear the buffer. F839 ; F839 ; RESDSK Resets (to track 00) and selects the F839 ; specified disc unit. F839 ; F839 ; RDDSK Reads from the specified disc unit, track F839 ; and sector to memory. F839 ; F839 ; WRDSK Writes to the specified disc unit, track and F839 ; sector from memory. F839 ; F839 ; STEPR Sets the stepping rate for disc seek and F839 ; restore operations by supplying code 018 F839 ; to 01B in the A register. F839 ; These four codes correspond to stepping rates of F839 ; 3, 6, 10 and 15ms respectively F839 ; when the interface is in the 8 inch mode, F839 ; double these times in 5.25in mode. F839 ; The slowest speed is the system default. F839 ; F839 ; PSCROL Sets the number of screen lines to take F839 ; part in v.d.u. scrolling. Scrolling always F839 ; occurs from the bottom of the screen, but F839 ; this function can be used to keep a F839 ; number of lines at the top of the screen F839 ; stationary for applications such as mixed F839 ; graph plotting and data output, applications F839 ; progam menus and/or instructions. F839 ; The number of scrolling lines is F839 ; suppied in register A. F839 ; F839 ; TIME Creates a 10ms time delay. F839 ; F839 ; SETUP Sets standard v.d.u. mode (32 lines of 96 characters). F839 ; F839 ; F839 ; F839 HIGH_ENTRY_POINT: F839 ; 0xf839 3e d0 F839 3E D0 LD a,0xd0 F83B D3 E4 OUT (port_0xe4),a F83D DO_HRESET: F83D 21 00 00 LD hl,0x0000 F840 11 5E FF LD de,Lff5e F843 ; 0xf843 3e 08 F843 3E 08 LD a,0x08 F845 LOOP_F845: F845 36 C3 LD (hl),0xc3 F847 23 INC hl F848 EB EX de,hl F849 ; 0xf849 ed a0 F849 ED A0 LDI F84B ; 0xf84b ed a0 F84B ED A0 LDI F84D ; 0xf84d eb F84D EB EX de,hl F84E ; 0xf84e 01 05 00 F84E 01 05 00 LD bc,5 F851 ; 0xf851 09 F851 09 ADD hl,bc F852 ; 0xf852 3d F852 3D DEC a F853 20 F0 JR nz,loop_f845 F855 31 00 00 DO_SRESET: LD sp,0 F858 CD 4B FA CALL subroutine_fa4b F85B ; 0xf85b fb F85B FB EI F85C ; F85C LOOP_F85C: ; cd e5 fa F85C CD E5 FA CALL subroutine_fae5 F85F FE 13 CP 0x13 F861 28 0D JR z,skip_f870 F863 ; 0xf863 fe 04 F863 FE 04 CP 0x04 F865 20 1C JR nz,skip_f883 F867 ; 0xf867 21 80 f7 F867 21 80 F7 LD hl,0xf780 F86A ; 0xf86a dd 21 73 ff F86A DD 21 74 FF LD ix,Lff73 F86E ; 0xf86e 18 07 F86E 18 07 JR skip_f877 F870 SKIP_F870: F870 21 80 00 LD hl,0x0080 F873 ; 0xf873 dd 21 6e ff F873 DD 21 6E FF LD ix,SDEN F877 SKIP_F877: F877 E5 PUSH hl F878 ; 0xf878 cd 5e fa F878 CD 5E FA CALL subroutine_fa5e F87B LOOP_F87B: F87B CD E6 FD CALL do_RESDSK F87E 20 FB JR nz,loop_f87b F880 C3 FC FD JP DO_RDDSK F883 SKIP_F883: F883 47 LD b,a F884 LOOP_F884: F884 4F LD c,a F885 ; 0xf885 cd e5 fa F885 CD E5 FA CALL subroutine_fae5 F888 ; 0xf888 fe 20 F888 FE 20 CP space F88A 20 F8 JR nz,loop_f884 F88C ; 0xf88c 79 F88C 79 LD a,c F88D ; 0xf88d 81 F88D 81 ADD a,c F88E ; 0xf88e 80 F88E 80 ADD a,b F88F ; 0xf88f fe d8 F88F FE D8 CP 0xd8 F891 20 1F JR nz,skip_f8b2 F893 ; 0xf893 cd 76 fb F893 CD 76 FB CALL subroutine_fb76 F896 ; 0xf896 e5 F896 E5 PUSH hl F897 ; 0xf897 cd 73 fb F897 CD 73 FB CALL subroutine_fb73 F89A ; 0xf89a c1 F89A C1 POP bc F89B ; 0xf89b e5 F89B E5 PUSH hl F89C ; 0xf89c a7 F89C A7 AND a F89D ; 0xf89d ed 42 F89D ED 42 SBC hl,bc F89F ; 0xf89f e3 F89F E3 EX (sp),hl F8A0 ; 0xf8a0 c1 F8A0 C1 POP bc F8A1 ; 0xf8a1 2b F8A1 2B DEC hl F8A2 ; 0xf8a2 cd 7f fb F8A2 CD 7F FB CALL subroutine_fb7f F8A5 ; 0xf8a5 e5 F8A5 E5 PUSH hl F8A6 ; 0xf8a6 d1 F8A6 D1 POP de F8A7 ; 0xf8a7 85 F8A7 85 ADD a,l F8A8 ; 0xf8a8 6f F8A8 6F LD l,a F8A9 ; F8A9 ; F8A9 ; 0xf8a9 30 01 F8A9 30 01 JR nc,skip_f8ac F8AB 24 INC h F8AC SKIP_F8AC: F8AC EB EX de,hl F8AD ; 0xf8ad ed b8 F8AD ED B8 LDDR F8AF ; 0xf8af c3 55 f8 F8AF C3 55 F8 JP do_SRESET F8B2 ; F8B2 ; F8B2 SKIP_F8B2: F8B2 FE E9 CP 0xe9 F8B4 20 1C JR nz,skip_f8d2 F8B6 ; F8B6 LOOP_F8B6: F8B6 CD 76 FB CALL subroutine_fb76 F8B9 CD 7F FB CALL subroutine_fb7f F8BC 77 LD (hl),a F8BD CD F4 FA CALL subroutine_faf4 F8C0 CD 4B FA CALL subroutine_fa4b F8C3 LOOP_F8C3: F8C3 3A 4E FF LD a,(KBF) ; read key F8C6 B7 OR a F8C7 28 FA JR z,loop_f8c3 ; repeat while zero F8C9 ; F8C9 ; okay, now you have a key F8C9 ; F8C9 ; 0xf8c9 e6 5f F8C9 E6 5F AND 0x5f F8CB ; 0xf8cb fe 47 F8CB FE 47 CP "G" F8CD 38 E7 JR c,loop_f8b6 F8CF ; 0xf8cf c3 5c f8 F8CF C3 5C F8 JP loop_f85c F8D2 ; F8D2 SKIP_F8D2: F8D2 FE D5 CP 0xd5 F8D4 20 27 JR nz,skip_f8fd F8D6 ; 0xf8d6 cd 76 fb F8D6 CD 76 FB CALL subroutine_fb76 F8D9 ; 0xf8d9 e5 F8D9 E5 PUSH hl F8DA ; 0xf8da e5 F8DA E5 PUSH hl F8DB C1 POP bc F8DC ; 0xf8dc cd 73 fb F8DC CD 73 FB CALL subroutine_fb73 F8DF ; 0xf8df ed 42 F8DF ED 42 SBC hl,bc F8E1 ; 0xf8e1 e5 F8E1 E5 PUSH hl F8E2 C1 POP bc F8E3 ; 0xf8e3 e1 F8E3 E1 POP hl F8E4 ; 0xf8e4 cd 7f fb F8E4 CD 7F FB CALL subroutine_fb7f F8E7 ; 0xf8e7 5f F8E7 5F LD e,a F8E8 ; 0xf8e8 cd 7f fb F8E8 CD 7F FB CALL subroutine_fb7f F8EB CD A5 FB CALL subroutine_fba5 F8EE LOOP_F8EE: F8EE ED B1 CPIR F8F0 ; 0xf8f0 e2 55 f8 F8F0 E2 55 F8 JP po,do_SRESET F8F3 ; 0xf8f3 2b F8F3 2B DEC hl ; predecrement hl F8F4 73 LD (hl),e F8F5 ; 0xf8f5 f5 F8F5 F5 PUSH af F8F6 ; 0xf8f6 cd c7 fa F8F6 CD C7 FA CALL subroutine_fac7 F8F9 ; 0xf8f9 23 F8F9 23 INC hl F8FA ; 0xf8fa f1 F8FA F1 POP af F8FB ; 0xf8fb 18 f1 F8FB 18 F1 JR loop_f8ee F8FD SKIP_F8FD: F8FD FE F9 CP 0xf9 F8FF 20 18 JR nz,skip_f919 F901 ; 0xf901 cd 76 fb F901 CD 76 FB CALL subroutine_fb76 F904 ; 0xf904 e5 F904 E5 PUSH hl F905 ; 0xf905 cd 73 fb F905 CD 73 FB CALL subroutine_fb73 F908 ; 0xf908 c1 F908 C1 POP bc F909 C5 PUSH bc F90A ; 0xf90a a7 F90A A7 AND a F90B ; 0xf90b ed 42 F90B ED 42 SBC hl,bc F90D ; 0xf90d e5 F90D E5 PUSH hl F90E C1 POP bc F90F ; 0xf90f cd 73 fb F90F CD 73 FB CALL subroutine_fb73 F912 ; 0xf912 d1 F912 D1 POP de F913 ; 0xf913 eb F913 EB EX de,hl F914 ; 0xf914 ed b0 F914 ED B0 LDIR F916 ; 0xf916 c3 55 f8 F916 C3 55 F8 JP do_SRESET F919 ; F919 ; F919 SKIP_F919: F919 FE DE CP 0xde F91B 20 0B JR nz,skip_f928 F91D ; 0xf91d cd 76 fb F91D CD 76 FB CALL subroutine_fb76 F920 ; F920 LOOP_F920: F920 36 FF LD (hl),0xff F922 ; 0xf922 2c F922 2C INC l F923 20 FB JR nz,loop_f920 F925 C3 55 F8 JP do_SRESET F928 ; F928 ; F928 SKIP_F928: F928 FE FC CP 0xfc F92A 20 0E JR nz,skip_f93a F92C ; 0xf92c 21 00 00 F92C 21 00 00 LD hl,0x0000 F92F ; F92F LOOP_F92F: F92F 36 FF LD (hl),0xff F931 23 INC hl F932 ; 0xf932 7c F932 7C LD a,h ; is h == 0xf8 ? F933 FE F8 CP 0xf8 F935 20 F8 JR nz,loop_f92f F937 ; 0xf937 c3 3d f8 F937 C3 00 F8 JP HRESET ; yes, go to hard reset. F93A ; F93A ; F93A SKIP_F93A: F93A F5 PUSH af F93B ; 0xf93b cd da fa F93B CD DA FA CALL subroutine_fada F93E ; 0xf93e 1b F93E 1B DEC de F93F ; 0xf93f 4a F93F 4A LD c,d F940 ; 0xf940 00 F940 00 NOP F941 ; 0xf941 f1 F941 F1 POP af F942 ; 0xf942 fe d4 F942 FE D4 CP 0xd4 F944 20 50 JR nz,skip_f996 F946 ; 0xf946 cd 76 fb F946 CD 76 FB CALL subroutine_fb76 F949 ; 0xf949 cd a5 fb F949 CD A5 FB CALL subroutine_fba5 F94C ; 0xf94c e5 F94C E5 PUSH hl F94D LOOP_F94D: ; cd 38 fb F94D CD 38 FB CALL subroutine_fb38 F950 LOOP_F950: F950 CD E5 FA CALL subroutine_fae5 F953 ; 0xf953 fe 5f F953 FE 5F CP 0x5f ; "_" F955 20 22 JR nz,skip_f979 F957 ; 0xf957 2b F957 2B DEC hl F958 ; 0xf958 7d F958 7D LD a,l F959 ; 0xf959 e6 0f F959 E6 0F AND 0x0f ; low nibble F95B ; 0xf95b fe 0f F95B FE 0F CP 0x0f F95D 20 07 JR nz,skip_f966 F95F ; F95F ; 0xf95f 3e 0d F95F 3E 0D LD a,CR F961 CD 60 FC CALL do_VDUA F964 ; 0xf964 18 e7 F964 18 E7 JR loop_f94d F966 ; F966 ; F966 SKIP_F966: F966 CD 46 FB CALL subroutine_fb46 F969 ; 0xf969 3a 47 ff F969 3A 47 FF LD a,(LPOS) F96C ; 0xf96c d6 05 F96C D6 05 SUB 0x05 F96E ; 0xf96e 90 F96E 90 SUB b F96F ; 0xf96f 47 F96F 47 LD b,a F970 LOOP_F970: ; 3e 7f F970 3E 7F LD a,0x7f F972 ; 0xf972 cd 60 fc F972 CD 60 FC CALL do_VDUA F975 ; 0xf975 10 f9 F975 10 F9 DJNZ loop_f970 F977 ; 0xf977 18 d7 F977 18 D7 JR loop_f950 F979 ; F979 ; F979 SKIP_F979: F979 FE 20 CP space F97B 28 12 JR z,skip_f98f F97D ; 0xf97d cd 94 fb F97D CD 94 FB CALL subroutine_fb94 F980 ; 0xf980 cd 85 fb F980 CD 85 FB CALL subroutine_fb85 F983 ; 0xf983 77 F983 77 LD (hl),a F984 ; 0xf984 23 F984 23 INC hl F985 ; 0xf985 cd 12 fb F985 CD 12 FB CALL subroutine_fb12 F988 ; 0xf988 20 c6 F988 20 C6 JR nz,loop_f950 F98A ; 0xf98a cd a5 fb F98A CD A5 FB CALL subroutine_fba5 F98D ; 0xf98d 18 be F98D 18 BE JR loop_f94d F98F SKIP_F98F: F98F E1 POP hl F990 ; 0xf990 cd f7 fa F990 CD F7 FA CALL subroutine_faf7 F993 ; 0xf993 c3 55 f8 F993 C3 55 F8 JP do_SRESET F996 ; F996 ; F996 SKIP_F996: F996 FE EE CP 0xee F998 20 04 JR nz,skip_f99e F99A ; 0xf99a cd 76 fb F99A CD 76 FB CALL subroutine_fb76 F99D ; 0xf99d e9 F99D E9 JP (hl) F99E ; F99E ; F99E SKIP_F99E: F99E FE E3 CP 0xe3 F9A0 20 15 JR nz,skip_f9b7 F9A2 ; 0xf9a2 cd 76 fb F9A2 CD 76 FB CALL subroutine_fb76 F9A5 ; 0xf9a5 e5 F9A5 E5 PUSH hl F9A6 ; 0xf9a6 cd 73 fb F9A6 CD 73 FB CALL subroutine_fb73 F9A9 ; 0xf9a9 cd a5 fb F9A9 CD A5 FB CALL subroutine_fba5 F9AC ; 0xf9ac d1 F9AC D1 POP de F9AD ; 0xf9ad eb F9AD EB EX de,hl F9AE LOOP_F9AE: F9AE 1A LD a,(de) F9AF ; 0xf9af be F9AF BE CP (hl) F9B0 C4 C7 FA CALL nz,subroutine_fac7 F9B3 ; 0xf9b3 13 F9B3 13 INC de F9B4 ; 0xf9b4 23 F9B4 23 INC hl F9B5 ; 0xf9b5 18 f7 F9B5 18 F7 JR loop_f9ae F9B7 SKIP_F9B7: F9B7 FE CE CP 0xce F9B9 20 52 JR nz,skip_fa0d F9BB ; 0xf9bb 21 dc ff F9BB 21 DC FF LD hl,0xffdc F9BE ; 0xf9be 39 F9BE 39 ADD hl,sp F9BF ; 0xf9bf e5 F9BF E5 PUSH hl F9C0 ; 0xf9c0 0e 00 F9C0 0E 00 LD c,0 F9C2 ; F9C2 LOOP_F9C2: F9C2 3A 4E FF LD a,(KBF) F9C5 B7 OR a F9C6 28 FA JR z,loop_f9c2 F9C8 ; F9C8 ; 0xf9c8 fe 1b F9C8 FE 1B CP esc F9CA 28 08 JR z,skip_f9d4 F9CC ; 0xf9cc cd 7f fb F9CC CD 7F FB CALL subroutine_fb7f F9CF ; 0xf9cf 77 F9CF 77 LD (hl),a F9D0 ; 0xf9d0 2b F9D0 2B DEC hl F9D1 ; 0xf9d1 0c F9D1 0C INC c F9D2 ; 0xf9d2 18 ee F9D2 18 EE JR loop_f9c2 F9D4 ; F9D4 ; F9D4 SKIP_F9D4: F9D4 CD 34 FC CALL do_KEY2 F9D7 ; 0xf9d7 0c F9D7 0C INC c F9D8 0D DEC c F9D9 CA 55 F8 JP z,do_SRESET F9DC ; F9DC ; 0xf9dc cd a5 fb F9DC CD A5 FB CALL subroutine_fba5 F9DF ; 0xf9df e1 F9DF E1 POP hl F9E0 ; 0xf9e0 d9 F9E0 D9 EXX F9E1 ; 0xf9e1 21 00 00 F9E1 21 00 00 LD hl,0 F9E4 ; 0xf9e4 01 00 00 F9E4 01 00 00 LD bc,0 F9E7 ; 0xf9e7 d9 F9E7 D9 EXX F9E8 ; F9E8 ; F9E8 LOOP_F9E8: F9E8 41 LD b,c F9E9 ; 0xf9e9 e5 F9E9 E5 PUSH hl F9EA ; 0xf9ea d1 F9EA D1 POP de F9EB ; 0xf9eb 7e F9EB 7E LD a,(hl) F9EC ; 0xf9ec d9 F9EC D9 EXX F9ED LOOP_F9ED: F9ED ED B1 CPIR F9EF ; 0xf9ef e2 55 f8 F9EF E2 55 F8 JP po,do_SRESET F9F2 ; 0xf9f2 20 f9 F9F2 20 F9 JR nz,loop_f9ed F9F4 ; 0xf9f4 e5 F9F4 E5 PUSH hl F9F5 LOOP_F9F5: F9F5 D9 EXX F9F6 ; 0xf9f6 1b F9F6 1B DEC de F9F7 ; 0xf9f7 1a F9F7 1A LD a,(de) F9F8 ; 0xf9f8 10 0b F9F8 10 0B DJNZ skip_fa05 F9FA ; 0xf9fa d9 F9FA D9 EXX F9FB E1 POP hl F9FC E5 PUSH hl F9FD 2B DEC hl F9FE CD C7 FA CALL subroutine_fac7 FA01 LOOP_FA01: FA01 E1 POP hl FA02 ; 0xfa02 d9 FA02 D9 EXX FA03 ; 0xfa03 18 e3 FA03 18 E3 JR loop_f9e8 FA05 SKIP_FA05: FA05 D9 EXX FA06 ; 0xfa06 ed a1 FA06 ED A1 CPI FA08 ; 0xfa08 03 FA08 03 INC bc FA09 20 F6 JR nz,loop_fa01 FA0B 18 E8 JR loop_f9f5 FA0D SKIP_FA0D: FA0D FE F4 CP 0xf4 FA0F ; 0xfa0f cc ee fa FA0F CC EE FA CALL z,skip_faee FA12 ; 0xfa12 c3 55 f8 FA12 C3 55 F8 JP do_SRESET FA15 ; FA15 ; FA15 ; FA15 LFA15: FA15 ; 0xfa15 e5 FA15 E5 PUSH hl FA16 ; 0xfa16 21 06 00 FA16 21 06 00 LD hl,0x0006 FA19 ; 0xfa19 f5 FA19 F5 PUSH af FA1A ; 0xfa1a 39 FA1A 39 ADD hl,sp FA1B ; 0xfa1b f1 FA1B F1 POP af FA1C ; 0xfa1c e3 FA1C E3 EX (sp),hl FA1D ; 0xfa1d 08 FA1D 08 EX af,af' FA1E ; 0xfa1e f5 FA1E F5 PUSH af FA1F ; 0xfa1f d9 FA1F D9 EXX FA20 ; 0xfa20 c5 FA20 C5 PUSH bc FA21 D5 PUSH de FA22 E5 PUSH hl FA23 ; 0xfa23 d9 FA23 D9 EXX FA24 ; 0xfa24 08 FA24 08 EX af,af' FA25 ; 0xfa25 f5 FA25 F5 PUSH af FA26 C5 PUSH bc FA27 D5 PUSH de FA28 E5 PUSH hl FA29 FD E5 PUSH iy FA2B DD E5 PUSH ix FA2D ; 0xfa2d 06 10 FA2D 06 10 LD b,0x10 FA2F ; 0xfa2f 11 7a ff FA2F 11 7A FF LD de,0xff7a FA32 LOOP_FA32: FA32 CD A5 FB CALL subroutine_fba5 FA35 ; 0xfa35 0f FA35 0F RRCA FA36 ; 0xfa36 03 FA36 03 INC bc FA37 LOOP_FA37: FA37 1A LD a,(de) FA38 ; 0xfa38 13 FA38 13 INC de FA39 ; 0xfa39 cd b5 fb FA39 CD B5 FB CALL subroutine_fbb5 FA3C ; 0xfa3c 0d FA3C 0D DEC c FA3D 20 F8 JR nz,loop_fa37 FA3F ; 0xfa3f cd 9d fb FA3F CD 9D FB CALL subroutine_fb9d FA42 ; 0xfa42 e1 FA42 E1 POP hl FA43 ; 0xfa43 cd 53 fb FA43 CD 53 FB CALL subroutine_fb53 FA46 ; 0xfa46 10 ea FA46 10 EA DJNZ loop_fa32 FA48 ; 0xfa48 c3 55 f8 FA48 C3 55 F8 JP do_SRESET FA4B SUBROUTINE_FA4B: FA4B CD 66 FA CALL subroutine_fa66 FA4E CD DA FA CALL subroutine_fada FA51 ; 0xfa51 20 0d FA51 20 0D DB space,CR FA53 ; 0xfa53 20 52 FA53 20 DB space FA54 52 45 41 44 59 DB "READY" FA59 20 20 20 00 DB space,space,space,null FA5D C9 RET FA5E SUBROUTINE_FA5E: FA5E CD DA FA CALL subroutine_fada FA61 ; 0xfa61 1b FA61 1B DEC de FA62 ; 0xfa62 48 FA62 48 LD c,b FA63 ; 0xfa63 1b FA63 1B DEC de FA64 ; 0xfa64 4a FA64 4A LD c,d FA65 ; 0xfa65 00 FA65 00 NOP FA66 SUBROUTINE_FA66: FA66 3E FF LD a,0xff FA68 ; 0xfa68 ed 47 FA68 ED 47 LD i,a FA6A ; 0xfa6a ed 5e FA6A ED 5E IM 2 FA6C ; FA6C SCITAB_PAIRS: EQU (do_SETUP-SCITAB)/2 FA6C ; 0xfa6c 3e 14 FA6C 3E 14 LD a,SCITAB_pairs ; 0x14 ; size of table FA6E ; 0xfa6e cd b9 fa FA6E CD B9 FA CALL subroutine_fab9 ; outputs the following table to output ports FA71 ; FA71 ; FA71 ; code above does not return to fall into the table. FA71 ; The return address is incremented past it, to do_SETUP. FA71 ; FA71 ; 0Xfa71 FA71 ; FA71 SCITAB: FA71 ; FA71 ; Pairs of output_address, data. FA71 ; IDR should be F0 FA71 ; IMRB should be F6 FA71 ; IMRA should be F7 FA71 ; PVR should be F8 FA71 ; GPIP should be F1 FA71 ; UCR should be FC FA71 ; RSR should be FD FA71 ; TSR should be FE FA71 ; 0283 FA71 F8 06 DB PVR,DDR ; Set GPIP bit 1 as output FA73 F0 02 DB IDR,002H FA75 F1 02 DB GPIP,002H ; and set it high (Rx disabled) FA77 F8 02 DB PVR,TCDR ; set baud rate (Rx) FA79 F0 02 DB IDR,002H FA7B F8 01 DB PVR,TDDR ; set baud rate (Tx) FA7D F0 02 DB IDR,002H FA7F F8 07 DB PVR,TCDCR ; select prescale of four on both FA81 F0 11 DB IDR,011H FA83 FC 98 DB UCR,098H ; set 8-bit, 2 stop bits FA85 FD 01 DB RSR,001H ; enable Rx FA87 FE 01 DB TSR,001H ; enable Tx FA89 F8 03 DB PVR,AER FA8B F0 C0 DB IDR,0C0H ; rising edge for FDC ints FA8D F7 C0 DB IMRA,0C0H FA8F F6 01 DB IMRB,001H FA91 F8 05 DB PVR,IERA FA93 F0 C0 DB IDR,0C0H FA95 F8 0C DB PVR,IERB+8 ; enable keyboard int FA97 ; 0xfa97 f0 01 FA97 F0 01 DB IDR,001H ; and set S bit FA99 ; FA99 ; db 0x21, 0xE7, 0xFE FA99 ; db 0x11, 0x40 FA99 ; 02B0 FA99 ; db 0xFF, 0x01, 0x09, 0x00 FA99 ; db 0xED, 0xB0, 0x11, 0x00 FA99 ; db 0x00, 0x06, 0x10, 0xCD FA99 ; db 0xB6, 0xFD, 0x56, 0xED FA99 ; 02C0 FA99 ; db 0x53, 0x00, 0x80, 0x23 FA99 ; db 0x1C, 0x10, 0xF7, 0xCD FA99 ; db 0xBE, 0xFD, 0xC9, 0xE3 FA99 ; db 0xC5, 0x47, 0x4E, 0x23 FA99 ; 02D0 FA99 ; db 0x7E, 0x23, 0xED, 0x79 FA99 ; db 0x10, 0xF8, 0xC1, 0xE3 FA99 ; db 0xC9, 0xCD, 0x53, 0xFB FA99 ; db 0x3A, 0x47, 0xFF, 0xFE FA99 ; 02E0 FA99 ; db 0x5C, 0xD2, 0xA5, 0xFB FA99 ; db 0xE6, 0x07, 0xC8, 0xCD FA99 ; db 0xA0, 0xFB, 0x18, 0xF0 FA99 ; 0xfa99 FA99 DO_SETUP: FA99 21 E7 FE LD hl,INIT1 FA9C 11 40 FF LD de,WINDOW FA9F 01 09 00 LD bc,9 FAA2 ED B0 LDIR FAA4 ; 0xfaa4 11 00 00 FAA4 11 00 00 LD de,0x0000 FAA7 ; 0xfaa7 06 10 FAA7 06 10 LD b,0x10 FAA9 ; 0xfaa9 cd b6 fd FAA9 CD B6 FD CALL do_VDUON FAAC LOOP_FAAC: FAAC 56 LD d,(hl) FAAD ; 0xfaad ed 53 00 80 FAAD ED 53 00 80 LD (0x8000),de FAB1 ; FAB1 ; 0xfab1 23 FAB1 23 INC hl FAB2 ; 0xfab2 1c FAB2 1C INC e FAB3 ; 0xfab3 10 f7 FAB3 10 F7 DJNZ loop_faac FAB5 ; 0xfab5 cd be fd FAB5 CD BE FD CALL do_VDUOFF FAB8 C9 RET FAB9 SUBROUTINE_FAB9: ; outputs the table after the following table to output ports FAB9 E3 EX (sp),hl ; swap hl and top of stack FABA C5 PUSH bc ; save FABB 47 LD b,a ; get byte count FABC LOOP_FABC: FABC 4E LD c,(hl) ; get the i/o address, put in register C FABD 23 INC hl FABE ; 0xfabe 7e FABE 7E LD a,(hl) FABF 23 INC hl FAC0 ; 0xfac0 ed 79 FAC0 ED 79 OUT (c),a FAC2 10 F8 DJNZ loop_fabc FAC4 ; FAC4 ; 0xfac4 c1 FAC4 C1 POP bc ; restore FAC5 E3 EX (sp),hl ; swap hl and top of stack FAC6 C9 RET FAC7 SUBROUTINE_FAC7: FAC7 CD 53 FB CALL subroutine_fb53 FACA LOOP_FACA: FACA 3A 47 FF LD a,(LPOS) FACD ; 0xfacd fe 5c FACD FE 5C CP 0x5c FACF D2 A5 FB JP nc,subroutine_fba5 FAD2 ; 0xfad2 e6 07 FAD2 E6 07 AND 7 FAD4 C8 RET z FAD5 ; 0xfad5 cd a0 fb FAD5 CD BE FD CALL do_VDUOFF FAD8 ; 0xfad8 18 f0 FAD8 18 F0 JR loop_faca FADA SUBROUTINE_FADA: FADA E3 EX (sp),hl FADB ; 0xfadb 7e FADB 7E LD a,(hl) FADC ; 0xfadc 23 FADC 23 INC hl FADD ; 0xfadd e3 FADD E3 EX (sp),hl FADE ; 0xfade b7 FADE B7 OR a FADF ; 0xfadf c8 FADF C8 RET z FAE0 ; 0xfae0 cd 60 fc FAE0 CD 60 FC CALL do_VDUA FAE3 ; 0xfae3 18 f5 FAE3 18 F5 JR subroutine_fada FAE5 SUBROUTINE_FAE5: FAE5 CD B2 FB CALL subroutine_fbb2 FAE8 ; 0xfae8 fe 60 FAE8 FE 60 CP 0x60 FAEA D8 RET c FAEB ; 0xfaeb d6 20 FAEB D6 20 SUB 0x20 ; make upper case? FAED C9 RET FAEE SKIP_FAEE: FAEE ; 0xfaee cd 76 fb FAEE CD 76 FB CALL subroutine_fb76 FAF1 ; 0xfaf1 22 78 ff FAF1 22 7A FF LD (variable_word_ff78),hl FAF4 SUBROUTINE_FAF4: FAF4 2A 7A FF LD hl,(variable_word_ff78) FAF7 SUBROUTINE_FAF7: FAF7 CD DA FA CALL subroutine_fada FAFA ; 0xfafa 1b FAFA 1B DEC de FAFB ; 0xfafb 48 FAFB 48 LD c,b FAFC ; 0xfafc 00 FAFC 00 NOP FAFD ; 0xfafd 0e 1f FAFD 0E 1F LD c,0x1f FAFF LOOP_FAFF: FAFF CD A5 FB CALL subroutine_fba5 FB02 CD 38 FB CALL subroutine_fb38 FB05 LOOP_FB05: FB05 CD 5D FB CALL subroutine_fb5d FB08 23 INC hl FB09 CD 12 FB CALL subroutine_fb12 FB0C 20 F7 JR nz,loop_fb05 FB0E ; 0xfb0e 0d FB0E 0D DEC c FB0F ; 0xfb0f 20 ee FB0F 20 EE JR nz,loop_faff FB11 C9 RET FB12 SUBROUTINE_FB12: FB12 CD BE FD CALL do_VDUOFF FB15 ; 0xfb15 7d FB15 7D LD a,l FB16 ; 0xfb16 e6 03 FB16 E6 03 AND 0x03 FB18 ; 0xfb18 cc 9d fb FB18 CC 9D FB CALL z,subroutine_fb9d FB1B ; 0xfb1b 7d FB1B 7D LD a,l FB1C ; 0xfb1c e6 0f FB1C E6 0F AND 0x0f FB1E ; 0xfb1e c0 FB1E C0 RET nz FB1F ; FB1F ; 0xfb1f 11 f0 ff FB1F 11 F0 FF LD de,0xfff0 FB22 ; 0xfb22 19 FB22 19 ADD hl,de FB23 ; 0xfb23 06 10 FB23 06 10 LD b,0x10 FB25 LOOP_FB25: FB25 7E LD a,(hl) FB26 ; 0xfb26 23 FB26 23 INC hl FB27 ; 0xfb27 fe 20 FB27 FE 20 CP space FB29 38 04 JR c,skip_fb2f FB2B ; FB2B ; 0xfb2b fe 7f FB2B FE 7F CP DEL FB2D 38 02 JR c,skip_fb31 FB2F ; FB2F SKIP_FB2F: FB2F 3E 2E LD a,0x2e ; "." FB31 SKIP_FB31: FB31 CD B5 FB CALL subroutine_fbb5 FB34 ; 0xfb34 10 ef FB34 10 EF DJNZ loop_fb25 FB36 ; FB36 ; 0xfb36 af FB36 AF XOR a FB37 C9 RET FB38 SUBROUTINE_FB38: FB38 CD 53 FB CALL subroutine_fb53 FB3B ; 0xfb3b c5 FB3B C5 PUSH bc FB3C ; 0xfb3c cd 46 fb FB3C CD 46 FB CALL subroutine_fb46 FB3F ; 0xfb3f c4 a0 fb FB3F C4 BE FD CALL nz,do_VDUOFF FB42 ; 0xfb42 10 fb FB42 10 FB DJNZ 0xfb3f FB44 ; 0xfb44 c1 FB44 C1 POP bc FB45 C9 RET FB46 SUBROUTINE_FB46: FB46 7D LD a,l FB47 ; 0xfb47 e6 0f FB47 E6 0F AND 0x0f FB49 C8 RET z FB4A ; 0xfb4a 4f FB4A 4F LD c,a FB4B E6 0C AND 0x0c FB4D 0F RRCA FB4E 81 ADD a,c FB4F 81 ADD a,c FB50 81 ADD a,c FB51 47 LD b,a FB52 C9 RET FB53 SUBROUTINE_FB53: FB53 7C LD a,h FB54 ; 0xfb54 cd 5e fb FB54 CD 5E FB CALL subroutine_fb5e FB57 ; 0xfb57 7d FB57 7D LD a,l FB58 ; 0xfb58 cd 5e fb FB58 CD 5E FB CALL subroutine_fb5e FB5B ; 0xfb5b 18 43 FB5B 18 43 JR subroutine_fba0 FB5D SUBROUTINE_FB5D: FB5D 7E LD a,(hl) FB5E SUBROUTINE_FB5E: FB5E F5 PUSH af FB5F ; 0xfb5f 07 FB5F 07 RLCA FB60 ; 0xfb60 07 FB60 07 RLCA FB61 ; 0xfb61 07 FB61 07 RLCA FB62 ; 0xfb62 07 FB62 07 RLCA FB63 ; 0xfb63 cd 67 fb FB63 CD 67 FB CALL subroutine_fb67 FB66 ; 0xfb66 f1 FB66 F1 POP af FB67 SUBROUTINE_FB67: FB67 E6 0F AND 0xf FB69 FE 0A CP 10 ; ten FB6B 38 02 JR c,skip_fb6f FB6D C6 07 ADD a,7 ; hex A to ASCII A FB6F SKIP_FB6F: FB6F C6 30 ADD a,"0" FB71 18 42 JR subroutine_fbb5 FB73 SUBROUTINE_FB73: FB73 CD A0 FB CALL subroutine_fba0 FB76 SUBROUTINE_FB76: FB76 CD 82 FB CALL subroutine_fb82 FB79 ; 0xfb79 67 FB79 67 LD h,a FB7A ; 0xfb7a cd 82 fb FB7A CD 82 FB CALL subroutine_fb82 FB7D ; 0xfb7d 6f FB7D 6F LD l,a FB7E C9 RET FB7F SUBROUTINE_FB7F: FB7F CD A0 FB CALL subroutine_fba0 FB82 SUBROUTINE_FB82: FB82 CD 91 FB CALL subroutine_fb91 FB85 SUBROUTINE_FB85: FB85 C5 PUSH bc FB86 ; 0xfb86 07 FB86 07 RLCA FB87 ; 0xfb87 07 FB87 07 RLCA FB88 ; 0xfb88 07 FB88 07 RLCA FB89 ; 0xfb89 07 FB89 07 RLCA FB8A ; 0xfb8a 47 FB8A 47 LD b,a FB8B ; 0xfb8b cd 91 fb FB8B CD 91 FB CALL subroutine_fb91 FB8E ; 0xfb8e 80 FB8E 80 ADD a,b FB8F ; 0xfb8f c1 FB8F C1 POP bc FB90 ; 0xfb90 c9 FB90 C9 RET FB91 SUBROUTINE_FB91: FB91 CD B2 FB CALL subroutine_fbb2 FB94 SUBROUTINE_FB94: FB94 FE 41 CP 0x41 FB96 38 02 JR c,skip_fb9a FB98 C6 09 ADD a,9 FB9A SKIP_FB9A: FB9A E6 0F AND 0x0f FB9C C9 RET FB9D SUBROUTINE_FB9D: FB9D CD A0 FB CALL subroutine_fba0 FBA0 SUBROUTINE_FBA0: FBA0 F5 PUSH af FBA1 3E 20 LD a,space FBA3 18 08 JR skip_fbad FBA5 SUBROUTINE_FBA5: FBA5 F5 PUSH af FBA6 3E 0D LD a,CR FBA8 CD B5 FB CALL subroutine_fbb5 FBAB 3E 0A LD a,LF FBAD SKIP_FBAD: FBAD CD B5 FB CALL subroutine_fbb5 FBB0 ; 0xfbb0 f1 FBB0 F1 POP af FBB1 C9 RET FBB2 SUBROUTINE_FBB2: FBB2 CD E6 FB CALL do_KEY1 FBB5 SUBROUTINE_FBB5: FBB5 CD 60 FC CALL do_VDUA FBB8 ; 0xfbb8 f5 FBB8 F5 PUSH af ; save FBB9 ; FBB9 ; FBB9 ; 0xfbb9 db e0 FBB9 DB E0 IN a,(port_0xe0) FBBB E6 80 AND 0x80 ; test bit 7 FBBD 20 05 JR nz,pop_af_and_return FBBF ; FBBF ; FBBF ; 0xfbbf f1 FBBF F1 POP af ; restore FBC0 ; FBC0 ; FBC0 ; FBC0 ; FBC0 ; 0xfbc0 f5 FBC0 F5 PUSH af ; save FBC1 ; 0xfbc1 cd ce fe FBC1 CD CE FE CALL do_PRINT FBC4 ; FBC4 ; FBC4 ; FBC4 POP_AF_AND_RETURN: FBC4 F1 POP af ; restore FBC5 C9 RET FBC6 SUBROUTINE_FBC6: FBC6 E3 EX (sp),hl FBC7 D5 PUSH de FBC8 C5 PUSH bc FBC9 CD D0 FB CALL subroutine_fbd0 FBCC POP_BC_DE_HL_AND_RETURN: FBCC C1 POP bc FBCD D1 POP de FBCE E1 POP hl FBCF C9 RET FBD0 SUBROUTINE_FBD0: FBD0 E9 JP (hl) FBD1 ; 0xfbd1 e3 FBD1 E3 EX (sp),hl FBD2 ; 0xfbd2 d5 FBD2 D5 PUSH de FBD3 C5 PUSH bc FBD4 ; FBD4 F5 PUSH af FBD5 CD D0 FB CALL subroutine_fbd0 FBD8 F1 POP af FBD9 ; FBD9 ; 0xfbd9 18 f1 FBD9 18 F1 JR pop_bc_de_hl_and_return FBDB DO_KEY3: FBDB 3A 4E FF LD a,(KBF) FBDE FE 1D CP 0x1d ; ascii GS Group separator FBE0 C0 RET nz FBE1 ; 0xfbe1 cd 34 fc FBE1 CD 34 FC CALL do_KEY2 FBE4 18 31 JR Lfc17 FBE6 DO_KEY1: FBE6 E5 PUSH hl FBE7 ; 0xfbe7 2a 44 ff FBE7 2A 44 FF LD hl,(CURSOR) FBEA ; 0xfbea cd b6 fd FBEA CD B6 FD CALL do_VDUON FBED ; 0xfbed cd 20 fd FBED CD 20 FD CALL subroutine_fd20 FBF0 ; 0xfbf0 21 0a 68 FBF0 21 0A 68 LD hl,0x680a FBF3 22 00 80 LD (0x8000),hl FBF6 ; 0xfbf6 cd be fd FBF6 CD BE FD CALL do_VDUOFF FBF9 LOOP_FBF9: FBF9 CD 34 FC CALL do_KEY2 FBFC ; 0xfbfc 28 fb FBFC 28 FB JR z,loop_fbf9 FBFE ; 0xfbfe cd b6 fd FBFE CD B6 FD CALL do_VDUON FC01 ; 0xfc01 21 0a 08 FC01 21 0A 08 LD hl,0x080a FC04 22 00 80 LD (0x8000),hl FC07 ; 0xfc07 cd be fd FC07 CD BE FD CALL do_VDUOFF FC0A ; 0xfc0a e1 FC0A E1 POP hl FC0B ; 0xfc0b cd 11 fc FC0B CD 11 FC CALL subroutine_fc11 FC0E ; 0xfc0e 28 d6 FC0E 28 D6 JR z,do_KEY1 FC10 C9 RET FC11 SUBROUTINE_FC11: FC11 CD 25 FC CALL subroutine_fc25 FC14 ; 0xfc14 fe 1d FC14 FE 1D CP 0x1d FC16 C0 RET nz FC17 LFC17: FC17 3A 43 FF LD a,(SCNOW) FC1A ; 0xfc1a b7 FC1A B7 OR a FC1B ; 0xfc1b 3e 00 FC1B 3E 00 LD a,0x00 FC1D ; 0xfc1d 20 01 FC1D 20 01 JR nz,skip_fc20 FC1F ; 0xfc1f 3c FC1F 3C INC a FC20 SKIP_FC20: FC20 32 43 FF LD (SCNOW),a FC23 ; 0xfc23 af FC23 AF XOR a FC24 C9 RET FC25 SUBROUTINE_FC25: FC25 F5 PUSH af FC26 3A 43 FF LD a,(SCNOW) FC29 B7 OR a FC2A ; 0xfc2a 28 06 FC2A 28 06 JR z,skip_fc32 FC2C ; 0xfc2c 3a 42 ff FC2C 3A 42 FF LD a,(SCMAX) FC2F 32 43 FF LD (SCNOW),a FC32 SKIP_FC32: FC32 F1 POP af FC33 C9 RET FC34 DO_KEY2: FC34 3A 4E FF LD a,(KBF) ; if key is zero, return FC37 B7 OR a FC38 C8 RET z FC39 ; else clear keyboard buffer FC39 ; 0xfc39 e5 FC39 E5 PUSH hl FC3A D5 PUSH de FC3B C5 PUSH bc FC3C ; FC3C ; 0xfc3c 21 4f ff FC3C 21 4F FF LD hl,KBF+1 ; 0xff4f FC3F ; 0xfc3f e5 FC3F E5 PUSH hl FC40 ; 0xfc40 d1 FC40 D1 POP de FC41 1B DEC de FC42 ; 0xfc42 1a FC42 1A LD a,(de) FC43 01 0F 00 LD bc,15 ; size of buffer FC46 ED B0 LDIR ; do bc times FC48 ; 0xfc48 c1 FC48 ; FC48 ; FC48 C1 POP bc FC49 D1 POP de FC4A E1 POP hl FC4B C9 RET FC4C DO_KEY4: FC4C 3A 46 FF LD a,(KEYBUF) FC4F B7 OR a FC50 C8 RET z FC51 ; 0xfc51 3e ff FC51 3E FF LD a,0xff FC53 ; 0xfc53 c9 FC53 C9 RET FC54 DO_TIME: FC54 F5 PUSH af FC55 LOOP_FC55: FC55 3E 6F LD a,0x6f FC57 LOOP_FC57: FC57 E3 EX (sp),hl FC58 ; 0xfc58 e3 FC58 E3 EX (sp),hl FC59 ; 0xfc59 3d FC59 3D DEC a FC5A ; 0xfc5a 20 fb FC5A 20 FB JR nz,loop_fc57 FC5C ; 0xfc5c 10 f7 FC5C 10 F7 DJNZ loop_fc55 FC5E ; 0xfc5e f1 FC5E F1 POP af FC5F C9 RET FC60 ; FC60 ; FC60 DO_VDUA: FC60 CD B1 FD CALL subroutine_fbd1 FC63 ; 0xfc63 cd b6 fd FC63 CD B6 FD CALL do_VDUON FC66 ; 0xfc66 01 be fd FC66 01 BE FD LD bc,0xfdbe FC69 ; 0xfc69 c5 FC69 C5 PUSH bc FC6A ; 0xfc6a 21 f1 fc FC6A 21 F1 FC LD hl,variable_byte_fcf1 FC6D ; 0xfc6d 34 FC6D 34 INC (hl) FC6E ; 0xfc6e 35 FC6E 35 DEC (hl) FC6F ; 0xfc6f 20 08 FC6F 20 08 JR nz,skip_fc79 FC71 ; 0xfc71 fe 1b FC71 FE 1B CP esc FC73 C2 F4 FC JP nz,skip_fcf4 FC76 ; 0xfc76 cb fe FC76 CB FE SET 7,(hl) FC78 C9 RET FC79 ; FC79 ; FC79 SKIP_FC79: FC79 CB 7E BIT 7,(hl) FC7B ; 0xfc7b 28 4a FC7B 28 4A JR z,skip_fcc7 FC7D ; 0xfc7d 36 00 FC7D 36 00 LD (hl),0x00 FC7F ; 0xfc7f 32 f2 fc FC7F 32 F2 FC LD (variable_byte_fcf2),a FC82 ; 0xfc82 fe 48 FC82 FE 48 CP 0x48 FC84 20 09 JR nz,skip_fc8f FC86 ; 0xfc86 cd 25 fc FC86 CD 25 FC CALL subroutine_fc25 FC89 ; 0xfc89 af FC89 AF XOR a FC8A ; 0xfc8a 2a 40 ff FC8A 2A 40 FF LD hl,(WINDOW) FC8D ; 0xfc8d 18 60 FC8D 18 60 JR 0xfcef FC8F ; FC8F ; FC8F SKIP_FC8F: FC8F FE 4A CP 0x4a FC91 20 0C JR nz,skip_fc9f FC93 ; 0xfc93 2a 44 ff FC93 2A 44 FF LD hl,(CURSOR) FC96 ; 0xfc96 3e a0 FC96 3E A0 LD a,0xa0 FC98 LOOP_FC98: FC98 36 20 LD (hl),space FC9A ; 0xfc9a 23 FC9A 23 INC hl FC9B ; 0xfc9b bc FC9B BC CP h FC9C 20 FA JR nz,loop_fc98 FC9E C9 RET FC9F ; FC9F ; FC9F SKIP_FC9F: FC9F FE 4B CP 0x4b FCA1 20 11 JR nz,skip_fcb4 FCA3 ; 0xfca3 2a 44 ff FCA3 2A 44 FF LD hl,(CURSOR) FCA6 ; 0xfca6 3a 47 ff FCA6 3A 47 FF LD a,(LPOS) FCA9 SUBROUTINE_FCA9: FCA9 D6 60 SUB 0x60 FCAB 30 FC JR nc,subroutine_fca9 FCAD LOOP_FCAD: FCAD 36 20 LD (hl),space FCAF ; 0xfcaf 23 FCAF 23 INC hl FCB0 ; 0xfcb0 3c FCB0 3C INC a FCB1 ; 0xfcb1 20 fa FCB1 20 FA JR nz,loop_fcad FCB3 C9 RET FCB4 SKIP_FCB4: FCB4 FE 59 CP 0x59 FCB6 20 03 JR nz,skip_fcbb FCB8 ; 0xfcb8 36 02 FCB8 36 02 LD (hl),0x02 FCBA C9 RET FCBB SKIP_FCBB: FCBB FE 46 CP 0x46 FCBD 18 04 JR 0xfcc3 FCBF ; FCBF SKIP_FCBF: FCBF FE 47 CP 0x47 FCC1 20 04 JR nz,skip_fcc7 FCC3 ; 0xfcc3 32 f3 fc FCC3 32 F3 FC LD (variable_byte_fcf3),a FCC6 ; 0xfcc6 c9 FCC6 C9 RET FCC7 ; FCC7 ; FCC7 SKIP_FCC7: FCC7 D6 20 SUB space FCC9 ; 0xfcc9 4f FCC9 4F LD c,a FCCA ; 0xfcca 3a f2 fc FCCA 3A F2 FC LD a,(variable_byte_fcf2) FCCD ; 0xfccd fe 59 FCCD FE 59 CP 0x59 FCCF C0 RET nz FCD0 ; 0xfcd0 35 FCD0 35 DEC (hl) FCD1 ; 0xfcd1 28 12 FCD1 28 12 JR z,skip_fce5 FCD3 ; 0xfcd3 79 FCD3 79 LD a,c FCD4 ; 0xfcd4 fe 20 FCD4 FE 20 CP space FCD6 D0 RET nc FCD7 ; 0xfcd7 af FCD7 AF XOR a FCD8 ; 0xfcd8 2a 40 ff FCD8 2A 40 FF LD hl,(WINDOW) FCDB ; 0xfcdb 11 60 00 FCDB 11 60 00 LD de,0x0060 FCDE ; 0xfcde 0c FCDE 0C INC c FCDF ; 0xfcdf 0d FCDF 0D DEC c FCE0 28 0D JR z,skip_fcef FCE2 ; 0xfce2 19 FCE2 19 ADD hl,de FCE3 ; 0xfce3 18 fa FCE3 18 FA JR 0xfcdf FCE5 SKIP_FCE5: FCE5 79 LD a,c FCE6 ; 0xfce6 fe 60 FCE6 FE 60 CP 0x60 FCE8 D0 RET nc FCE9 ; FCE9 ; FCE9 ; 0xfce9 06 00 FCE9 06 00 LD b,0x00 FCEB ; 0xfceb 2a 44 ff FCEB 2A 44 FF LD hl,(CURSOR) FCEE ; 0xfcee 09 FCEE 09 ADD hl,bc FCEF SKIP_FCEF: FCEF 18 29 JR 0xfd1a FCF1 ; FCF1 ; FCF1 ; FCF1 ; FCF1 ; FCF1 VARIABLE_BYTE_FCF1: FCF1 00 DB 00 FCF2 VARIABLE_BYTE_FCF2: FCF2 00 DB 00 FCF3 VARIABLE_BYTE_FCF3: FCF3 47 DB 0x47 FCF4 SKIP_FCF4: FCF4 24 INC h FCF5 ; 0xfcf5 44 FCF5 44 LD b,h FCF6 ; 0xfcf6 ff FCF6 FF RST 0x38 FCF7 ; 0xfcf7 fe 7f FCF7 FE 7F CP DEL FCF9 20 09 JR nz,skip_fd04 FCFB ; 0xfcfb 36 20 FCFB 36 20 LD (hl),space FCFD LOOP_FCFD: FCFD 2B DEC hl FCFE ; 0xfcfe 3a 47 ff FCFE 3A 47 FF LD a,(LPOS) FD01 ; 0xfd01 3d FD01 3D DEC a FD02 ; 0xfd02 18 16 FD02 18 16 JR 0xfd1a FD04 ; FD04 ; FD04 SKIP_FD04: FD04 FE 20 CP space FD06 38 24 JR c,skip_fd2c FD08 ; 0xfd08 cd 8e fd FD08 CD 8E FD CALL subroutine_fd8e FD0B ; 0xfd0b 77 FD0B 77 LD (hl),a FD0C ; 0xfd0c 3a f3 fc FD0C 3A F3 FC LD a,(variable_byte_fcf3) FD0F FE 46 CP 0x46 FD11 20 02 JR nz,skip_fd15 FD13 CB FE SET 7,(hl) FD15 SKIP_FD15: FD15 23 INC hl FD16 ; 0xfd16 3a 47 ff FD16 3A 47 FF LD a,(LPOS) FD19 ; 0xfd19 3c FD19 3C INC a FD1A ; 0xfd1a 32 47 ff FD1A 32 47 FF LD (LPOS),a FD1D ; 0xfd1d 22 44 ff FD1D 22 44 FF LD (CURSOR),hl FD20 SUBROUTINE_FD20: FD20 7D LD a,l FD21 ; 0xfd21 2e 0e FD21 2E 0E LD l,0x0e FD23 ; 0xfd23 22 00 80 FD23 22 00 80 LD (0x8000),hl FD26 ; 0xfd26 2c FD26 2C INC l FD27 ; 0xfd27 67 FD27 67 LD h,a FD28 ; 0xfd28 22 00 80 FD28 22 00 80 LD (0x8000),hl FD2B ; 0xfd2b c9 FD2B C9 RET FD2C SKIP_FD2C: FD2C FE 08 CP BS FD2E 28 CD JR z,loop_fcfd FD30 ; 0xfd30 fe 0d FD30 FE 0D CP CR FD32 20 0E JR nz,skip_fd42 FD34 ; 0xfd34 3a 47 ff FD34 3A 47 FF LD a,(LPOS) FD37 ; 0xfd37 a7 FD37 A7 AND a FD38 ; 0xfd38 c8 FD38 C8 RET z FD39 ; 0xfd39 cd a9 fc FD39 CD A9 FC CALL subroutine_fca9 FD3C ; 0xfd3c 11 a0 ff FD3C 11 A0 FF LD de,0xffa0 FD3F ; 0xfd3f 19 FD3F 19 ADD hl,de FD40 ; 0xfd40 18 d8 FD40 18 D8 JR 0xfd1a FD42 SKIP_FD42: FD42 FE 07 CP BEL FD44 20 11 JR nz,skip_fd57 FD46 ; 0xfd46 0e 00 FD46 0E 00 LD c,0 FD48 ; 0xfd48 3a 49 ff FD48 3A 49 FF LD a,(CURDRV) FD4B LOOP_FD4B: FD4B EE 02 XOR 0x02 FD4D ; 0xfd4d d3 e0 FD4D D3 E0 OUT (port_0xe0),a FD4F ; 0xfd4f 06 c0 FD4F 06 C0 LD b,0xc0 FD51 LOOP_FD51: FD51 10 FE DJNZ loop_fd51 FD53 ; 0xfd53 0d FD53 0D DEC c FD54 20 F5 JR nz,loop_fd4b FD56 ; FD56 C9 RET FD57 SKIP_FD57: FD57 FE 0C CP FF FD59 28 03 JR z,skip_fd5e FD5B ; 0xfd5b fe 0a FD5B FE 0A CP LF FD5D C0 RET nz FD5E SKIP_FD5E: FD5E 3A 43 FF LD a,(SCNOW) FD61 ; 0xfd61 b7 FD61 B7 OR a FD62 28 06 JR z,skip_fd6a FD64 ; 0xfd64 3d FD64 3D DEC a FD65 28 0C JR z,skip_fd73 FD67 ; 0xfd67 32 43 ff FD67 32 43 FF LD (SCNOW),a FD6A SKIP_FD6A: FD6A 11 60 00 LD de,0x0060 FD6D ; 0xfd6d 19 FD6D 19 ADD hl,de FD6E ; 0xfd6e cd 8e fd FD6E CD 8E FD CALL subroutine_fd8e FD71 ; 0xfd71 18 aa FD71 18 AA JR 0xfd1d FD73 SKIP_FD73: FD73 11 0A 40 LD de,0x400a FD76 ; 0xfd76 ed 53 00 80 FD76 ED 53 00 80 LD (0x8000),de FD7A LOOP_FD7A: FD7A CD 4C FC CALL do_KEY4 FD7D ; 0xfd7d 28 fb FD7D 28 FB JR z,loop_fd7a FD7F ; 0xfd7f 11 0a 08 FD7F 11 0A 08 LD de,0x080a FD82 ; 0xfd82 ed 53 00 80 FD82 ED 53 00 80 LD (0x8000),de FD86 ; 0xfd86 cd 34 fc FD86 CD 34 FC CALL do_KEY2 FD89 ; 0xfd89 cd 11 fc FD89 CD 11 FC CALL subroutine_fc11 FD8C ; 0xfd8c 18 dc FD8C 18 DC JR 0xfd6a FD8E SUBROUTINE_FD8E: FD8E F5 PUSH af FD8F ; 0xfd8f 7c FD8F 7C LD a,h FD90 ; 0xfd90 fe a0 FD90 FE A0 CP 0xa0 FD92 38 20 JR c,skip_fdb4 FD94 ; 0xfd94 2a 40 ff FD94 2A 40 FF LD hl,(WINDOW) FD97 ; 0xfd97 c5 FD97 C5 PUSH bc FD98 ; 0xfd98 e5 FD98 E5 PUSH hl FD99 ; 0xfd99 11 60 00 FD99 11 60 00 LD de,0x0060 FD9C ; 0xfd9c 19 FD9C 19 ADD hl,de FD9D ; 0xfd9d e5 FD9D E5 PUSH hl FD9E ; 0xfd9e d1 FD9E D1 POP de FD9F ; 0xfd9f 21 00 a0 FD9F 21 00 A0 LD hl,0xa000 FDA2 ; 0xfda2 a7 FDA2 A7 AND a FDA3 ; 0xfda3 ed 52 FDA3 ED 52 SBC hl,de FDA5 ; 0xfda5 e5 FDA5 E5 PUSH hl FDA6 ; 0xfda6 c1 FDA6 C1 POP bc FDA7 ; 0xfda7 e1 FDA7 E1 POP hl FDA8 ; 0xfda8 eb FDA8 EB EX de,hl FDA9 ; 0xfda9 ed b0 FDA9 ED B0 LDIR FDAB ; 0xfdab eb FDAB EB EX de,hl FDAC ; 0xfdac c1 FDAC C1 POP bc FDAD ; 0xfdad e5 FDAD E5 PUSH hl FDAE LOOP_FDAE: FDAE 36 20 LD (hl),space FDB0 ; 0xfdb0 2c FDB0 2C INC l FDB1 SUBROUTINE_FBD1: FDB1 20 FB JR nz,loop_fdae FDB3 ; 0xfdb3 e1 FDB3 E1 POP hl FDB4 SKIP_FDB4: FDB4 F1 POP af FDB5 C9 RET FDB6 DO_VDUON: FDB6 F5 PUSH af FDB7 3A 49 FF LD a,(CURDRV) FDBA F6 04 OR 0x04 FDBC 18 06 JR 0xfdc4 FDBE DO_VDUOFF: FDBE F5 PUSH af FDBF 3A 49 FF LD a,(CURDRV) FDC2 E6 FB AND 0xfb FDC4 ; 0xfdc4 d3 e0 FDC4 D3 E0 OUT (port_0xe0),a FDC6 ; 0xfdc6 32 49 ff FDC6 32 49 FF LD (CURDRV),a FDC9 ; 0xfdc9 f1 FDC9 F1 POP af FDCA ; 0xfdca c9 FDCA C9 RET FDCB DO_PSCROL: FDCB E5 PUSH hl FDCC D5 PUSH de FDCD ; 0xfdcd 32 42 ff FDCD 32 42 FF LD (SCMAX),a FDD0 ; 0xfdd0 21 00 a0 FDD0 21 00 A0 LD hl,0xa000 FDD3 11 A0 FF LD de,0xffa0 FDD6 19 ADD hl,de FDD7 ; 0xfdd7 3d FDD7 3D DEC a FDD8 20 FC JR nz,0xfdd6 ; duff jump ??? FDDA ; 0xfdda 22 40 ff FDDA 22 40 FF LD (WINDOW),hl FDDD ; 0xfddd d1 FDDD D1 POP de FDDE E1 POP hl FDDF C9 RET FDE0 DO_PARIN: FDE0 DB E8 IN a,(port_0xe8) FDE2 C9 RET FDE3 DO_PAROUT: FDE3 D3 E8 OUT (port_0xe8),a FDE5 C9 RET FDE6 DO_RESDSK: FDE6 CD C6 FB CALL subroutine_fbc6 FDE9 CD 28 FE CALL subroutine_fe28 FDEC 32 49 FF LD (CURDRV),a FDEF D3 E0 OUT (port_0xe0),a FDF1 3A 48 FF LD a,(STEP) FDF4 ; 0xfdf4 e6 0f FDF4 E6 0F AND 0x0f FDF6 ; 0xfdf6 cd 7d fe FDF6 CD 7D FE CALL subroutine_fe7d FDF9 ; 0xfdf9 e6 10 FDF9 E6 10 AND 0x10 FDFB ; 0xfdfb c9 FDFB C9 RET FDFC DO_RDDSK: FDFC CD C6 FB CALL subroutine_fbc6 FDFF ; 0xfdff 11 84 fe FDFF 11 84 FE LD de,0xfe84 FE02 SUBROUTINE_FE02: FE02 CD 36 FE CALL subroutine_fe36 FE05 ; 0xfe05 3e 80 FE05 3E 80 LD a,0x80 FE07 ; 0xfe07 cd 7b fe FE07 CD 7B FE CALL subroutine_fe7b FE0A ; 0xfe0a e6 1c FE0A E6 1C AND 0x1c FE0C C9 RET FE0D DO_WRDSK: FE0D CD C6 FB CALL subroutine_fbc6 FE10 ; 0xfe10 11 8a fe FE10 11 8A FE LD de,0xfe8a FE13 CD 36 FE CALL subroutine_fe36 FE16 ; 0xfe16 3e a0 FE16 3E A0 LD a,0xa0 FE18 CD 7B FE CALL subroutine_fe7b FE1B ; 0xfe1b e6 7c FE1B E6 7C AND 0x7c FE1D C0 RET nz FE1E ; 0xfe1e 11 90 fe FE1E 11 90 FE LD de,0xfe90 FE21 CD 02 FE CALL subroutine_fe02 FE24 ; 0xfe24 cb f6 FE24 CB F6 SET 6,(hl) FE26 ; 0xfe26 02 FE26 02 LD (bc),a FE27 C9 RET FE28 SUBROUTINE_FE28: FE28 DD 7E 00 LD a,(ix+0) FE2B ; 0xfe2b e6 03 FE2B E6 03 AND 0x03 FE2D ; 0xfe2d 4f FE2D 4F LD c,a FE2E ; 0xfe2e 06 00 FE2E 06 00 LD b,0x00 FE30 ; 0xfe30 21 4a ff FE30 21 4A FF LD hl,DRVTAB FE33 ; 0xfe33 09 FE33 09 ADD hl,bc FE34 ; 0xfe34 7e FE34 7E LD a,(hl) FE35 ; 0xfe35 c9 FE35 C9 RET FE36 SUBROUTINE_FE36: FE36 CD 28 FE CALL subroutine_fe28 FE39 ; 0xfe39 47 FE39 47 LD b,a FE3A ; 0xfe3a 21 49 ff FE3A 21 49 FF LD hl,CURDRV FE3D ; 0xfe3d ae FE3D AE XOR (hl) FE3E ; 0xfe3e e6 f0 FE3E E6 F0 AND 0xf0 FE40 ; 0xfe40 f5 FE40 F5 PUSH af FE41 ; 0xfe41 7e FE41 7E LD a,(hl) FE42 ; 0xfe42 e6 0e FE42 E6 0E AND 0x0e FE44 ; 0xfe44 b0 FE44 B0 OR b FE45 ; 0xfe45 77 FE45 77 LD (hl),a FE46 ; 0xfe46 d3 e0 FE46 D3 E0 OUT (port_0xe0),a FE48 ; 0xfe48 f1 FE48 F1 POP af FE49 ; FE49 IF making_original_buggy_version ; ; 0xfe49 c4 6b fe CALL nz,call_fe6b ; 0xfe4c dd 46 01 LD b,(ix+1) ; 0xfe4f db e5 IN a,(port_0xe5) ; FE49 ELSE FE49 ; 0xfe49 db e5 FE49 DB E5 IN a,(port_0xe5) FE4B ; 0xfe4b c4 6b fe FE4B C4 6B FE CALL nz,call_fe6b FE4E ; 0xfe4e dd 46 01 FE4E DD 46 01 LD b,(ix+1) FE51 ; FE51 ENDIF FE51 ; FE51 ; 0xfe51 b8 FE51 B8 CP b FE52 ; 0xfe52 78 FE52 78 LD a,b FE53 ; 0xfe53 d3 e7 FE53 D3 E7 OUT (port_0xe7),a FE55 ; 0xfe55 3a 48 ff FE55 3A 48 FF LD a,(STEP) FE58 ; 0xfe58 c4 7d fe FE58 C4 7D FE CALL nz,subroutine_fe7d FE5B ; 0xfe5b dd 7e 02 FE5B DD 7E 02 LD a,(ix+2) FE5E ; 0xfe5e d3 e6 FE5E D3 E6 OUT (port_0xe6),a FE60 ; 0xfe60 dd 6e 03 FE60 DD 6E 03 LD l,(ix+3) FE63 ; 0xfe63 dd 66 04 FE63 DD 66 04 LD h,(ix+4) FE66 ; 0xfe66 ed 53 1e ff FE66 ED 53 1E FF LD (0xff1e),de FE6A ; 0xfe6a c9 FE6A C9 RET FE6B CALL_FE6B: FE6B 21 90 FE LD hl,0xfe90 FE6E ; 0xfe6e 22 1e ff FE6E 22 1E FF LD (0xff1e),hl FE71 ; 0xfe71 3e c0 FE71 3E C0 LD a,0xc0 FE73 ; 0xfe73 cd 7d fe FE73 CD 7D FE CALL subroutine_fe7d FE76 ; 0xfe76 db e6 FE76 DB E6 IN a,(port_0xe6) FE78 ; 0xfe78 d3 e5 FE78 D3 E5 OUT (port_0xe5),a FE7A ; 0xfe7a c9 FE7A C9 RET FE7B SUBROUTINE_FE7B: FE7B 0E E7 LD c,0xe7 FE7D SUBROUTINE_FE7D: FE7D D3 E4 OUT (port_0xe4),a FE7F ; 0xfe7f 37 FE7F 37 SCF FE80 ; 0xfe80 da 80 fe FE80 DA 80 FE JP c,0xfe80 ; loop forever? FE83 ; 0xfe83 c9 FE83 C9 RET FE84 ; 0xfe84 ed a2 FE84 ED A2 INI FE86 ; 0xfe86 37 FE86 37 SCF FE87 ; 0xfe87 fb FE87 FB EI FE88 ; 0xfe88 ed 4d FE88 ED 4D RETI FE8A ; 0xfe8a ed a3 FE8A ED A3 OUTI FE8C ; 0xfe8c 37 FE8C 37 SCF FE8D ; 0xfe8d fb FE8D FB EI FE8E ; 0xfe8e ed 4d FE8E ED 4D RETI FE90 ; 0xfe90 db e7 FE90 DB E7 IN a,(port_0xe7) FE92 ; 0xfe92 37 FE92 37 SCF FE93 ; 0xfe93 fb FE93 FB EI FE94 ; 0xfe94 ed 4d FE94 ED 4D RETI FE96 ; FE96 INTRQ: FE96 ; 0xfe96 db e4 FE96 DB E4 IN a,(port_0xe4) FE98 B7 OR a FE99 FB EI FE9A ED 4D RETI FE9C DO_STEPR: FE9C 32 48 FF LD (STEP),a FE9F C9 RET FEA0 LFEA0: FEA0 ; 0xfea0 f5 FEA0 F5 PUSH af FEA1 ; 0xfea1 db e0 FEA1 DB E0 IN a,(port_0xe0) FEA3 ; 0xfea3 e6 7f FEA3 E6 7F AND DEL FEA5 20 0B JR nz,skip_feb2 FEA7 ; 0xfea7 3e d0 FEA7 3E D0 LD a,0xd0 FEA9 ; 0xfea9 d3 e4 FEA9 D3 E4 OUT (port_0xe4),a FEAB ; FEAB ; 0xfeab f1 FEAB F1 POP af FEAC ; 0xfeac 21 3d f8 FEAC 21 00 F8 LD hl,HRESET FEAF ; 0xfeaf e3 FEAF E3 EX (sp),hl FEB0 ; 0xfeb0 18 19 FEB0 18 19 JR skip_fecb FEB2 SKIP_FEB2: FEB2 E5 PUSH hl FEB3 C5 PUSH bc FEB4 ; 0xfeb4 21 4d ff FEB4 21 4D FF LD hl,0xff4d FEB7 ; 0xfeb7 4f FEB7 4F LD c,a FEB8 ; 0xfeb8 06 0f FEB8 06 0F LD b,0x0f FEBA ; 0xfeba af FEBA AF XOR a FEBB ; FEBB LOOP_FEBB: FEBB 23 INC hl FEBC ; 0xfebc be FEBC BE CP (hl) FEBD ; 0xfebd 28 08 FEBD 28 08 JR z,0xfec7 ; duff jump? FEBF ; 0xfebf 10 fa FEBF 10 FA DJNZ loop_febb FEC1 ; 0xfec1 3e 07 FEC1 3E 07 LD a,BEL FEC3 ; 0xfec3 cd 60 fc FEC3 CD 60 FC CALL do_VDUA FEC6 ; 0xfec6 fe 71 FEC6 FE 71 CP 0x71 FEC8 ; 0xfec8 c1 FEC8 C1 POP bc FEC9 E1 POP hl FECA F1 POP af FECB SKIP_FECB: FECB FB EI FECC ED 4D RETI FECE ; 0xfece FECE DO_PRINT: FECE F5 PUSH af ; save register and flags FECF PRINT1: FECF ; in a,(port_0xf1) FECF DB F1 IN a,(GPIP) ; wait for handshake ready FED1 CB 57 BIT 2,a FED3 20 FA JR nz,PRINT1 FED5 PRINT2: FED5 ; in a,(port_0xfe) FED5 DB FE IN a,(TSR) ; wait for UART ready FED7 CB 7F BIT 7,a FED9 28 FA JR z,PRINT2 FEDB ; 0xfedb f1 FEDB F1 POP af FEDC ; out (port_0xff),a FEDC D3 FF OUT (UDR),a ; output byte FEDE C9 RET FEDF ; 0xfedf 00 FEDF 00 NOP FEE0 ; 0xfee0 00 FEE0 00 NOP FEE1 ; 0xfee1 00 FEE1 00 NOP FEE2 ; 0xfee2 00 FEE2 00 NOP FEE3 ; 0xfee3 00 FEE3 00 NOP FEE4 ; 0xfee4 00 FEE4 00 NOP FEE5 ; 0xfee5 00 FEE5 00 NOP FEE6 ; 0xfee6 00 FEE6 00 NOP FEE7 ; FEE7 ; FEE7 INIT1: FEE7 ; 0xfee7 00 94 FEE7 C0 9F DW VDU1 ; default FEE9 ; 0xfee9 20 20 FEE9 20 20 DB FRAME,FRAME ; default FEEB ; 0xfeeb 00 94 FEEB C0 9F DW VDU1 ; default cursor position FEED ; 0xfeed 00 FEED 00 DB 000H ; dummy FEEE ; 0xfeee 00 FEEE 00 DB 000H ; default line position FEEF ; 0xfeef 1b FEEF 1B DB 01BH ; default step rate (slowest) FEF0 ; FEF0 ; FEF0 ; FEF0 CRTC: FEF0 ; 0xfef0 FEF0 7F DB 07FH FEF1 ; 0xfef1 FEF1 60 DB LINE FEF2 ; 0xfef2 FEF2 68 DB 68H FEF3 ; 0xfef3 FEF3 38 DB 38H FEF4 21 DB 21H FEF5 ; 0xfef5 FEF5 07 DB 07H FEF6 ; 0xfef6 FEF6 20 DB FRAME FEF7 20 DB FRAME FEF8 ; 0xfef8 FEF8 50 DB 50H FEF9 ; 0xfef9 FEF9 08 DB 08H FEFA ; 0xfefa FEFA 08 DB 08H FEFB ; 0xfefb FEFB 08 DB 08H FEFC ; 0xfefc FEFC 14 DB 14H FEFD ; 0xfefd FEFD 00 DB 00H FEFE ; 0xfefe FEFE 00 DB 00H FEFF ; 0xfeff FEFF 00 DB 00H FF00 SIIVEC: FF00 ; 0xff00 FF00 A0 FE DW Lfea0 FF02 ; 0xff02 FF02 00 00 DW 0000H FF04 ; 0xff04 FF04 00 00 DW 0000H FF06 ; 0xff06 FF06 00 00 DW 0000H FF08 ; 0xff08 FF08 00 00 DW 0000H FF0A ; 0xff0a FF0A 00 00 DW 0000H FF0C ; 0xff0c FF0C 00 00 DW 0000H FF0E ; 0xff0e FF0E 00 00 DW 0000H FF10 ; 0xff10 FF10 00 00 DW 0000H FF12 ; 0xff12 FF12 00 00 DW 0000H FF14 ; 0xff14 FF14 00 00 DW 0000H FF16 ; 0xff16 FF16 00 00 DW 0000H FF18 ; 0xff18 FF18 00 00 DW 0000H FF1A ; 0xff1a FF1A 00 00 DW 0000H FF1C ; 0xff1c 96 FE FF1C 96 FE DW INTRQ ; FE96 FF1E ; 0xff1e FF1E 00 00 DW 0000H FF20 ; FF20 ; 0xff20 FF20 DS 020H ; reserved for expansion FF40 ; 0xff40 FF40 00 00 WINDOW: DW 0000H ; VDU start address FF42 ; 0xff42 FF42 00 SCMAX: DB 00H ; scroll limit FF43 ; 0xff43 FF43 00 SCNOW: DB 00H ; lines scrolled / scroll flag FF44 ; 0xff44 FF44 00 00 CURSOR: DW 0000H ; cursor position FF46 ; 0xff46 FF46 00 KEYBUF: DB 00H ; FF47 ; 0xff47 FF47 00 LPOS: DB 00 ; line position (00-5FH) FF48 ; 0xff48 FF48 00 STEP: DB 00 ; disc stepper rate FF49 ; 0xff49 FF49 00 CURDRV: DB 00 ; image of control port FF4A ; 0xff4a FF4A DRVTAB: FF4A 0A DB 10 FF4B 14 DB 20 FF4C 0B DB 11 FF4D 15 DB 21 FF4E ; FF4E ; FF4E ; 0xff4e FF4E KBF: DS 010H ; keyboard buffer FF5E LFF5E: FF5E 55 F8 DW do_SRESET FF60 ; 0xff60 FF60 00 00 DW 0000H FF62 ; 0xff62 FF62 00 00 DW 0000H FF64 ; 0xff64 FF64 00 00 DW 0000H FF66 ; 0xff66 FF66 00 00 DW 0000H FF68 ; 0xff68 FF68 00 00 DW 0000H FF6A ; 0xff6a FF6A 00 00 DW 0000H FF6C ; 0xff6c FF6C 15 FA DW Lfa15 FF6E ; 0xff6e 00 00 FF6E SDEN: FF6E 00 DB 00H FF6F 00 DB 00H FF70 ; FF70 ; 0xff70 FF70 01 DB 01H FF71 80 00 DW 0080H FF73 00 DB 00H FF74 LFF73: FF74 00 DB 00H FF75 ; 0xff74 FF75 00 DB 00H FF76 ; 0xff75 FF76 01 DB 01 FF77 00 DB 00 FF78 00 F6 DW 0f600H FF7A ; FF7A ; FF7A ; FF7A VARIABLE_WORD_FF78: FF7A 00 00 DW 0000H FF7C ; FF7C ; register name strings FF7C ; FF7C ; 0xff7a 49 58 20 49 FF7C 49 58 20 49 59 20 DB "IX IY " FF82 48 4C 20 44 45 20 DB "HL DE " FF88 42 43 20 41 46 20 DB "BC AF " FF8E 48 4C 27 44 45 27 DB "HL'DE'" FF94 42 43 27 41 46 27 DB "BC'AF'" FF9A 53 50 20 41 54 20 DB "SP AT " FFA0 20 20 53 DB " S" FFA3 20 20 53 DB " S" FFA6 20 20 53 DB " S" FFA9 20 20 DB " " FFAB ; 0xffaa ff blank EPROM values. FFAB FF DB 0xff FFAC FF DB 0xff FFAD FF DB 0xff FFAE ; 0xffad ff FFAE FF DB 0xff NULL: 0000 DEFINED AT LINE 22 SPACE: 0020 DEFINED AT LINE 23 > USED AT LINE 999 > USED AT LINE 1261 > USED AT LINE 1524 > USED AT LINE 1526 > USED AT LINE 1528 > USED AT LINE 1528 > USED AT LINE 1802 > USED AT LINE 1961 > USED AT LINE 2253 > USED AT LINE 2273 > USED AT LINE 2306 > USED AT LINE 2321 > USED AT LINE 2377 > USED AT LINE 2390 > USED AT LINE 2565 ESC: 001B DEFINED AT LINE 24 > USED AT LINE 1340 > USED AT LINE 2217 BEL: 0007 DEFINED AT LINE 26 > USED AT LINE 2454 > USED AT LINE 2884 BS: 0008 DEFINED AT LINE 27 > USED AT LINE 2432 FF: 000C DEFINED AT LINE 28 > USED AT LINE 2479 LF: 000A DEFINED AT LINE 29 > USED AT LINE 1970 > USED AT LINE 2482 CR: 000D DEFINED AT LINE 30 > USED AT LINE 1234 > USED AT LINE 1524 > USED AT LINE 1967 > USED AT LINE 2435 DEL: 007F DEFINED AT LINE 31 > USED AT LINE 1806 > USED AT LINE 2374 > USED AT LINE 2845 MAKING_ORIGINAL_BUGGY_VERSION: 0000 DEFINED AT LINE 34 LINE: 0060 DEFINED AT LINE 69 > USED AT LINE 71 > USED AT LINE 2962 FRAME: 0020 DEFINED AT LINE 70 > USED AT LINE 71 > USED AT LINE 2946 > USED AT LINE 2946 > USED AT LINE 2971 > USED AT LINE 2972 VDU1: 9FC0 DEFINED AT LINE 71 > USED AT LINE 2943 > USED AT LINE 2948 CONTRL: 00E0 DEFINED AT LINE 77 > USED AT LINE 79 > USED AT LINE 81 > USED AT LINE 82 > USED AT LINE 83 > USED AT LINE 84 > USED AT LINE 86 > USED AT LINE 90 > USED AT LINE 91 > USED AT LINE 92 > USED AT LINE 93 > USED AT LINE 94 > USED AT LINE 95 > USED AT LINE 96 > USED AT LINE 97 > USED AT LINE 98 > USED AT LINE 99 > USED AT LINE 100 > USED AT LINE 101 > USED AT LINE 102 > USED AT LINE 103 > USED AT LINE 104 > USED AT LINE 105 PORT_0XE0: 00E0 DEFINED AT LINE 79 > USED AT LINE 1990 > USED AT LINE 2464 > USED AT LINE 2592 > USED AT LINE 2636 > USED AT LINE 2725 > USED AT LINE 2843 PORT_0XE4: 00E4 DEFINED AT LINE 81 > USED AT LINE 917 > USED AT LINE 2791 > USED AT LINE 2828 > USED AT LINE 2850 PORT_0XE5: 00E5 DEFINED AT LINE 82 > USED AT LINE 2740 > USED AT LINE 2783 PORT_0XE6: 00E6 DEFINED AT LINE 83 > USED AT LINE 2761 > USED AT LINE 2781 PORT_0XE7: 00E7 DEFINED AT LINE 84 > USED AT LINE 2753 > USED AT LINE 2818 PORT_0XE8: 00E8 DEFINED AT LINE 86 > USED AT LINE 2623 > USED AT LINE 2628 IDR: 00F0 DEFINED AT LINE 90 > USED AT LINE 1585 > USED AT LINE 1588 > USED AT LINE 1590 > USED AT LINE 1592 > USED AT LINE 1597 > USED AT LINE 1601 > USED AT LINE 1604 GPIP: 00F1 DEFINED AT LINE 91 > USED AT LINE 1586 > USED AT LINE 2905 IPRB: 00F2 DEFINED AT LINE 92 IPRA: 00F3 DEFINED AT LINE 93 ISRB: 00F4 DEFINED AT LINE 94 ISRA: 00F5 DEFINED AT LINE 95 IMRB: 00F6 DEFINED AT LINE 96 > USED AT LINE 1599 IMRA: 00F7 DEFINED AT LINE 97 > USED AT LINE 1598 PVR: 00F8 DEFINED AT LINE 98 > USED AT LINE 1584 > USED AT LINE 1587 > USED AT LINE 1589 > USED AT LINE 1591 > USED AT LINE 1596 > USED AT LINE 1600 > USED AT LINE 1602 TABCR: 00F9 DEFINED AT LINE 99 TBDR: 00FA DEFINED AT LINE 100 TADR: 00FB DEFINED AT LINE 101 UCR: 00FC DEFINED AT LINE 102 > USED AT LINE 1593 RSR: 00FD DEFINED AT LINE 103 > USED AT LINE 1594 TSR: 00FE DEFINED AT LINE 104 > USED AT LINE 1595 > USED AT LINE 2912 UDR: 00FF DEFINED AT LINE 105 > USED AT LINE 2919 SCR: 0000 DEFINED AT LINE 109 TDDR: 0001 DEFINED AT LINE 110 > USED AT LINE 1589 TCDR: 0002 DEFINED AT LINE 111 > USED AT LINE 1587 AER: 0003 DEFINED AT LINE 112 > USED AT LINE 1596 IERB: 0004 DEFINED AT LINE 113 > USED AT LINE 1602 IERA: 0005 DEFINED AT LINE 114 > USED AT LINE 1600 DDR: 0006 DEFINED AT LINE 115 > USED AT LINE 1584 TCDCR: 0007 DEFINED AT LINE 116 > USED AT LINE 1591 FIRMWARE_SIZE: 07EE DEFINED AT LINE 124 > USED AT LINE 130 FIRMWARE_TO_COPY: 0012 DEFINED AT LINE 144 > USED AT LINE 128 FIRMWARE_DESTINATION: F800 DEFINED AT LINE 813 > USED AT LINE 129 HRESET: F800 DEFINED AT LINE 819 > USED AT LINE 1192 > USED AT LINE 2855 SRESET: F803 DEFINED AT LINE 820 VDUA: F806 DEFINED AT LINE 821 KEY1: F809 DEFINED AT LINE 822 PARIN: F80C DEFINED AT LINE 823 PAROUT: F80F DEFINED AT LINE 824 PRINT: F812 DEFINED AT LINE 825 VDUON: F815 DEFINED AT LINE 826 VDUOFF: F818 DEFINED AT LINE 827 KEY2: F81B DEFINED AT LINE 828 KEY3: F81E DEFINED AT LINE 829 KEY4: F821 DEFINED AT LINE 830 RESDSK: F824 DEFINED AT LINE 831 RDDSK: F827 DEFINED AT LINE 832 WRDSK: F82A DEFINED AT LINE 833 STEPR: F82D DEFINED AT LINE 834 PSCROL: F830 DEFINED AT LINE 835 TIME: F833 DEFINED AT LINE 836 SETUP: F836 DEFINED AT LINE 837 HIGH_ENTRY_POINT: F839 DEFINED AT LINE 914 > USED AT LINE 140 DO_HRESET: F83D DEFINED AT LINE 920 > USED AT LINE 819 LOOP_F845: F845 DEFINED AT LINE 927 > USED AT LINE 943 DO_SRESET: F855 DEFINED AT LINE 946 > USED AT LINE 820 > USED AT LINE 1056 > USED AT LINE 1117 > USED AT LINE 1160 > USED AT LINE 1174 > USED AT LINE 1284 > USED AT LINE 1360 > USED AT LINE 1392 > USED AT LINE 1442 > USED AT LINE 1514 > USED AT LINE 3066 LOOP_F85C: F85C DEFINED AT LINE 951 > USED AT LINE 1084 SKIP_F870: F870 DEFINED AT LINE 972 > USED AT LINE 955 SKIP_F877: F877 DEFINED AT LINE 979 > USED AT LINE 968 LOOP_F87B: F87B DEFINED AT LINE 983 > USED AT LINE 985 SKIP_F883: F883 DEFINED AT LINE 991 > USED AT LINE 959 LOOP_F884: F884 DEFINED AT LINE 994 > USED AT LINE 1000 SKIP_F8AC: F8AC DEFINED AT LINE 1049 > USED AT LINE 1047 SKIP_F8B2: F8B2 DEFINED AT LINE 1059 > USED AT LINE 1011 LOOP_F8B6: F8B6 DEFINED AT LINE 1063 > USED AT LINE 1082 LOOP_F8C3: F8C3 DEFINED AT LINE 1071 > USED AT LINE 1074 SKIP_F8D2: F8D2 DEFINED AT LINE 1087 > USED AT LINE 1061 LOOP_F8EE: F8EE DEFINED AT LINE 1114 > USED AT LINE 1130 SKIP_F8FD: F8FD DEFINED AT LINE 1132 > USED AT LINE 1089 SKIP_F919: F919 DEFINED AT LINE 1163 > USED AT LINE 1134 LOOP_F920: F920 DEFINED AT LINE 1169 > USED AT LINE 1173 SKIP_F928: F928 DEFINED AT LINE 1177 > USED AT LINE 1165 LOOP_F92F: F92F DEFINED AT LINE 1183 > USED AT LINE 1190 SKIP_F93A: F93A DEFINED AT LINE 1195 > USED AT LINE 1179 LOOP_F94D: F94D DEFINED AT LINE 1216 > USED AT LINE 1237 > USED AT LINE 1278 LOOP_F950: F950 DEFINED AT LINE 1218 > USED AT LINE 1257 > USED AT LINE 1274 SKIP_F966: F966 DEFINED AT LINE 1240 > USED AT LINE 1231 LOOP_F970: F970 DEFINED AT LINE 1250 > USED AT LINE 1255 SKIP_F979: F979 DEFINED AT LINE 1260 > USED AT LINE 1222 SKIP_F98F: F98F DEFINED AT LINE 1279 > USED AT LINE 1262 SKIP_F996: F996 DEFINED AT LINE 1287 > USED AT LINE 1209 SKIP_F99E: F99E DEFINED AT LINE 1296 > USED AT LINE 1289 LOOP_F9AE: F9AE DEFINED AT LINE 1311 > USED AT LINE 1321 SKIP_F9B7: F9B7 DEFINED AT LINE 1322 > USED AT LINE 1298 LOOP_F9C2: F9C2 DEFINED AT LINE 1334 > USED AT LINE 1337 > USED AT LINE 1352 SKIP_F9D4: F9D4 DEFINED AT LINE 1355 > USED AT LINE 1341 LOOP_F9E8: F9E8 DEFINED AT LINE 1376 > USED AT LINE 1423 LOOP_F9ED: F9ED DEFINED AT LINE 1389 > USED AT LINE 1394 LOOP_F9F5: F9F5 DEFINED AT LINE 1400 > USED AT LINE 1433 LOOP_FA01: FA01 DEFINED AT LINE 1418 > USED AT LINE 1432 SKIP_FA05: FA05 DEFINED AT LINE 1426 > USED AT LINE 1407 SKIP_FA0D: FA0D DEFINED AT LINE 1437 > USED AT LINE 1324 LFA15: FA15 DEFINED AT LINE 1446 > USED AT LINE 3082 LOOP_FA32: FA32 DEFINED AT LINE 1488 > USED AT LINE 1512 LOOP_FA37: FA37 DEFINED AT LINE 1495 > USED AT LINE 1503 SUBROUTINE_FA4B: FA4B DEFINED AT LINE 1519 > USED AT LINE 947 > USED AT LINE 1069 SUBROUTINE_FA5E: FA5E DEFINED AT LINE 1532 > USED AT LINE 982 SUBROUTINE_FA66: FA66 DEFINED AT LINE 1546 > USED AT LINE 1520 SCITAB_PAIRS: 0014 DEFINED AT LINE 1553 > USED AT LINE 1556 SCITAB: FA71 DEFINED AT LINE 1570 > USED AT LINE 1553 DO_SETUP: FA99 DEFINED AT LINE 1632 > USED AT LINE 837 > USED AT LINE 1553 LOOP_FAAC: FAAC DEFINED AT LINE 1644 > USED AT LINE 1655 SUBROUTINE_FAB9: FAB9 DEFINED AT LINE 1662 > USED AT LINE 1558 LOOP_FABC: FABC DEFINED AT LINE 1670 > USED AT LINE 1678 SUBROUTINE_FAC7: FAC7 DEFINED AT LINE 1688 > USED AT LINE 1124 > USED AT LINE 1315 > USED AT LINE 1415 LOOP_FACA: FACA DEFINED AT LINE 1690 > USED AT LINE 1703 SUBROUTINE_FADA: FADA DEFINED AT LINE 1706 > USED AT LINE 1198 > USED AT LINE 1521 > USED AT LINE 1533 > USED AT LINE 1721 > USED AT LINE 1746 SUBROUTINE_FAE5: FAE5 DEFINED AT LINE 1725 > USED AT LINE 953 > USED AT LINE 997 > USED AT LINE 1219 SKIP_FAEE: FAEE DEFINED AT LINE 1734 > USED AT LINE 1440 SUBROUTINE_FAF4: FAF4 DEFINED AT LINE 1742 > USED AT LINE 1068 SUBROUTINE_FAF7: FAF7 DEFINED AT LINE 1745 > USED AT LINE 1282 LOOP_FAFF: FAFF DEFINED AT LINE 1756 > USED AT LINE 1769 LOOP_FB05: FB05 DEFINED AT LINE 1760 > USED AT LINE 1764 SUBROUTINE_FB12: FB12 DEFINED AT LINE 1773 > USED AT LINE 1272 > USED AT LINE 1763 LOOP_FB25: FB25 DEFINED AT LINE 1796 > USED AT LINE 1815 SKIP_FB2F: FB2F DEFINED AT LINE 1809 > USED AT LINE 1803 SKIP_FB31: FB31 DEFINED AT LINE 1812 > USED AT LINE 1807 SUBROUTINE_FB38: FB38 DEFINED AT LINE 1822 > USED AT LINE 1217 > USED AT LINE 1758 SUBROUTINE_FB46: FB46 DEFINED AT LINE 1837 > USED AT LINE 1241 > USED AT LINE 1827 SUBROUTINE_FB53: FB53 DEFINED AT LINE 1854 > USED AT LINE 1510 > USED AT LINE 1689 > USED AT LINE 1823 SUBROUTINE_FB5D: FB5D DEFINED AT LINE 1867 > USED AT LINE 1761 SUBROUTINE_FB5E: FB5E DEFINED AT LINE 1869 > USED AT LINE 1857 > USED AT LINE 1861 SUBROUTINE_FB67: FB67 DEFINED AT LINE 1884 > USED AT LINE 1880 SKIP_FB6F: FB6F DEFINED AT LINE 1891 > USED AT LINE 1887 SUBROUTINE_FB73: FB73 DEFINED AT LINE 1896 > USED AT LINE 1019 > USED AT LINE 1098 > USED AT LINE 1140 > USED AT LINE 1152 > USED AT LINE 1304 SUBROUTINE_FB76: FB76 DEFINED AT LINE 1900 > USED AT LINE 1015 > USED AT LINE 1064 > USED AT LINE 1091 > USED AT LINE 1136 > USED AT LINE 1167 > USED AT LINE 1211 > USED AT LINE 1291 > USED AT LINE 1300 > USED AT LINE 1736 SUBROUTINE_FB7F: FB7F DEFINED AT LINE 1911 > USED AT LINE 1035 > USED AT LINE 1065 > USED AT LINE 1107 > USED AT LINE 1111 > USED AT LINE 1344 SUBROUTINE_FB82: FB82 DEFINED AT LINE 1914 > USED AT LINE 1901 > USED AT LINE 1905 SUBROUTINE_FB85: FB85 DEFINED AT LINE 1918 > USED AT LINE 1266 SUBROUTINE_FB91: FB91 DEFINED AT LINE 1940 > USED AT LINE 1915 > USED AT LINE 1931 SUBROUTINE_FB94: FB94 DEFINED AT LINE 1944 > USED AT LINE 1264 SKIP_FB9A: FB9A DEFINED AT LINE 1950 > USED AT LINE 1946 SUBROUTINE_FB9D: FB9D DEFINED AT LINE 1955 > USED AT LINE 1506 > USED AT LINE 1780 SUBROUTINE_FBA0: FBA0 DEFINED AT LINE 1959 > USED AT LINE 1863 > USED AT LINE 1897 > USED AT LINE 1912 > USED AT LINE 1956 SUBROUTINE_FBA5: FBA5 DEFINED AT LINE 1965 > USED AT LINE 1112 > USED AT LINE 1213 > USED AT LINE 1276 > USED AT LINE 1306 > USED AT LINE 1363 > USED AT LINE 1489 > USED AT LINE 1694 > USED AT LINE 1757 SKIP_FBAD: FBAD DEFINED AT LINE 1972 > USED AT LINE 1962 SUBROUTINE_FBB2: FBB2 DEFINED AT LINE 1979 > USED AT LINE 1726 > USED AT LINE 1942 SUBROUTINE_FBB5: FBB5 DEFINED AT LINE 1983 > USED AT LINE 1500 > USED AT LINE 1813 > USED AT LINE 1893 > USED AT LINE 1968 > USED AT LINE 1973 POP_AF_AND_RETURN: FBC4 DEFINED AT LINE 2008 > USED AT LINE 1992 SUBROUTINE_FBC6: FBC6 DEFINED AT LINE 2014 > USED AT LINE 2633 > USED AT LINE 2649 > USED AT LINE 2666 POP_BC_DE_HL_AND_RETURN: FBCC DEFINED AT LINE 2023 > USED AT LINE 2045 SUBROUTINE_FBD0: FBD0 DEFINED AT LINE 2030 > USED AT LINE 2021 > USED AT LINE 2041 DO_KEY3: FBDB DEFINED AT LINE 2049 > USED AT LINE 829 DO_KEY1: FBE6 DEFINED AT LINE 2059 > USED AT LINE 822 > USED AT LINE 1980 > USED AT LINE 2089 LOOP_FBF9: FBF9 DEFINED AT LINE 2072 > USED AT LINE 2075 SUBROUTINE_FC11: FC11 DEFINED AT LINE 2094 > USED AT LINE 2086 > USED AT LINE 2518 LFC17: FC17 DEFINED AT LINE 2100 > USED AT LINE 2056 SKIP_FC20: FC20 DEFINED AT LINE 2112 > USED AT LINE 2107 SUBROUTINE_FC25: FC25 DEFINED AT LINE 2119 > USED AT LINE 2095 > USED AT LINE 2236 SKIP_FC32: FC32 DEFINED AT LINE 2129 > USED AT LINE 2125 DO_KEY2: FC34 DEFINED AT LINE 2134 > USED AT LINE 828 > USED AT LINE 1356 > USED AT LINE 2055 > USED AT LINE 2073 > USED AT LINE 2516 DO_KEY4: FC4C DEFINED AT LINE 2168 > USED AT LINE 830 > USED AT LINE 2508 DO_TIME: FC54 DEFINED AT LINE 2179 > USED AT LINE 836 LOOP_FC55: FC55 DEFINED AT LINE 2183 > USED AT LINE 2194 LOOP_FC57: FC57 DEFINED AT LINE 2185 > USED AT LINE 2192 DO_VDUA: FC60 DEFINED AT LINE 2200 > USED AT LINE 821 > USED AT LINE 1235 > USED AT LINE 1253 > USED AT LINE 1719 > USED AT LINE 1984 > USED AT LINE 2886 SKIP_FC79: FC79 DEFINED AT LINE 2224 > USED AT LINE 2215 SKIP_FC8F: FC8F DEFINED AT LINE 2245 > USED AT LINE 2234 LOOP_FC98: FC98 DEFINED AT LINE 2252 > USED AT LINE 2258 SKIP_FC9F: FC9F DEFINED AT LINE 2262 > USED AT LINE 2247 SUBROUTINE_FCA9: FCA9 DEFINED AT LINE 2269 > USED AT LINE 2271 > USED AT LINE 2444 LOOP_FCAD: FCAD DEFINED AT LINE 2272 > USED AT LINE 2279 SKIP_FCB4: FCB4 DEFINED AT LINE 2283 > USED AT LINE 2264 SKIP_FCBB: FCBB DEFINED AT LINE 2291 > USED AT LINE 2285 SKIP_FCBF: FCBF DEFINED AT LINE 2296 SKIP_FCC7: FCC7 DEFINED AT LINE 2305 > USED AT LINE 2227 > USED AT LINE 2298 SKIP_FCE5: FCE5 DEFINED AT LINE 2338 > USED AT LINE 2317 SKIP_FCEF: FCEF DEFINED AT LINE 2351 > USED AT LINE 2333 VARIABLE_BYTE_FCF1: FCF1 DEFINED AT LINE 2358 > USED AT LINE 2209 VARIABLE_BYTE_FCF2: FCF2 DEFINED AT LINE 2360 > USED AT LINE 2231 > USED AT LINE 2310 VARIABLE_BYTE_FCF3: FCF3 DEFINED AT LINE 2362 > USED AT LINE 2300 > USED AT LINE 2398 SKIP_FCF4: FCF4 DEFINED AT LINE 2367 > USED AT LINE 2218 LOOP_FCFD: FCFD DEFINED AT LINE 2379 > USED AT LINE 2433 SKIP_FD04: FD04 DEFINED AT LINE 2389 > USED AT LINE 2375 SKIP_FD15: FD15 DEFINED AT LINE 2404 > USED AT LINE 2400 SUBROUTINE_FD20: FD20 DEFINED AT LINE 2415 > USED AT LINE 2066 SKIP_FD2C: FD2C DEFINED AT LINE 2431 > USED AT LINE 2391 SKIP_FD42: FD42 DEFINED AT LINE 2453 > USED AT LINE 2436 LOOP_FD4B: FD4B DEFINED AT LINE 2461 > USED AT LINE 2473 LOOP_FD51: FD51 DEFINED AT LINE 2468 > USED AT LINE 2469 SKIP_FD57: FD57 DEFINED AT LINE 2478 > USED AT LINE 2455 SKIP_FD5E: FD5E DEFINED AT LINE 2484 > USED AT LINE 2480 SKIP_FD6A: FD6A DEFINED AT LINE 2494 > USED AT LINE 2488 SKIP_FD73: FD73 DEFINED AT LINE 2502 > USED AT LINE 2491 LOOP_FD7A: FD7A DEFINED AT LINE 2507 > USED AT LINE 2510 SUBROUTINE_FD8E: FD8E DEFINED AT LINE 2521 > USED AT LINE 2393 > USED AT LINE 2499 LOOP_FDAE: FDAE DEFINED AT LINE 2564 > USED AT LINE 2569 SUBROUTINE_FBD1: FDB1 DEFINED AT LINE 2568 > USED AT LINE 2201 SKIP_FDB4: FDB4 DEFINED AT LINE 2573 > USED AT LINE 2527 DO_VDUON: FDB6 DEFINED AT LINE 2578 > USED AT LINE 826 > USED AT LINE 1642 > USED AT LINE 2064 > USED AT LINE 2077 > USED AT LINE 2203 DO_VDUOFF: FDBE DEFINED AT LINE 2585 > USED AT LINE 827 > USED AT LINE 1657 > USED AT LINE 1701 > USED AT LINE 1774 > USED AT LINE 1829 > USED AT LINE 2071 > USED AT LINE 2082 DO_PSCROL: FDCB DEFINED AT LINE 2601 > USED AT LINE 835 DO_PARIN: FDE0 DEFINED AT LINE 2622 > USED AT LINE 823 DO_PAROUT: FDE3 DEFINED AT LINE 2627 > USED AT LINE 824 DO_RESDSK: FDE6 DEFINED AT LINE 2632 > USED AT LINE 831 > USED AT LINE 984 DO_RDDSK: FDFC DEFINED AT LINE 2648 > USED AT LINE 832 > USED AT LINE 987 SUBROUTINE_FE02: FE02 DEFINED AT LINE 2654 > USED AT LINE 2678 DO_WRDSK: FE0D DEFINED AT LINE 2665 > USED AT LINE 833 SUBROUTINE_FE28: FE28 DEFINED AT LINE 2686 > USED AT LINE 2634 > USED AT LINE 2705 SUBROUTINE_FE36: FE36 DEFINED AT LINE 2704 > USED AT LINE 2655 > USED AT LINE 2669 CALL_FE6B: FE6B DEFINED AT LINE 2772 > USED AT LINE 2742 SUBROUTINE_FE7B: FE7B DEFINED AT LINE 2788 > USED AT LINE 2659 > USED AT LINE 2672 SUBROUTINE_FE7D: FE7D DEFINED AT LINE 2790 > USED AT LINE 2641 > USED AT LINE 2757 > USED AT LINE 2779 INTRQ: FE96 DEFINED AT LINE 2826 > USED AT LINE 3022 DO_STEPR: FE9C DEFINED AT LINE 2835 > USED AT LINE 834 LFEA0: FEA0 DEFINED AT LINE 2839 > USED AT LINE 2993 SKIP_FEB2: FEB2 DEFINED AT LINE 2862 > USED AT LINE 2846 LOOP_FEBB: FEBB DEFINED AT LINE 2874 > USED AT LINE 2881 SKIP_FECB: FECB DEFINED AT LINE 2893 > USED AT LINE 2859 DO_PRINT: FECE DEFINED AT LINE 2899 > USED AT LINE 825 > USED AT LINE 2004 PRINT1: FECF DEFINED AT LINE 2903 > USED AT LINE 2907 PRINT2: FED5 DEFINED AT LINE 2910 > USED AT LINE 2914 INIT1: FEE7 DEFINED AT LINE 2941 > USED AT LINE 1633 CRTC: FEF0 DEFINED AT LINE 2958 SIIVEC: FF00 DEFINED AT LINE 2991 WINDOW: FF40 DEFINED AT LINE 3030 > USED AT LINE 1634 > USED AT LINE 2240 > USED AT LINE 2326 > USED AT LINE 2529 > USED AT LINE 2615 SCMAX: FF42 DEFINED AT LINE 3033 > USED AT LINE 2127 > USED AT LINE 2605 SCNOW: FF43 DEFINED AT LINE 3036 > USED AT LINE 2101 > USED AT LINE 2113 > USED AT LINE 2122 > USED AT LINE 2128 > USED AT LINE 2485 > USED AT LINE 2493 CURSOR: FF44 DEFINED AT LINE 3039 > USED AT LINE 2062 > USED AT LINE 2249 > USED AT LINE 2266 > USED AT LINE 2348 > USED AT LINE 2413 KEYBUF: FF46 DEFINED AT LINE 3042 > USED AT LINE 2169 LPOS: FF47 DEFINED AT LINE 3045 > USED AT LINE 1243 > USED AT LINE 1691 > USED AT LINE 2268 > USED AT LINE 2382 > USED AT LINE 2407 > USED AT LINE 2411 > USED AT LINE 2438 STEP: FF48 DEFINED AT LINE 3048 > USED AT LINE 2637 > USED AT LINE 2755 > USED AT LINE 2836 CURDRV: FF49 DEFINED AT LINE 3051 > USED AT LINE 136 > USED AT LINE 2459 > USED AT LINE 2580 > USED AT LINE 2587 > USED AT LINE 2594 > USED AT LINE 2635 > USED AT LINE 2709 DRVTAB: FF4A DEFINED AT LINE 3054 > USED AT LINE 2695 KBF: FF4E DEFINED AT LINE 3062 > USED AT LINE 1072 > USED AT LINE 1335 > USED AT LINE 2050 > USED AT LINE 2135 > USED AT LINE 2147 LFF5E: FF5E DEFINED AT LINE 3065 > USED AT LINE 922 SDEN: FF6E DEFINED AT LINE 3085 > USED AT LINE 975 LFF73: FF74 DEFINED AT LINE 3094 > USED AT LINE 966 VARIABLE_WORD_FF78: FF7A DEFINED AT LINE 3105 > USED AT LINE 1738 > USED AT LINE 1743