home *** CD-ROM | disk | FTP | other *** search
- CP 20 JR NC,1B6F;SEPARATOR LD HL,1C01;command class table LD B,00 ADD HL,BC LD C,(HL) ADD HL,BC PUSH HL RST 0018;GET.CHAR DEC B RET 1B6F SEPARATOR RST 0018;GET.CHAR CP C JP NZ,1C8A;REPORT.C RST 0020;NEXT.CHAR RET 1B76 STMT.RET CALL 1F54;BREAK.KEY JR C,1B7D;STMT.R.1 1B7B REPORT.L RST 0008;ERROR.1 DEFB 14;"BREAK into program" 1B7D STMT.R.1 BIT 7,(IY+0A);NSPPC [PLUS 2: CALL 3B4D JR NZ,1BF4;STMT.NEXT NOP] LD HL,(5C42);NEWPPC BIT 7,H JR Z,1B9E;LINE.NEW 1B8A LINE.RUN LD HL,FFFE LD (5C45),HL;PPC LD HL,(5C61);WORKSP DEC HL LD DE,(5C59);E.LINE DEC DE LD A,(5C44);NSPPC JR 1BD1;NEXT.LINE 1B9E LINE.NEW CALL 196E;LINE.ADDR LD A,(5C44);NSPPC JR Z,1BBF;LINE.USE AND A JR NZ,1BEC;REPORT.N LD B,A LD A,(HL) AND 11000000B LD A,B JR Z,1BBF;LINE.USE 1B80 REPORT.0 RST 0008;ERROR.1 DEFB FF;"OK" 1BB2 REM POP BC 1BB3 LINE.END CALL 2530;SYNTAX.Z RET Z LD HL,(5C55);NXTLIN LD A,11000000B AND (HL) RET NZ XOR A 1BBF LINE.USE CP 01 ADC A,00 LD D,(HL) INC HL LD E,(HL) LD (5C45),DE;PPC INC HL LD E,(HL) INC HL LD D,(HL) EX DE,HL ADD HL,DE INC HL 1BD1 NEXT.LINE LD (5C55),HL;NXTLINE EX DE,HL LD (5C5D),HL;CH.ADD LD D,A LD E,00 LD (IY+0A),FF;NSPPC DEC D LD (IY+0D),D;SUBPPC JP Z,1B28;STMT.LOOP INC D CALL 198B;EACH.STMT JR Z,1BF4;STMT.NEXT 1BEC REPORT.N RST 0008;ERROR.1 DEFB 16;"Statement lost" 1BEE CHECK.END CALL 2530;SYNTAX.Z RET NZ POP BC POP BC 1BF4 STMT.NEXT RST 0018;GET.CHAR [PLUS 2: CALL 3B5D CP 0D - ] JR Z,1BB3;LINE.END CP ':' JP Z,1B28;STMT.LOOP JP 1C8A;REPORT.C 1C01 DEFB 1C10-1C01;CLASS 00 DEFB 1C1F-1C02;CLASS 01 DEFB 1C4E-1C03;CLASS 02 DEFB 1C0D-1C04;CLASS 03 DEFB 1C6C-1C05;CLASS 04 DEFB 1C11-1C06;CLASS 05 DEFB 1C82-1C07;CLASS 06 DEFB 1C96-1C08;CLASS 07 DEFB 1C7A-1C09;CLASS 08 DEFB 1CBE-1C0A;CLASS 09 DEFB 1C8C-1C0B;CLASS 0A DEFB 1CDB-1C0C;CLASS 0B 1C03 CLASS.03 CALL 1CDE;FETCH.NUM 1C10 CLASS.00 CP A 1C11 CLASS.05 POP BC CALL Z,1BEE;CHECK.END EX DE,HL 1C16 JUMP.C.R LD HL,(5C74);T.ADDR LD C,(HL) INC HL LD B,(HL) EX DE,HL PUSH BC RET 1C1F CLASS.01 CALL 28B2;LOOK.VARS 1C22 VAR.A.1 LD (IY+37),00;FLAGX JR NC,1C30;VAR.A.2 SET 1,(IY+37);FLAGX JR NZ,1C46;VAR.A.3 1C2E REPORT.2 RST 0008;ERROR.1 DEFB 01;"Variable not found" 1C30 VAR.A.2 CALL Z,2996;STK.VARS BIT 6,(IY+01);FLAGS JR NZ,1C46;VAR.A.3 XOR A CALL 2530;SYNTAX.Z CALL NZ,2BF1;STK.FETCH LD HL,5C71;FLAGX OR (HL) LD (HL),A EX DE,HL 1C46 VAR.A.3 LD (5C72),BC;STRLEN LD (5C4D),HL;DEST RET 1C4E CLASS.02 POP BC CALL 1C56;VAL.FET.1 CALL 1BEE;CHECK.END RET 1C56 VAL.FET.1 LD A,(5C3B);FLAGS 1C59 VAL.FET.2 PUSH AF CALL 24FB;SCANNING POP AF LD D,(5C3B);FLAGS XOR D AND 01000000B JR NZ,1C8A;REPORT.C BIT 7,D JP NZ,2AFF;LET RET 1C6C CLASS.04 CALL 28B2;LOOK.VARS PUSH AF LD A,C OR 10011111B INC A JR NZ,1C8A;REPORT.C POP AF JR 1C22,VAR.A.1 1C79 NEXT.2NUM RST 0020;NEXT.CHAR 1C7A CLASS.08 CALL 1C82;EXPT.1NUM (EXPT.2NUM) CP ',' JR NZ,1C8A;REPORT.C RST 0020;NEXT.CHAR 1C82 CLASS.06 CALL 24FB;SCANNING (EXPT.1NUM) BIT 6,(IY+01);FLAGS RET NZ 1C8A REPORT.C RST 0008;ERROR.1 DEFB 0B;"Nonsense in BASIC" 1C8C CLASS.0A CALL 24FB;SCANNING (EXPT.EXP) BIT 6,(IY+01);FLAGS RET Z JR 1C8A;REPORT.C 1C96 CLASS.07 BIT 7,(IY+01);FLAGS (PERMS) RES 0,(IY+02);TV.FLAG CALL NZ,0D4D;TEMPS POP AF LD A,(5C74);T.ADDR SUB 13 CALL 21FC;CO.TEMP.4 CALL 1BEE;CHECK.END LD HL,(5C8F);ATTR.T LD (5C8D),HL;ATTR.P LD HL,5C91;P.FLAG LD A,(HL) RLCA XOR (HL) AND 10101010B XOR (HL) LD (HL),A RET 1CBE CLASS.09 CALL 2530;SYNTAX.Z JR Z,1CD6;CL.09.1 RES 0,(IY+02);TV.FLAG CALL OD4D;TEMPS LD HL,5C90;MASK.T LD A,(HL) OR 11111000B LD (HL),A RES 6,(IY+57);P.FLAG RST 0018;GET.CHAR 1CD6 CL.09.1 CALL 21E2;CO.TEMP JR 1C7A;EXPT.2NUM 1CDB CLASS.0B JP 0605;SAVE.ETC 1CDE FETCH.NUM CP 0D JR Z,1CE6;USE.ZERO CP ':' JR NZ;1C82;EXPT.2NUM 1CE6 USE.ZERO CALL 2530;SYNTAX.Z RET Z RST 0028;FP.CALC DEFB A0;stk-zero DEFB 38;end-calc RET 1CEE STOP RST 0008;ERROR.1 (REPORT.9) DEFB 08;"STOP statement" 1CF0 IF POP BC CALL 2530;SYNTAX.Z JR Z,1D00;IF.1 RST 0028;FP.CALC DEFB 02;delete DEFB 38;end.calc EX DE,HL CALL 34E9;TEST.ZERO JP C,1BB3;LINE.END 1D00 IF.1 JP 1B29;STMT.L.1 1D03 FOR CP 'STEP' JR NZ,1D10;F.USE.1 RST 0020;NEXT.CHAR CALL 1C82;EXPT.1NUM CALL 1BEE;CHECK.END JR 1D16;F.REORDER 1D10 F.USE.1 CALL 1BEE;CHECK.END RST 0028;FP.CALC DEFB A1;stk-one DEFB 38;end-calc 1D16 F.REORDER RST 0028;FP.CALC DEFB C0;st-mem-0 DEFB 02;delete DEFB 01;exchange DEFB E0;get-mem-0 DEFB 01;exchange DEFB 38;end-calc CALL 2AFF;LET LD (5C6B),HL;MEM DEC HL LD A,(HL) SET 7,(HL) LD BC,0006 ADD HL,BC RLCA JR C,1D34;F.L&S LD C,0D CALL 1655;MAKE.ROOM INC HL 1D34 F.L&S PUSH HL RST 0028;FP.CALC DEFB 02;delete DEFB 02;delete DEFB 38;end-calc POP HL EX DE,HL LD C,0A LDIR LD HL,(5C45);PPC EX DE,HL LD (HL),E INC HL LD (HL),D LD D,(IY+0D);SUBPPC INC D INC HL LD (HL),D CALL 1DDA;NEXT,LOOP RET NC LD B,(IY+38);STRLEN LD HL,(5C45);PPC LD (5C42),HL;NEWPPC LD A,(5C47);SUBPPC NEG LD D,A LD HL,(5C5D);CH.ADD LD E,NEXT 1D64 F.LOOP PUSH BC LD BC,(5C55);NXTLIN CALL 1D86;LOOK.PROG LD (5C55),BC;NXTLIN