REM >BASIC4r32Src REM REM REM This is Acorn's BASIC 4r32, fully original (results in exact same binary). REM REM Run on 6502 grokking BASIC V, e.g. Basic6502 (google 'Kortink Basic6502') REM REM REM REM Discovered bugs and suboptimalities REM ----------------------------------- REM REM - Bug 1 REM REM E.g. PRINT 2.11 ^ 7.33 produces an incorrect answer. REM The FP constant tables are not walked correctly due REM to the failure to check for walker index overflow. REM REM Bugged code : REM REM CLC:.code_A8/E0CD:ADC #&0A:DEY:BPL code_A8/E0CD:ADC #256-15 REM REM Fixed code : REM REM SEC:SBC #15+1:.code_A8/E0CD:ADC #&0A:DEY:BPL code_A8/E0CD REM REM - Bug 2 REM REM VARTOP should remain unchanged in case of a 'No room' error. REM But only &02 ends up unchanged. &03 may have been incremented. REM There are similar laxities in the DIM code (e.g. leaving the REM unusable array variable behind on encountering 'DIM space'). REM REM E.g. : INC &03:.code_9962 REM REM - Bug 3 REM REM E.g. DIM Q% &FFFE works, because overflow is not checked for REM when adding &FFFE to VARTOP. REM REM - Suboptimal 1 REM REM PROC/FN entries in the catalogue point to e.g. CR terminator REM of line the DEF is in. They could point a little further. REM ON ERROR PRINT "Error '";REPORT$;"' at line ";ERL:END PRINT '"Assembling ... "; PROCassemble PRINT "Saving ... "; SYS "OS_File", 10, "BASIC4r32", &FFD,, Out%, Out% + total_size% PRINT ;"Done"' END DEFPROCassemble total_size% = 16 * 1024 start_address% = &8000 DIM Out% total_size% os_find% = &FFCE os_bput% = &FFD4 os_bget% = &FFD7 os_args% = &FFDA os_file% = &FFDD os_rdch% = &FFE0 os_asci% = &FFE3 os_newl% = &FFE7 os_wrch% = &FFEE os_word% = &FFF1 os_byte% = &FFF4 os_cli% = &FFF7 token_AND% = &80 token_ABS% = &94 token_ACS% = &95 token_ADVAL% = &96 token_ASC% = &97 token_ASN% = &98 token_ATN% = &99 token_AUTO% = &C6 token_BGET% = &9A token_BPUT% = &D5 token_COLOUR% = &FB token_CALL% = &D6 token_CHAIN% = &D7 token_CHRd% = &BD token_CLEAR% = &D8 token_CLOSE% = &D9 token_CLG% = &DA token_CLS% = &DB token_COS% = &9B token_COUNT% = &9C token_COLOR% = &FB token_DATA% = &DC token_DEG% = &9D token_DEF% = &DD token_DELETE% = &C7 token_DIV% = &81 token_DIM% = &DE token_DRAW% = &DF token_ENDPROC% = &E1 token_END% = &E0 token_ENVELOPE% = &E2 token_ELSE% = &8B token_EVAL% = &A0 token_ERL% = &9E token_ERROR% = &85 token_EOF% = &C5 token_EOR% = &82 token_ERR% = &9F token_EXP% = &A1 token_EXT% = &A2 token_EDIT% = &CE token_FOR% = &E3 token_FALSE% = &A3 token_FN% = &A4 token_GOTO% = &E5 token_GETd% = &BE token_GET% = &A5 token_GOSUB% = &E4 token_GCOL% = &E6 token_HIMEM% = &93 token_INPUT% = &E8 token_IF% = &E7 token_INKEYd% = &BF token_INKEY% = &A6 token_INT% = &A8 token_INSTRb% = &A7 token_LIST% = &C9 token_LINE% = &86 token_LOAD% = &C8 token_LOMEM% = &92 token_LOCAL% = &EA token_LEFTdb% = &C0 token_LEN% = &A9 token_LET% = &E9 token_LOG% = &AB token_LN% = &AA token_MIDdb% = &C1 token_MODE% = &EB token_MOD% = &83 token_MOVE% = &EC token_NEXT% = &ED token_NEW% = &CA token_NOT% = &AC token_OLD% = &CB token_ON% = &EE token_OFF% = &87 token_OR% = &84 token_OPENIN% = &8E token_OPENOUT% = &AE token_OPENUP% = &AD token_OSCLI% = &FF token_PRINT% = &F1 token_PAGE% = &90 token_PTR% = &8F token_PI% = &AF token_PLOT% = &F0 token_POINTb% = &B0 token_PROC% = &F2 token_POS% = &B1 token_RETURN% = &F8 token_REPEAT% = &F5 token_REPORT% = &F6 token_READ% = &F3 token_REM% = &F4 token_RUN% = &F9 token_RAD% = &B2 token_RESTORE% = &F7 token_RIGHTdb% = &C2 token_RND% = &B3 token_RENUMBER% = &CC token_STEP% = &88 token_SAVE% = &CD token_SGN% = &B4 token_SIN% = &B5 token_SQR% = &B6 token_SPC% = &89 token_STRd% = &C3 token_STRINGdb% = &C4 token_SOUND% = &D4 token_STOP% = &FA token_TAN% = &B7 token_THEN% = &8C token_TO% = &B8 token_TABb% = &8A token_TRACE% = &FC token_TIME% = &91 token_TRUE% = &B9 token_UNTIL% = &FD token_USR% = &BA token_VDU% = &EF token_VAL% = &BB token_VPOS% = &BC token_WIDTH% = &FE tokva_PAGE% = &D0 tokva_PTR% = &CF tokva_TIME% = &D1 tokva_LOMEM% = &D2 tokva_HIMEM% = &D3 tokst_Missing% = &8D resint_AT% = &0400 resint_A% = &0404 resint_C% = &040C resint_O% = &043C resint_P% = &0440 resint_X% = &0460 resint_Y% = &0464 ws_vartyp_2C% = &2C ws_vartyp_39% = &39 ws_varptr_2A% = &2A ws_varptr_37% = &37 ws_vartop_02% = &02 ws_walker_2C% = &2C ws_walker_37% = &37 ws_walker_39% = &39 ws_walker_3A% = &3A for_nest% = 10 for_size% = 15 for_curr% = &528 for_prev% = for_curr% - for_size% gosub_nest% = 26 gosub_curr_lo% = &5CC gosub_curr_hi% = &5E6 gosub_prev_lo% = gosub_curr_lo% - 1 gosub_prev_hi% = gosub_curr_hi% - 1 repeat_nest% = 20 repeat_curr_lo% = &500 repeat_curr_hi% = &514 repeat_prev_lo% = repeat_curr_lo% - 1 repeat_prev_hi% = repeat_curr_hi% - 1 FOR `P = %100100 TO %100110 STEP %10 O% = Out% P% = start_address% [OPT `P .rom_base ; JMP language_init JMP service_entry ; EQUB &E2 EQUB copyright_message - rom_base EQUB &07 ; .help_message ; EQUS "BASIC" EQUB &00 EQUS "4r32" ; .copyright_message ; EQUB &00 EQUS "(C)" ; EQUS "1988 Acorn" + CHR$(&0A) + CHR$(&0D) EQUB &00 ; EQUW &B800 ; EQUW relocation_info ; .relocation_info ; EQUW &C000 EQUB &82 EQUB &00 .service_entry ; PHA TAX TYA PHA CPX #&09 BEQ code_804C CPX #&04 BEQ code_8070 CPX #&02 BEQ code_8040 CPX #&27 \ ' BNE code_806A .code_8040 LDA #&BB \ VAL LDX &F4 LDY #&00 JSR os_byte% JMP code_806A .code_804C LDA (&F2),Y CMP #&0D BNE code_806A JSR os_newl% LDX #256-10 .code_8057 LDA help_message-256+10,X BNE code_805E LDA #&20 .code_805E JSR os_asci% INX BNE code_8057 JSR os_newl% .code_8067 JSR code_80D8 .code_806A PLA TAY LDX &F4 PLA RTS .code_8070 LDA (&F2),Y AND #&DF \ DRAW CMP #&48 \ H BNE code_808F INY LDA #&40 \ @ TSB &F4 LDA (&F2),Y INY CMP #&2E \ . BEQ code_80A8 AND #&DF \ DRAW CMP #&49 \ I BEQ code_808F JSR code_80D8 DEY DEY .code_808F LDX #256-5 .code_8091 LDA (&F2),Y CMP #&2E \ . BEQ code_80A8 AND #&DF \ DRAW CMP help_message-256+5,X BNE code_8067 INY INX BNE code_8091 LDA (&F2),Y CMP #&21 \ ! BCS code_8067 .code_80A8 BIT &F4 BVC code_80CC JSR code_BF66 BNE code_80CC JSR code_80D8 LDX #&0A .code_80B6 LDA error_no_tube,X STA &0100,X DEX BPL code_80B6 JMP &0100 .error_no_tube ; BRK:EQUB &00:EQUS "No TUBE":EQUB 0 .code_80CC LDA &F4 EOR #&40 \ @ TAX LDA #&8E \ OPENIN LDY #&00 JMP os_byte% .code_80D8 LDA #&40 \ @ TRB &F4 RTS .tens_16_hi ; EQUB 1 DIV 256 EQUB 10 DIV 256 EQUB 100 DIV 256 EQUB 1000 DIV 256 EQUB 10000 DIV 256 ; .tens_16_lo ; EQUB 1 MOD 256 EQUB 10 MOD 256 EQUB 100 MOD 256 EQUB 1000 MOD 256 EQUB 10000 MOD 256 .language_init ; AND &11 ORA &0D ORA &0E ORA &0F ORA &10 BNE code_80FF LDA #&41 \ A STA &0D EOR #&13 STA &0E EOR #&05 STA &0F .code_80FF LDA #&84 \ OR JSR os_byte% STX &06 STY &07 DEA JSR os_byte% STY &18 LDX #copyright_message MOD 256 STX &FD LDX #copyright_message DIV 256 STX &FE STZ &1F STZ resint_AT%+2 STZ resint_AT%+3 LDX #&FF \ OSCLI STX &23 LDX #&0A STX resint_AT%+0 DEX STX resint_AT%+1 LDA #brk_handler MOD 256 STA &0202 LDA #brk_handler DIV 256 STA &0203 CLI JMP code_8FF2 .code_8139 STY &39 LDY #&01 LDA (&37),Y LDY #&F6 \ REPORT CMP #&F2 \ PROC BEQ code_8151 LDY #&F8 \ RETURN BRA code_8151 .code_8149 STY &39 LDY #&01 LDA (&37),Y ASL A TAY .code_8151 LDA resint_AT%+1,Y BEQ code_8190 STA ws_varptr_2A%+1 LDA resint_AT%+0,Y BRA code_8168 .code_815D LDY #&01 FNlda_varptr_2A_Y BEQ code_8190 TAY FNlda_varptr_2A_0 STY ws_varptr_2A%+1 .code_8168 STA ws_varptr_2A%+0 LDY #&02 FNlda_varptr_2A_Y BNE code_817A CPY &39 BNE code_815D BRA code_8187 .code_8176 FNlda_varptr_2A_Y BEQ code_815D .code_817A CMP (&37),Y BNE code_815D INY CPY &39 BNE code_8176 FNlda_varptr_2A_Y BNE code_815D .code_8187 TYA ADC ws_varptr_2A%+0 STA ws_varptr_2A%+0 BCC code_8190 INC ws_varptr_2A%+1 .code_8190 RTS .code_8191 STZ &3D LDA &18 STA &3E .code_8197 LDY #&01 LDA (&3D),Y CMP &2B BCS code_81AD .code_819F LDY #&03 LDA (&3D),Y ADC &3D STA &3D BCC code_8197 INC &3E BRA code_8197 .code_81AD BNE code_81B9 INY LDA (&3D),Y CMP &2A BCC code_819F BNE code_81B9 RTS .code_81B9 LDY #&02 CLC RTS .code_81BD JSR code_9783 LDA &2D PHA BPL code_81C8 JSR code_AD20 .code_81C8 JSR code_A069 STX &27 JSR code_9783 PLA STA &38 EOR &2D STA &37 JSR code_AD07 LDX #&39 \ 9 JSR code_BD48 LDX #&03 .code_81E1 STZ &3D,X LDA &2A,X BNE code_81FD DEX BPL code_81E1 .error_division_by_zero ; BRK:EQUB &12:EQUS "Division by zero":EQUB 0 .code_81FD ROL A TXA TAY ADC #&00 STA &42 LDX #&03 .code_8206 LDA &39,X STZ &3D,X BNE code_8230 DEX BPL code_8206 .code_820F RTS .code_8210 TYA BEQ code_820F LDA &003D,Y STA &3D LDA &003E,Y STA &3E LDA &003F,Y STA &3F STZ &40 DEY BEQ code_820F STZ &3F DEY BEQ code_820F STZ &3E BRA code_820F .code_8230 CMP &002A,Y BCS code_823F .code_8235 LDA &39,X STA &003D,Y STZ &39,X DEX BMI code_8210 .code_823F DEY BPL code_8235 .code_8242 LDY #&08 STX &41 .code_8246 ROL &39,X ROL &3D ROL &3E ROL &3F ROL &40 LDX &42 .code_8252 LDA &3D,X CMP &2A,X BNE code_825B DEX BPL code_8252 .code_825B BCC code_827C LDA &3D SBC &2A STA &3D LDX &42 BEQ code_827C LDA &3E SBC &2B STA &3E DEX BEQ code_827C LDA &3F SBC &2C STA &3F LDA &40 SBC &2D STA &40 .code_827C LDX &41 DEY BNE code_8246 ROL &39,X DEX BPL code_8242 RTS .code_8287 JSR code_BD26 .code_828A JSR code_A3ED .code_828D STZ &35 LDA &2D STA &2E BPL code_829A JSR code_AD20 LDA &2D .code_829A BNE code_82C8 STZ &34 LDY &2A LDA &2C BNE code_82BE STZ &33 LDA &2B BEQ code_82D8 STY &32 LDY #&90 \ PAGE .code_82AE ORA #&00 BMI code_82FB .code_82B2 DEY ASL &34 ROL &33 ROL &32 ROL A BPL code_82B2 BRA code_82FB .code_82BE STY &33 LDY &2B STY &32 LDY #&98 \ ASN BRA code_82AE .code_82C8 LDY &2C STY &32 LDY &2B STY &33 LDY &2A STY &34 LDY #&A0 \ EVAL BRA code_82AE .code_82D8 STZ &32 TYA BNE code_82F4 .code_82DD STZ &31 STZ &2E STZ &30 STZ &2F RTS .code_82E6 STA &2E JSR code_A731 LDA &2E BEQ code_82DD BPL code_82F4 EOR #&FF \ OSCLI INA .code_82F4 LDY #&89 \ SPC LSR A .code_82F7 DEY ROL A BPL code_82F7 .code_82FB STY &30 STZ &2F STA &31 RTS LDA &31 .code_8304 BMI code_8346 .code_8306 BNE code_832F ORA &32 ORA &33 ORA &34 ORA &35 BEQ code_82DD LDY &30 .code_8314 LDA &32 PHA LDA &33 STA &32 LDA &34 STA &33 LDA &35 STA &34 STZ &35 TYA SEC SBC #&08 TAY PLA BEQ code_8314 BRA code_833B .code_832F LDY &30 .code_8331 DEY ASL &35 ROL &34 ROL &33 ROL &32 ROL A .code_833B BPL code_8331 CPY &30 STY &30 BCC code_8345 DEC &2F .code_8345 TAY .code_8346 STA &31 RTS .code_8349 STZ &3D LDY &31 BRA code_8353 .code_834F LDY &31 STY &3D .code_8353 LDA &30 CMP #&81 \ DIV BCS code_835E STY &3D JMP code_A72B .code_835E CMP #&A0 \ EVAL BCC code_8372 .code_8362 JMP error_too_big .code_8365 LSR &31 ROR &32 ROR &33 ROR &34 BCC code_8371 STA &3D .code_8371 INA .code_8372 BIT #&07 BNE code_8365 AND #&18 BEQ code_83A6 LSR A LSR A LSR A TAY PHX EOR #&03 TAX LDA &3D BNE code_8392 STZ &35 LDA &34 ORA &0031,Y ORA &0032,Y STA &3D .code_8392 LDA &33 STA &34 LDA &32 STA &33,X LDA &31 STA &32,X .code_839E STZ &31,X DEX BPL code_839E PLX STZ &35 .code_83A6 LDA &2E BPL code_83C1 .code_83AA SEC LDY #&00 TYA SBC &34 STA &34 TYA SBC &33 STA &33 TYA SBC &32 STA &32 TYA SBC &31 STA &31 .code_83C1 RTS .code_83C2 INC &34 BNE code_83D2 INC &33 BNE code_83D2 INC &32 BNE code_83D2 INC &31 BEQ code_8362 .code_83D2 RTS .code_83D3 LDY #&02 .code_83D5 ROR &11 ROR &10 LDA &0F STA &11 ROR A PHA LDA &0E LDX &0D LSR &0F ROR A ROR &0D LSR &0F ROR A ROR &0D LSR &0F ROR A ROR &0D LSR &0F ROR A ROR &0D EOR &10 STX &0F LDX &0E STX &10 STA &0E PLA EOR &0D STA &0D DEY BNE code_83D5 RTS .code_840A LDA &3B STA &2E STZ &2F LDA &3C STA &30 LDA &3D STA &31 LDA &3E STA &32 LDA &3F STA &33 LDA &40 STA &34 LDA &41 STA &35 .code_8428 RTS .code_8429 LDA &31 BEQ code_840A SEC LDA &30 SBC &3C BEQ code_84A3 BCC code_846A CMP #&25 \ % BCS code_8428 TAY AND #&38 \ 8 BEQ code_8456 SEC .code_8440 LDX &40 STX &41 LDX &3F STX &40 LDX &3E STX &3F LDX &3D STX &3E STZ &3D SBC #&08 BNE code_8440 .code_8456 TYA AND #&07 BEQ code_84A3 .code_845B LSR &3D ROR &3E ROR &3F ROR &40 ROR &41 DEA BNE code_845B BRA code_84A3 .code_846A EOR #&FF \ OSCLI INA CMP #&25 \ % BCS code_840A LDY &3C STY &30 TAY AND #&38 \ 8 BEQ code_8491 SEC .code_847B LDX &34 STX &35 LDX &33 STX &34 LDX &32 STX &33 LDX &31 STX &32 STZ &31 SBC #&08 BNE code_847B .code_8491 TYA AND #&07 BEQ code_84A3 .code_8496 LSR &31 ROR &32 ROR &33 ROR &34 ROR &35 DEA BNE code_8496 .code_84A3 LDA &2E EOR &3B BMI code_84AD CLC JMP code_A489 .code_84AD LDA &31 CMP &3D BNE code_84CE LDA &32 CMP &3E BNE code_84CE LDA &33 CMP &3F BNE code_84CE LDA &34 CMP &40 BNE code_84CE LDA &35 CMP &41 BNE code_84CE JMP code_A72B .code_84CE BCS code_84F4 LDA &3B STA &2E SEC LDA &41 SBC &35 STA &35 LDA &40 SBC &34 STA &34 LDA &3F SBC &33 STA &33 LDA &3E SBC &32 STA &32 LDA &3D SBC &31 JMP code_8304 .code_84F4 LDA &35 SBC &41 STA &35 LDA &34 SBC &40 STA &34 LDA &33 SBC &3F STA &33 LDA &32 SBC &3E STA &32 LDA &31 SBC &3D JMP code_8304 .token_table ; EQUS "AND" :EQUB token_AND% :EQUB &00 EQUS "ABS" :EQUB token_ABS% :EQUB &00 EQUS "ACS" :EQUB token_ACS% :EQUB &00 EQUS "ADVAL" :EQUB token_ADVAL% :EQUB &00 EQUS "ASC" :EQUB token_ASC% :EQUB &00 EQUS "ASN" :EQUB token_ASN% :EQUB &00 EQUS "ATN" :EQUB token_ATN% :EQUB &00 EQUS "AUTO" :EQUB token_AUTO% :EQUB &10 EQUS "BGET" :EQUB token_BGET% :EQUB &01 EQUS "BPUT" :EQUB token_BPUT% :EQUB &03 EQUS "COLOUR" :EQUB token_COLOUR% :EQUB &02 EQUS "CALL" :EQUB token_CALL% :EQUB &02 EQUS "CHAIN" :EQUB token_CHAIN% :EQUB &02 EQUS "CHR$" :EQUB token_CHRd% :EQUB &00 EQUS "CLEAR" :EQUB token_CLEAR% :EQUB &01 EQUS "CLOSE" :EQUB token_CLOSE% :EQUB &03 EQUS "CLG" :EQUB token_CLG% :EQUB &01 EQUS "CLS" :EQUB token_CLS% :EQUB &01 EQUS "COS" :EQUB token_COS% :EQUB &00 EQUS "COUNT" :EQUB token_COUNT% :EQUB &01 EQUS "COLOR" :EQUB token_COLOR% :EQUB &02 EQUS "DATA" :EQUB token_DATA% :EQUB &20 EQUS "DEG" :EQUB token_DEG% :EQUB &00 EQUS "DEF" :EQUB token_DEF% :EQUB &00 EQUS "DELETE" :EQUB token_DELETE% :EQUB &10 EQUS "DIV" :EQUB token_DIV% :EQUB &00 EQUS "DIM" :EQUB token_DIM% :EQUB &02 EQUS "DRAW" :EQUB token_DRAW% :EQUB &02 EQUS "ENDPROC" :EQUB token_ENDPROC% :EQUB &01 EQUS "END" :EQUB token_END% :EQUB &01 EQUS "ENVELOPE":EQUB token_ENVELOPE%:EQUB &02 EQUS "ELSE" :EQUB token_ELSE% :EQUB &14 EQUS "EVAL" :EQUB token_EVAL% :EQUB &00 EQUS "ERL" :EQUB token_ERL% :EQUB &01 EQUS "ERROR" :EQUB token_ERROR% :EQUB &04 EQUS "EOF" :EQUB token_EOF% :EQUB &01 EQUS "EOR" :EQUB token_EOR% :EQUB &00 EQUS "ERR" :EQUB token_ERR% :EQUB &01 EQUS "EXP" :EQUB token_EXP% :EQUB &00 EQUS "EXT" :EQUB token_EXT% :EQUB &01 EQUS "EDIT" :EQUB token_EDIT% :EQUB &10 EQUS "FOR" :EQUB token_FOR% :EQUB &02 EQUS "FALSE" :EQUB token_FALSE% :EQUB &01 EQUS "FN" :EQUB token_FN% :EQUB &08 EQUS "GOTO" :EQUB token_GOTO% :EQUB &12 EQUS "GET$" :EQUB token_GETd% :EQUB &00 EQUS "GET" :EQUB token_GET% :EQUB &00 EQUS "GOSUB" :EQUB token_GOSUB% :EQUB &12 EQUS "GCOL" :EQUB token_GCOL% :EQUB &02 EQUS "HIMEM" :EQUB token_HIMEM% :EQUB &43 EQUS "INPUT" :EQUB token_INPUT% :EQUB &02 EQUS "IF" :EQUB token_IF% :EQUB &02 EQUS "INKEY$" :EQUB token_INKEYd% :EQUB &00 EQUS "INKEY" :EQUB token_INKEY% :EQUB &00 EQUS "INT" :EQUB token_INT% :EQUB &00 EQUS "INSTR(" :EQUB token_INSTRb% :EQUB &00 EQUS "LIST" :EQUB token_LIST% :EQUB &10 EQUS "LINE" :EQUB token_LINE% :EQUB &00 EQUS "LOAD" :EQUB token_LOAD% :EQUB &02 EQUS "LOMEM" :EQUB token_LOMEM% :EQUB &43 EQUS "LOCAL" :EQUB token_LOCAL% :EQUB &02 EQUS "LEFT$(" :EQUB token_LEFTdb% :EQUB &00 EQUS "LEN" :EQUB token_LEN% :EQUB &00 EQUS "LET" :EQUB token_LET% :EQUB &04 EQUS "LOG" :EQUB token_LOG% :EQUB &00 EQUS "LN" :EQUB token_LN% :EQUB &00 EQUS "MID$(" :EQUB token_MIDdb% :EQUB &00 EQUS "MODE" :EQUB token_MODE% :EQUB &02 EQUS "MOD" :EQUB token_MOD% :EQUB &00 EQUS "MOVE" :EQUB token_MOVE% :EQUB &02 EQUS "NEXT" :EQUB token_NEXT% :EQUB &02 EQUS "NEW" :EQUB token_NEW% :EQUB &01 EQUS "NOT" :EQUB token_NOT% :EQUB &00 EQUS "OLD" :EQUB token_OLD% :EQUB &01 EQUS "ON" :EQUB token_ON% :EQUB &02 EQUS "OFF" :EQUB token_OFF% :EQUB &00 EQUS "OR" :EQUB token_OR% :EQUB &00 EQUS "OPENIN" :EQUB token_OPENIN% :EQUB &00 EQUS "OPENOUT" :EQUB token_OPENOUT% :EQUB &00 EQUS "OPENUP" :EQUB token_OPENUP% :EQUB &00 EQUS "OSCLI" :EQUB token_OSCLI% :EQUB &02 EQUS "PRINT" :EQUB token_PRINT% :EQUB &02 EQUS "PAGE" :EQUB token_PAGE% :EQUB &43 EQUS "PTR" :EQUB token_PTR% :EQUB &43 EQUS "PI" :EQUB token_PI% :EQUB &01 EQUS "PLOT" :EQUB token_PLOT% :EQUB &02 EQUS "POINT(" :EQUB token_POINTb% :EQUB &00 EQUS "PROC" :EQUB token_PROC% :EQUB &0A EQUS "POS" :EQUB token_POS% :EQUB &01 EQUS "RETURN" :EQUB token_RETURN% :EQUB &01 EQUS "REPEAT" :EQUB token_REPEAT% :EQUB &00 EQUS "REPORT" :EQUB token_REPORT% :EQUB &01 EQUS "READ" :EQUB token_READ% :EQUB &02 EQUS "REM" :EQUB token_REM% :EQUB &20 EQUS "RUN" :EQUB token_RUN% :EQUB &01 EQUS "RAD" :EQUB token_RAD% :EQUB &00 EQUS "RESTORE" :EQUB token_RESTORE% :EQUB &12 EQUS "RIGHT$(" :EQUB token_RIGHTdb% :EQUB &00 EQUS "RND" :EQUB token_RND% :EQUB &01 EQUS "RENUMBER":EQUB token_RENUMBER%:EQUB &10 EQUS "STEP" :EQUB token_STEP% :EQUB &00 EQUS "SAVE" :EQUB token_SAVE% :EQUB &02 EQUS "SGN" :EQUB token_SGN% :EQUB &00 EQUS "SIN" :EQUB token_SIN% :EQUB &00 EQUS "SQR" :EQUB token_SQR% :EQUB &00 EQUS "SPC" :EQUB token_SPC% :EQUB &00 EQUS "STR$" :EQUB token_STRd% :EQUB &00 EQUS "STRING$(":EQUB token_STRINGdb%:EQUB &00 EQUS "SOUND" :EQUB token_SOUND% :EQUB &02 EQUS "STOP" :EQUB token_STOP% :EQUB &01 EQUS "TAN" :EQUB token_TAN% :EQUB &00 EQUS "THEN" :EQUB token_THEN% :EQUB &14 EQUS "TO" :EQUB token_TO% :EQUB &00 EQUS "TAB(" :EQUB token_TABb% :EQUB &00 EQUS "TRACE" :EQUB token_TRACE% :EQUB &12 EQUS "TIME" :EQUB token_TIME% :EQUB &43 EQUS "TRUE" :EQUB token_TRUE% :EQUB &01 EQUS "UNTIL" :EQUB token_UNTIL% :EQUB &02 EQUS "USR" :EQUB token_USR% :EQUB &00 EQUS "VDU" :EQUB token_VDU% :EQUB &02 EQUS "VAL" :EQUB token_VAL% :EQUB &00 EQUS "VPOS" :EQUB token_VPOS% :EQUB &01 EQUS "WIDTH" :EQUB token_WIDTH% :EQUB &02 ; EQUS "PAGE" :EQUB tokva_PAGE% :EQUB &00 EQUS "PTR" :EQUB tokva_PTR% :EQUB &00 EQUS "TIME" :EQUB tokva_TIME% :EQUB &00 EQUS "LOMEM" :EQUB tokva_LOMEM% :EQUB &00 EQUS "HIMEM" :EQUB tokva_HIMEM% :EQUB &00 ; EQUS "Missing ":EQUB tokst_Missing% :EQUB &00 ; .token_jumps ; EQUW token_OPENIN EQUW token_PTR EQUW token_PAGE EQUW token_TIME EQUW token_LOMEM EQUW token_HIMEM EQUW token_ABS EQUW token_ACS EQUW token_ADVAL EQUW token_ASC EQUW token_ASN EQUW token_ATN EQUW token_BGET EQUW token_COS EQUW token_COUNT EQUW token_DEG EQUW token_ERL EQUW token_ERR EQUW token_EVAL EQUW token_EXP EQUW token_EXT EQUW token_FALSE EQUW token_FN EQUW token_GET EQUW token_INKEY EQUW token_INSTRb EQUW token_INT EQUW token_LEN EQUW token_LN EQUW token_LOG EQUW token_NOT EQUW token_OPENUP EQUW token_OPENOUT EQUW token_PI EQUW token_POINTb EQUW token_POS EQUW token_RAD EQUW token_RND EQUW token_SGN EQUW token_SIN EQUW token_SQR EQUW token_TAN EQUW token_TO EQUW token_TRUE EQUW token_USR EQUW token_VAL EQUW token_VPOS EQUW token_CHRd EQUW token_GETd EQUW token_INKEYd EQUW token_LEFTdb EQUW token_MIDdb EQUW token_RIGHTdb EQUW token_STRd EQUW token_STRINGdb EQUW token_EOF EQUW token_AUTO EQUW token_DELETE EQUW token_LOAD EQUW token_LIST EQUW token_NEW EQUW token_OLD EQUW token_RENUMBER EQUW token_SAVE EQUW token_EDIT EQUW tokva_PTR EQUW tokva_PAGE EQUW tokva_TIME EQUW tokva_LOMEM EQUW tokva_HIMEM EQUW token_SOUND EQUW token_BPUT EQUW token_CALL EQUW token_CHAIN EQUW token_CLEAR EQUW token_CLOSE EQUW token_CLG EQUW token_CLS EQUW token_DATA EQUW token_DATA EQUW token_DIM EQUW token_DRAW EQUW token_END EQUW token_ENDPROC EQUW token_ENVELOPE EQUW token_FOR EQUW token_GOSUB EQUW token_GOTO EQUW token_GCOL EQUW token_IF EQUW token_INPUT EQUW token_LET EQUW token_LOCAL EQUW token_MODE EQUW token_MOVE EQUW token_NEXT EQUW token_ON EQUW token_VDU EQUW token_PLOT EQUW token_PRINT EQUW token_PROC EQUW token_READ EQUW token_DATA EQUW token_REPEAT EQUW token_REPORT EQUW token_RESTORE EQUW token_RETURN EQUW token_RUN EQUW token_STOP EQUW token_COLOUR EQUW token_TRACE EQUW token_UNTIL EQUW token_WIDTH EQUW token_OSCLI .asm_mnems_lo ; EQUB &4B:EQUB &83:EQUB &84:EQUB &89:EQUB &96:EQUB &B8:EQUB &B9:EQUB &D8 EQUB &D9:EQUB &F0:EQUB &01:EQUB &10:EQUB &81:EQUB &90:EQUB &89:EQUB &93 EQUB &A3:EQUB &A4:EQUB &A9:EQUB &38:EQUB &39:EQUB &78:EQUB &01:EQUB &13 EQUB &21:EQUB &A1:EQUB &C1:EQUB &19:EQUB &18:EQUB &99:EQUB &98:EQUB &63 EQUB &73:EQUB &B1:EQUB &A9:EQUB &C5:EQUB &0C:EQUB &C3:EQUB &D3:EQUB &41 EQUB &C4:EQUB &F2:EQUB &41:EQUB &83:EQUB &B0:EQUB &81:EQUB &43:EQUB &6C EQUB &72:EQUB &EC:EQUB &F2:EQUB &A3:EQUB &C3:EQUB &92:EQUB &9A:EQUB &18 EQUB &19:EQUB &62:EQUB &42:EQUB &34:EQUB &B0:EQUB &72:EQUB &98:EQUB &99 EQUB &81:EQUB &98:EQUB &99:EQUB &14:EQUB &35 ; .asm_mnems_hi ; EQUB &0A:EQUB &0D:EQUB &0D:EQUB &0D:EQUB &0D:EQUB &10:EQUB &10:EQUB &25 EQUB &25:EQUB &39:EQUB &41:EQUB &41:EQUB &41:EQUB &41:EQUB &4A:EQUB &4A EQUB &4C:EQUB &4C:EQUB &4C:EQUB &50:EQUB &50:EQUB &52:EQUB &53:EQUB &53 EQUB &53:EQUB &10:EQUB &25:EQUB &41:EQUB &41:EQUB &41:EQUB &41:EQUB &08 EQUB &08:EQUB &08:EQUB &09:EQUB &09:EQUB &0A:EQUB &0A:EQUB &0A:EQUB &0A EQUB &05:EQUB &15:EQUB &3E:EQUB &04:EQUB &0D:EQUB &30:EQUB &4C:EQUB &06 EQUB &32:EQUB &49:EQUB &49:EQUB &10:EQUB &25:EQUB &0D:EQUB &4E:EQUB &0E EQUB &0E:EQUB &52:EQUB &52:EQUB &09:EQUB &29:EQUB &2A:EQUB &30:EQUB &30 EQUB &4E:EQUB &4E:EQUB &4E:EQUB &3E:EQUB &16 ; .asm_opcodes ; EQUB &00:EQUB &18:EQUB &D8:EQUB &58:EQUB &B8:EQUB &CA:EQUB &88:EQUB &E8 EQUB &C8:EQUB &EA:EQUB &48:EQUB &08:EQUB &68:EQUB &28:EQUB &40:EQUB &60 EQUB &38:EQUB &F8:EQUB &78:EQUB &AA:EQUB &A8:EQUB &BA:EQUB &8A:EQUB &9A EQUB &98:EQUB &3A:EQUB &1A:EQUB &5A:EQUB &DA:EQUB &7A:EQUB &FA:EQUB &90 EQUB &B0:EQUB &F0:EQUB &30:EQUB &D0:EQUB &10:EQUB &50:EQUB &70:EQUB &80 EQUB &21:EQUB &41:EQUB &01:EQUB &61:EQUB &C1:EQUB &A1:EQUB &E1:EQUB &06 EQUB &46:EQUB &26:EQUB &66:EQUB &C6:EQUB &E6:EQUB &9C:EQUB &9C:EQUB &E0 EQUB &C0:EQUB &00:EQUB &10:EQUB &24:EQUB &4C:EQUB &20:EQUB &A2:EQUB &A0 EQUB &81:EQUB &86:EQUB &84 .code_89D7 DEA STA &28 JMP code_90D0 .code_89DD JSR code_8F9D EOR #&5D \ ] BEQ code_89D7 JSR code_9C80 DEC &0A JSR code_8AA8 DEC &0A LDA &28 LSR A BCC code_8A6B LDA &1E ADC #&04 STA &3F LDA &38 JSR code_BDAC LDA &37 JSR code_BDCF LDX #&FC \ TRACE LDY &39 BPL code_8A0B LDY &36 .code_8A0B STY &38 BEQ code_8A28 LDY #&00 .code_8A11 INX BNE code_8A1E JSR code_BAC2 LDX &3F JSR code_BDFF LDX #&FD \ UNTIL .code_8A1E LDA (&3A),Y JSR code_BDCF INY DEC &38 BNE code_8A11 .code_8A28 TXA TAY .code_8A2A INY BEQ code_8A34 LDX #&03 JSR code_BDFF BRA code_8A2A .code_8A34 LDX #&0A LDA (&0B) CMP #&2E \ . BNE code_8A4B .code_8A3C JSR code_BD77 DEX BNE code_8A44 LDX #&01 .code_8A44 INY LDA (&0B),Y CPY &4E BNE code_8A3C .code_8A4B JSR code_BDFF DEY .code_8A4F INY CMP (&0B),Y BEQ code_8A4F .code_8A54 LDA (&0B),Y CMP #&3A \ : BEQ code_8A64 CMP #&0D BEQ code_8A68 .code_8A5E JSR code_BD77 INY BRA code_8A54 .code_8A64 CPY &0A BCC code_8A5E .code_8A68 JSR code_BAC2 .code_8A6B LDY &0A DEY .code_8A6E INY LDA (&0B),Y CMP #&3A \ : BEQ code_8A79 CMP #&0D BNE code_8A6E .code_8A79 JSR code_9C6C LDA (&0B) CMP #&3A \ : BEQ code_8A8E LDA &0C CMP #&07 BNE code_8A8B JMP code_904B .code_8A8B JSR code_9CA2 .code_8A8E JMP code_89DD .code_8A91 JSR code_997D BEQ code_8AF2 BCS code_8AF2 JSR code_BC83 JSR code_ADC6 STA &27 JSR code_B365 JSR code_9338 STY &4E .code_8AA8 JSR code_8F9D LDY #&00 STZ &3D CMP #&3A \ : BEQ code_8B1B CMP #&0D BEQ code_8B1B CMP #&5C \ \ BEQ code_8B1B CMP #&2E \ . BEQ code_8A91 DEC &0A LDX #&03 .code_8AC3 LDY &0A INC &0A LDA (&0B),Y BMI code_8AF5 CMP #&20 BEQ code_8ADF LDY #&05 ASL A ASL A ASL A .code_8AD4 ASL A ROL &3D ROL &3E DEY BNE code_8AD4 DEX BNE code_8AC3 .code_8ADF LDX #asm_mnems_hi-asm_mnems_lo LDA &3D .code_8AE3 CMP asm_mnems_lo-1,X BNE code_8AEF LDY asm_mnems_hi-1,X CPY &3E BEQ code_8B10 .code_8AEF DEX BNE code_8AE3 .code_8AF2 JMP error_syntax_error .code_8AF5 LDX #&29 \ ) CMP #&80 \ AND BEQ code_8B10 INX CMP #&82 \ EOR BEQ code_8B10 INX CMP #&84 \ OR BNE code_8AF2 INC &0A INY LDA (&0B),Y AND #&DF \ DRAW CMP #&41 \ A BNE code_8AF2 .code_8B10 LDA asm_opcodes-1,X STA &29 LDY #&01 CPX #&20 BCS code_8B63 .code_8B1B LDA resint_P%+0 STA &37 STY &39 LDX &28 CPX #&04 LDX resint_P%+1 STX &38 BCC code_8B33 LDA resint_O%+0 LDX resint_O%+1 .code_8B33 STA ws_walker_3A%+0 STX ws_walker_3A%+1 TYA BEQ code_8B62 BPL code_8B40 LDY &36 BEQ code_8B62 .code_8B40 DEY LDA &0029,Y BIT &39 BPL code_8B4B LDA &0600,Y .code_8B4B FNsta_walker_3A_Y INC resint_P%+0 BNE code_8B55 INC resint_P%+1 .code_8B55 BCC code_8B5F INC resint_O%+0 BNE code_8B5F INC resint_O%+1 .code_8B5F TYA BNE code_8B40 .code_8B62 RTS .code_8B63 CPX #&29 \ ) BCS code_8BA3 JSR code_9332 CLC LDA &2A SBC resint_P%+0 TAY LDA &2B SBC resint_P%+1 CPY #&01 DEY SBC #&00 BEQ code_8B98 INA BNE code_8B83 TYA BMI code_8B9C .code_8B83 LDA &28 AND #&02 BEQ code_8B9B .error_out_of_range ; BRK:EQUB &01:EQUS "Out of range":EQUB 0 .code_8B98 TYA BMI code_8B83 .code_8B9B TAY .code_8B9C STY &2A .code_8B9E LDY #&02 JMP code_8B1B .code_8BA3 CPX #&30 \ 0 BCS code_8BBD JSR code_8D9C BNE code_8BC4 JSR code_8D89 .code_8BAF JSR code_9332 .code_8BB2 LDA &2B .code_8BB4 BEQ code_8B9E .error_byte ; BRK:EQUB &02:EQUS "Byte":EQUB 0 .code_8BBD CPX #&41 \ A BNE code_8C24 JSR code_8F9D .code_8BC4 CMP #&28 \ ( BNE code_8C01 JSR code_9332 JSR code_8F9D CMP #&29 \ ) BNE code_8BE9 JSR code_8D86 JSR code_8DA2 BEQ code_8BDE INC &29 BRA code_8BB2 .code_8BDE JSR code_8F9D AND #&DF \ DRAW CMP #&59 \ Y BEQ code_8BB2 BRA error_index .code_8BE9 CMP #&2C \ , BNE error_index JSR code_8D94 BNE error_index JSR code_8F9D CMP #&29 \ ) BEQ code_8BB2 .error_index ; BRK:EQUB &03:EQUS "Index":EQUB 0 .code_8C01 JSR code_9330 JSR code_8DA2 BNE code_8C1B JSR code_8D86 JSR code_8D94 BEQ code_8C1B CMP #&59 \ Y BNE error_index .code_8C15 JSR code_8D89 JMP code_8CBB .code_8C1B JSR code_8D8C .code_8C1E LDA &2B BNE code_8C15 BRA code_8BB4 .code_8C24 CPX #&36 \ 6 BCS code_8C5E JSR code_8F9D AND #&DF \ DRAW CMP #&41 \ A BEQ code_8C43 .code_8C31 JSR code_9330 JSR code_8DA2 BNE code_8C1E JSR code_8D86 JSR code_8D94 BEQ code_8C1E .code_8C41 BRA error_index .code_8C43 INY LDA (&0B),Y JSR code_8E41 BCS code_8C31 LDY #&16 CPX #&34 \ 4 BCC code_8C57 BNE code_8C55 LDY #&36 \ 6 .code_8C55 STY &29 .code_8C57 JSR code_8D8C LDY #&01 BRA code_8CBD .code_8C5E CPX #&38 \ 8 BCS code_8C87 JSR code_9332 LDY #&03 LDX #&01 LDA &2B BNE code_8C74 LDX #&0F LDA #&64 \ d STA &29 DEY .code_8C74 PHY JSR code_8DA2 BNE code_8C84 JSR code_8D94 BNE code_8C41 TXA ADC &29 STA &29 .code_8C84 PLY BRA code_8CBD .code_8C87 CPX #&3C \ < BCS code_8CA7 CPX #&3A \ : BCS code_8C96 JSR code_8D9C BEQ code_8CA4 DEC &0A .code_8C96 JSR code_9332 .code_8C99 BRA code_8C1B .code_8C9B JSR code_8D9C BNE code_8C31 LDY #&89 \ SPC STY &29 .code_8CA4 JMP code_8BAF .code_8CA7 BEQ code_8C9B CPX #&3E \ > BEQ code_8CB8 BCS code_8CE6 JSR code_8F9D CMP #&28 \ ( BEQ code_8CC0 DEC &0A .code_8CB8 JSR code_9332 .code_8CBB LDY #&03 .code_8CBD JMP code_8B1B .code_8CC0 JSR code_8D86 JSR code_8D86 JSR code_9332 JSR code_8F9D CMP #&29 \ ) BEQ code_8CBB CMP #&2C \ , BNE code_8CE3 JSR code_8D86 JSR code_8D94 BNE code_8CE3 JSR code_8F9D CMP #&29 \ ) BEQ code_8CBB .code_8CE3 JMP error_index .code_8CE6 CPX #&44 \ D BCS code_8D37 LDA &3D EOR #&01 AND #&1F PHA CPX #&41 \ A BCS code_8D16 JSR code_8D9C BNE code_8CFD PLA BRA code_8CA4 .code_8CFD JSR code_9330 PLA STA &37 JSR code_8DA2 BNE code_8C99 JSR code_8F9D AND #&1F CMP &37 BNE code_8CE3 JSR code_8D86 BRA code_8C99 .code_8D16 JSR code_9332 PLA STA &37 JSR code_8DA2 BNE code_8D34 JSR code_8F9D AND #&1F CMP &37 BNE code_8CE3 JSR code_8D86 LDA &2B BEQ code_8D34 JMP error_byte .code_8D34 JMP code_8C1E .code_8D37 BNE code_8D44 JSR code_9332 LDA &2A STA &28 LDY #&00 BRA code_8D6E .code_8D44 LDX #&01 LDY &0A INC &0A LDA (&0B),Y AND #&DF \ DRAW CMP #&42 \ B BEQ code_8D64 INX CMP #&57 \ W BEQ code_8D64 LDX #&04 CMP #&44 \ D BEQ code_8D64 CMP #&53 \ S BEQ code_8D74 JMP error_syntax_error .code_8D64 PHX JSR code_9332 LDX #&29 \ ) JSR code_BE06 PLY .code_8D6E JMP code_8B1B .code_8D71 JMP error_type_mismatch .code_8D74 LDA &28 PHA JSR code_9DF3 BNE code_8D71 PLA STA &28 JSR code_9338 LDY #&FF \ OSCLI BRA code_8D6E .code_8D86 JSR code_8D89 .code_8D89 JSR code_8D8C .code_8D8C LDA &29 CLC ADC #&04 STA &29 RTS .code_8D94 JSR code_8F9D AND #&DF \ DRAW CMP #&58 \ X RTS .code_8D9C JSR code_8F9D CMP #&23 \ # RTS .code_8DA2 JSR code_8F9D CMP #&2C \ , RTS .code_8DA8 STA (&37) CLC TYA ADC &37 STA &39 LDY #&00 TYA ADC &38 STA &3A .code_8DB7 INY LDA (&39),Y STA (&37),Y CMP #&0D BNE code_8DB7 RTS .code_8DC1 AND #&0F STA &3D LDX #&00 LDY #&00 .code_8DC9 INY LDA (&37),Y JSR code_8E51 BCC code_8DFF AND #&0F PHA STX &3E LDA &3D ASL A ROL &3E BMI code_8DFC ASL A ROL &3E BMI code_8DFC ADC &3D STA &3D TXA ADC &3E ASL &3D ROL A BMI code_8DFC BCS code_8DFC TAX PLA ADC &3D STA &3D BCC code_8DC9 INX BPL code_8DC9 PHA .code_8DFC PLA SEC RTS .code_8DFF DEY LDA #&8D \ Missing JSR code_8DA8 LDA &37 STA &39 LDA &38 STA &3A JSR code_8E5F JSR code_8E5F JSR code_8E5F .code_8E16 LDA (&39),Y STA (&37),Y DEY BNE code_8E16 LDY #&03 .code_8E1F TXA ORA #&40 \ @ STA (&39),Y DEY LDA &3D AND #&3F \ ? ORA #&40 \ @ STA (&39),Y DEY LDA #&3F \ ? TRB &3D TXA AND #&C0 \ LEFTdb LSR A LSR A ORA &3D LSR A LSR A EOR #&54 \ T STA (&39),Y .code_8E3F CLC RTS .code_8E41 CMP #&7B \ { BCS code_8E3F CMP #&5F \ _ BCS code_8E57 CMP #&5B \ [ BCS code_8E3F CMP #&41 \ A BCS code_8E57 .code_8E51 CMP #&3A \ : BCS code_8E3F CMP #&30 \ 0 .code_8E57 RTS .code_8E58 CMP #&2E \ . BNE code_8E51 RTS .code_8E5D LDA (&37) .code_8E5F INC &37 BNE code_8E9C INC &38 RTS .code_8E66 JSR code_8E5F LDA (&37) RTS .code_8E6C JSR code_8E5F .code_8E6F LDA (&37) CMP #&0D BEQ code_8E9C CMP #&20 BEQ code_8E6C CMP #&26 \ #&26 BNE code_8E8D .code_8E7D JSR code_8E66 JSR code_8E51 BCS code_8E7D CMP #&41 \ A BCC code_8E6F CMP #&47 \ G BCC code_8E7D .code_8E8D CMP #&22 \ " BNE code_8E9D .code_8E91 JSR code_8E66 CMP #&22 \ " BEQ code_8E6C CMP #&0D BNE code_8E91 .code_8E9C RTS .code_8E9D CMP #&3A \ : BNE code_8EAA JSR code_8E5F .code_8EA4 STZ &3B .code_8EA6 STZ &3C BRA code_8E6F .code_8EAA CMP #&2C \ , BEQ code_8E6C CMP #&2A \ * BNE code_8EBE LDA &3B BEQ code_8E9C .code_8EB6 LDX #&FF \ OSCLI STX &3B STZ &3C BRA code_8E6C .code_8EBE CMP #&2E \ . BEQ code_8ED0 JSR code_8E51 BCC code_8EF3 LDX &3C BEQ code_8ED0 JSR code_8DC1 BCC code_8E6C .code_8ED0 LDA (&37) JSR code_8E58 BCC code_8EDC JSR code_8E5F BRA code_8ED0 .code_8EDC LDX #&FF \ OSCLI STX &3B BRA code_8EA6 .code_8EE2 JSR code_8E41 BCC code_8EB6 .code_8EE7 LDA (&37) JSR code_8E41 BCC code_8EDC JSR code_8E5F BRA code_8EE7 .code_8EF3 CMP #&41 \ A BCC code_8EB6 CMP #&58 \ X BCS code_8EE2 LDX #token_table MOD 256 STX &39 LDX #token_table DIV 256 STX &3A .code_8F03 LDY #&00 CMP (&39) BCC code_8EE7 BNE code_8F1A .code_8F0B INY LDA (&39),Y BMI code_8F41 CMP (&37),Y BEQ code_8F0B LDA (&37),Y CMP #&2E \ . BEQ code_8F25 .code_8F1A INY LDA (&39),Y BPL code_8F1A CMP #&FE \ WIDTH BNE code_8F32 BCS code_8EE7 .code_8F25 INY .code_8F26 LDA (&39),Y BMI code_8F41 INC &39 BNE code_8F26 INC &3A BRA code_8F26 .code_8F32 SEC INY TYA ADC &39 STA &39 BCC code_8F3D INC &3A .code_8F3D LDA (&37) BRA code_8F03 .code_8F41 TAX INY LDA (&39),Y STA &3D DEY LSR A BCC code_8F52 LDA (&37),Y JSR code_8E41 BCS code_8EE7 .code_8F52 TXA BIT &3D BVC code_8F5D LDX &3B BNE code_8F5D ADC #&40 \ @ .code_8F5D DEY JSR code_8DA8 LDX #&FF \ OSCLI LDA &3D LSR A LSR A BCC code_8F6D STX &3B STZ &3C .code_8F6D LSR A BCC code_8F74 STZ &3B STZ &3C .code_8F74 LSR A BCC code_8F87 PHA LDY #&01 .code_8F7A LDA (&37),Y JSR code_8E41 BCC code_8F86 JSR code_8E5F BRA code_8F7A .code_8F86 PLA .code_8F87 LSR A BCC code_8F8C STX &3C .code_8F8C LSR A BCS code_8F9C JMP code_8E6C .code_8F92 LDY &1B INC &1B LDA (&19),Y CMP #&20 BEQ code_8F92 .code_8F9C RTS .code_8F9D LDY &0A INC &0A LDA (&0B),Y CMP #&20 BEQ code_8F9D .code_8FA7 RTS .code_8FA8 JSR code_8F92 CMP #&2C \ , RTS .code_8FAE JSR code_9774 JSR code_BC66 .code_8FB4 JSR code_8F92 CMP #&2C \ , BEQ code_8FA7 .error_missing_comma ; BRK:EQUB &05:EQUS CHR$(tokst_Missing%) + ",":EQUB 0 .token_CHAIN ; JSR code_BE17 BRA code_8FDA .token_OLD ; JSR code_9C6A LDA &18 STA &38 STZ &37 LDA #&00 STA (&37),Y JSR code_BE25 BRA code_9048 .token_RUN ; JSR code_9C6A .code_8FDA JSR code_BBDC LDA &18 STA &0C STZ &0B BRA code_905C .token_LOAD ; JSR code_BE17 BRA code_9048 .token_END ; JSR code_9C6A JSR code_BE25 BRA code_904B .code_8FF2 LDA #&F2 \ PROC JSR code_AE60 JSR code_BF22 TAX JSR code_BF22 STA &2B STX &2A LDX #&14 .code_9004 DEX BEQ code_9045 JSR code_BF22 CMP #&0D BEQ code_9045 CMP #&40 \ @ BNE code_9004 JSR code_BF22 CMP #&0D BNE code_9045 JSR code_BF3E .code_901C LDY #&00 STZ &0B LDA #&07 STA &0C .code_9024 LDA (&00) BEQ code_9048 STA (&0B),Y INY BEQ code_9045 INC &00 BNE code_9033 INC &01 .code_9033 CMP #&0D BNE code_9024 LDA &01 CMP &07 BCS code_9048 JSR code_BB1B BRA code_901C .token_NEW ; JSR code_9C6A .code_9045 JSR code_BF3E .code_9048 JSR code_BBDC .code_904B LDY #&07 STY &0C STZ &0B JSR code_B2E0 LDA #&3E \ > JSR os_wrch% JSR code_BAA4 .code_905C LDX #&FF \ OSCLI TXS JSR code_B2E0 JSR code_BB1B BCS code_9048 BRA code_90E3 .code_9069 JSR code_9C80 LDX &0B LDY &0C JSR os_cli% .token_DATA ; LDA #&0D LDY &0A DEY .code_9078 INY CMP (&0B),Y BNE code_9078 .code_907D JSR code_9C80 BRA code_9086 .code_9082 CMP #&0D BNE token_DATA .code_9086 LDA &0C CMP #&07 BEQ code_904B LDY #&01 LDA (&0B),Y BMI code_904B LDX &20 BEQ code_90A0 STA &2B INY LDA (&0B),Y STA &2A JSR code_9D0F .code_90A0 LDY #&04 STY &0A BRA code_90D2 .code_90A6 LDA #&03 STA &28 JMP code_89DD .code_90AD JMP code_BED3 .code_90B0 LDY &0A DEY LDA (&0B),Y CMP #&2A \ * BEQ code_9069 CMP #&5B \ [ BEQ code_90A6 CMP #&A2 \ EXT BEQ code_90AD CMP #&3D \ = BEQ code_9123 .code_90C5 DEC &0A .code_90C7 JSR code_9C6A .code_90CA LDA (&0B) CMP #&3A \ : BNE code_9082 .code_90D0 LDY &0A .code_90D2 INC &0A LDA (&0B),Y CMP #&20 BEQ code_90D0 CMP #&CF \ PTR BCC code_90EA .code_90DE ASL A TAX JMP (token_jumps-14*2,X) .code_90E3 JSR code_8F9D CMP #&C6 \ AUTO BCS code_90DE .code_90EA LDX &0B STX &19 LDX &0C STX &1A JSR code_99D6 BNE code_9112 BCS code_90B0 STX &1B JSR code_9C4A JSR code_9923 LDX #&05 CPX ws_vartyp_2C% BNE code_9108 INX .code_9108 JSR code_9952 DEC &0A .token_LET ; JSR code_997D BEQ code_9146 .code_9112 BCC code_9135 JSR code_BC66 JSR code_9C16 LDA &27 BNE error_type_mismatch JSR code_916E BRA code_90CA .code_9123 TSX CPX #&FC \ TRACE BCS error_no_fn LDA &01FF CMP #&A4 \ FN BNE error_no_fn JSR code_9DF3 JMP code_9C55 .code_9135 LDA ws_varptr_2A%+0 PHA LDA ws_varptr_2A%+1 PHA LDA ws_vartyp_2C% PHA JSR code_9C16 JSR code_B365 BRA code_90CA .code_9146 JMP error_syntax_error .token_STOP ; JSR code_9C6A .error_stop ; BRK:EQUB &00:EQUS CHR$(token_STOP%) ; .error_no_fn ; BRK:EQUB &07:EQUS "No " + CHR$(token_FN%) ; .error_type_mismatch ; BRK:EQUB &06:EQUS "Type mismatch" ; .error_no_room ; BRK:EQUB &00:EQUS "No room" ; EQUB &00 .code_916E JSR code_BD26 .code_9171 LDA ws_vartyp_2C% CMP #&80 \ AND BEQ code_91EF LDY #&02 FNlda_varptr_2A_Y CMP &36 BCS code_91D1 LDA ws_vartop_02%+0 STA &2C LDA ws_vartop_02%+1 STA &2D LDA &36 CMP #&08 BCC code_9193 ADC #&07 BCC code_9193 LDA #&FF \ OSCLI .code_9193 CLC PHA TAX FNlda_varptr_2A_Y FNadc_varptr_2A_0 EOR ws_vartop_02%+0 BNE code_91AD DEY FNadc_varptr_2A_Y EOR ws_vartop_02%+1 BNE code_91AD STA &2D TXA INY SEC FNsbc_varptr_2A_Y TAX .code_91AD TXA CLC ADC ws_vartop_02%+0 TAY LDA ws_vartop_02%+1 ADC #&00 TAX CPY &04 SBC &05 BCS error_no_room STY ws_vartop_02%+0 STX ws_vartop_02%+1 PLA LDY #&02 FNsta_varptr_2A_Y DEY LDA &2D BEQ code_91D1 FNsta_varptr_2A_Y LDA &2C FNsta_varptr_2A_0 .code_91D1 LDY #&03 LDA &36 FNsta_varptr_2A_Y BEQ code_91EE LDY #&01 FNlda_varptr_2A_Y STA &2D FNlda_varptr_2A_0 STA &2C DEY .code_91E4 LDA &0600,Y FNsta_walker_2C_Y INY CPY &36 BNE code_91E4 .code_91EE RTS .code_91EF JSR code_BE6B CPY #&00 BEQ code_9201 .code_91F6 LDA &0600,Y FNsta_varptr_2A_Y DEY BNE code_91F6 LDA &0600 .code_9201 FNsta_varptr_2A_0 RTS .code_9204 JSR code_BA6C .code_9207 PHY JSR code_8FA8 BNE code_924A JSR code_9DFF JSR code_A545 PLY LDA &27 JSR os_bput% TAX BEQ code_9237 BMI code_922A LDX #&03 .code_9220 LDA &2A,X JSR os_bput% DEX BPL code_9220 BRA code_9207 .code_922A LDX #&04 .code_922C LDA &046C,X JSR os_bput% DEX BPL code_922C BRA code_9207 .code_9237 LDA &36 JSR os_bput% TAX BEQ code_9207 .code_923F LDA &05FF,X JSR os_bput% DEX BNE code_923F BRA code_9207 .code_924A PLA STY &0A JMP code_90C7 .token_PRINT ; JSR code_8D9C BEQ code_9204 DEC &0A BRA code_926E .code_9259 LDA resint_AT%+0 BEQ code_926E LDA &1E .code_9260 BEQ code_926E SBC resint_AT%+0 BCS code_9260 TAY .code_9268 JSR code_BDD2 INY BNE code_9268 .code_926E CLC LDA resint_AT%+0 STA &14 .code_9274 ROR &15 .code_9276 JSR code_8F9D CMP #&3A \ : BEQ code_9285 CMP #&0D BEQ code_9285 CMP #&8B \ ELSE BNE code_929E .code_9285 JSR code_BAC2 .code_9288 JMP code_90C5 .code_928B STZ &14 STZ &15 JSR code_8F9D CMP #&3A \ : BEQ code_9288 CMP #&0D BEQ code_9288 CMP #&8B \ ELSE BEQ code_9288 .code_929E CMP #&7E \ ~ BEQ code_9274 CMP #&2C \ , BEQ code_9259 CMP #&3B \ ; BEQ code_928B JSR code_933D BCC code_9276 LDA &14 PHA LDA &15 PHA DEC &1B JSR code_9DFF PLA STA &15 PLA STA &14 LDA &1B STA &0A TYA BEQ code_92DA JSR code_A181 LDA &14 SEC SBC &36 BCC code_92DA BEQ code_92DA TAY .code_92D4 JSR code_BDD2 DEY BNE code_92D4 .code_92DA LDA &36 BEQ code_9276 LDY #&00 .code_92E0 LDA &0600,Y JSR code_BDD8 INY CPY &36 BNE code_92E0 BRA code_9276 .code_92ED JMP error_missing_comma .code_92F0 LDA &2A PHA JSR code_976C LDA #&1F JSR os_wrch% PLA JSR os_wrch% JSR code_990F BRA code_932D .code_9304 JSR code_9774 JSR code_8FA8 BEQ code_92F0 CMP #&29 \ ) BNE code_92ED LDA &2A SBC &1E BEQ code_932D TAX BCS code_9325 JSR code_BAC2 BRA code_9321 .code_931E JSR code_9779 .code_9321 LDX &2A BEQ code_932D .code_9325 JSR code_BDFF BRA code_932D .code_932A JSR code_BAC2 .code_932D CLC BRA code_9338 .code_9330 DEC &0A .code_9332 JSR code_9DF3 JSR code_9784 .code_9338 LDY &1B STY &0A RTS .code_933D LDX &0B STX &19 LDX &0C STX &1A LDX &0A STX &1B CMP #&27 \ ' BEQ code_932A CMP #&8A \ TABb BEQ code_9304 CMP #&89 \ SPC BEQ code_931E .code_9355 SEC .code_9356 RTS .error_missing_double_quote ; BRK:EQUB &09:EQUS CHR$(tokst_Missing%) + """":EQUB 0 .code_935C JSR code_8F9D JSR code_933D BCC code_9356 CMP #&22 \ " BNE code_9355 .code_9368 INY LDA (&19),Y CMP #&0D BEQ error_missing_double_quote CMP #&22 \ " BNE code_937C INY STY &1B LDA (&19),Y CMP #&22 \ " BNE code_932D .code_937C JSR code_BDD8 BRA code_9368 .token_CALL ; JSR code_9DF3 JSR code_9781 JSR code_BC66 STZ &0600 LDY #&00 .code_938F PHY JSR code_8FA8 BNE code_93B4 LDY &1B JSR code_99D0 BEQ code_93C4 PLY INY LDA ws_varptr_2A%+0 STA &0600,Y INY LDA ws_varptr_2A%+1 STA &0600,Y INY LDA ws_vartyp_2C% STA &0600,Y INC &0600 BRA code_938F .code_93B4 PLY DEC &1B JSR code_9C5A JSR code_BD26 JSR code_93C7 CLD JMP code_90CA .code_93C4 JMP error_no_such_variable .code_93C7 LDA resint_C%+0 LSR A LDA resint_A%+0 LDX resint_X%+0 LDY resint_Y%+0 JMP (&002A) .code_93D7 JMP error_syntax_error .token_DELETE ; JSR code_9BE2 BCC code_93D7 JSR code_BC66 JSR code_8DA2 BNE code_93D7 JSR code_9BE2 BCC code_93D7 JSR code_9C6A LDA &2A STA &39 LDA &2B STA &3A JSR code_BD26 .code_93FA JSR code_BAC8 JSR code_9C8E JSR code_BF2F LDA &39 CMP &2A LDA &3A SBC &2B BCS code_93FA JMP code_9048 .code_9410 LDA #&0A JSR code_AE60 JSR code_9BE2 JSR code_BC66 LDA #&0A JSR code_AE60 JSR code_8DA2 BNE code_9433 JSR code_9BE2 LDA &2B BNE error_silly LDA &2A BEQ error_silly JMP code_9C6A .code_9433 JMP code_9C74 .code_9436 LDA &12 STA &3B LDA &13 STA &3C .code_943E LDA &18 STA &38 LDY #&01 STY &37 RTS .token_RENUMBER ; JSR code_9410 LDX #&39 \ 9 JSR code_BD48 JSR code_BE25 JSR code_9436 .code_9455 LDA (&37) BMI code_9487 STA (&3B) LDA (&37),Y STA (&3B),Y SEC TYA ADC &3B STA &3B BCC code_9469 INC &3C .code_9469 CMP &06 LDA &3C SBC &07 BCS error_renumber_space JSR code_953D BRA code_9455 .error_renumber_space ; BRK:EQUB &00:EQUS CHR$(token_RENUMBER%) + " space" ; .error_silly ; BRK:EQUB &00:EQUS "Silly" ; EQUB &00 .code_9487 JSR code_943E .code_948A LDA (&37) BMI code_94AA LDA &3A STA (&37) LDA &39 STA (&37),Y CLC LDA &39 ADC &2A STA &39 LDA #&00 ADC &3A AND #&7F STA &3A JSR code_953D BRA code_948A .code_94AA LDA &18 STA &0C STZ &0B .code_94B0 LDY #&01 LDA (&0B),Y BMI code_951D LDY #&04 STZ &2C .code_94BA LDA (&0B),Y LDX &2C BNE code_94C8 CMP #&8D \ Missing BEQ code_94DE CMP #&F4 \ REM BEQ code_94D5 .code_94C8 INY CMP #&22 \ " BNE code_94D1 EOR &2C STA &2C .code_94D1 CMP #&0D BNE code_94BA .code_94D5 LDY #&03 LDA (&0B),Y JSR code_9CB8 BRA code_94B0 .code_94DE JSR code_9BEE JSR code_9436 .code_94E4 LDA (&37) BMI code_951F LDA (&3B) CMP &2B BNE code_950D LDA (&3B),Y CMP &2A BNE code_950D LDA (&37),Y STA &3D LDA (&37) TAX LDY &0A DEY LDA &0B STA &39 LDA &0C STA &3A JSR code_8E1F .code_9509 LDY &0A BRA code_94BA .code_950D CLC JSR code_953D LDA &3B ADC #&02 STA &3B BCC code_94E4 INC &3C BRA code_94E4 .code_951D BRA code_9579 .code_951F JSR int_inline_string EQUS "Failed at " LDA (&0B),Y STA &2B INY LDA (&0B),Y STA &2A JSR code_A0E8 JSR code_BAC2 BRA code_9509 .code_953D INY LDA (&37),Y LDY #&01 ADC &37 STA &37 BCC code_954B INC &38 CLC .code_954B RTS .token_AUTO ; JSR code_9410 LDA &2A PHA JSR code_BD26 .code_9555 JSR code_BC66 JSR code_A0EC JSR code_BAA4 JSR code_BD26 JSR code_8EA4 LDY #&00 JSR code_BB38 JSR code_BBDC PLA PHA CLC ADC &2A STA &2A BCC code_9555 INC &2B BPL code_9555 .code_9579 JMP code_9048 .code_957C JMP error_dim_space .code_957F DEC &0A JSR code_997D BEQ error_bad_dim BCS error_bad_dim JSR code_BC83 JSR code_9774 JSR code_BF2F LDA &2D ORA &2C BNE error_bad_dim CLC LDA &2A ADC &02 TAY LDA &2B ADC &03 TAX CPY &04 SBC &05 BCS code_957C LDA &02 STA &2A LDA &03 STA &2B STY &02 STX &03 LDA #&40 \ @ STA &27 JSR code_B365 JSR code_9338 .code_95BE JSR code_8DA2 BEQ token_DIM JMP code_90C5 .code_95C6 LDX #&3F \ ? JSR code_BD48 .code_95CB LDX #&00 LDY #&00 .code_95CF LSR &40 ROR &3F BCC code_95E0 CLC TYA ADC &2A TAY TXA ADC &2B TAX BCS error_bad_dim .code_95E0 ASL &2A ROL &2B BCS error_bad_dim LDA &3F ORA &40 BNE code_95CF STY &2A STX &2B RTS .error_bad_dim ; BRK:EQUB &0A:EQUS "Bad " + CHR$(token_DIM%):EQUB 0 .token_DIM ; JSR code_8F9D TYA CLC ADC &0B LDX &0C BCC code_9606 INX CLC .code_9606 SBC #&00 STA &37 TXA SBC #&00 STA &38 LDX #&05 STX &3F LDX &0A JSR code_9BBA CPY #&01 BEQ error_bad_dim CMP #&28 \ ( BEQ code_9635 CMP #&24 \ $ BEQ code_9628 CMP #&25 \ % BNE code_9632 .code_9628 DEC &3F INY INX LDA (&37),Y CMP #&28 \ ( BEQ code_9635 .code_9632 JMP code_957F .code_9635 INY STX &0A JSR code_8149 .code_963B BNE error_bad_dim JSR code_9923 LDX #&01 JSR code_9952 LDA &3F PHA LDA #&01 PHA JSR code_AE60 .code_964E JSR code_BC66 JSR code_9332 LDA &2B AND #&C0 \ LEFTdb ORA &2C ORA &2D BNE error_bad_dim JSR code_BF2F PLY LDA &2A FNsta_vartop_02_Y INY LDA &2B FNsta_vartop_02_Y INY PHY JSR code_95C6 JSR code_8DA2 BEQ code_964E CMP #&29 \ ) BNE code_963B PLX PLA PHX STA &3F STZ &40 JSR code_95CB PLA PHA ADC &2A STA &2A BCC code_968D INC &2B .code_968D LDA ws_vartop_02%+1 STA ws_walker_37%+1 LDA ws_vartop_02%+0 STA ws_walker_37%+0 CLC ADC &2A TAY LDA &2B ADC ws_vartop_02%+1 BCS error_dim_space TAX CPY &04 SBC &05 BCS error_dim_space STY ws_vartop_02%+0 STX ws_vartop_02%+1 PLA FNsta_walker_37_0 ADC ws_walker_37%+0 TAY LDA #&00 STZ ws_walker_37%+0 BCC code_96B8 INC ws_walker_37%+1 .code_96B8 FNsta_walker_37_Y INY BNE code_96BF INC ws_walker_37%+1 .code_96BF CPY ws_vartop_02%+0 BNE code_96B8 CPX ws_walker_37%+1 BNE code_96B8 JMP code_95BE .error_dim_space ; BRK:EQUB &0B:EQUS CHR$(token_DIM%) + " space":EQUB 0 .tokva_HIMEM JSR code_977E LDA &2A STA &06 STA &04 LDA &2B STA &07 STA &05 BRA code_9700 .tokva_LOMEM JSR code_977E LDA &2A STA &00 STA &02 LDA &2B STA &01 STA &03 JSR code_BBEB BRA code_9700 .tokva_PAGE JSR code_977E LDA &2B STA &18 .code_9700 JMP code_90CA .token_CLEAR ; JSR code_9C6A JSR code_BBDC BRA code_9700 .token_TRACE ; JSR code_9BE2 BCS code_971B CMP #&EE \ ON BEQ code_972C CMP #&87 \ OFF BEQ code_9735 JSR code_9332 .code_971B JSR code_9C6A LDA &2A STA &21 LDA &2B .code_9724 STA &22 LDA #&FF \ OSCLI .code_9728 STA &20 BRA code_9700 .code_972C INC &0A JSR code_9C6A LDA #&FF \ OSCLI BNE code_9724 .code_9735 INC &0A JSR code_9C6A LDA #&00 BRA code_9728 .tokva_TIME INY LDA (&0B),Y CMP #&24 \ $ BEQ code_9753 JSR code_977E STZ &2E LDX #&2A \ * LDY #&00 LDA #&02 .code_9750 JMP code_B34C .code_9753 INC &0A JSR code_9C0A LDA &27 BNE code_979C LDA #&0F LDY &36 STY &05FF LDX #&FF \ OSCLI LDY #&05 BRA code_9750 .code_9769 JSR code_BC91 .code_976C JSR code_ADEE BRA code_9784 .code_9771 JSR code_8FB4 .code_9774 JSR code_9DFF BRA code_9784 .code_9779 JSR code_AD78 BRA code_9784 .code_977E JSR code_9C0A .code_9781 LDA &27 .code_9783 TAY .code_9784 BEQ code_979C BPL code_979B .code_9788 JSR code_834F .code_978B LDA &31 STA &2D LDA &32 STA &2C LDA &33 STA &2B LDA &34 STA &2A .code_979B RTS .code_979C JMP error_type_mismatch .code_979F JSR code_AD78 .code_97A2 BEQ code_979C BMI code_979B JMP code_828D .token_PROC ; LDA &0B STA &19 LDA &0C STA &1A LDA &0A STA &1B LDA #&F2 \ PROC JSR code_B057 JSR code_9C5A JMP code_90CA .code_97C0 LDA #&0D FNsta_varptr_2A_0 BRA code_97EE .code_97C6 CPY #&80 \ AND BEQ code_97C0 LDY #&03 LDA #&00 FNsta_varptr_2A_Y BEQ code_97EE .token_LOCAL ; TSX CPX #&FC \ TRACE BCS error_not_local JSR code_997D BEQ code_97FE JSR code_B1BF LDY ws_vartyp_2C% BMI code_97C6 JSR code_BC83 JSR token_FALSE STA &27 JSR code_B365 .code_97EE TSX INC &0106,X LDY &1B STY &0A JSR code_8DA2 BEQ token_LOCAL JMP code_90C5 .code_97FE JMP code_90C7 .error_not_local ; BRK:EQUB &0C:EQUS "Not " + CHR$(token_LOCAL%) ; .error_bad_mode ; BRK:EQUB &19:EQUS "Bad " + CHR$(token_MODE%) ; EQUB &00 .token_GCOL ; JSR code_9332 LDA &2A PHA JSR code_9771 JSR code_9C5A LDA #&12 JSR os_wrch% PLA BRA code_986A .token_COLOUR ; JSR code_9332 JSR code_9C6A LDA #&11 BRA code_986A .token_MODE ; JSR code_9332 JSR code_9C6A JSR code_BE8B INX BNE code_9866 INY BNE code_9866 LDA &04 CMP &06 BNE error_bad_mode LDA &05 CMP &07 BNE error_bad_mode LDX &2A LDA #&85 \ ERROR JSR os_byte% CPX &02 TYA SBC &03 BCC error_bad_mode CPX &12 TYA SBC &13 BCC error_bad_mode STX &06 STX &04 STY &07 STY &05 .code_9866 STZ &1E LDA #&16 .code_986A JSR os_wrch% LDA &2A BRA code_98BD .token_MOVE ; LDA #&04 BRA code_9877 .token_DRAW ; LDA #&05 .code_9877 PHA JSR code_9DF3 JSR code_9781 BRA code_9889 .token_PLOT ; JSR code_9332 LDA &2A PHA JSR code_9771 .code_9889 JSR code_BC66 JSR code_9771 JSR code_9C5A LDA #&19 JSR os_wrch% PLA JSR os_wrch% JSR code_BD46 LDA &37 JSR os_wrch% LDA &38 JSR os_wrch% JSR code_990F LDA &2B BRA code_98BD .token_CLG ; JSR code_9C6A LDA #&10 BRA code_98BD .token_CLS ; JSR code_9C6A STZ &1E LDA #&0C .code_98BD JSR os_wrch% .code_98C0 JMP code_90CA .token_REPORT ; JSR code_9C6A JSR code_BAC2 LDY #&01 .code_98CB LDA (&FD),Y BEQ code_98C0 JSR code_BD77 INY BNE code_98CB BRA code_98C0 .code_98D7 LDA &2B JSR os_wrch% .token_VDU ; JSR code_8F9D .code_98DF CMP #&3A \ : BEQ code_990C CMP #&0D BEQ code_990C CMP #&8B \ ELSE BEQ code_990C DEC &0A JSR code_9332 JSR code_990F JSR code_8DA2 BEQ token_VDU CMP #&3B \ ; BEQ code_98D7 CMP #&7C \ | BNE code_98DF LDA #&00 LDY #&09 .code_9904 JSR os_wrch% DEY BNE code_9904 BRA token_VDU .code_990C JMP code_90C5 .code_990F LDA &2A JMP (&020E) .code_9914 LDY #&01 LDA (&37),Y TAX LDA #&F6 \ REPORT CPX #&F2 \ PROC BEQ code_9928 LDA #&F8 \ RETURN BRA code_9928 .code_9923 LDY #&01 LDA (&37),Y ASL A .code_9928 LDX #&04 .code_992A STA ws_walker_3A%+0 STX ws_walker_3A%+1 FNlda_walker_3A_Y BEQ code_9937 TAX FNlda_walker_3A_0 BRA code_992A .code_9937 LDA ws_vartop_02%+1 FNsta_walker_3A_Y LDA ws_vartop_02%+0 FNsta_walker_3A_0 LDA #&00 FNsta_vartop_02_Y INY CPY &39 BEQ code_9979 .code_9948 LDA (&37),Y FNsta_vartop_02_Y INY CPY &39 BNE code_9948 RTS .code_9952 LDA #&00 .code_9954 FNsta_vartop_02_Y INY DEX BNE code_9954 .code_995A CLC TYA ADC ws_vartop_02%+0 BCC code_9962 INC ws_vartop_02%+1 .code_9962 LDY ws_vartop_02%+1 CPY &05 BCC code_9977 BNE code_996E CMP &04 BCC code_9977 .code_996E LDA #&00 LDY #&01 FNsta_walker_3A_Y JMP error_no_room .code_9977 STA ws_vartop_02%+0 .code_9979 RTS .code_997A JSR code_9952 .code_997D JSR code_99C4 BNE code_999F BCS code_999F JSR code_9923 LDX #&05 CPX ws_vartyp_2C% BNE code_997A INX BRA code_997A .code_9990 CMP #&21 \ ! BEQ code_99A0 CMP #&24 \ $ BEQ code_99AB EOR #&3F \ ? BEQ code_99A2 LDA #&00 SEC .code_999F RTS .code_99A0 LDA #&04 .code_99A2 PHA INC &1B JSR code_9779 JMP code_9A99 .code_99AB INC &1B JSR code_9779 LDA &2B BEQ error_dollar_range LDA #&80 \ AND STA &2C SEC RTS .error_dollar_range ; BRK:EQUB &08:EQUS "$ range":EQUB 0 .code_99C4 LDA &0B STA &19 LDA &0C STA &1A LDY &0A DEY .code_99CF INY .code_99D0 LDA (&19),Y CMP #&20 BEQ code_99CF .code_99D6 STY &1B .code_99D8 CMP #&40 \ @ BCC code_9990 CMP #&5B \ Z +1 BCS code_99FA ASL A ASL A STA ws_varptr_2A%+0 INY LDA (&19),Y CMP #&25 \ % BNE code_99FA LDA #&04 STA ws_varptr_2A%+1 LDX #&04 STX ws_vartyp_2C% INY LDA (&19),Y CMP #&28 \ ( BNE code_9A67 .code_99FA LDX #&05 STX ws_vartyp_2C% CLC LDY &1A LDA &1B TAX BNE code_9A0E DEA ADC &19 BCS code_9A14 DEY BRA code_9A14 .code_9A0E DEA ADC &19 BCC code_9A14 INY .code_9A14 STA &37 STY &38 LDY #&01 LDA (&37),Y CMP #&41 \ A BCS code_9A3A CMP #&30 \ 0 BCC code_9A46 CMP #&3A \ 9 +1 BCS code_9A46 .code_9A28 INX INY LDA (&37),Y CMP #&41 \ A BCS code_9A3A CMP #&30 \ 0 BCC code_9A46 CMP #&3A \ 9 +1 BCC code_9A28 BRA code_9A46 .code_9A3A CMP #&5B \ Z +1 BCC code_9A28 CMP #&5F \ _ BCC code_9A46 CMP #&7B \ z +1 BCC code_9A28 .code_9A46 CPY #&01 BEQ code_9A76 CMP #&24 \ $ BEQ code_9AA5 CMP #&25 \ % BNE code_9A58 DEC ws_vartyp_2C% INX INY LDA (&37),Y .code_9A58 CMP #&28 \ ( BEQ code_9AA0 JSR code_8149 BEQ code_9A75 STX &1B .code_9A63 LDY &1B LDA (&19),Y .code_9A67 CMP #&21 \ ! BEQ code_9A79 EOR #&3F \ ? BEQ code_9A7B CLC STY &1B LDA #&FF \ OSCLI RTS .code_9A75 CLC .code_9A76 LDA #&00 RTS .code_9A79 LDA #&04 .code_9A7B PHA INY STY &1B JSR code_B1DE JSR code_9784 LDA &2B PHA LDA &2A PHA JSR code_9779 CLC PLA ADC &2A STA &2A PLA ADC &2B STA &2B .code_9A99 PLA STA ws_vartyp_2C% CLC LDA #&FF \ OSCLI RTS .code_9AA0 JSR code_9AC9 BRA code_9A63 .code_9AA5 DEC ws_vartyp_2C% INX INY LDA (&37),Y CMP #&28 \ ( BEQ code_9ABC JSR code_8149 BEQ code_9A75 STX &1B .code_9AB6 LDA #&81 \ DIV STA ws_vartyp_2C% SEC RTS .code_9ABC JSR code_9AC9 BRA code_9AB6 .error_array ; BRK:EQUB &0E:EQUS "Array":EQUB 0 .code_9AC9 INX INY JSR code_8149 BEQ error_array STX &1B LDA ws_vartyp_2C% PHA LDA ws_varptr_2A%+0 PHA LDA ws_varptr_2A%+1 PHA FNlda_varptr_2A_0 CMP #&04 BCC code_9B4C JSR token_FALSE INC &2D .code_9AE6 JSR code_BC66 JSR code_9774 INC &1B CPX #&2C \ , BNE error_array LDX #&39 \ 9 JSR code_BD48 PLA STA ws_varptr_37%+1 PLY STY ws_varptr_37%+0 PHY PHA LDY &3C JSR code_9B97 STY &2D FNlda_varptr_37_Y STA &3F INY FNlda_varptr_37_Y STA &40 LDA &2A ADC &39 STA &2A LDA &2B ADC &3A STA &2B JSR code_95CB SEC FNlda_varptr_37_0 SBC &2D CMP #&03 BCS code_9AE6 JSR code_BC66 JSR code_976C PLA STA ws_varptr_37%+1 PLA STA ws_varptr_37%+0 LDX #&39 \ 9 JSR code_BD48 LDY &3C JSR code_9B97 CLC LDA &39 ADC &2A STA &2A LDA &3A ADC &2B STA &2B BCC code_9B5A .code_9B4C JSR code_976C PLA STA ws_varptr_37%+1 PLA STA ws_varptr_37%+0 LDY #&01 JSR code_9B97 .code_9B5A PLA STA ws_vartyp_2C% CMP #&05 BNE code_9B78 LDX &2B LDA &2A ASL &2A ROL &2B ASL &2A ROL &2B ADC &2A STA &2A TXA ADC &2B STA &2B BRA code_9B80 .code_9B78 ASL &2A ROL &2B ASL &2A ROL &2B .code_9B80 TYA ADC &2A STA &2A BCC code_9B8A INC &2B CLC .code_9B8A LDA ws_varptr_37%+0 ADC &2A STA ws_varptr_2A%+0 LDA ws_varptr_37%+1 ADC &2B STA ws_varptr_2A%+1 RTS .code_9B97 LDA &2B AND #&C0 \ LEFTdb ORA &2C ORA &2D BNE error_subscript LDA &2A FNcmp_varptr_37_Y INY LDA &2B FNsbc_varptr_37_Y BCS error_subscript INY RTS .error_subscript ; BRK:EQUB &0F:EQUS "Subscript":EQUB 0 .code_9BBA LDY #&01 .code_9BBC LDA (&37),Y CMP #&30 \ 0 BCC code_9BDA CMP #&40 \ @ BCS code_9BD2 CMP #&3A \ : BCS code_9BDA CPY #&01 BEQ code_9BDA .code_9BCE INX INY BNE code_9BBC .code_9BD2 CMP #&5F \ _ BCS code_9BDB CMP #&5B \ [ BCC code_9BCE .code_9BDA RTS .code_9BDB CMP #&7B \ { BCC code_9BCE RTS .code_9BE0 INC &0A .code_9BE2 LDY &0A LDA (&0B),Y CMP #&20 BEQ code_9BE0 CMP #&8D \ Missing BNE code_9C08 .code_9BEE INY LDA (&0B),Y ASL A ASL A TAX AND #&C0 \ LEFTdb INY EOR (&0B),Y STA &2A TXA ASL A ASL A INY EOR (&0B),Y STA &2B INY STY &0A SEC RTS .code_9C08 CLC RTS .code_9C0A LDA &0B STA &19 LDA &0C STA &1A LDA &0A STA &1B .code_9C16 LDY &1B INC &1B LDA (&19),Y CMP #&20 BEQ code_9C16 CMP #&3D \ = BEQ code_9C52 .error_mistake ; BRK:EQUB &04:EQUS "Mistake" ; .error_syntax_error ; BRK:EQUB &10:EQUS "Syntax error" ; .error_no_proc ; BRK:EQUB &0D:EQUS "No " + CHR$(token_PROC%) ; .error_escape ; BRK:EQUB &11:EQUS "Escape" ; EQUB &00 .code_9C4A JSR code_8F92 CMP #&3D \ = BNE error_mistake RTS .code_9C52 JSR code_9DFF .code_9C55 TXA LDY &1B BRA code_9C74 .code_9C5A LDY &1B BRA code_9C6C .token_ENDPROC ; TSX CPX #&FC \ TRACE BCS error_no_proc LDA &01FF CMP #&F2 \ PROC BNE error_no_proc .code_9C6A LDY &0A .code_9C6C DEY .code_9C6D INY LDA (&0B),Y CMP #&20 BEQ code_9C6D .code_9C74 CMP #&3A \ : BEQ code_9C80 CMP #&0D BEQ code_9C80 CMP #&8B \ ELSE BNE error_syntax_error .code_9C80 CLC TYA ADC &0B STA &0B BCC code_9C8A INC &0C .code_9C8A LDY #&01 STY &0A .code_9C8E BIT &FF BMI error_escape .code_9C92 RTS .code_9C93 JSR code_9C6A LDA (&0B) CMP #&3A \ : BEQ code_9C92 LDA &0C CMP #&07 BEQ code_9CC6 .code_9CA2 LDY #&01 LDA (&0B),Y BMI code_9CC6 LDX &20 BEQ code_9CB6 STA &2B INY LDA (&0B),Y STA &2A JSR code_9D0F .code_9CB6 LDA #&03 .code_9CB8 CLC ADC &0B STA &0B BCC code_9CC1 INC &0C .code_9CC1 LDY #&01 STY &0A .code_9CC5 RTS .code_9CC6 JMP code_904B .code_9CC9 JMP error_type_mismatch .token_IF ; JSR code_9DF3 BEQ code_9CC9 BPL code_9CD6 JSR code_9788 .code_9CD6 LDY &1B STY &0A LDA &2A ORA &2B ORA &2C ORA &2D BEQ code_9CFB CPX #&8C \ THEN BEQ code_9CEB .code_9CE8 JMP code_90D0 .code_9CEB INC &0A .code_9CED JSR code_9BE2 BCC code_9CE8 JSR code_B866 JSR code_9C8A JMP code_B753 .code_9CFB LDY &0A .code_9CFD LDA (&0B),Y CMP #&0D BEQ code_9D0C INY CMP #&8B \ ELSE BNE code_9CFD STY &0A BEQ code_9CED .code_9D0C JMP code_907D .code_9D0F LDA &2A CMP &21 LDA &2B SBC &22 BCS code_9CC5 LDA #&5B \ [ JSR code_BDD8 JSR code_A0E8 LDA #&5D \ ] JSR code_BDD8 JMP code_BDD2 .code_9D29 JSR code_BC3A JSR code_9F07 TAY JSR code_97A2 JSR code_BC24 .code_9D36 JSR code_A514 LDA &2E EOR &3B BPL code_9D57 ASL &2E BRA code_9D79 .code_9D43 STY &2D PLA STA &2C PLA STA &2B PLA STA &2A JSR code_828A LDA &3B EOR #&80 \ AND STA &3B .code_9D57 LDA &3C CMP &30 BNE code_9D75 LDA &3D CMP &31 BNE code_9D75 LDA &3E CMP &32 BNE code_9D75 LDA &3F CMP &33 BNE code_9D75 LDA &40 SBC &34 BEQ code_9D7B .code_9D75 ROR A EOR &3B ROL A .code_9D79 LDA #&FF \ OSCLI .code_9D7B RTS .code_9D7C JMP error_type_mismatch .code_9D7F INC &1B .code_9D81 TXA .code_9D82 BEQ code_9DC4 BMI code_9D29 LDA &2A PHA LDA &2B PHA LDA &2C PHA LDA &2D PHA JSR code_9F07 TAY BMI code_9DB4 BEQ code_9D7C PLA TAY EOR &2D BMI code_9DBA CPY &2D BNE code_9DBE PLA CMP &2C BNE code_9DBF PLA CMP &2B BNE code_9DC0 PLA SBC &2A BNE code_9DC1 RTS .code_9DB4 PLA TAY EOR &2E BPL code_9D43 .code_9DBA TYA EOR #&FF \ OSCLI ASL A .code_9DBE PLA .code_9DBF PLA .code_9DC0 PLA .code_9DC1 LDA #&FF \ OSCLI RTS .code_9DC4 JSR code_BC91 JSR code_9F07 TAY BNE code_9D7C LDA (&04) CMP &36 BCC code_9DD5 LDA &36 .code_9DD5 STA &37 .code_9DD7 CPY &37 BEQ code_9DE5 INY LDA (&04),Y CMP &05FF,Y BEQ code_9DD7 BRA code_9DE9 .code_9DE5 LDA (&04) CMP &36 .code_9DE9 PHP JSR code_BD21 PLP BNE code_9DC1 LDA #&00 RTS .code_9DF3 LDA &0B STA &19 LDA &0C STA &1A LDA &0A STA &1B .code_9DFF JSR code_9E45 .code_9E02 CPX #&84 \ OR BEQ code_9E10 CPX #&82 \ EOR BEQ code_9E2A DEC &1B TAY STA &27 RTS .code_9E10 JSR code_9E3F JSR code_9783 LDY #&03 .code_9E18 LDA (&04),Y ORA &002A,Y STA &002A,Y DEY BPL code_9E18 .code_9E23 JSR code_BD3A LDA #&40 \ @ BRA code_9E02 .code_9E2A JSR code_9E3F JSR code_9783 LDY #&03 .code_9E32 LDA (&04),Y EOR &002A,Y STA &002A,Y DEY BPL code_9E32 BRA code_9E23 .code_9E3F JSR code_9783 JSR code_BC66 .code_9E45 JSR code_9E6D .code_9E48 CPX #&80 \ AND BEQ code_9E4D RTS .code_9E4D JSR code_9783 JSR code_BC66 JSR code_9E6D JSR code_9783 LDY #&03 .code_9E5B LDA (&04),Y AND &002A,Y STA &002A,Y DEY BPL code_9E5B JSR code_BD3A LDA #&40 \ @ BRA code_9E48 .code_9E6D JSR code_9F07 CPX #&3F \ ? BCS code_9E78 CPX #&3C \ < BCS code_9E79 .code_9E78 RTS .code_9E79 BEQ code_9E90 CPX #&3E \ > BEQ code_9EB2 TAX JSR code_9D82 .code_9E83 EOR #&FF \ OSCLI .code_9E85 STA &2A STA &2B STA &2C STA &2D LDA #&40 \ @ RTS .code_9E90 TAX LDY &1B LDA (&19),Y CMP #&3D \ = BEQ code_9EA6 CMP #&3E \ > BEQ code_9EAD JSR code_9D81 BCC code_9E85 BEQ code_9E85 BRA code_9E83 .code_9EA6 JSR code_9D7F BCC code_9E85 BRA code_9E83 .code_9EAD JSR code_9D7F BRA code_9E85 .code_9EB2 TAX LDY &1B LDA (&19),Y CMP #&3D \ = BEQ code_9EC2 JSR code_9D81 BCS code_9E85 BRA code_9E83 .code_9EC2 JSR code_9D7F BCC code_9E83 BEQ code_9E83 BRA code_9E85 .error_string_too_long ; BRK:EQUB &13:EQUS "String too long":EQUB 0 .code_9EDD JSR code_BC91 JSR code_A06C TAY BNE code_9F4C CLC PHX LDA (&04) ADC &36 BCS error_string_too_long TAX PHA LDY &36 .code_9EF2 LDA &05FF,Y STA &05FF,X DEX DEY BNE code_9EF2 JSR code_BD12 PLA STA &36 PLX LDA #&00 BRA code_9F0A .code_9F07 JSR code_A026 .code_9F0A CPX #&2B \ + BEQ code_9F13 CPX #&2D \ - BEQ code_9F70 RTS .code_9F13 TAY BMI code_9F4F BEQ code_9EDD JSR code_A023 TAY BMI code_9F64 BEQ code_9F4C CLC LDA (&04) ADC &2A STA &2A LDY #&01 LDA (&04),Y ADC &2B STA &2B INY LDA (&04),Y ADC &2C STA &2C INY LDA (&04),Y ADC &2D .code_9F3B STA &2D CLC LDA &04 ADC #&04 STA &04 LDA #&40 \ @ BCC code_9F0A INC &05 BRA code_9F0A .code_9F4C JMP error_type_mismatch .code_9F4F JSR code_BC18 JSR code_A70A .code_9F55 LDX &27 BRA code_9F0A .code_9F59 JSR code_BC18 JSR code_A704 BRA code_9F55 .code_9F61 JSR code_AD10 .code_9F64 STX &27 JSR code_8287 LDA &3D JSR code_A70D BRA code_9F55 .code_9F70 TAY BMI code_9F59 BEQ code_9F4C JSR code_A023 TAY BMI code_9F61 BEQ code_9F4C SEC LDA (&04) SBC &2A STA &2A LDY #&01 LDA (&04),Y SBC &2B STA &2B INY LDA (&04),Y SBC &2C STA &2C INY LDA (&04),Y SBC &2D BRA code_9F3B .code_9F9A JSR code_828D .code_9F9D JSR code_8287 AND &3D JSR code_A6EB BRA code_9FB6 .code_9FA7 JSR code_828D .code_9FAA JSR code_BC3A JSR code_A06C JSR code_BC20 JSR code_A6E4 .code_9FB6 BRA code_A029 .code_9FB8 TAY BMI code_9FAA .code_9FBB BEQ code_9F4C LDA &2B ASL A LDA &2C ADC #&00 BNE code_9FA7 ADC &2D BNE code_9FA7 JSR code_A069 TAY BMI code_9F9D BEQ code_9FBB LDA &2B STA &38 ASL A LDA &2C ADC #&00 BNE code_9F9A ADC &2D BNE code_9F9A BCC code_9FE6 JSR code_AD20 .code_9FE6 STX &27 LDX #&3D \ = JSR code_BE06 JSR code_BD26 LDY #&00 LDX #&00 .code_9FF4 LSR &3E ROR &3D BCC code_A00F CLC TYA ADC &2A TAY TXA ADC &2B TAX LDA &3F ADC &2C STA &3F LDA &40 ADC &2D STA &40 .code_A00F ASL &2A ROL &2B ROL &2C ROL &2D LDA &3D ORA &3E BNE code_9FF4 STY &3D STX &3E BRA code_A04D .code_A023 JSR code_BC66 .code_A026 JSR code_A06C .code_A029 CPX #&2A \ * BEQ code_9FB8 CPX #&2F \ / BCC code_A03B BEQ code_A03C CPX #&83 \ MOD BEQ code_A04A CPX #&81 \ DIV BEQ code_A05F .code_A03B RTS .code_A03C JSR code_BC36 JSR code_A06C JSR code_BC1E JSR code_A634 BRA code_A05B .code_A04A JSR code_81BD .code_A04D LDA &38 PHP LDX #&3D \ = .code_A052 JSR code_AAD8 PLP BPL code_A05B JSR code_AD20 .code_A05B LDX &27 BRA code_A029 .code_A05F JSR code_81BD BIT &37 PHP LDX #&39 \ 9 BRA code_A052 .code_A069 JSR code_BC66 .code_A06C JSR code_AD78 .code_A06F PHA .code_A070 LDY &1B INC &1B LDA (&19),Y CMP #&20 BEQ code_A070 TAX PLA CPX #&5E \ ^ BEQ code_A081 RTS .code_A081 JSR code_BC36 JSR code_AD78 BMI code_A09F BEQ code_A081 LDA &2A ASL A LDA #&00 ADC &2B BNE code_A09C ADC &2C BNE code_A09C ADC &2D BEQ code_A0C7 .code_A09C JSR code_828D .code_A09F LDA &30 BEQ code_A0C5 CMP #&87 \ OFF BCS code_A0D1 CMP #&81 \ DIV BCC code_A0D1 ORA #&78 \ x TAY LDA &32 ORA &33 ORA &34 BNE code_A0D1 LDA &31 .code_A0B8 LSR A BCS code_A0D1 INY BMI code_A0B8 LDY &2E BPL code_A0C5 EOR #&FF \ OSCLI INA .code_A0C5 STA &2A .code_A0C7 JSR code_A56D LDA &2A JSR code_A5F9 BRA code_A06F .code_A0D1 LDA #&71 \ q JSR code_A547 JSR code_A56D JSR code_A7AF LDA #&71 \ q LDY #&04 JSR code_A9C3 JSR code_AA1A BRA code_A06F .code_A0E8 LDA #&00 BRA code_A0EE .code_A0EC LDA #&05 .code_A0EE STA &14 LDX #&04 .code_A0F2 STZ &3F,X SEC .code_A0F5 LDA &2A SBC tens_16_lo,X TAY LDA &2B SBC tens_16_hi,X BCC code_A10A STA &2B STY &2A INC &3F,X BRA code_A0F5 .code_A10A DEX BPL code_A0F2 LDX #&05 .code_A10F DEX BEQ code_A116 LDA &3F,X BEQ code_A10F .code_A116 STX &37 LDA &14 BEQ code_A126 SBC &37 BEQ code_A126 TAX JSR code_BDFF LDX &37 .code_A126 LDA &3F,X ORA #&30 \ 0 JSR code_BDD4 DEX BPL code_A126 RTS .code_A131 TYA BPL code_A137 JSR code_9788 .code_A137 LDX #&00 LDY #&00 .code_A13B LDA &002A,Y PHA AND #&0F STA &3F,X PLA LSR A LSR A LSR A LSR A INX STA &3F,X INX INY CPY #&04 BNE code_A13B .code_A151 DEX BEQ code_A158 LDA &3F,X BEQ code_A151 .code_A158 LDA &3F,X CMP #&0A BCC code_A160 ADC #&06 .code_A160 ADC #&30 \ 0 JSR code_A2CC DEX BPL code_A158 RTS .code_A169 LDA &2E BPL code_A174 LDA #&2D \ - STZ &2E JSR code_A2CC .code_A174 LDA &30 CMP #&81 \ DIV BCS code_A1C1 JSR code_A46B DEC &48 BRA code_A174 .code_A181 LDX resint_AT%+2 CPX #&03 BCC code_A18A LDX #&00 .code_A18A STX &37 LDA resint_AT%+1 BEQ code_A197 CMP #&0A BCS code_A19B BRA code_A19D .code_A197 CPX #&02 BEQ code_A19D .code_A19B LDA #&0A .code_A19D STA &38 STA &4D STZ &36 STZ &48 BIT &15 BMI code_A131 TYA BMI code_A1AF JSR code_828D .code_A1AF LDA &31 BNE code_A169 LDA &37 BNE code_A21C LDA #&30 \ 0 JMP code_A2CC .code_A1BC JSR code_A622 BRA code_A1D0 .code_A1C1 CMP #&84 \ OR BCC code_A1D4 BNE code_A1CD LDA &31 CMP #&A0 \ EVAL BCC code_A1D4 .code_A1CD JSR code_A4BA .code_A1D0 INC &48 BRA code_A174 .code_A1D4 JSR code_A3ED LDA &4D STA &38 LDX &37 CPX #&02 BNE code_A1EF ADC &48 BMI code_A220 CMP #&0B BCC code_A1ED LDA #&0A STZ &37 .code_A1ED STA &38 .code_A1EF LDA &38 EOR #&FF \ OSCLI LSR A PHP ASL A ASL A ADC #(fpok_const_A5 + 23) MOD 256 JSR code_A572 DEC &30 PLP BCC code_A204 JSR code_A46B .code_A204 JSR code_8429 .code_A207 LDA &30 CMP #&84 \ OR BCS code_A212 JSR code_A4A9 BNE code_A207 .code_A212 LDA &31 CMP #&A0 \ EVAL BCS code_A1BC LDA &38 BNE code_A22A .code_A21C CMP #&01 BEQ code_A261 .code_A220 JSR code_A72B STZ &48 LDA &4D INA STA &38 .code_A22A LDA #&01 CMP &37 BEQ code_A261 LDY &48 BMI code_A23E CPY &38 BCS code_A261 STZ &48 INY TYA BNE code_A261 .code_A23E LDA &37 CMP #&02 BEQ code_A24A LDA #&01 CPY #&FF \ OSCLI BNE code_A261 .code_A24A LDA #&30 \ 0 JSR code_A2CC LDA #&2E \ . JSR code_A2CC LDA #&30 \ 0 .code_A256 INC &48 BEQ code_A25F JSR code_A2CC BRA code_A256 .code_A25F LDA #&80 \ AND .code_A261 STA &4D .code_A263 JSR code_A40A DEC &4D BNE code_A26F LDA #&2E \ . JSR code_A2CC .code_A26F DEC &38 BNE code_A263 LDY &37 DEY BEQ code_A290 DEY BEQ code_A28C LDY &36 .code_A27D DEY LDA &0600,Y CMP #&30 \ 0 BEQ code_A27D CMP #&2E \ . BEQ code_A28A INY .code_A28A STY &36 .code_A28C LDA &48 BEQ code_A2B7 .code_A290 LDA #&45 \ E JSR code_A2CC LDA &48 BPL code_A2A3 LDA #&2D \ - JSR code_A2CC SEC LDA #&00 SBC &48 .code_A2A3 JSR code_A2B8 LDA &37 BEQ code_A2B7 LDA #&20 LDY &48 BMI code_A2B3 JSR code_A2CC .code_A2B3 CPX #&00 BEQ code_A2CC .code_A2B7 RTS .code_A2B8 LDX #&FF \ OSCLI SEC .code_A2BB INX SBC #&0A BCS code_A2BB ADC #&0A PHA TXA BEQ code_A2C9 JSR code_A2CA .code_A2C9 PLA .code_A2CA ORA #&30 \ 0 .code_A2CC PHX LDX &36 STA &0600,X PLX INC &36 RTS .code_A2D6 CLC LDA #&FF \ OSCLI JMP code_82DD RTS .code_A2DD STZ &31 STZ &32 STZ &33 STZ &34 STZ &35 STZ &47 STZ &48 LDX #&FF \ OSCLI STX &49 CMP #&2E \ . BEQ code_A348 CMP #&3A \ : BCS code_A2D6 SBC #&2F \ / BMI code_A2D6 .code_A2FB STA &35 .code_A2FD LDA &47 BEQ code_A303 DEC &48 .code_A303 INY LDA (&19),Y CMP #&3A \ : BCS code_A34C SBC #&2F \ / BCC code_A342 STA &42 LDX &49 BPL code_A325 LDA &35 ASL A ASL A ADC &35 ASL A ADC &42 CMP #&19 BCC code_A2FB STZ &49 BRA code_A2FB .code_A325 CPX #&02 BCS code_A33E JSR code_A419 CMP #&19 BCC code_A333 INC &49 CLC .code_A333 LDA &42 ADC &35 BCC code_A2FB JSR code_A503 BRA code_A2FB .code_A33E INC &48 BRA code_A2FD .code_A342 EOR #&FE \ WIDTH ORA &47 BNE code_A357 .code_A348 INC &47 BRA code_A303 .code_A34C CMP #&45 \ E BNE code_A357 JSR code_A3B5 ADC &48 STA &48 .code_A357 STY &1B LDY &31 BNE code_A385 LDA &32 BMI code_A385 STA &2D BEQ code_A36B LDA &48 ORA &47 BNE code_A385 .code_A36B LDA &35 STA &2A LDA &34 STA &2B LDA &33 STA &2C LDA &48 BNE code_A37E INA SEC RTS .code_A37E JSR code_828D BNE code_A393 BRA code_A3AA .code_A385 LDA #&A8 \ INT STA &30 STZ &2E STZ &2F TYA STA &31 JSR code_8304 .code_A393 LDY &48 BMI code_A3A1 BEQ code_A3A7 .code_A399 JSR code_A46B DEY BNE code_A399 BRA code_A3A7 .code_A3A1 JSR code_A4BA INY BNE code_A3A1 .code_A3A7 JSR code_A712 .code_A3AA SEC LDA #&FF \ OSCLI RTS .code_A3AE JSR code_A3C0 EOR #&FF \ OSCLI SEC RTS .code_A3B5 INY LDA (&19),Y CMP #&2D \ - BEQ code_A3AE CMP #&2B \ + BNE code_A3C3 .code_A3C0 INY LDA (&19),Y .code_A3C3 CMP #&3A \ : BCS code_A3E9 SBC #&2F \ / BCC code_A3E9 STA &49 INY LDA (&19),Y CMP #&3A \ : BCS code_A3E5 SBC #&2F \ / BCC code_A3E5 INY STA &42 LDA &49 ASL A ASL A ADC &49 ASL A ADC &42 RTS .code_A3E5 LDA &49 CLC RTS .code_A3E9 LDA #&00 CLC RTS .code_A3ED LDA &2E STA &3B LDA &30 STA &3C LDA &31 STA &3D LDA &32 STA &3E LDA &33 STA &3F LDA &34 STA &40 LDA &35 STA &41 RTS .code_A40A LDA &31 LSR A LSR A LSR A LSR A JSR code_A2CA LDA #&F0 \ PLOT TRB &31 LDX #&01 .code_A419 ASL &35 ROL &34 ROL &33 TXA BEQ code_A42C ROL &32 ROL &31 .code_A426 LDA &31 PHA LDA &32 PHA .code_A42C LDA &33 PHA LDA &34 PHA LDA &35 CPX #&00 BMI code_A47A BNE code_A446 ASL A ROL &34 ROL &33 ASL A ROL &34 ROL &33 BRA code_A452 .code_A446 ASL A ROL &34 ROL &33 ROL &32 ROL &31 DEX BPL code_A446 .code_A452 ADC &35 STA &35 PLA ADC &34 STA &34 PLA ADC &33 STA &33 INX BNE code_A4B9 PLA ADC &32 STA &32 PLA BRA code_A4A3 .code_A46B CLC LDA &30 ADC #&03 LDX #&FE \ WIDTH STA &30 BCC code_A426 INC &2F BRA code_A426 .code_A47A LSR &31 ROR &32 ROR &33 ROR &34 ROR A INX BNE code_A47A DEX BRA code_A452 .code_A489 LDA &35 ADC &41 STA &35 LDA &34 ADC &40 STA &34 LDA &33 ADC &3F STA &33 LDA &32 ADC &3E STA &32 LDA &3D .code_A4A3 ADC &31 STA &31 BCC code_A4B9 .code_A4A9 ROR &31 ROR &32 ROR &33 ROR &34 ROR &35 INC &30 BNE code_A4B9 INC &2F .code_A4B9 RTS .code_A4BA CLC LDA #&FC \ TRACE TAX ADC &30 BCS code_A4C4 DEC &2F .code_A4C4 STA &30 JSR code_A426 DEX JSR code_A426 INX .code_A4CE LDA &34,X ROL A LDA &33,X ADC &35 STA &35 LDA &32,X ADC &34 STA &34 LDA &31,X ADC &33 STA &33 TXA BEQ code_A4E8 LDA &31 .code_A4E8 ADC &32 STA &32 BCC code_A4F5 INC &31 BNE code_A4F5 JSR code_A4A9 .code_A4F5 DEX BPL code_A4CE LDA &32 ROL A LDA &31 ADC &35 STA &35 BCC code_A513 .code_A503 INC &34 BNE code_A513 .code_A507 INC &33 BNE code_A513 .code_A50B INC &32 BNE code_A513 INC &31 BEQ code_A4A9 .code_A513 RTS .code_A514 STZ &41 LDY #&04 LDA (&4A),Y STA &40 DEY LDA (&4A),Y STA &3F DEY LDA (&4A),Y STA &3E DEY LDA (&4A),Y STA &3B TAY LDA (&4A) STA &3C BNE code_A53B TYA ORA &3E ORA &3F ORA &40 BEQ code_A53E .code_A53B TYA ORA #&80 \ AND .code_A53E STA &3D RTS .code_A541 LDA #&76 \ v BRA code_A547 .code_A545 LDA #&6C \ l .code_A547 STA &4A LDA #&04 STA &4B .code_A54D LDA &30 STA (&4A) LDY #&01 LDA &2E EOR &31 AND #&80 \ AND EOR &31 STA (&4A),Y LDA &32 INY STA (&4A),Y LDA &33 INY STA (&4A),Y LDA &34 INY STA (&4A),Y RTS .code_A56D JSR code_BC24 BRA code_A57E .code_A572 LDY #fp_tables DIV 256 BRA code_A57A .code_A576 LDA #&6C \ l LDY #&04 .code_A57A STA &4A STY &4B .code_A57E STZ &35 STZ &2F LDY #&04 LDA (&4A),Y STA &34 DEY LDA (&4A),Y STA &33 DEY LDA (&4A),Y STA &32 DEY LDA (&4A),Y STA &2E TAY LDA (&4A) STA &30 BNE code_A5A7 TYA ORA &32 ORA &33 ORA &34 BEQ code_A5AA .code_A5A7 TYA ORA #&80 \ AND .code_A5AA STA &31 RTS .code_A5AD CLC LDA &4C ADC #&05 .code_A5B2 STA &4C .code_A5B4 LDY #fp_tables DIV 256 .code_A5B6 STA &4A STY &4B .code_A5BA RTS .code_A5BB LDA #&6C \ l .code_A5BD LDY #&04 BRA code_A5B6 .code_A5C1 JSR code_AD10 .code_A5C4 JSR code_A545 JSR code_A5F4 INC &30 .code_A5CC JSR code_AD10 .code_A5CF STZ &3B .code_A5D1 LDY #&80 \ AND STY &3D INY STY &3C STZ &3E STZ &3F STZ &40 STZ &41 JMP code_A70F .code_A5E3 JSR code_A5CC LDX &31 BEQ code_A5BA DEC &30 JSR code_A545 TXA EOR &2E .code_A5F2 STA &2E .code_A5F4 JSR code_A5CF BRA code_A634 .code_A5F9 LDX #&00 TAY BEQ code_A622 BPL code_A608 DEA EOR #&FF \ OSCLI PHA JSR code_A62F .code_A607 PLA .code_A608 LSR A BEQ code_A61D PHA BCC code_A612 INX JSR code_BC3A .code_A612 JSR code_A6CE BRA code_A607 .code_A617 JSR code_BC24 JSR code_A6E4 .code_A61D DEX BPL code_A617 TXA RTS .code_A622 LDA #&80 \ AND STA &31 INA STA &30 JMP code_A72F .code_A62C JMP error_division_by_zero .code_A62F LDA #fpok_const_B9 MOD 256 .code_A631 JSR code_A5B4 .code_A634 LDA &31 BEQ code_A62C JSR code_A514 BNE code_A640 JMP code_A72B .code_A640 LDA &3B EOR &2E STA &2E SEC LDA &3C ADC #&81 \ DIV ROL &2F SBC &30 BCS code_A653 DEC &2F .code_A653 STA &30 LDA &3D CLC LDY #&04 STY &3C .code_A65C LDX #&08 .code_A65E BCS code_A676 CMP &31 BNE code_A674 LDY &3E CPY &32 BNE code_A674 LDY &3F CPY &33 BNE code_A674 LDY &40 CPY &34 .code_A674 BCC code_A68D .code_A676 TAY LDA &40 SBC &34 STA &40 LDA &3F SBC &33 STA &3F LDA &3E SBC &32 STA &3E TYA SBC &31 SEC .code_A68D ROL &3B ASL &40 ROL &3F ROL &3E ROL A DEX BNE code_A65E LDX &3B PHX DEC &3C BNE code_A65C PLX ROR A .code_A6A2 LSR &31 STX &34 LDX #&03 .code_A6A8 CMP &31 BCC code_A6AE SBC &31 .code_A6AE PHP ASL A DEX BNE code_A6A8 PLP ROR A PLP ROR A PLP ROR A STA &35 PLA STA &33 PLA STA &32 PLA STA &31 .code_A6C4 BMI code_A712 JSR code_8306 BRA code_A712 .code_A6CB JSR code_A545 .code_A6CE JSR code_A3ED LDA &30 BEQ code_A72B STZ &34 ASL &40 BCC code_A6ED INC &33 BNE code_A6ED JSR code_A50B BRA code_A6ED .code_A6E4 LDA &31 BEQ code_A73B JSR code_A514 .code_A6EB BEQ code_A72B .code_A6ED JSR code_A73E BRA code_A712 .error_too_big ; BRK:EQUB &14:EQUS "Too big":EQUB 0 .token_ACS ; JSR token_ASN .code_A6FF LDA #fpok_const_90 MOD 256 JSR code_A5B4 .code_A704 LDA &31 EOR &2E STA &2E .code_A70A JSR code_A514 .code_A70D BEQ code_A73B .code_A70F JSR code_8429 .code_A712 LDA &35 BPL code_A725 ASL A BNE code_A71E ROL A AND &34 BNE code_A725 .code_A71E INC &34 BNE code_A725 JSR code_A507 .code_A725 LDA &2F BEQ code_A739 BPL error_too_big .code_A72B STZ &30 STZ &31 .code_A72F STZ &2E .code_A731 STZ &2F STZ &32 STZ &33 STZ &34 .code_A739 STZ &35 .code_A73B LDA #&FF \ OSCLI .code_A73D RTS .code_A73E CLC LDA &30 ADC &3C ROL &2F SBC #&7F STA &30 BCS code_A74D DEC &2F .code_A74D LDA &2E EOR &3B STA &2E PHX LDX #&F8 \ RETURN LDY #&04 .code_A758 LDA &39,X STZ &39,X STA &0041,Y INX DEY BNE code_A758 STZ &3C STZ &3B STZ &3A BRA code_A79B .code_A76B PHX LSR &3D ROR &3E ROR &3F ROR &40 ROR &41 .code_A776 ASL &46,X BCC code_A797 CLC TYA ADC &42,X TAY LDA &34 ADC &41,X STA &34 LDA &33 ADC &40,X STA &33 LDA &32 ADC &3F,X STA &32 LDA &31 ADC &3E,X STA &31 .code_A797 INX BMI code_A776 PLX .code_A79B LDA &46,X BNE code_A76B INX BMI code_A79B PLX STY &35 LDA &31 BMI code_A73D JMP code_8306 .token_LN ; JSR code_979F .code_A7AF LDA &31 EOR &2E BMI code_A7CD .error_log_range ; BRK:EQUB &16:EQUS "Log range" ; .error_negative_root ; BRK:EQUB &15:EQUS "-ve root" ; EQUB &00 ; .some_table_1 ; NOTE ! Needs preceding 0 ! ; EQUB &86 EQUB &8E .code_A7CD LDY #&80 \ AND LDX &30 BEQ code_A7DB LDA &31 CMP #&B5 \ SIN BCS code_A7DB DEX INY .code_A7DB PHX STY &30 JSR code_A5E3 LDA &30 BEQ code_A7EF CMP #&6E \ n BCC code_A7ED CLC JSR code_A8B9 .code_A7ED INC &30 .code_A7EF JSR code_A545 PLA EOR #&80 \ AND BEQ code_A805 JSR code_82E6 LDA #fpok_const_9F MOD 256 JSR code_A5B4 JSR code_A9A3 JSR code_A712 .code_A805 JMP code_AD10 .token_SQR ; JSR code_979F .code_A80B LDA &31 BEQ code_A805 LDA &2E BMI error_negative_root LDA &30 LSR A PHP ADC #&41 \ A STA &30 LDA &31 PLP BCC code_A829 LSR A ROR &32 ROR &33 ROR &34 ROR &35 .code_A829 STZ &3E STZ &3F LDX #&68 \ h SEC SBC #&90 \ PAGE BCS code_A838 ADC #&50 \ P LDX #&48 \ H .code_A838 STA &31 TXA LDX #&FC \ TRACE LDY #&0C .code_A83F STA &41,X .code_A841 ASL &33 ROL &32 ROL &31 LDA &31 CMP &3D BNE code_A857 LDA &32 CMP &3E BNE code_A857 LDA &33 CMP &3F .code_A857 BCC code_A875 LDA &33 SBC &3F STA &33 LDA &32 SBC &3E STA &32 LDA &31 SBC &3D STA &31 TYA CLC ADC &41,X BCC code_A878 INC &40,X BRA code_A878 .code_A875 TYA EOR &41,X .code_A878 STA &41,X TYA LSR A TAY BNE code_A841 LDY &40,X PHY CPX #&FD \ UNTIL BNE code_A88A LDA &34 STA &33 .code_A88A BCS code_A899 PLY LDY #&04 .code_A88F ASL &35 ROL &34 ROL A DEY BNE code_A88F TSB &33 .code_A899 LDA #&80 \ AND LDY #&C0 \ LEFTdb INX BNE code_A83F LDX &3D LDA &31 STX &31 LDX &40 ASL A CMP &31 BCC code_A8B0 SBC &31 INX .code_A8B0 JMP code_A6A2 .code_A8B3 LDX #fpok_const_CA MOD 256 DEC &30 BRA code_A8BB .code_A8B9 LDX #fpok_const_E7 MOD 256 .code_A8BB PHP JSR code_A6CB PLP ROR &2E TXA JSR code_AA55 DEA DEA STA &47 TXA INY CLC .code_A8CD ADC #&0A DEY BPL code_A8CD ADC #256-15 STA &4C LDA #fpok_const_BE MOD 256 JSR code_A631 JSR code_A541 BRA code_A8EE .code_A8E0 JSR code_A5AD JSR code_A634 LDA #&76 \ v JSR code_A5BD JSR code_A70A .code_A8EE JSR code_A5AD JSR code_A70A INC &47 BMI code_A8E0 JSR code_A5BB JSR code_A634 JMP code_A70A .token_ASN ; JSR code_979F LDA &2E PHA JSR code_A6CB JSR code_A5CC LDA &31 BEQ code_A948 JSR code_A80B JSR code_A634 BRA code_A91F .token_ATN ; JSR code_979F LDA &2E PHA .code_A91F STZ &2E LDA #fpok_const_C7 MOD 256 JSR code_AA55 PHP BNE code_A92D JSR code_A5E3 SEC .code_A92D BCS code_A932 JSR code_A62F .code_A932 LDA &30 CMP #&6D \ m BCC code_A93B JSR code_A8B9 .code_A93B PLP BNE code_A946 INC &30 JSR code_A6FF DEC &30 SEC .code_A946 BCS code_A94B .code_A948 JSR code_A6FF .code_A94B PLA JMP code_AD14 .token_SIN ; JSR code_A9D1 BRA code_A959 .token_COS ; JSR code_A9D1 INC &49 .code_A959 LSR &49 BCC code_A962 JSR code_A5C4 BRA code_A965 .code_A962 JSR code_A5F4 .code_A965 LSR &49 BCS code_A978 .code_A969 TAY RTS .token_TAN ; JSR code_A9D1 JSR code_A5F2 LSR &49 BCC code_A969 JSR code_A62F .code_A978 JMP code_AD10 .code_A97B JSR code_A545 LDA &30 LDX #&00 .code_A982 DEY STX &31,Y CMP some_table_1-2,Y BCC code_A982 LDA &4C JSR code_A9C1 LDA &2E STA &3B JSR code_A5D1 DEC &30 JSR code_9788 STA &49 JSR code_828D JSR code_A5AD .code_A9A3 JSR code_A514 LDY #&05 LDA (&4A),Y STA &41 JSR code_A73E JSR code_A5BB JMP code_A704 .token_RAD ; JSR code_979F LDA #fpok_const_CA MOD 256 BRA code_A9C1 .token_LOG ; JSR token_LN LDA #fpok_const_82 MOD 256 .code_A9C1 LDY #fp_tables DIV 256 .code_A9C3 STY &4B STA &4A JMP code_A6E4 .token_DEG ; JSR code_979F LDA #fpok_const_CF MOD 256 BRA code_A9C1 .code_A9D1 JSR code_979F LDA #fpok_const_8B MOD 256 JSR code_AA50 BCC error_accuracy_lost BNE code_A9E0 JSR code_A97B .code_A9E0 LDA #&6E \ n CMP &30 BCS code_A9F2 JSR code_A8B3 JSR code_A545 INC &046C .code_A9EF JMP code_A6CE .code_A9F2 JSR code_A545 .code_A9F5 JMP code_A72B .code_A9F8 LDA &2E BMI code_A9F5 .error_exp_range ; BRK:EQUB &18:EQUS "Exp range" ; .error_accuracy_lost ; BRK:EQUB &17:EQUS "Accuracy lost" ; EQUB &00 .token_EXP ; JSR code_979F .code_AA1A LDA #fpok_const_9A MOD 256 JSR code_AA50 BCC code_A9F8 BNE code_AA2C LDA &30 INA AND #&08 BEQ code_AA2C DEC &30 .code_AA2C DEA PHA BEQ code_AA33 JSR code_A97B .code_AA33 LDA &30 CMP #&6A \ j BCS code_AA3E JSR code_A5CF BRA code_AA44 .code_AA3E JSR code_A8B3 JSR code_A5C1 .code_AA44 CLC LDA &30 ADC &49 STA &30 PLA DEA BPL code_A9EF RTS .code_AA50 JSR code_A5B2 STZ &49 .code_AA55 PHX TAX LDY #&01 .code_AA59 DEX LDA +(fp_tables AND &FF00) - 0,X CMP &30 BNE code_AA66 LDA +(fp_tables AND &FF00) - 2,X CMP &31 .code_AA66 BCS code_AA6B DEY BPL code_AA59 .code_AA6B PLX TYA RTS .code_AA6E JSR code_9779 LDA #&81 \ DIV LDX &2A LDY &2B JMP os_byte% .code_AA7A JSR code_83D3 .code_AA7D STZ &2E STZ &2F STZ &35 LDA #&80 \ AND STA &30 EOR &0D STA &34 EOR &0E STA &33 EOR &0F STA &32 EOR &10 STA &31 JMP code_A6C4 .code_AA9A INC &1B JSR code_976C LDA &2D BMI code_AAC1 ORA &2C ORA &2B BNE code_AAB0 LDA &2A BEQ code_AA7D DEA BEQ code_AA7A .code_AAB0 JSR code_AA7A JSR code_828A JSR code_A73E JSR code_9788 JSR code_BF2F BRA code_AAE8 .code_AAC1 LDX #&0D JSR code_BE06 LDA #&40 \ @ STA &11 RTS .token_RND ; LDY &1B LDA (&19),Y CMP #&28 \ ( BEQ code_AA9A JSR code_83D3 LDX #&0D .code_AAD8 LDA &00,X STA &2A LDA &01,X STA &2B LDA &02,X STA &2C LDA &03,X STA &2D .code_AAE8 LDA #&40 \ @ RTS .token_NOT ; JSR code_9779 LDX #&03 .code_AAF0 LDA &2A,X EOR #&FF \ OSCLI STA &2A,X DEX BPL code_AAF0 BRA code_AAE8 .token_POS ; JSR token_VPOS STX &2A RTS .token_USR ; JSR code_9779 JSR code_93C7 STA &2A STX &2B STY &2C PHP PLA STA &2D CLD BRA code_AAE8 .token_VPOS ; LDA #&86 \ LINE JSR os_byte% TYA .code_AB1A JMP code_AE60 .token_EXT ; LDA #&02 BRA code_AB23 .token_PTR ; LDA #&00 .code_AB23 PHA JSR code_BA7A LDX #&2A \ * PLA JSR os_args% BRA code_AAE8 .token_BGET ; JSR code_BA7A JSR os_bget% BRA code_AB1A .token_OPENIN ; LDA #&40 \ @ BRA code_AB41 .token_OPENOUT ; LDA #&80 \ AND BRA code_AB41 .token_OPENUP ; LDA #&C0 \ LEFTdb .code_AB41 PHA JSR code_AD78 BNE code_AB9D JSR code_BE6B LDX #&00 LDY #&06 PLA JSR os_find% BRA code_AB1A .token_PI ; STZ &31 JSR code_A6FF INC &30 RTS .token_EVAL ; JSR code_AD78 BNE code_AB9D INC &36 LDY &36 LDA #&0D STA &05FF,Y JSR code_BC91 LDA &19 PHA LDA &1A PHA LDA &1B PHA LDY &04 LDX &05 INY STY &19 STY &37 BNE code_AB82 INX .code_AB82 STX &1A STX &38 JSR code_8EDC STZ &1B JSR code_9DFF JSR code_BD21 .code_AB91 PLA STA &1B PLA STA &1A PLA STA &19 LDA &27 RTS .code_AB9D JMP error_type_mismatch .token_VAL ; JSR code_AD78 BNE code_AB9D .code_ABA5 LDX &36 STZ &0600,X LDA &19 PHA LDA &1A PHA LDA &1B PHA STZ &1B STZ &19 LDA #&06 STA &1A JSR code_8F92 CMP #&2D \ - BEQ code_ABD0 CMP #&2B \ + BNE code_ABC9 JSR code_8F92 .code_ABC9 DEC &1B JSR code_A2DD BRA code_ABDD .code_ABD0 JSR code_8F92 DEC &1B JSR code_A2DD BCC code_ABDD JSR code_AD1C .code_ABDD STA &27 BRA code_AB91 .token_INT ; JSR code_AD78 BEQ code_AC1C BPL code_AC02 LDA &2E PHP STZ &2E JSR code_8349 PLP BPL code_ABFD LDA &3D BEQ code_ABFA JSR code_83C2 .code_ABFA JSR code_83AA .code_ABFD JSR code_978B LDA #&40 \ @ .code_AC02 RTS .token_ASC ; JSR code_AD78 BNE code_AC1C LDA &36 BEQ token_TRUE LDA &0600 .code_AC0F JMP code_AE60 .token_INKEY ; JSR code_AA6E TYA BNE token_TRUE TXA JMP code_AE62 .code_AC1C JMP error_type_mismatch .token_EOF ; JSR code_BA7A TAX LDA #&7F JSR os_byte% TXA BEQ code_AC2D .token_TRUE ; LDX #&FF \ OSCLI .code_AC2D STX &2A STX &2B STX &2C STX &2D .code_AC35 LDA #&40 \ @ RTS .token_FALSE ; LDX #&00 BRA code_AC2D .code_AC3C LDA &31 BEQ token_FALSE LDA &2E BPL code_AC59 BRA token_TRUE .token_SGN ; JSR code_AD78 BMI code_AC3C BEQ code_AC1C LDA &2D BMI token_TRUE ORA &2C ORA &2B ORA &2A BEQ code_AC35 .code_AC59 LDA #&01 .code_AC5B BRA code_AC0F .token_POINTb ; JSR code_8FAE JSR code_976C LDA &2A PHA LDX &2B JSR code_BD26 STX &2D PLA STA &2C LDY #&00 LDX #&2A \ * LDA #&09 JSR os_word% LDA &2E BMI token_TRUE BRA code_AC5B .token_INSTRb ; JSR code_9DFF BNE code_AC1C CPX #&2C \ , BNE code_ACA0 INC &1B JSR code_BC91 JSR code_9DFF BNE code_AC1C LDA #&01 STA &2A INC &1B CPX #&29 \ ) BEQ code_ACA9 CPX #&2C \ , BEQ code_ACA3 .code_ACA0 JMP error_missing_comma .code_ACA3 JSR code_9769 JSR code_BD12 .code_ACA9 LDX &2A BNE code_ACAF LDX #&01 .code_ACAF STX &2A TXA DEX STX &2D CLC ADC &04 STA &37 LDA #&00 ADC &05 STA &38 LDA (&04) SEC SBC &2D BCC code_ACE8 SBC &36 BCC code_ACE8 ADC #&00 STA &2B JSR code_BD21 .code_ACD2 LDY #&00 LDX &36 BEQ code_ACE3 .code_ACD8 LDA (&37),Y CMP &0600,Y BNE code_ACEF INY DEX BNE code_ACD8 .code_ACE3 LDA &2A .code_ACE5 JMP code_AE60 .code_ACE8 JSR code_BD21 .code_ACEB LDA #&00 BRA code_ACE5 .code_ACEF INC &2A DEC &2B BEQ code_ACEB INC &37 BNE code_ACD2 INC &38 BRA code_ACD2 .code_ACFD JMP error_type_mismatch .token_ABS ; JSR code_AD78 BMI code_AD0D BEQ code_ACFD .code_AD07 BIT &2D BMI code_AD20 BRA code_AD37 .code_AD0D STZ &2E RTS .code_AD10 LDA &31 EOR &2E .code_AD14 STA &2E LDA #&FF \ OSCLI RTS .code_AD19 JSR code_AD8E .code_AD1C BEQ code_ACFD BMI code_AD10 .code_AD20 SEC LDA #&00 TAY SBC &2A STA &2A TYA SBC &2B STA &2B TYA SBC &2C STA &2C TYA SBC &2D STA &2D .code_AD37 LDA #&40 \ @ RTS .code_AD3A JSR code_8F92 CMP #&22 \ " BEQ code_AD5B LDX #&00 .code_AD43 LDA (&19),Y STA &0600,X INY INX CMP #&0D BEQ code_AD52 CMP #&2C \ , BNE code_AD43 .code_AD52 DEY .code_AD53 DEX STX &36 STY &1B LDA #&00 RTS .code_AD5B LDX #&00 .code_AD5D INY .code_AD5E LDA (&19),Y CMP #&0D BEQ code_AD75 STA &0600,X INY INX CMP #&22 \ " BNE code_AD5E LDA (&19),Y CMP #&22 \ " BEQ code_AD5D BNE code_AD53 .code_AD75 JMP error_missing_double_quote .code_AD78 LDY &1B INC &1B LDA (&19),Y CMP #&20 BEQ code_AD78 CMP #&2D \ - BEQ code_AD19 CMP #&22 \ " BEQ code_AD5B CMP #&2B \ + BNE code_AD91 .code_AD8E JSR code_8F92 .code_AD91 CMP #&8E \ OPENIN BCC code_AD9C CMP #&C6 \ AUTO BCS error_no_such_variable JMP code_90DE .code_AD9C CMP #&3F \ ? BCS code_ADAC CMP #&2E \ . BCS code_ADB6 CMP #&26 \ #&26 BEQ code_ADF9 CMP #&28 \ ( BEQ code_ADEE .code_ADAC DEC &1B JSR code_99D8 BEQ code_ADBC JMP code_B1DE .code_ADB6 JSR code_A2DD BCC error_no_such_variable RTS .code_ADBC LDA &28 AND #&02 BNE error_no_such_variable BCS error_no_such_variable STX &1B .code_ADC6 LDA resint_P%+0 LDY resint_P%+1 BRA code_AE3F .error_no_such_variable ; BRK:EQUB &1A:EQUS "No such variable" ; .error_missing_right_bracket ; BRK:EQUB &1B:EQUS CHR$(tokst_Missing%) + ")" ; .error_bad_hex ; BRK:EQUB &1C:EQUS "Bad Hex" ; EQUB &00 .code_ADEE JSR code_9DFF INC &1B CPX #&29 \ ) BNE error_missing_right_bracket TAY RTS .code_ADF9 JSR token_FALSE BRA code_AE00 .code_ADFE INX PHA .code_AE00 INY LDA (&19),Y CMP #&41 \ A BCC code_AE0D SBC #&37 \ 7 CMP #&10 BRA code_AE11 .code_AE0D SBC #&2F \ / CMP #&0A .code_AE11 BCC code_ADFE STY &1B DEX CPX #&08 BCS error_bad_hex TXA TAY LDX #&00 .code_AE1E PLA STA &2A,X DEY BMI code_AE31 INX PLA ASL A ASL A ASL A ASL A ORA &29,X STA &29,X DEY BPL code_AE1E .code_AE31 LDA #&40 \ @ RTS .token_ADVAL ; JSR code_9779 LDX &2A LDA #&80 \ AND JSR os_byte% TXA .code_AE3F BRA code_AE62 .token_TO ; INY LDA (&19),Y CMP #&50 \ P BNE error_no_such_variable INC &1B LDA &12 LDY &13 BRA code_AE62 .token_PAGE ; LDY &18 LDA #&00 BRA code_AE62 .code_AE56 JMP error_type_mismatch .token_LEN ; JSR code_AD78 BNE code_AE56 LDA &36 .code_AE60 LDY #&00 .code_AE62 STA &2A STY &2B STZ &2C STZ &2D LDA #&40 \ @ RTS .token_COUNT ; LDA &1E BRA code_AE60 .token_LOMEM ; LDA &00 LDY &01 BRA code_AE62 .token_HIMEM ; LDA &06 LDY &07 BRA code_AE62 .token_ERL ; LDY &09 LDA &08 BRA code_AE62 .token_ERR ; LDA (&FD) BRA code_AE60 .token_GET ; JSR os_rdch% BRA code_AE60 .token_TIME ; INY LDA (&19),Y CMP #&24 \ $ BEQ code_AE9F LDX #&2A \ * LDY #&00 LDA #&01 JSR os_word% LDA #&40 \ @ RTS .code_AE9F INC &1B LDA #&0E LDX #&00 LDY #&06 STZ &0600 JSR os_word% LDA #&18 BRA code_AED7 .token_GETd ; JSR os_rdch% .code_AEB4 STA &0600 LDA #&01 BRA code_AED7 .token_LEFTdb ; CLC .token_RIGHTdb ; PHP JSR code_9DFF BNE code_AE56 CPX #&2C \ , BNE code_AF07 INC &1B JSR code_9769 JSR code_BD12 PLP BCS code_AEDC LDA &2A CMP &36 BCS code_AED9 .code_AED7 STA &36 .code_AED9 LDA #&00 .code_AEDB RTS .code_AEDC LDA &36 SBC &2A BCC code_AED9 BEQ code_AEDB TAX LDA &2A STA &36 BEQ code_AEDB LDY #&00 .code_AEED LDA &0600,X STA &0600,Y INX INY DEC &2A BNE code_AEED BRA code_AED9 .token_INKEYd ; JSR code_AA6E TXA CPY #&00 BEQ code_AEB4 .code_AF03 LDA #&00 BRA code_AED7 .code_AF07 JMP error_missing_comma .token_MIDdb ; JSR code_9DFF BNE code_AF88 CPX #&2C \ , BNE code_AF07 JSR code_BC91 INC &1B JSR code_9774 LDA &2A PHA LDA #&FF \ OSCLI STA &2A INC &1B CPX #&29 \ ) BEQ code_AF2F CPX #&2C \ , BNE code_AF07 JSR code_976C .code_AF2F JSR code_BD12 PLA TAY CLC BEQ code_AF3D SBC &36 BCS code_AF03 DEY TYA .code_AF3D STA &2C TAX LDY #&00 LDA &36 SEC SBC &2C CMP &2A BCS code_AF4D STA &2A .code_AF4D LDA &2A BEQ code_AF03 .code_AF51 LDA &0600,X STA &0600,Y INY INX CPY &2A BNE code_AF51 STY &36 BRA code_AFB8 .token_STRd ; JSR code_8F92 LDY #&FF \ OSCLI CMP #&7E \ ~ BEQ code_AF6D INY DEC &1B .code_AF6D PHY JSR code_AD78 BEQ code_AF88 TAY PLA STA &15 LDA resint_AT%+3 BNE code_AF83 STA &37 JSR code_A19B BRA code_AFB8 .code_AF83 JSR code_A181 BRA code_AFB8 .code_AF88 JMP error_type_mismatch .token_STRINGdb ; JSR code_8FAE JSR code_ADEE BNE code_AF88 JSR code_BD26 LDY &36 BEQ code_AFB8 LDA &2A BEQ code_AFBB DEC &2A BEQ code_AFB8 .code_AFA2 LDX #&00 .code_AFA4 LDA &0600,X STA &0600,Y INX INY BEQ code_AFBE CPX &36 BCC code_AFA4 DEC &2A BNE code_AFA2 STY &36 .code_AFB8 LDA #&00 RTS .code_AFBB STA &36 RTS .code_AFBE JMP error_string_too_long .code_AFC1 PLA STA &0C PLA STA &0B .error_no_such_fn_or_proc ; BRK:EQUB &1D:EQUS "No such " + CHR$(token_FN%) + "/" + CHR$(token_PROC%):EQUB 0 .code_AFD5 LDA &18 STA &0C STZ &0B .code_AFDB LDY #&01 LDA (&0B),Y BMI code_AFC1 LDY #&03 .code_AFE3 INY LDA (&0B),Y CMP #&20 BEQ code_AFE3 CMP #&DD \ DEF BEQ code_AFFD .code_AFEE LDY #&03 LDA (&0B),Y CLC ADC &0B STA &0B BCC code_AFDB INC &0C BRA code_AFDB .code_AFFD INY STY &0A JSR code_8F9D TYA TAX CLC ADC &0B LDY &0C BCC code_B00E INY CLC .code_B00E SBC #&00 STA &3C TYA SBC #&00 STA &3D LDY #&01 .code_B019 INX LDA (&3C),Y CMP (&37),Y BNE code_AFEE INY CPY &39 BNE code_B019 LDA (&3C),Y JSR code_8E41 BCS code_AFEE TXA TAY JSR code_9C80 JSR code_9914 LDX #&01 JSR code_9952 LDA &0B FNsta_vartop_02_0 LDY #&01 LDA &0C FNsta_vartop_02_Y INY JSR code_995A JMP code_B0B0 .error_bad_call ; BRK:EQUB &1E:EQUS "Bad call":EQUB 0 .token_FN ; LDA #&A4 \ FN .code_B057 STA &27 TSX TXA CLC ADC &04 JSR code_BD5E TXA STA (&04) LDY #&00 .code_B066 INX INY LDA &0100,X STA (&04),Y CPX #&FF \ OSCLI BNE code_B066 TXS LDA &27 PHA LDA &0A PHA LDA &0B PHA LDA &0C PHA LDA &1B TAX CLC ADC &19 LDY &1A BCC code_B08A INY CLC .code_B08A SBC #&01 STA &37 TYA SBC #&00 STA &38 LDY #&02 JSR code_9BBC CPY #&02 BEQ error_bad_call STX &1B JSR code_8139 BNE code_B0A6 JMP code_AFD5 .code_B0A6 FNlda_varptr_2A_0 STA &0B LDY #&01 FNlda_varptr_2A_Y STA &0C .code_B0B0 LDA #&00 PHA STZ &0A JSR code_8F9D CMP #&28 \ ( BEQ code_B109 DEC &0A .code_B0BE LDA &1B PHA LDA &19 PHA LDA &1A PHA JSR code_90D0 PLA STA &1A PLA STA &19 PLA STA &1B PLA BEQ code_B0E2 STA &3F .code_B0D8 JSR code_BD46 JSR code_BCAA DEC &3F BNE code_B0D8 .code_B0E2 PLA STA &0C PLA STA &0B PLA STA &0A PLA LDA (&04) TAX TXS LDY #&00 .code_B0F2 INY INX LDA (&04),Y STA &0100,X CPX #&FF \ OSCLI BNE code_B0F2 TYA ADC &04 STA &04 BCC code_B106 INC &05 .code_B106 LDA &27 RTS .code_B109 LDA &1B PHA LDA &19 PHA LDA &1A PHA JSR code_997D BEQ code_B169 LDA &1B STA &0A PLA STA &1A PLA STA &19 PLA STA &1B PLX LDA ws_vartyp_2C% PHA LDA ws_varptr_2A%+1 PHA LDA ws_varptr_2A%+0 PHA INX PHX JSR code_B1BF JSR code_8DA2 BEQ code_B109 CMP #&29 \ ) BNE code_B169 LDA #&00 PHA JSR code_8F92 CMP #&28 \ ( BNE code_B169 .code_B146 JSR code_9DFF JSR code_BC62 LDA &27 STA &2D JSR code_BC66 PLX INX PHX JSR code_8FA8 BEQ code_B146 CMP #&29 \ ) BNE code_B169 PLA PLA STA &4C STA &4D CPX &4C BEQ code_B17E .code_B169 LDX #&FB \ COLOUR TXS PLA STA &0C PLA STA &0B .error_arguments ; BRK:EQUB &1F:EQUS "Arguments":EQUB 0 .code_B17E JSR code_BD26 PLA STA ws_varptr_2A%+0 PLA STA ws_varptr_2A%+1 PLA STA ws_vartyp_2C% BMI code_B1AB LDA &2D BEQ code_B169 STA &27 LDX #&37 \ 7 JSR code_BE06 LDA &27 BPL code_B1A3 JSR code_BC24 JSR code_A57E BRA code_B1A6 .code_B1A3 JSR code_BD26 .code_B1A6 JSR code_B372 BRA code_B1B5 .code_B1AB LDA &2D BNE code_B169 JSR code_BD12 JSR code_9171 .code_B1B5 DEC &4C BNE code_B17E LDA &4D PHA JMP code_B0BE .code_B1BF LDY &2C CPY #&05 BCS code_B1CA LDX #&37 \ 7 JSR code_BE06 .code_B1CA JSR code_B1DE PHP JSR code_BC62 PLP BEQ code_B1DB BMI code_B1DB LDX #&37 \ 7 JSR code_AAD8 .code_B1DB JMP code_BC66 .code_B1DE LDY ws_vartyp_2C% BMI code_B235 BEQ code_B200 CPY #&05 BEQ code_B205 LDY #3 FNlda_varptr_2A_Y STA &2D DEY FNlda_varptr_2A_Y STA &2C DEY FNlda_varptr_2A_Y TAX FNlda_varptr_2A_0 STA &2A STX &2B LDA #&40 \ @ RTS .code_B200 FNlda_varptr_2A_Y JMP code_AE62 .code_B205 STZ &35 STZ &2F DEY FNlda_varptr_2A_Y STA &34 DEY FNlda_varptr_2A_Y STA &33 DEY FNlda_varptr_2A_Y STA &32 DEY FNlda_varptr_2A_Y STA &2E TAY FNlda_varptr_2A_0 STA &30 BNE code_B22D TYA ORA &32 ORA &33 ORA &34 BEQ code_B230 .code_B22D TYA ORA #&80 \ AND .code_B230 STA &31 LDA #&FF \ OSCLI RTS .code_B235 CPY #&80 \ AND BEQ code_B257 LDY #3 FNlda_varptr_2A_Y STA &36 BEQ code_B256 LDY #1 FNlda_varptr_2A_Y STA ws_walker_37%+1 FNlda_varptr_2A_0 STA ws_walker_37%+0 LDY &36 .code_B24D DEY FNlda_walker_37_Y STA &0600,Y TYA BNE code_B24D .code_B256 RTS .code_B257 LDY #0 .code_B259 FNlda_varptr_2A_Y STA &0600,Y EOR #&0D BEQ code_B266 INY BNE code_B259 TYA .code_B266 STY &36 RTS .token_CHRd ; JSR code_9779 LDA &2A JMP code_AEB4 .code_B271 LDY &0A BEQ code_B276 DEY .code_B276 JSR code_9C80 STZ &08 STZ &09 LDX &18 STX &38 STZ &37 LDY &0C CPY #&07 BEQ code_B2B1 LDX &0B .code_B28B JSR code_8E5D CMP #&0D BNE code_B2AA CPX &37 TYA SBC &38 BCC code_B2B1 JSR code_8E5D ORA #&00 BMI code_B2B1 STA &09 JSR code_8E5D STA &08 JSR code_8E5D .code_B2AA CPX &37 TYA SBC &38 BCS code_B28B .code_B2B1 RTS .brk_handler ; LDX #&FF \ OSCLI STX &28 TXS INX LDY #&00 LDA #&DA \ CLG JSR os_byte% LDA #&7E \ ~ JSR os_byte% JSR code_B271 STZ &20 LDA (&FD) BNE code_B2D0 JSR code_B2E0 .code_B2D0 LDA &16 STA &0B LDA &17 STA &0C STZ &0A JSR code_BBFF JMP code_90D0 .code_B2E0 LDA #default_on_error MOD 256 STA &16 LDA #default_on_error DIV 256 STA &17 RTS .default_on_error ; EQUB token_REPORT%:EQUS ":" EQUB token_IF%:EQUB token_ERL%:EQUB token_PRINT%:EQUS """ at line "";":EQUB token_ERL%:EQUS ":":EQUB token_END% EQUB token_ELSE%:EQUB token_PRINT%:EQUS ":":EQUB token_END% EQUB &0D .token_SOUND ; JSR code_9332 LDX #&03 .code_B307 LDA &2A PHA LDA &2B PHA PHX JSR code_9771 PLX DEX BNE code_B307 JSR code_9C5A LDA &2A STA &3D LDA &2B STA &3E LDY #&07 LDX #&05 BRA code_B341 .token_ENVELOPE ; JSR code_9332 LDX #&0D .code_B32B LDA &2A PHA PHX JSR code_9771 PLX DEX BNE code_B32B JSR code_9C5A LDA &2A STA &44 LDX #&0C LDY #&08 .code_B341 PLA STA &37,X DEX BPL code_B341 TYA LDX #&37 \ 7 LDY #&00 .code_B34C JSR os_word% BRA code_B35C .token_WIDTH ; JSR code_9332 JSR code_9C5A LDY &2A DEY STY &23 .code_B35C JMP code_90CA .code_B35F JMP error_type_mismatch .code_B362 JSR code_9DFF .code_B365 PLY PLX PLA STA ws_vartyp_39% PLA STA ws_varptr_37%+1 PLA STA ws_varptr_37%+0 PHX PHY .code_B372 LDA ws_vartyp_39% LSR A LDA &27 BEQ code_B35F BCS code_B399 BPL code_B380 JSR code_9788 .code_B380 LDA &2A FNsta_varptr_37_0 LDA ws_vartyp_39% BEQ code_B398 LDA &2B LDY #1 FNsta_varptr_37_Y LDA &2C INY FNsta_varptr_37_Y LDA &2D INY FNsta_varptr_37_Y .code_B398 RTS .code_B399 BMI code_B39E JSR code_828D .code_B39E LDA &30 FNsta_varptr_37_0 LDY #1 LDA &2E EOR &31 AND #&80 \ AND EOR &31 FNsta_varptr_37_Y INY LDA &32 FNsta_varptr_37_Y INY LDA &33 FNsta_varptr_37_Y INY LDA &34 FNsta_varptr_37_Y RTS .edit_command ; EQUS "EDIT 12,2" + CHR$(&0D) .token_EDIT ; JSR code_BBDC LDA #&80 \ AND STA &1F .code_B3CF STZ &3B STZ &3C JSR token_FALSE JSR code_9BE2 PHP JSR code_BC66 JSR token_TRUE LSR &2B PLP BCC code_B3F4 JSR code_8DA2 BEQ code_B3FB JSR code_BD26 JSR code_BC66 DEC &0A BRA code_B3FE .code_B3F4 JSR code_8DA2 BEQ code_B3FB DEC &0A .code_B3FB JSR code_9BE2 .code_B3FE LDX #&31 \ 1 JSR code_BE06 JSR code_8F9D CMP #&E7 \ IF BNE code_B428 JSR code_8F9D JSR code_9C80 BRA code_B42B .token_LIST ; INY LDA (&0B),Y CMP #&4F \ O BNE code_B3CF INC &0A JSR code_9332 JSR code_9C6A LDA &2A STA &1F .code_B425 JMP code_904B .code_B428 JSR code_9C74 .code_B42B LDA &0B STA &19 JSR code_BE25 JSR code_BD26 JSR code_8191 LDA &3D STA &0B LDA &3E STA &0C BCS code_B45D DEY BRA code_B454 .code_B445 JSR code_BDD4 BIT &1F BMI code_B451 LDA #&0A JSR os_wrch% .code_B451 JSR code_9C80 .code_B454 LDA (&0B),Y STA &2B INY LDA (&0B),Y STA &2A .code_B45D LDA &2A CLC SBC &31 LDA &2B SBC &32 BCC code_B46F BIT &1F BPL code_B425 JMP code_BF54 .code_B46F STZ &4C STZ &4D LDY #&04 STY &0A STY &1B BIT &3B BPL code_B47F STZ &3B .code_B47F BIT &3C BPL code_B485 STZ &3C .code_B485 LDA (&0B),Y CMP #&0D BEQ code_B4C2 CMP #&F4 \ REM BEQ code_B495 CMP #&22 \ " BNE code_B497 EOR &4C .code_B495 STA &4C .code_B497 LDX &4C BNE code_B4A7 CMP #&ED \ NEXT BNE code_B4A1 DEC &3B .code_B4A1 CMP #&FD \ UNTIL BNE code_B4A7 DEC &3C .code_B4A7 LDX &19 .code_B4A9 LDA &0700,X CMP #&0D BEQ code_B4BA CMP (&0B),Y BNE code_B4BC INY INX BRA code_B4A9 .code_B4B8 BRA code_B445 .code_B4BA STA &4D .code_B4BC INC &1B LDY &1B BRA code_B485 .code_B4C2 LDA &4D BEQ code_B451 JSR code_A0EC LDA #&01 INX SEC JSR code_BDF4 LDX &3B LDA #&02 JSR code_BDF3 LDX &3C LDA #&04 JSR code_BDF3 STZ &4C .code_B4E0 LDY &0A .code_B4E2 LDA (&0B),Y CMP #&0D BEQ code_B4B8 CMP #&22 \ " BNE code_B4F8 EOR &4C STA &4C LDA #&22 \ " .code_B4F2 JSR code_BDD4 INY BRA code_B4E2 .code_B4F8 LDX &4C BNE code_B4F2 CMP #&8D \ Missing BNE code_B50A JSR code_9BEE STY &0A JSR code_A0E8 BRA code_B4E0 .code_B50A CMP #&E3 \ FOR BNE code_B510 INC &3B .code_B510 CMP #&F5 \ REPEAT BNE code_B516 INC &3C .code_B516 CMP #&F4 \ REM BNE code_B51C STA &4C .code_B51C JSR code_BD77 INY BRA code_B4E2 .token_NEXT ; JSR code_99C4 BNE code_B530 LDX &26 BEQ error_no_for BCS code_B56A .code_B52D JMP error_syntax_error .code_B530 BCS code_B52D LDX &26 BEQ error_no_for .code_B536 LDA ws_varptr_2A%+0 CMP for_prev%+0,X BNE code_B54B LDA ws_varptr_2A%+1 CMP for_prev%+1,X BNE code_B54B LDA ws_vartyp_2C% CMP for_prev%+2,X BEQ code_B56A .code_B54B TXA SEC SBC #for_size% TAX STX &26 BNE code_B536 .error_cant_match_for ; BRK:EQUB &21:EQUS "Can't match " + CHR$(token_FOR%) ; .error_no_for ; BRK:EQUB &20:EQUS "No " + CHR$(token_FOR%) ; EQUB &00 .code_B56A LDA for_prev%+0,X STA ws_varptr_2A%+0 LDA for_prev%+1,X STA ws_varptr_2A%+1 LDY for_prev%+2,X CPY #&05 BEQ code_B5F1 FNlda_varptr_2A_0 ADC for_prev%+3,X FNsta_varptr_2A_0 STA &37 LDY #&01 FNlda_varptr_2A_Y ADC for_prev%+4,X FNsta_varptr_2A_Y STA &38 INY FNlda_varptr_2A_Y ADC for_prev%+5,X FNsta_varptr_2A_Y STA &39 INY FNlda_varptr_2A_Y ADC for_prev%+6,X FNsta_varptr_2A_Y TAY LDA &37 SEC SBC for_prev%+8,X STA &37 LDA &38 SBC for_prev%+9,X TSB &37 LDA &39 SBC for_prev%+10,X TSB &37 TYA SBC for_prev%+11,X ORA &37 BEQ code_B5CF TYA EOR for_prev%+6,X EOR for_prev%+11,X BPL code_B5CD BCS code_B5CF BRA code_B5DF .code_B5CD BCS code_B5DF .code_B5CF LDY for_prev%+13,X LDA for_prev%+14,X STY &0B STA &0C JSR code_9C8A JMP code_90D0 .code_B5DF TXA SEC SBC #for_size% STA &26 LDY &1B STY &0A JSR code_8DA2 BNE code_B626 JMP token_NEXT .code_B5F1 JSR code_B205 TXA CLC ADC #(for_prev% + 3) MOD 256 STA &4A LDA #(for_prev% + 3) DIV 256 STA &4B JSR code_A70A LDA &2A STA &37 LDA &2B STA &38 JSR code_B39E LDX &26 TXA CLC ADC #(for_prev% + 8) MOD 256 STA &4A JSR code_9D36 BEQ code_B5CF LDA for_prev%+4,X BMI code_B622 BCS code_B5CF BRA code_B5DF .code_B622 BCC code_B5CF BRA code_B5DF .code_B626 JMP code_90C5 .error_for_variable ; BRK:EQUB &22:EQUS CHR$(token_FOR%) + " variable" ; .error_too_many_fors ; BRK:EQUB &23:EQUS "Too many " + CHR$(token_FOR%) + "s" ; .error_no_to ; BRK:EQUB &24:EQUS "No " + CHR$(token_TO%) ; EQUB &00 .token_FOR ; JSR code_997D BEQ error_for_variable BCS error_for_variable JSR code_BC83 JSR code_9C4A JSR code_B362 JSR code_8F92 CMP #&B8 \ TO BNE error_no_to LDY &26 CPY #for_nest% * for_size% BCS error_too_many_fors TYA ADC #for_size% STA &26 LDA ws_varptr_37%+0 STA for_curr%+0,Y LDA ws_varptr_37%+1 STA for_curr%+1,Y LDA ws_vartyp_39% STA for_curr%+2,Y LSR A BCS code_B6D1 JSR code_9774 LDY &26 LDA &2A STA for_prev%+8,Y LDA &2B STA for_prev%+9,Y LDA &2C STA for_prev%+10,Y LDA &2D STA for_prev%+11,Y LDA #&01 JSR code_AE60 JSR code_8F92 CMP #&88 \ STEP BNE code_B6A7 JSR code_9774 LDY &1B .code_B6A7 STY &0A LDY &26 LDA &2A STA for_prev%+3,Y LDA &2B STA for_prev%+4,Y LDA &2C STA for_prev%+5,Y LDA &2D STA for_prev%+6,Y .code_B6BF JSR code_9C93 LDY &26 LDA &0B STA for_prev%+13,Y LDA &0C STA for_prev%+14,Y JMP code_90D0 .code_B6D1 JSR code_9DFF JSR code_97A2 LDA &26 CLC ADC #(for_prev% + 8) MOD 256 STA &4A LDA #(for_prev% + 8) DIV 256 STA &4B JSR code_A54D JSR code_A622 JSR code_8F92 CMP #&88 \ STEP BNE code_B6F7 JSR code_9DFF JSR code_97A2 LDY &1B .code_B6F7 STY &0A LDA &26 CLC ADC #(for_prev% + 3) MOD 256 STA &4A LDA #(for_prev% + 3) DIV 256 STA &4B JSR code_A54D BRA code_B6BF .token_GOSUB ; JSR code_B85A .code_B70C JSR code_9C6A LDY &25 CPY #gosub_nest% BCS error_too_many_gosubs LDA &0B STA gosub_curr_lo%,Y LDA &0C STA gosub_curr_hi%,Y INC &25 BRA code_B753 .error_too_many_gosubs ; BRK:EQUB &25:EQUS "Too many " + CHR$(token_GOSUB%) + "s" ; .error_no_gosub ; BRK:EQUB &26:EQUS "No " + CHR$(token_GOSUB%) ; EQUB &00 .token_RETURN ; JSR code_9C6A LDX &25 BEQ error_no_gosub DEC &25 LDY gosub_prev_lo%,X LDA gosub_prev_hi%,X STY &0B STA &0C .code_B74A JMP code_90CA .token_GOTO ; JSR code_B85A JSR code_9C6A .code_B753 LDA &20 BEQ code_B75A JSR code_9D0F .code_B75A LDY #&04 STY &0A LDY &3D LDA &3E .code_B762 STY &0B STA &0C JMP code_90D0 .code_B769 JSR code_9C6A JSR code_B2E0 BRA code_B74A .code_B771 JSR code_8F9D CMP #&87 \ OFF BEQ code_B769 LDY &0A DEY JSR code_9C80 STZ &0A LDA &0B STA &16 LDA &0C STA &17 JMP token_DATA .token_ON ; JSR code_8F9D CMP #&85 \ ERROR BEQ code_B771 DEC &0A JSR code_9332 CPX #&F2 \ PROC BEQ code_B7A4 INY CPX #&E5 \ GOTO BEQ code_B7A4 CPX #&E4 \ GOSUB BNE error_on_syntax .code_B7A4 PHX LDA &2B ORA &2C ORA &2D BNE code_B805 DEC &2A BEQ code_B7E6 BMI code_B805 .code_B7B3 LDA (&0B),Y CMP #&0D BEQ code_B805 CMP #&3A \ : BEQ code_B805 CMP #&8B \ ELSE BEQ code_B805 INY CMP #&22 \ " BNE code_B7CA EOR &2B STA &2B .code_B7CA LDX &2B BNE code_B7B3 CMP #&29 \ ) BNE code_B7D4 DEC &2C .code_B7D4 CMP #&28 \ ( BNE code_B7DA INC &2C .code_B7DA CMP #&2C \ , BNE code_B7B3 LDX &2C BNE code_B7B3 DEC &2A BNE code_B7B3 .code_B7E6 PLA CMP #&F2 \ PROC BEQ code_B833 STY &0A CMP #&E4 \ GOSUB BEQ code_B7FA JSR code_B85A JSR code_9C8A JMP code_B753 .code_B7FA JSR code_B85A LDY &0A JSR code_B84D JMP code_B70C .code_B805 PLA .code_B806 LDA (&0B),Y INY CMP #&8B \ ELSE BEQ code_B847 CMP #&0D BNE code_B806 .error_on_range ; BRK:EQUB &28:EQUS CHR$(token_ON%) + " range" ; .error_on_syntax ; BRK:EQUB &27:EQUS CHR$(token_ON%) + " syntax" ; .error_no_such_line ; BRK:EQUB &29:EQUS "No such line" ; EQUB &00 .code_B833 STY &1B JSR code_8F92 CMP #&F2 \ PROC BNE error_on_syntax JSR code_B057 LDY &1B JSR code_B84D JMP code_90C7 .code_B847 STY &0A JMP code_9CED .code_B84C INY .code_B84D LDA (&0B),Y CMP #&0D BEQ code_B857 CMP #&3A \ : BNE code_B84C .code_B857 STY &0A RTS .code_B85A JSR code_9BE2 BCS code_B866 JSR code_9332 LDA #&80 \ AND TRB &2B .code_B866 JSR code_8191 BCC error_no_such_line RTS .code_B86C JMP error_type_mismatch .code_B86F JMP error_syntax_error .code_B872 STY &0A .code_B874 JMP code_90C7 .code_B877 JSR code_BA6C STY &4C JSR code_9338 .code_B87F JSR code_8DA2 BNE code_B872 LDA &4C PHA JSR code_997D BEQ code_B86F JSR code_9338 PLA STA &4C PHP JSR code_BC66 LDY &4C JSR os_bget% STA &27 PLP BCC code_B8BA LDA &27 BNE code_B86C JSR os_bget% STA &36 TAX BEQ code_B8B5 .code_B8AC JSR os_bget% STA &05FF,X DEX BNE code_B8AC .code_B8B5 JSR code_916E BRA code_B87F .code_B8BA LDA &27 BEQ code_B86C BMI code_B8CC LDX #&03 .code_B8C2 JSR os_bget% STA &2A,X DEX BPL code_B8C2 BRA code_B8DA .code_B8CC LDX #&04 .code_B8CE JSR os_bget% STA &046C,X DEX BPL code_B8CE JSR code_A576 .code_B8DA JSR code_BD46 JSR code_B372 BRA code_B87F .code_B8E2 PLA PLA BRA code_B874 .token_INPUT ; JSR code_8D9C BEQ code_B877 CMP #&86 \ LINE BEQ code_B8F2 DEC &0A CLC .code_B8F2 ROR &4C LSR &4C LDA #&FF \ OSCLI STA &4D .code_B8FA JSR code_935C BCS code_B909 .code_B8FF JSR code_935C BCC code_B8FF LDX #&FF \ OSCLI STX &4D CLC .code_B909 PHP ASL &4C PLP ROR &4C CMP #&2C \ , BEQ code_B8FA CMP #&3B \ ; BEQ code_B8FA DEC &0A LDA &4C PHA LDA &4D PHA JSR code_997D BEQ code_B8E2 PLA STA &4D PLA STA &4C JSR code_9338 PHP BIT &4C BVS code_B938 LDA &4D CMP #&FF \ OSCLI BNE code_B94F .code_B938 BIT &4C BPL code_B941 LDA #&3F \ ? JSR os_wrch% .code_B941 JSR code_BAA0 STY &36 ASL &4C CLC ROR &4C BIT &4C BVS code_B968 .code_B94F STA &1B STZ &19 LDA #&06 STA &1A JSR code_AD3A .code_B95A JSR code_8FA8 BEQ code_B965 CMP #&0D BNE code_B95A LDY #&FE \ WIDTH .code_B965 INY STY &4D .code_B968 PLP BCS code_B976 JSR code_BC83 JSR code_ABA5 JSR code_B365 .code_B974 BRA code_B8FA .code_B976 STZ &27 JSR code_9171 BRA code_B974 .token_RESTORE ; STZ &3D LDY &18 STY &3E JSR code_8F9D DEC &0A CMP #&3A \ : BEQ code_B997 CMP #&0D BEQ code_B997 CMP #&8B \ ELSE BEQ code_B997 JSR code_B85A .code_B997 JSR code_9C6A LDA &3D STA &1C LDA &3E STA &1D JMP code_90CA .code_B9A5 JSR code_8DA2 BEQ token_READ JMP code_90C5 .token_READ ; JSR code_997D BEQ code_B9A5 BCS code_B9BF JSR code_B9DC JSR code_BC83 JSR code_B362 BRA code_B9CD .code_B9BF JSR code_B9DC JSR code_BC66 JSR code_AD3A STA &27 JSR code_916E .code_B9CD CLC LDA &1B ADC &19 STA &1C LDA &1A ADC #&00 STA &1D BRA code_B9A5 .code_B9DC JSR code_9338 LDA &1C STA &19 LDA &1D STA &1A STZ &1B JSR code_8FA8 BEQ code_BA46 CMP #&DC \ DATA BEQ code_BA46 CMP #&0D BEQ code_B9FF .code_B9F6 JSR code_8FA8 BEQ code_BA46 CMP #&0D BNE code_B9F6 .code_B9FF LDY &1B LDA (&19),Y BMI error_out_of_data INY INY LDA (&19),Y TAX .code_BA0A INY LDA (&19),Y CMP #&20 BEQ code_BA0A CMP #&DC \ DATA BEQ code_BA43 TXA CLC ADC &19 STA &19 BCC code_B9FF INC &1A BRA code_B9FF .error_out_of_data ; BRK:EQUB &2A:EQUS "Out of " + CHR$(token_DATA%) ; .error_no_repeat ; BRK:EQUB &2B:EQUS "No " + CHR$(token_REPEAT%) ; .error_missing_hash ; BRK:EQUB &2D:EQUS CHR$(tokst_Missing%) + "#" ; .error_too_many_repeats ; BRK:EQUB &2C:EQUS "Too many " + CHR$(token_REPEAT%) + "s" ; EQUB &00 .code_BA43 INY STY &1B .code_BA46 RTS .token_UNTIL ; JSR code_9DF3 JSR code_9C55 JSR code_9781 LDX &24 BEQ error_no_repeat LDA &2A ORA &2B ORA &2C ORA &2D BEQ code_BA63 DEC &24 JMP code_90CA .code_BA63 LDY repeat_prev_lo%,X LDA repeat_prev_hi%,X JMP code_B762 .code_BA6C DEC &0A .code_BA6E LDA &0A STA &1B LDA &0B STA &19 LDA &0C STA &1A .code_BA7A JSR code_8F92 CMP #&23 \ # BNE error_missing_hash JSR code_9779 LDY &2A TYA RTS .token_REPEAT ; LDX &24 CPX #repeat_nest% BCS error_too_many_repeats JSR code_9C80 LDA &0B STA repeat_curr_lo%,X LDA &0C STA repeat_curr_hi%,X INC &24 JMP code_90D0 .code_BAA0 LDA #&06 BRA code_BAA6 .code_BAA4 LDA #&07 .code_BAA6 STZ &37 STA &38 LDA #&EE \ ON STA &39 LDA #&20 STA &3A LDY #&FF \ OSCLI STY &3B INY LDX #&37 \ 7 TYA JSR os_word% BCC code_BAC5 JMP error_escape .code_BAC2 JSR os_newl% .code_BAC5 STZ &1E RTS .code_BAC8 JSR code_8191 BCC code_BB1A LDA &3D STA &37 STA &12 LDA &3E STA &38 STA &13 LDY #&03 LDA (&37),Y CLC ADC &37 STA &37 BCC code_BAE6 INC &38 .code_BAE6 LDY #&00 .code_BAE8 LDA (&37),Y STA (&12),Y CMP #&0D BNE code_BB03 INY BNE code_BAF7 INC &38 INC &13 .code_BAF7 LDA (&37),Y STA (&12),Y BMI code_BB0C JSR code_BB0F JSR code_BB0F .code_BB03 INY BNE code_BAE8 INC &38 INC &13 BRA code_BAE8 .code_BB0C JMP code_BE45 .code_BB0F INY BNE code_BB16 INC &13 INC &38 .code_BB16 LDA (&37),Y STA (&12),Y .code_BB1A RTS .code_BB1B LDX #&FF \ OSCLI STX &28 STX &3C JSR code_BBFF LDA &0B STA &37 LDA &0C STA &38 STZ &3B STZ &0A JSR code_8E6F JSR code_9BE2 BCC code_BB1A .code_BB38 LDA &1F BEQ code_BB45 .code_BB3C LDA &0700,Y INY CMP #&20 BEQ code_BB3C DEY .code_BB45 STY &3B JSR code_BAC8 LDY #&07 STY &3C LDY #&00 LDA #&0D CMP (&3B) BEQ code_BB1A .code_BB56 INY CMP (&3B),Y BNE code_BB56 LDA #&20 .code_BB5D DEY BEQ code_BB64 CMP (&3B),Y BEQ code_BB5D .code_BB64 INY LDA #&0D STA (&3B),Y INY INY INY INY STY &3F LDA &12 STA &39 LDA &13 STA &3A JSR code_BE44 STA &37 LDA &13 STA &38 DEY LDA &06 CMP &12 LDA &07 SBC &13 BCS code_BB9B JSR code_BE25 JSR code_BBDC .error_line_space ; BRK:EQUB &00:EQUS CHR$(token_LINE%) + " space":EQUB 0 .code_BB9B LDA (&39),Y STA (&37),Y TYA BNE code_BBA6 DEC &3A DEC &38 .code_BBA6 DEY TYA ADC &39 LDX &3A BCC code_BBAF INX .code_BBAF CMP &3D TXA SBC &3E BCS code_BB9B LDY #&01 LDA &2B STA (&3D),Y INY LDA &2A STA (&3D),Y INY LDA &3F STA (&3D),Y SEC TYA ADC &3D STA &3D BCC code_BBD0 INC &3E .code_BBD0 LDY #&FF \ OSCLI .code_BBD2 INY LDA (&3B),Y STA (&3D),Y CMP #&0D BNE code_BBD2 RTS .code_BBDC LDA &12 STA &00 STA &02 LDA &13 STA &01 STA &03 JSR code_BBFF .code_BBEB LDX #&10 .code_BBED LDA fp_tables,X STA &07EF,X DEX BNE code_BBED LDX #&80 \ AND .code_BBF8 STZ &047F,X DEX BNE code_BBF8 RTS .code_BBFF LDA &18 STA &1D LDA &06 STA &04 LDA &07 STA &05 LDA #&80 \ AND TRB &1F STZ &24 STZ &26 STZ &25 STZ &1C RTS .code_BC18 JSR code_BC3A JSR code_A026 .code_BC1E STX &27 .code_BC20 TAY JSR code_97A2 .code_BC24 LDA &04 CLC STA &4A ADC #&05 STA &04 LDA &05 STA &4B ADC #&00 STA &05 RTS .code_BC36 TAY JSR code_97A2 .code_BC3A LDA &04 SEC SBC #&05 JSR code_BD5E LDA &30 STA (&04) LDY #&01 LDA &2E EOR &31 AND #&80 \ AND EOR &31 STA (&04),Y INY LDA &32 STA (&04),Y INY LDA &33 STA (&04),Y INY LDA &34 STA (&04),Y RTS .code_BC62 BEQ code_BC91 BMI code_BC3A .code_BC66 LDA &04 SEC SBC #&04 JSR code_BD5E LDY #&03 LDA &2D STA (&04),Y DEY LDA &2C STA (&04),Y DEY LDA &2B STA (&04),Y LDA &2A STA (&04) RTS .code_BC83 PLY PLX LDA ws_varptr_2A%+0 PHA LDA ws_varptr_2A%+1 PHA LDA ws_vartyp_2C% PHA PHX PHY RTS .code_BC91 CLC LDA &04 SBC &36 JSR code_BD5E LDY &36 BEQ code_BCA5 .code_BC9D LDA &05FF,Y STA (&04),Y DEY BNE code_BC9D .code_BCA5 LDA &36 STA (&04) RTS .code_BCAA LDA ws_vartyp_39% CMP #&80 \ AND BEQ code_BCD5 BCC code_BCEA LDA (&04) TAX BEQ code_BCCD FNlda_varptr_37_0 SBC #&01 STA ws_walker_39%+0 LDY #&01 FNlda_varptr_37_Y SBC #&00 STA ws_walker_39%+1 .code_BCC5 LDA (&04),Y FNsta_walker_39_Y INY DEX BNE code_BCC5 .code_BCCD LDA (&04) LDY #&03 .code_BCD1 FNsta_varptr_37_Y BRA code_BD21 .code_BCD5 LDA (&04) LDY #&00 TAX BEQ code_BCE6 .code_BCDC INY LDA (&04),Y DEY FNsta_varptr_37_Y INY DEX BNE code_BCDC .code_BCE6 LDA #&0D BNE code_BCD1 .code_BCEA LDA (&04) FNsta_varptr_37_0 LDY #4 LDA ws_vartyp_39% BEQ code_BD0E LDY #1 LDA (&04),Y FNsta_varptr_37_Y INY LDA (&04),Y FNsta_varptr_37_Y INY LDA (&04),Y FNsta_varptr_37_Y INY CPY ws_vartyp_39% BCS code_BD0E LDA (&04),Y FNsta_varptr_37_Y INY .code_BD0E TYA CLC BRA code_BD3D .code_BD12 LDA (&04) STA &36 BEQ code_BD23 TAY .code_BD19 LDA (&04),Y STA &05FF,Y DEY BNE code_BD19 .code_BD21 LDA (&04) .code_BD23 SEC BRA code_BD3D .code_BD26 LDY #&03 LDA (&04),Y STA &2D DEY LDA (&04),Y STA &2C DEY LDA (&04),Y STA &2B LDA (&04) STA &2A .code_BD3A CLC LDA #&04 .code_BD3D ADC &04 STA &04 BCC code_BD45 INC &05 .code_BD45 RTS .code_BD46 LDX #&37 \ 7 .code_BD48 LDY #&03 LDA (&04),Y STA &03,X DEY LDA (&04),Y STA &02,X DEY LDA (&04),Y STA &01,X LDA (&04) STA &00,X BRA code_BD3A .code_BD5E STA &04 BCS code_BD64 DEC &05 .code_BD64 LDY &05 CPY &03 BCC code_BD74 BNE code_BD70 CMP &02 BCC code_BD74 .code_BD70 RTS .code_BD71 JSR code_BBDC .code_BD74 JMP error_no_room .code_BD77 STA &37 CMP #&80 \ AND BCC code_BDD4 LDA #token_table MOD 256 STA &38 LDA #token_table DIV 256 STA &39 PHY .code_BD86 LDY #&00 .code_BD88 INY LDA (&38),Y BPL code_BD88 CMP &37 BEQ code_BD9E INY TYA SEC ADC &38 STA &38 BCC code_BD86 INC &39 BRA code_BD86 .code_BD9E LDY #&00 .code_BDA0 LDA (&38),Y BMI code_BDAA JSR code_BDD4 INY BNE code_BDA0 .code_BDAA PLY RTS .code_BDAC PHA LSR A LSR A LSR A LSR A JSR code_BDB7 PLA AND #&0F .code_BDB7 CMP #&0A BCC code_BDBD ADC #&06 .code_BDBD ADC #&30 \ 0 .code_BDBF PHA LDA &23 CMP &1E BCS code_BDC9 JSR code_BAC2 .code_BDC9 PLA INC &1E JMP (&020E) .code_BDCF JSR code_BDAC .code_BDD2 LDA #&20 .code_BDD4 BIT &1F BMI code_BDE2 .code_BDD8 CMP #&0D BNE code_BDBF JSR os_wrch% JMP code_BAC5 .code_BDE2 STA (&02) INC &02 BNE code_BE05 INC &03 PHA LDA &03 EOR &07 BEQ code_BD71 PLA RTS .code_BDF3 CLC .code_BDF4 AND &1F BEQ code_BE05 TXA BMI code_BE05 ROL A TAX BEQ code_BE05 .code_BDFF JSR code_BDD2 DEX BNE code_BDFF .code_BE05 RTS .code_BE06 LDA &2A STA &00,X LDA &2B STA &01,X LDA &2C STA &02,X LDA &2D STA &03,X RTS .code_BE17 JSR code_BE81 STZ &3D LDY #&00 LDA #&FF \ OSCLI LDX #&37 \ 7 JSR os_file% .code_BE25 LDA &18 STA &13 STZ &12 LDY #&01 .code_BE2D LDA (&12) CMP #&0D BNE code_BE51 LDA (&12),Y BMI code_BE43 LDY #&03 LDA (&12),Y BEQ code_BE51 CLC JSR code_BE46 BRA code_BE2D .code_BE43 INY .code_BE44 CLC .code_BE45 TYA .code_BE46 ADC &12 STA &12 BCC code_BE4E INC &13 .code_BE4E LDY #&01 RTS .code_BE51 JSR int_inline_string EQUS CHR$(&0D) + "Bad program" + CHR$(&0D) NOP JMP code_904B .code_BE65 STZ &37 LDA #&06 STA &38 .code_BE6B LDY &36 LDA #&0D STA &0600,Y RTS .code_BE73 JMP error_type_mismatch .code_BE76 JSR code_9DF3 BNE code_BE73 JSR code_BE65 JMP code_9C55 .code_BE81 JSR code_BE76 DEY STY &39 LDA &18 STA &3A .code_BE8B LDA #&82 \ EOR JSR os_byte% STX &3B STY &3C RTS .token_SAVE ; JSR code_BE25 JSR code_BE81 STX &3F STY &40 STX &43 STY &44 STX &47 STY &48 STZ &41 LDX &12 STX &45 LDX &13 STX &46 LDX #language_init MOD 256 STX &3D LDX #language_init DIV 256 STX &3E LDX &18 STX &42 LDA #&00 TAY LDX #&37 \ 7 JSR os_file% BRA code_BEEB .token_OSCLI ; JSR code_BE76 LDX #&00 LDY #&06 JSR os_cli% BRA code_BEEB .code_BED3 LDA #&03 BRA code_BED9 .tokva_PTR LDA #&01 .code_BED9 PHA JSR code_BA6E PHY JSR code_9C16 JSR code_9781 PLY LDX #&2A \ * PLA JSR os_args% .code_BEEB JMP code_90CA .token_CLOSE ; JSR code_BA6E JSR code_9C5A LDY &2A LDA #&00 JSR os_find% BRA code_BEEB .token_BPUT ; JSR code_BA6E PHA JSR code_9771 JSR code_9C5A PLY LDA &2A JSR os_bput% BRA code_BEEB .int_inline_string ; PLA STA &37 PLA STA &38 BRA code_BF1A .code_BF17 JSR os_asci% .code_BF1A JSR code_8E66 BPL code_BF17 JMP (&0037) .code_BF22 LDA #&05 PHX LDX #&2A \ * LDY #&00 JSR os_word% PLX LDA &2E .code_BF2F INC &2A BNE code_BF3D INC &2B BNE code_BF3D INC &2C BNE code_BF3D INC &2D .code_BF3D RTS .code_BF3E LDA #&0D LDY &18 STY &13 STZ &12 STZ &20 STA (&12) LDA #&FF \ OSCLI LDY #&01 STA (&12),Y INY STY &12 RTS .code_BF54 LDY #&09 .code_BF56 LDA edit_command,Y STA &0600,Y DEY BPL code_BF56 LDX #&00 LDY #&06 JMP os_cli% .code_BF66 LDA #&EA \ LOCAL LDX #&00 LDY #&FF \ OSCLI JSR os_byte% TXA RTS .fp_tables ; EQUB &52 ; EQUW code_A80B ; (JMP) EQUW code_A634 ; (JMP) EQUW code_A6E4 ; (JMP) EQUW code_A70A ; (JMP) EQUW code_AD10 ; (JMP) EQUW code_A57E ; (JMP) EQUW code_A54D ; (JMP) ; EQUW &2E4A ; .fpok_const_82 ; EQUB &7F:EQUB &5E:EQUB &5B:EQUB &D8:EQUB &AA ; EQUB &00:EQUB &CA EQUB &98:EQUB &80 ; .fpok_const_8B ; EQUB &81:EQUB &22:EQUB &F9:EQUB &83:EQUB &6E ; .fpok_const_90 ; EQUB &81:EQUB &49:EQUB &0F:EQUB &DA:EQUB &A2 ; EQUB &21 ; EQUB &B3:EQUB &B2 EQUB &87:EQUB &80 ; .fpok_const_9A ; EQUB &82:EQUB &38:EQUB &AA:EQUB &3B:EQUB &29 ; .fpok_const_9F ; EQUB &80:EQUB &31:EQUB &72:EQUB &17:EQUB &F7 ; EQUB &D1 ; .fpok_const_A5 ; EQUB &5F:EQUB &5B:EQUB &E6:EQUB &FF EQUB &66:EQUB &2B:EQUB &CC:EQUB &77 EQUB &6D:EQUB &06:EQUB &37:EQUB &BD EQUB &73:EQUB &51:EQUB &B7:EQUB &17 EQUB &7A:EQUB &23:EQUB &D7:EQUB &0A ; .fpok_const_B9 ; EQUB &81:EQUB &00:EQUB &00:EQUB &00:EQUB &00 ; .fpok_const_BE ; EQUB &82:EQUB &40:EQUB &00:EQUB &00:EQUB &00 ; EQUB &9A:EQUB &D4 EQUB &82:EQUB &7F ; .fpok_const_C7 ; EQUB &B9 EQUB &FF:EQUB &78 ; .fpok_const_CA ; EQUB &7B:EQUB &0E:EQUB &FA:EQUB &35:EQUB &12 ; .fpok_const_CF ; EQUB &86:EQUB &65:EQUB &2E:EQUB &E0:EQUB &D3 EQUB &7E:EQUB &88:EQUB &88:EQUB &88:EQUB &89 EQUB &7B:EQUB &8C:EQUB &6F:EQUB &2D:EQUB &59 EQUB &81:EQUB &99:EQUB &99:EQUB &99:EQUB &9A ; EQUB &F3:EQUB &9E EQUB &7B:EQUB &77 ; .fpok_const_E7 ; EQUB &81:EQUB &C0:EQUB &00:EQUB &00:EQUB &00 EQUB &80:EQUB &93:EQUB &E6:EQUB &90:EQUB &00 EQUB &81:EQUB &C4:EQUB &44:EQUB &44:EQUB &44 EQUB &80:EQUB &9D:EQUB &FD:EQUB &13:EQUB &04 EQUB &81:EQUB &E6:EQUB &66:EQUB &66:EQUB &66 ] NEXT ENDPROC DEFFNsta_vartop_02_0:[OPT `P:STA (ws_vartop_02%) :]:= 0 DEFFNsta_vartop_02_Y:[OPT `P:STA (ws_vartop_02%),Y:]:= 0 DEFFNlda_varptr_2A_0:[OPT `P:LDA (ws_varptr_2A%) :]:= 0 DEFFNlda_varptr_2A_Y:[OPT `P:LDA (ws_varptr_2A%),Y:]:= 0 DEFFNsta_varptr_2A_0:[OPT `P:STA (ws_varptr_2A%) :]:= 0 DEFFNsta_varptr_2A_Y:[OPT `P:STA (ws_varptr_2A%),Y:]:= 0 DEFFNadc_varptr_2A_0:[OPT `P:ADC (ws_varptr_2A%) :]:= 0 DEFFNadc_varptr_2A_Y:[OPT `P:ADC (ws_varptr_2A%),Y:]:= 0 DEFFNsbc_varptr_2A_Y:[OPT `P:SBC (ws_varptr_2A%),Y:]:= 0 DEFFNsta_walker_2C_Y:[OPT `P:STA (ws_walker_2C%),Y:]:= 0 DEFFNlda_varptr_37_0:[OPT `P:LDA (ws_varptr_37%) :]:= 0 DEFFNlda_varptr_37_Y:[OPT `P:LDA (ws_varptr_37%),Y:]:= 0 DEFFNsta_varptr_37_0:[OPT `P:STA (ws_varptr_37%) :]:= 0 DEFFNsta_varptr_37_Y:[OPT `P:STA (ws_varptr_37%),Y:]:= 0 DEFFNcmp_varptr_37_Y:[OPT `P:CMP (ws_varptr_37%),Y:]:= 0 DEFFNsbc_varptr_37_Y:[OPT `P:SBC (ws_varptr_37%),Y:]:= 0 DEFFNlda_walker_37_Y:[OPT `P:LDA (ws_walker_37%),Y:]:= 0 DEFFNsta_walker_37_0:[OPT `P:STA (ws_walker_37%) :]:= 0 DEFFNsta_walker_37_Y:[OPT `P:STA (ws_walker_37%),Y:]:= 0 DEFFNsta_walker_39_Y:[OPT `P:STA (ws_walker_39%),Y:]:= 0 DEFFNlda_walker_3A_0:[OPT `P:LDA (ws_walker_3A%) :]:= 0 DEFFNlda_walker_3A_Y:[OPT `P:LDA (ws_walker_3A%),Y:]:= 0 DEFFNsta_walker_3A_0:[OPT `P:STA (ws_walker_3A%) :]:= 0 DEFFNsta_walker_3A_Y:[OPT `P:STA (ws_walker_3A%),Y:]:= 0