ROM LISTING All numbers are hex unless otherwise stated 0000 START DI XOR A LD DE,FFFF JP 11CB;START/NEW 0008 ERROR.1 LD HL,(5C5D);CH.ADD LD (5C5F),HL;X.PTR JR 0053;ERROR.2 0010 PRINT.A.1 JP 15F2;PRINT.A.2 DEFB FF,FF,FF,FF,FF 0018 GET.CHAR LD HL,(5C5D);CH.ADD LD A,(HL) 001C TEST.CHAR CALL 007D;SKIP.OVER RET NC 0020 NEXT.CHAR CALL 0074;CH.ADD+1 JR 001C;TEST;CHAR DEFB FF,FF,FF 0028 FP.CALC JP 335B;CALCULATE DEFB FF,FF,FF,FF,FF 0030 BC.SPACES PUSH BC LD HL,(5C61);WORKSP PUSH HL JP 169E;RESERVE 0038 MASK.INT PUSH AF PUSH HL LD HL,(5C78);FRAMES INC HL LD (5C78),HL;FRAMES LD A,H OR L JR NZ,0048;KEY.INT INC (IY+40);FRAMES+2 0048 KEY.INT PUSH BC PUSH DE CALL 02BF;KEYBOARD [+2: CALL 386E] POP DE POP BC POP HL POP AF EI RET 0053 ERROR.2 POP HL LD L,(HL) 0055 ERROR.3 LD (IY+00),L;ERR.NR LD SP,(5C3D);ERR.SP JP 16C5;SET.STK DEFB FF,FF,FF,FF,FF,FF,FF 0066 RESET PUSH AF PUSH HL LD HL,(5CB0);NMIADD LD A,H OR L JR NZ,0070;NO.RESET JP (HL) 0070 NO.RESET POP HL POP AF RETN 0074 CH.ADD+1 LD HL,(5C5D);CH.ADD 0077 TEMP.PTR1 INC HL 0078 TEMP.PTR2 LD (5C5D),HL;CH.ADD LD A,(HL) RET 007D SKIP.OVER CP 21 RET NC CP 0D RET Z CP 10 RET C CP 18 CCF RET C INC HL CP 16 JR C,0090;SKIPS INC HL 0090 SKIPS SCF LD (5C5D),HL;CH.ADD RET TOKEN TABLE Letters followed by space in this listing have bit 7 set - spaces in the m/c are marked with "." 0095 DMES '? RND INKEY$ PI FN POINT SCREEN$ ' 00AF DMES 'ATTR AT TAB VAL$ CODE VAL LEN SIN ' 00C9 DMES 'COS TAN ASN ACS ATN LN EXP INT SQR ' 00E3 DMES 'SGN ABS PEEK IN USR STR$ CHR$ NOT ' 00FD DMES 'BIN OR AND <= >= <> LINE THEN TO ' 0115 DMES 'STEP DEF.FN CAT FORMAT MOVE ERASE ' 0121 DMES 'OPEN.(hatch) CLOSE.(hatch) MERGE ' 0143 DMES 'VERIFY BEEP CIRCLE INK PAPER FLASH ' 0160 DMES 'BRIGHT INVERSE OVER OUT LPRINT ' 017A DMES 'LLIST STOP READ DATA RESTORE NEW ' 0195 DMES 'BORDER CONTINUE DIM REM FOR GO.TO ' 01B1 DMES 'GO.SUB INPUT LOAD LIST LET PAUSE NEXT ' 01D0 DMES 'POKE PRINT PLOT RUN SAVE RANDOMIZE ' 01ED DMES 'IF CLS DRAW CLEAR RETURN COPY ' KEY TABLES Here spaces are used merely to separate symbols/tokens 0205 DMES 'B H Y 6 5 T G V N J U 7 4 R F C' 0215 DMES 'M K I 8 3 E D X SYMSH L O 9 2 W S Z' 0225 DMES 'SPACE ENTER P 0 1 Q A' 022C DMES 'READ BIN LPRINT DATA TAN SGN ABS SQR' 0234 DMES 'CODE VAL LEN USR PI INKEY$ PEEK TAB' 023C DMES 'SIN INT RESTORE RND CHR$ LLIST COS EXP' 0244 DMES 'STR$ LN' 0246 DMES 'tilde BRIGHT PAPER \ ATN ( ) CIRCLE' 024E DMES 'IN VAL$ SCREEN$ ATTR INVERSE OVER OUT ' 0256 DMES 'ASN VERIFY | MERGE ] FLASH ACS INK' 025E DMES '[ BEEP' 0260 DMES 'DELETE EDIT C LOCK TV INVV <- down up' 0268 DMES '-> GRAPHICS' 026A DMES 'STOP * ? STEP >= TO THEN uparrow' 0272 DMES 'AT - + = . , ; " ' 027A DMES '<= < NOT > OR / <> `' 0282 DMES 'AND :' 0284 DMES 'FORMAT DEF.FN FN LINE' 0288 DMES 'OPEN CLOSE MOVE ERASE' 028C DMES 'POINT CAT' 028E KEY.SCAN LD L,2F LD DE,FFFF LD BC,FEFE 0296 KEY.LINE IN A,(C) CPL AND 1F JR Z,02AB;KEY.DONE LD H,A LD A,L 029F KEY.3KEYS INC D RET NZ 02A1 KEY.BITS SUB 08 SRL H JR NC,02A1;KEY.BITS LD D,E LD E,A JR NZ,029F;KEY.3KEYS 02AB KEY.DONE DEC L RLC B JR C,0296;KEY.LINE LD A,D INC A RET Z CP 28 RET Z CP 19 RET Z LD A,E LD E,D LD D,A CP 18 RET 02BF KEYBOARD CALL 028E;KEY.SCAN RET NZ LD HL,5C00;KSTATE0 026C K.ST.LOOP BIT 7,(HL) JR NZ,02D1;K.CH.SET INC HL DEC (HL) DEC HL JR NZ,02D1;K.CH.SET LD (HL),FF 02D1 K.CH.SET LD A,L LD HL,5C04;KSTATE4 CP L JR NZ,02C6;K.ST.LOOP CALL 031E;K.TEST RET NC LD HL,5C00;KSTATE0 CP (HL) JR Z,0310;K.REPEAT EX DE,HL LD HL,5C04;KSTATE4 CP (HL) JR Z,0310;K.REPEAT BIT 7,(HL) JR NZ,02F1;K.NEW EX DE,HL BIT 7,(HL) RET Z 02F1 K.NEW LD E,A LD (HL),A INC HL LD (HL),05 INC HL LD A,(5C09);REPDEL LD (HL),A INC HL LD C,(IY+07);MODE LD D,(IY+01);FLAGS PUSH HL CALL 0333;K.DECODE POP HL LD (HL),A 0308 K.END LD (5C08),A;LAST.K SET 5,(IY+01);FLAGS RET 0310 K.REPEAT INC HL LD (HL),05 INC HL DEC (HL) RET NZ LD A,(5C0A);REPPER LD (HL),A INC HL LD A,(HL) JR 0308;K.END 031E K.TEST LD B,D LD D,00 LD A,E CP 27 RET NC CP 18 JR NZ,032C;K.MAIN BIT 7,B RET NZ 032C K.MAIN LD HL,0205;Main key table ADD HL,DE LD A,(HL) SCF RET 0333 K.DECODE LD A,E CP 3A JR C,0367;K.DIGIT DEC C JP M,034F;K.KLC.LET JR Z,0341;K.E.LET ADD A,4F RET 0341 K.E.LET LD HL,01EB;E-mode letters unshifted table INC B JR Z,034A;K.LOOK.UP LD HL,0205;Main key table 034A K.LOOK.UP LD D,00 ADD HL,DE LD A,(HL) RET 034F K.KLC.LET LD HL,0229;Symbol code letters table BIT 0,B JR Z,034A;K.LOOK.UP BIT 3,D JR Z,0364;K.TOKENS BIT 3,(IY+30);FLAGS2 RET NZ INC B RET NZ ADD A,20 RET 0364 K.TOKENS ADD A,A5 RET 0367 K.DIGIT CP 30 RET C DEC C JP M,039D;K.KLC.DGT JR NZ,0389;K.GRA.DGT LD HL,0254;E-mode digits with sym shift table BIT 5,B JR Z,034A;K.LOOK.UP CP 38 JR NC,0382;K.8.&.9 SUB 20 INC B RET Z ADD A,08 RET 0382 K.8.&.9 SUB 36 INC B RET Z ADD A,FE RET 0389 K.GRA.DGT LD HL,0230;Digits with c shift table CP 39 JR Z,034A;K.LOOK.UP CP 30 JR Z,034A;K.LOOK.UP AND 07 ADD A,80 INC B RET Z XOR 0F RET 039D K.KLC.DGT INC B RET Z BIT 5,B LD HL,0230 JR NZ,034A;K.LOOK.UP SUB 10 CP 22 JR Z,03B2;K.@.CHAR CP 20 RET NZ LD A,5F RET 03B2 K.@.CHAR LD A,40 RET 03B5 BEEPER DI LD A,L