; ********************************** ; ** ** ; ** ATARI BASIC ROM: A000-BFFF ** ; ** ** ; ********************************** LOMEM = $80 ; pointer to BASIC's low memory VNTP = $82 ; start of variable name table VNTD = $84 ; end of variable name table VVTP = $86 ; start of variable value table STMTAB = $88 ; start of the statement table STMCUR = $8A ; current statement pointer STARP = $8C ; strings/arrays pointer RUNSTK = $8E ; runtime stack MEMTOP = $90 ; memtop POKADR = $95 ; address of last POKE location DATAD = $B6 ; data element being read DATALN = $B7 ; data statement line number STOPLN = $BA ; line where the program was stopped ERRSAVE = $C3 ; number of the error code PTABW = $C9 ; number of cols between tab stops .org $A000 .segment "A000BFFF" .include "atari.inc" .include "pokey.inc" .import DA48,DA51,DBA1,DBAF,DE95,DF6C,DFAE,DFEA .import AFP,FMOVE,FADD,FSUB,FMUL,LOG,LOG10,DC00 .import EXP,EXP10,ZF1,PLYEVL,FSTOR,FLD0R,CIOV .import ZFR0,FLD1R,FASC,IFP,FPI,FDIV .export BFF0,BFFA,BFFC,BFFE A000: lda $CA bne @1 lda $8 bne L3 @1: ldx #$FF txs cld A00C: ldx MEMLO ldy MEMLO+1 stx LOMEM sty LOMEM+1 lda #0 sta $92 sta $CA iny txa ldx #$82 @2: sta 0,X inx sty 0,X inx cpx #$92 bcc @2 ldx #$86 ldy #1 jsr A87A ldx #$8C ldy #3 jsr A87A lda #0 tay sta (VNTD),Y sta (STMCUR),Y iny lda #$80 sta (STMCUR),Y iny lda #3 sta (STMCUR),Y lda #10 ; tab stops -> 10 sta PTABW L3: jsr B8F1 A050: jsr BD45 A053: jsr BD5B lda $92 beq A05D jsr BD9D A05D: jsr BD62 A060: lda $CA bne A000 ldx #$FF txs jsr DA51 lda #$5D sta $C2 jsr BDED jsr A9F2 beq A060 lda #0 sta CIX sta $9F sta $94 sta $A6 sta $B3 sta $B0 sta $B1 lda VNTD sta $AD lda VNTD+1 sta $AE jsr DBA1 jsr A19A jsr A2C4 lda FR0+1 bpl @4 sta $A6 @4: jsr DBA1 ldy CIX sty $A8 lda (INBUFF),Y cmp #$9B bne A0B1 bit $A6 bmi A060 jmp A186 A0B1: lda $94 sta $A7 jsr A2C4 jsr DBA1 lda #>A49F ldy #A7DE ldy #'+$80 ; <> .byte '>','='+$80 ; >= .byte '<'+$80 ; < .byte '>'+$80 ; > .byte '='+$80 ; = .byte '^'+$80 ; ^ .byte '*'+$80 ; * .byte '+'+$80 ; + .byte '-'+$80 ; - .byte '/'+$80 ; / .byte 'N','O','T'+$80 ; NOT .byte 'O','R'+$80 ; OR .byte 'A','N','D'+$80 ; AND .byte '('+$80 ; ( .byte ')'+$80 ; ) .byte '='+$80 ; = .byte '='+$80 ; = .byte '<','='+$80 ; <= .byte '<','>'+$80 ; <> .byte '>','='+$80 ; >= .byte '<'+$80 ; < .byte '>'+$80 ; > .byte '='+$80 ; = .byte '+'+$80 ; + .byte '-'+$80 ; - .byte $A8,$80,$80,$A8,$A8,$AC .byte 'S','T','R','$'+$80 ; STR$ .byte 'C','H','R','$'+$80 ; CHR$ .byte 'U','S','R'+$80 ; USR .byte 'A','S','C'+$80 ; ASC .byte 'V','A','L'+$80 ; VAL .byte 'L','E','N'+$80 ; LEN .byte 'A','D','R'+$80 ; ADR .byte 'A','T','N'+$80 ; ATN .byte 'C','O','S'+$80 ; COS .byte 'P','E','E','K'+$80 ; PEEK .byte 'S','I','N'+$80 ; SIN .byte 'R','N','D'+$80 ; RND .byte 'F','R','E'+$80 ; FRE .byte 'E','X','P'+$80 ; EXP .byte 'L','O','G'+$80 ; LOG .byte 'C','L','O','G'+$80 ; CLOG .byte 'S','Q','R'+$80 ; SQR .byte 'S','G','N'+$80 ; SGN .byte 'A','B','S'+$80 ; ABS .byte 'I','N','T'+$80 ; INT .byte 'P','A','D','D','L','E'+$80 ; PADDLE .byte 'S','T','I','C','K'+$80 ; STICK .byte 'P','T','R','I','G'+$80 ; PTRIG .byte 'S','T','R','I','G'+$80 ; STRIG .byte 0 A87A: lda #0 A87C: sty $A4 sta $A5 tya sec adc MEMTOP tay lda MEMTOP+1 adc $A5 cmp HIMEM+1 bcc A89A bne A897 cpy HIMEM bcc A89A beq A89A A897: jmp B930 A89A: sec lda MEMTOP sbc 0,X sta $A2 lda MEMTOP+1 sbc 1,X sta $A3 clc adc 1,X sta $9A lda 0,X sta $99 sta $97 adc $A4 sta $9B lda 1,X sta $98 adc $A5 adc $A3 sta $9C A8C0: lda 0,X adc $A4 sta 0,X lda 1,X adc $A5 sta 1,X inx inx cpx #$92 bcc A8C0 sta APPMHI+1 lda MEMTOP sta APPMHI ldx $A3 inx ldy $A2 bne A8EC nop ; huh? beq A8F3 nop ; This is Rev. B BASIC! A8E3: dey dec $9A dec $9C A8E8: lda ($99),Y sta ($9B),Y A8EC: dey bne A8E8 lda ($99),Y sta ($9B),Y A8F3: dex bne A8E3 rts A8F7: tay A8F8: lda #0 A8FA: sty $A4 sta $A5 sec lda MEMTOP sbc 0,X eor #$FF tay iny sty $A2 lda MEMTOP+1 sbc 1,X sta $A3 lda 0,X sbc $A2 sta $99 lda 1,X sbc #0 sta $9A stx $9B A91D: sec lda 0,X sbc $A4 sta 0,X lda 1,X sbc $A5 sta 1,X inx inx cpx #$92 bcc A91D sta APPMHI+1 lda MEMTOP sta APPMHI ldx $9B lda 0,X sbc $A2 sta $9B lda 1,X sbc #0 sta $9C A944: ldx $A3 inx ldy $A2 bne A953 dex bne A953 rts A94F: inc $9A inc $9C A953: lda ($99),Y sta ($9B),Y iny bne A953 dex bne A94F rts A95E: jsr B819 A961: jsr A9F2 beq A99C ldy $A7 cpy $9F bcs A989 lda (STMCUR),Y sta $A7 tya iny lda (STMCUR),Y iny sty $A8 jsr A97E nop ; huh? jmp A961 A97E: asl A tax lda A9FA,X pha lda A9FA+1,X pha rts A989: ldy #1 lda (STMCUR),Y bmi A99F lda $9F jsr A9D0 jsr A9E1 bpl A95E jmp B78C A99C: jmp B792 A99F: jmp A05D A9A2: lda STMCUR sta $BE lda STMCUR+1 sta $BF lda STMTAB+1 ldy STMTAB sta STMCUR+1 sty STMCUR A9B2: ldy #1 lda (STMCUR),Y cmp $A1 bcc A9C7 bne A9C6 dey lda (STMCUR),Y cmp $A0 bcc A9C7 bne A9C6 clc A9C6: rts A9C7: jsr A9DC jsr A9D0 jmp A9B2 A9D0: clc ; STMCUR += accu adc STMCUR sta STMCUR lda STMCUR+1 adc #0 sta STMCUR+1 rts A9DC: ldy #2 lda (STMCUR),Y rts A9E1: ldy #1 lda (STMCUR),Y A9E5: rts A9E6: jsr BD45 jmp $E471 A9EC: jsr BD45 jmp ($00A) A9F2: ldy BRKKEY bne A9F9 dec BRKKEY tya A9F9: rts A9FA: .dbyt A9E5-1,A9E5-1,B33E-1,BA1F-1,B4B5-1,BAC5-1,AADA-1,B778-1 .dbyt B67D-1,B700-1,B6D5-1,B6D5-1,B6D2-1,B7D8-1,A9E6-1,B7B5-1 .dbyt B206-1,BC22-1,B766-1,B28D-1,B206-1,B78C-1,A00C-1,BBF2-1 .dbyt BAFB-1,BB6D-1,BC2F-1,BC3D-1,BC54-1,BBEC-1,B7E4-1,B278-1 .dbyt B3DA-1,B291-1,B2AE-1,B296-1,BDA8-1,B74C-1,B792-1,B83E-1 .dbyt B3DA-1,BC85-1,BC78-1,BA46-1,BA6C-1,BA0C-1,A9EC-1,BA27-1 .dbyt B9AD-1,BC9E-1,B9D3-1,B496-1,BBD1-1,BB64-1,AADA-1,B912-1 AA6A: .dbyt ACA3-1,ACAC-1,ACC2-1,ACB2-1,ACB9-1,ACC9-1,B15E-1,AC83-1 .dbyt BDFA-1,AC7A-1,AC8C-1,ACE4-1,ACD9-1,ACCF-1,AB35-1,AD66-1 .dbyt AD4A-1,AE8E-1,ACA3-1,ACAC-1,ACC2-1,ACB2-1,ACB9-1,ACC9-1 .dbyt AB35-1,AC95-1,AE11-1,AD71-1,AD6D-1,AD66-1,AD6D-1,AD64-1 .dbyt B034-1,B052-1,B0A5-1,AFFD-1,AFEB-1,AFB5-1,B007-1,B118-1 .dbyt B10F-1,AFCC-1,B106-1,B076-1,AFD6-1,B14A-1,B121-1,B13D-1 .dbyt B153-1,AD04-1,B099-1,B0C8-1,B00D-1,B011-1,B015-1,B019-1 AADA: jsr AB26 AADD: jsr AB36 bcs AAE7 jsr ABB2 bmi AADD AAE7: sta $AB tax lda AC35-$10,X lsr A lsr A lsr A lsr A sta $AC AAF3: ldy $A9 lda (LOMEM),Y tax lda AC35-$10,X and #$F cmp $AC bcc AB0E tax beq AB35 AB04: lda (LOMEM),Y inc $A9 jsr AB18 jmp AAF3 AB0E: lda $AB dey sta (LOMEM),Y sty $A9 jmp AADD AB18: sec sbc #$1D asl A tax lda AA6A,X pha lda AA6A+1,X pha rts AB26: ldy #$FF lda #$11 sta (LOMEM),Y sty $A9 iny sty $B0 sty $AA sty $B1 AB35: rts AB36: ldy $A8 inc $A8 lda (STMCUR),Y bmi AB81 cmp #$F bcc AB45 beq AB57 rts AB45: ldx #0 AB47: iny lda (STMCUR),Y sta FR0,X inx cpx #6 bcc AB47 iny lda #0 tax beq AB79 AB57: iny lda (STMCUR),Y ldx #$8A AB5C: sta $D6 sta $D8 iny tya clc adc $0,X sta FR0 lda #0 sta $D7 sta $D9 adc $1,X sta FR0+1 tya adc $D6 tay ldx #0 lda #$83 AB79: sta $D2 stx $D3 sty $A8 clc rts AB81: jsr AC1E AB84: lda ($9D),Y sta $0D2,Y iny cpy #$8 bcc AB84 clc rts AB90: jsr ABE9 AB93: lda #2 bit $D2 bne ABAE ora $D2 sta $D2 ror A bcc ABAF clc lda FR0 adc $8C sta FR0 tay lda FR0+1 adc $8D sta FR0+1 ABAE: rts ABAF: jsr B922 ABB2: inc $AA lda $AA asl A asl A asl A cmp $A9 bcs ABCA tay dey ldx #$7 ABC1: lda $D2,X sta (LOMEM),Y dey dex bpl ABC1 ABC9: rts ABCA: jmp B920 ABCD: jsr ABD7 lda FR0+1 bpl ABC9 jmp B926 ABD7: jsr AADA ABDA: jsr ABE9 jmp AD41 ABE0: jsr ABCD bne ABE6 rts ABE6: jsr B92E ABE9: lda $AA dec $AA asl A asl A asl A tay dey ldx #7 ABF4: lda (LOMEM),Y sta $D2,X dey dex bpl ABF4 rts ABFD: jsr ABE9 jsr FMOVE jmp ABE9 AC06: jsr AADA jmp ABE9 AC0C: lda $D3 jsr AC1E ldx #0 AC13: lda $D2,X sta ($9D),Y iny inx cpx #8 bcc AC13 rts AC1E: ldy #0 sty $9E asl A asl A rol $9E asl A rol $9E clc adc VVTP sta $9D lda VVTP+1 adc $9E sta $9E rts AC35: .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$88,$88,$88 .byte $88,$88,$88,$CC,$AA,$99,$99,$AA .byte $DD,$55,$66,$F2,$4E,$F1,$F1,$EE .byte $EE,$EE,$EE,$EE,$EE,$DD,$DD,$F2 .byte $F2,$F2,$F2,$F2,$43,$F2,$F2,$F2 .byte $F2,$F2,$F2,$F2,$F2,$F2,$F2,$F2 .byte $F2,$F2,$F2,$F2,$F2,$F2,$F2,$F2 .byte $F2,$F2,$F2,$F2,$F2 AC7A: jsr ABFD jsr AD2C jmp ABB2 AC83: jsr ABFD jsr AD32 jmp ABB2 AC8C: jsr ABFD jsr AD38 jmp ABB2 AC95: jsr ABE9 lda FR0 beq ACA0 eor #$80 sta FR0 ACA0: jmp ABB2 ACA3: jsr AD11 bmi ACF0 beq ACF0 bpl ACEB ACAC: jsr AD11 jmp ACE0 ACB2: jsr AD11 bmi ACF0 bpl ACEB ACB9: jsr AD11 bmi ACEB beq ACEB bpl ACF0 ACC2: jsr AD11 bmi ACEB bpl ACF0 ACC9: jsr AD11 jmp ACE9 ACCF: jsr ABFD lda FR0 and FR1 jmp ACE0 ACD9: jsr ABFD lda FR0 ora FR1 ACE0: beq ACEB bne ACF0 ACE4: jsr ABE9 lda FR0 ACE9: beq ACF0 ACEB: lda #0 tay beq ACF4 ACF0: lda #$40 ACF2: ldy #1 ACF4: sta FR0 sty FR0+1 ldx #$D6 ldy #4 jsr DA48 sta $D2 AD01: jmp ABB2 AD04: jsr ABE9 lda FR0 beq AD01 bpl ACF0 lda #$C0 bmi ACF2 AD11: ldy $A9 dey lda (LOMEM),Y cmp #$2F bcc AD1D jmp AF6C AD1D: jsr ABFD AD20: jsr AD2C lda FR0 rts AD26: jsr FADD bcs AD3E rts AD2C: jsr FSUB bcs AD3E rts AD32: jsr FMUL bcs AD3E rts AD38: jsr FDIV bcs AD3E rts AD3E: jsr B91E AD41: jsr FPI bcs AD47 rts AD47: jsr B92E AD4A: lda $A9 cmp #$FF bne AD5F jsr ABFD ldx #5 ; copy FR1 -> FR0 AD55: lda FR1,X sta FR0,X dex bpl AD55 jmp AC0C AD5F: lda #$80 sta $B1 rts AD64: inc $B0 AD66: ldy $A9 pla pla jmp AB04 AD6D: lda #$40 sta $B1 AD71: bit $B1 bpl AD7B lda $AA sta $AF dec $AA AD7B: lda #0 tay cmp $B0 beq AD8D dec $B0 jsr ABDA lda FR0+1 bmi ADAE ldy FR0 AD8D: sta $98 sty $97 jsr ABDA lda FR0 sta $F5 lda FR0+1 bmi ADAE sta $F6 jsr ABE9 bit $B1 bvc ADAA lda #0 sta $B1 rts ADAA: ror $D2 bcs ADB1 ADAE: jsr B922 ADB1: lda $F6 cmp $D7 bcc ADBF bne ADAE lda $F5 cmp $D6 bcs ADAE ADBF: lda $98 cmp $D9 bcc ADCD bne ADAE lda $97 cmp $D8 bcs ADAE ADCD: jsr AF48 lda $97 ldy $98 jsr AF3D jsr AF31 lda FR0 ldy FR0+1 jsr AF3D lda $8C ldy $8D jsr AF3D bit $B1 bpl AE01 lda $AF sta $AA jsr ABE9 ldy #5 ADF5: lda FR0,Y sta ($F5),Y dey bpl ADF5 iny sty $B1 rts AE01: ldy #5 AE03: lda ($F5),Y sta $0D4,Y dey bpl AE03 iny sty $D2 jmp ABB2 AE11: lda $B0 beq AE1C jsr AE81 sty $98 sta $97 AE1C: jsr AE81 sec sbc #1 sta $F5 tya sbc #0 sta $F6 jsr ABE9 lda $B1 bpl AE3B ora $B0 sta $B1 ldy $D9 lda $D8 jmp AE3F AE3B: lda $D6 ldy $D7 AE3F: ldx $B0 beq AE53 dec $B0 cpy $98 bcc AE7E bne AE4F cmp $97 bcc AE7E AE4F: ldy $98 lda $97 AE53: sec sbc $F5 sta $D6 tax tya sbc $F6 sta $D7 bcc AE7E tay bne AE66 txa beq AE7E AE66: jsr AB93 clc lda FR0 adc $F5 sta FR0 lda FR0+1 adc $F6 sta FR0+1 bit $B1 bpl AE7B rts AE7B: jmp ABB2 AE7E: jsr B92A AE81: jsr ABDA lda FR0 ldy FR0+1 bne AE8D tax beq AE7E AE8D: rts AE8E: jsr AB90 AE91: lda FR0 sta $99 lda FR0+1 sta $9A lda FR0+2 sta $A2 ldy FR0+3 sty $A3 ldy $A9 cpy #$FF beq AEB6 lda #$80 sta $B1 jsr AB04 lda $D7 ldy $D6 rol $B1 bcs AEBD AEB6: jsr AB90 lda $D9 ldy $D8 AEBD: cmp $A3 bcc AEC7 bne AECB cpy $A2 bcs AECB AEC7: sta $A3 sty $A2 AECB: clc lda FR0 adc $A2 tay lda FR0+1 adc $A3 tax sec tya sbc $8C sta $F9 txa sbc $8D sta $FA sec lda #0 sbc $A2 sta $A2 sec lda $99 sbc $A2 sta $99 lda $9A sbc #0 sta $9A sec lda FR0 sbc $A2 sta $9B lda FR0+1 sbc #0 sta $9C jsr A944 lda $D3 jsr AB81 sec lda $F9 sbc FR0 tay lda $FA sbc FR0+1 tax lda #2 and $B1 beq AF2A lda #0 sta $B1 cpx $D7 bcc AF29 bne AF2A cpy $D6 bcs AF2A AF29: rts AF2A: sty $D6 stx $D7 jmp AC0C AF31: asl $F5 rol $F6 ldy $F6 lda $F5 asl $F5 rol $F6 AF3D: clc adc $F5 sta $F5 tya adc $F6 sta $F6 rts AF48: lda #0 sta $F7 sta $F8 ldy #$10 AF50: lda $F5 lsr A bcc AF61 clc ldx #$FE AF58: lda $F9,X adc $DA,X sta $F9,X inx bne AF58 AF61: ldx #3 AF63: ror $F5,X dex bpl AF63 dey bne AF50 rts AF6C: jsr AB90 jsr FMOVE jsr AB90 AF75: ldx #$D6 jsr AFA7 php ldx #$E2 jsr AFA7 beq AF95 plp beq AF92 ldy #0 lda (FR0),Y cmp (FR1),Y beq AF99 bcc AF92 AF8F: lda #1 rts AF92: lda #$80 rts AF95: plp bne AF8F rts AF99: inc FR0 bne AF9F inc FR0+1 AF9F: inc FR1 bne AF75 inc FR1+1 bne AF75 AFA7: lda 0,X bne AFB1 lda 1,X beq AFB4 dec 1,X AFB1: dec 0,X tay AFB4: rts AFB5: jsr AB90 lda FR0+2 ldy FR0+3 AFBC: sta FR0 sty FR0+1 AFC0: jsr IFP AFC3: lda #0 sta $D2 sta $D3 jmp ABB2 AFCC: jsr ABDA ldy #0 lda ($D4),Y jmp AFBC AFD6: jsr ABE9 sec lda HIMEM sbc MEMTOP sta FR0 lda HIMEM+1 sbc MEMTOP+1 sta FR0+1 jmp AFC0 AFEB: jsr BD7D lda #0 sta CIX jsr AFP jsr BD9D bcc AFC3 jsr B910 AFFD: jsr AB90 ldy #0 lda (FR0),Y jmp AFBC B007: jsr AB90 jmp AFC0 B00D: lda #0 beq B01B B011: lda #8 bne B01B B015: lda #12 bne B01B B019: lda #20 B01B: pha jsr ABDA lda FR0+1 bne B031 lda FR0 pla clc adc FR0 tax lda $270,X ldy #0 beq AFBC B031: jsr B92E B034: jsr ABE9 jsr FASC lda INBUFF sta FR0 lda INBUFF+1 sta FR0+1 ldy #$FF B044: iny lda (INBUFF),Y bpl B044 and #$7F sta (INBUFF),Y iny sty $D6 bne B069 B052: jsr ABE9 jsr AD41 lda FR0 sta $5C0 lda #5 sta FR0+1 lda #$C0 sta FR0 lda #1 sta FR0+2 B069: lda #0 sta FR0+3 sta $D3 lda #$83 sta $D2 jmp ABB2 B076: ldx #B093 jsr FLD1R jsr ABE9 ldy RANDOM sty FR0 ldy RANDOM sty FR0+1 jsr IFP jsr AD38 jmp ABB2 B093: .byte $42,$06,$55,$36,$00,$00 B099: jsr ABE9 lda FR0 and #$7F sta FR0 jmp ABB2 B0A5: jsr B0AE jsr IFP jmp ABB2 B0AE: lda $B0 sta $C6 B0B2: jsr ABDA dec $C6 bmi B0C2 lda FR0 pha lda FR0+1 pha jmp B0B2 B0C2: lda $B0 pha jmp (FR0) B0C8: jsr ABE9 jsr B0D1 jmp ABB2 B0D1: lda FR0 and #$7F sec sbc #$3F bpl B0DC lda #0 B0DC: tax lda #0 tay B0E0: cpx #5 bcs B0EB ora FR0+1,X sty FR0+1,X inx bne B0E0 B0EB: ldx FR0 bpl B103 tax beq B103 ldx #$E0 jsr ZF1 lda #$C0 sta $E0 lda #1 sta $E1 jsr AD26 rts B103: jmp DC00 B106: jsr ABE9 jsr BE05 jmp B159 B10F: jsr ABE9 jsr BE0F jmp B159 B118: jsr ABE9 jsr BED5 jmp B159 B121: jsr ABE9 lda FR0 beq B15B jsr LOG B12B: bcs B15B lda FR0 eor #$3B bne B16C lda FR0+1 and #$F8 bne B16C sta FR0 beq B16C B13D: jsr ABE9 ; CLOG lda FR0 beq B15B jsr LOG10 jmp B12B B14A: jsr ABE9 ; EXP jsr EXP jmp B159 B153: jsr ABE9 jsr BF43 B159: bcc B16C B15B: jsr B92E B15E: jsr ABFD lda FR1 beq B16F rol A ldy FR0 bne B172 bcs B15B B16C: jmp ABB2 B16F: jmp ACF0 B172: ldx #$D4 jsr BA76 ror A pha ldx #$E0 jsr BA76 tya bpl B19F and #$7F sta FR0 bcs B18A pla bcc B15B B18A: lda FR1 bpl B18F clc B18F: php ldx $F7 cpx #5 bcs B1A5 lda $E1,X ror A bcc B1A5 lda #$80 bne B1A7 B19F: lda $E0 bpl B1A4 clc B1A4: php B1A5: lda #0 B1A7: pha ldx #5 B1AA: lda FR1,X pha dex bpl B1AA jsr LOG10 ldx #0 ldy #5 B1B7: pla sta FR1,X inx dey bpl B1B7 jsr AD32 jsr EXP10 bcs B203 pla ora $D4 sta $D4 plp pla bpl B16C bcc B16C ldx #$D4 jsr BA76 bcs B16C lda FR0 sec and #$7F sbc #$3F cmp #6 bcs B200 tax tay sed sec B1E7: lda FR0,X adc #0 sta FR0,X dex bne B1E7 cld bcc B1F7 inc FR0 inc FR0+1 B1F7: iny cpy #6 bcs B200 stx FR0,Y bcc B1F7 B200: jmp ABB2 B203: jsr B91E B206: ldy $A8 cpy $A7 bcc B20D rts B20D: jsr AADA lda $D2 ror A bcc B218 B215: jsr B922 B218: sec rol A sta $D2 bmi B24C ldy $F5 ldx $F6 iny bne B228 inx bmi B215 B228: sty $D6 stx $D7 sty $F5 stx $F6 ldy $97 ldx $98 iny bne B23A inx bmi B215 B23A: sty $D8 stx $D9 jsr AF48 jsr AF31 ldy $F5 lda $F6 bmi B215 bpl B260 B24C: lda #0 sta $D6 sta $D7 ldy $F5 sty $D8 lda $F6 sta $D9 bne B260 cpy #0 beq B215 B260: ldx #$8E jsr A87C sec lda $97 sbc $8C sta FR0 lda $98 sbc $8D sta FR0+1 jsr AC0C jmp B206 B278: jsr ABD7 ; poke lda FR0 sta POKADR lda FR0+1 sta POKADR+1 jsr ABE0 lda FR0 ldy #0 sta (POKADR),Y rts B28D: lda #6 bne B293 B291: lda #0 B293: sta $FB rts B296: lda #0 ; restore sta DATAD jsr B904 bcc B2A2 tay beq B2A9 B2A2: jsr ABCD lda FR0+1 ldy FR0 B2A9: sta DATALN+1 sty DATALN rts B2AE: lda $A8 pha jsr B6F9 lda DATALN sta $A0 lda DATALN+1 sta $A1 jsr A9A2 lda STMCUR sta INBUFF lda STMCUR+1 sta INBUFF+1 jsr BDA8 pla sta $A8 B2CD: ldy #0 sty CIX jsr B32F sta DATALN jsr B32D sta DATALN+1 jsr B32D sta $F5 B2E0: jsr $B32D sta $F6 jsr B32D eor #1 beq B312 ldy $F6 cpy $F5 bcs B2F7 dey sty CIX bcc B2E0 B2F7: sty CIX dec CIX B2FB: ldy #1 lda (INBUFF),Y bmi B33B sec lda CIX adc INBUFF sta INBUFF lda #0 sta DATAD adc INBUFF+1 sta INBUFF+1 bcc B2CD B312: sta $F5 B314: lda $F5 cmp DATAD bcs B325 B31A: jsr B32D bne B31A bcs B2FB inc $F5 bne B314 B325: lda #$40 sta $A6 inc CIX bcs B35F B32D: inc CIX B32F: ldy CIX lda (INBUFF),Y cmp #$2C clc beq B33A cmp #$9B B33A: rts B33B: jsr B928 B33E: lda #$3F sta $C2 jsr AB36 dec $A8 bcc B34E jsr BD07 sta $B4 B34E: jsr DA51 jsr BDE4 jsr A9F2 beq B378 ldy #0 sty $A6 sty CIX B35F: jsr AB36 inc $A8 lda $D2 bmi B382 jsr AFP bcs B37B jsr B32F bne B37B jsr AC0C jmp B3AD B378: jmp B792 B37B: lda #0 sta $B4 jsr B924 B382: jsr AB26 jsr ABB2 dec CIX lda CIX sta $F5 ldx #$FF B390: inx jsr B32D bne B390 bcs B39C bit $A6 bvc B390 B39C: ldy $F5 lda $A8 pha txa ldx #INBUFF jsr AB5C pla sta $A8 jsr AE91 B3AD: bit $A6 bvc B3C0 inc DATAD jsr B904 bcs B3C5 jsr B32F bcc B3D5 jmp B2FB B3C0: jsr B904 bcc B3CD B3C5: jsr DA51 lda #0 sta $B4 rts B3CD: jsr B32F bcc B3D5 jmp B34E B3D5: inc CIX jmp B35F B3DA: lda PTABW sta $AF lda #0 sta $94 B3E2: ldy $A8 lda (STMCUR),Y cmp #$12 beq B449 cmp #$16 beq B467 cmp #$14 beq B467 cmp #$15 beq B474 cmp #$1C beq B46A jsr AADA jsr ABE9 dec $A8 bit $D2 bmi B428 lda FR0+1 cmp #$10 bcc B412 lda $D9 and #$F0 sta $D9 B412: jsr FASC lda #0 sta CIX B419: ldy CIX lda (INBUFF),Y pha inc CIX jsr B48F pla bpl B419 bmi B3E2 B428: jsr AB93 lda #0 sta CIX B42F: lda $D6 bne B437 dec $D7 bmi B3E2 B437: dec $D6 ldy CIX lda (FR0),Y inc CIX bne B443 inc FR0+1 B443: jsr B491 jmp B42F B449: ldy $94 iny cpy $AF bcc B459 clc lda PTABW adc $AF sta $AF bcc B449 B459: ldy $94 cpy $AF bcs B474 lda #$20 jsr B48F jmp B459 B467: jmp B485 B46A: jsr BD07 sta $B5 dec $A8 jmp B3E2 B474: inc $A8 ldy $A8 lda (STMCUR),Y cmp #$16 beq B48A cmp #$14 beq B48A jmp B3E2 B485: lda #$9B jsr B491 B48A: lda #0 sta $B5 rts B48F: and #$7F B491: inc $94 jmp BA99 B496: lda #B4B2 sta INBUFF+1 ldx #7 stx $B5 lda #0 ldy #8 jsr BBD8 jsr BCBB jsr B3DA jmp BCF7 B4B2: .byte "P:",$9B B4B5: ldy #0 sty $A0 sty $A1 dey sty $AD lda #$7F sta $AE sta $2FE lda #$9B jsr BA99 jsr B6F9 B4CD: ldy $A8 iny cpy $A7 bcs B501 lda $A8 pha jsr AC06 pla sta $A8 lda $D2 bpl B4E7 jsr BACF jmp B4CD B4E7: jsr ABCD sta $A1 lda FR0 sta $A0 ldy $A8 cpy $A7 beq B4F9 jsr ABCD B4F9: lda FR0 sta $AD lda FR0+1 sta $AE B501: jsr A9A2 B504: jsr A9E1 bmi B52D ldy #1 lda (STMCUR),Y cmp $AE bcc B51C bne B52D dey lda (STMCUR),Y cmp $AD bcc B51C bne B52D B51C: jsr B58E jsr A9F2 beq B52D jsr A9DC jsr A9D0 jmp B504 B52D: lda $B5 beq B538 jsr BCF7 lda #0 sta $B5 B538: sta $2FE jmp BDA8 B53E: stx $AA jsr B562 B543: ldy $AA dec $AF bmi B557 B549: lda (POKADR),Y bmi B550 iny bne B549 B550: iny jsr B557 jmp B543 B557: clc tya adc POKADR sta POKADR tay lda POKADR+1 adc #0 B562: sta POKADR+1 sty POKADR rts B567: ldy #$FF sty $AF B56B: inc $AF ldy $AF lda (POKADR),Y pha cmp #$9B beq B57A and #$7F beq B57D B57A: jsr BA99 B57D: pla bpl B56B rts B581: lda #$20 jsr BA99 B586: jsr B567 lda #$20 jmp BA99 B58E: ldy #0 lda (STMCUR),Y sta FR0 iny lda (STMCUR),Y sta FR0+1 jsr IFP jsr FASC lda INBUFF sta POKADR lda INBUFF+1 sta POKADR+1 jsr B586 B5AA: ldy #2 lda (STMCUR),Y sta $9F iny B5B1: lda (STMCUR),Y sta $A7 iny sty $A8 jsr B5C2 ldy $A7 cpy $9F bcc B5B1 rts B5C2: jsr B663 cmp #$36 beq B5E0 jsr B66F jsr B663 cmp #$37 beq B5D7 cmp #2 bcs B5E0 B5D7: jsr B661 jsr BA99 jmp B5D7 B5E0: jsr B661 bpl B5FF and #$7F sta $AF ldx #0 lda VNTP+1 ldy VNTP jsr B53E jsr B567 cmp #$A8 bne B5E0 jsr B661 jmp B5E0 B5FF: cmp #15 beq B61B bcs B63B jsr AB45 dec $A8 jsr FASC lda INBUFF sta POKADR lda INBUFF+1 sta POKADR+1 B615: jsr B567 jmp B5E0 B61B: jsr B661 sta $AF lda #$22 jsr BA99 lda $AF beq B633 B629: jsr B661 jsr BA99 dec $AF bne B629 B633: lda #$22 jsr BA99 jmp B5E0 B63B: sec sbc #$10 sta $AF ldx #0 lda #$A7 ldy #$DE jsr B53E jsr B663 cmp #$3D bcs B615 ldy #0 lda (POKADR),Y and #$7F jsr A3EC bcs B615 jsr B581 jmp B5E0 B661: inc $A8 B663: ldy $A8 cpy $A7 bcs B66C lda (STMCUR),Y rts B66C: pla pla rts B66F: sta $AF ldx #2 lda #>A49F ldy # 0 ldy #0 B8F5: sty $B6,X dex bpl B8F5 sty $FB dey sty $BD sty BRKKEY jmp BD45 B904: ldx $A8 inx cpx $A7 rts B90A: inc $B9 B90C: inc $B9 B90E: inc $B9 B910: inc $B9 B912: inc $B9 B914: inc $B9 B916: inc $B9 B918: inc $B9 B91A: inc $B9 B91C: inc $B9 B91E: inc $B9 B920: inc $B9 B922: inc $B9 B924: inc $B9 B926: inc $B9 B928: inc $B9 B92A: inc $B9 B92C: inc $B9 B92E: inc $B9 B930: inc $B9 inc $B9 B934: lda #0 sta $2FE jsr B7A6 lda $BD bmi B955 sta $A1 lda $BC sta $A0 lda #$80 sta $BD lda $B9 sta ERRSAVE lda #0 sta $B9 jmp B6E0 B955: jsr BD79 lda #$37 jsr B66F lda $B9 sta FR0 lda #0 sta FR0+1 jsr B993 B968: jsr A9E1 bmi B986 lda #B9A4 sta POKADR+1 jsr B567 ldy #1 lda (STMCUR),Y sta FR0+1 dey lda (STMCUR),Y sta FR0 jsr B993 B986: jsr BD79 lda #0 sta $B9 jsr BD5B jmp A060 B993: jsr IFP jsr FASC lda INBUFF sta POKADR lda INBUFF+1 sta POKADR+1 jmp B567 B9A4: .byte ' ','A','T',' ','L','I','N','E',' '+$80 B9AD: jsr ABE0 lda FR0 cmp #5 bcs B9D0 pha jsr ABD7 lda FR0 asl A asl A asl A asl A pha jsr ABD7 pla clc adc FR0 tay pla tax tya sta $2C4,X rts B9D0: jsr B92E B9D3: jsr ABE0 lda FR0 cmp #4 bcs B9D0 asl A pha lda #0 sta AUDCTL lda #3 sta SKCTL jsr ABD7 pla pha tax lda $D4 sta $D200,X jsr ABD7 lda $D4 asl A asl A asl A asl A pha jsr ABD7 pla tay pla tax tya clc adc FR0 sta $D201,X rts BA0C: jsr ABD7 lda FR0 sta $55 lda FR0+1 sta $56 jsr ABE0 lda FR0 sta $54 rts BA1F: jsr ABD7 lda FR0 sta $C8 rts BA27: jsr BA0C lda $C8 sta $2FB lda #$11 ldx #6 jsr BABE lda #12 sta $34A,X lda #0 sta $34B,X jsr BD29 jmp BCBB BA46: ldx #6 stx $C1 jsr BCF7 jsr ABD7 ldx #BA69 stx INBUFF sty INBUFF+1 ldx #6 lda FR0 and #$F0 eor #$1C tay lda FR0 jsr BBD8 jmp BCBB BA69: .byte "S:",$9B BA6C: jsr BA0C lda $C8 ldx #6 jmp BA9B BA76: sec lda 0,X and #$7F sbc #$40 bcc BA98 sta $F5 sta $F7 txa adc $F5 inx inx inx inx inx inx stx $F5 tax BA8F: inx cpx $F5 bcs BA98 lda 0,X beq BA8F BA98: rts BA99: ldx $B5 BA9B: pha jsr BAC0 lda $34A,X sta ICAX1Z lda $34B,X sta ICAX2Z pla tay jsr BAB2 tya jmp BCBE BAB2: lda $347,X pha lda $346,X pha tya ldy #$92 rts BABE: sta $C0 BAC0: stx $C1 jmp BCAF BAC5: lda #4 jsr BAD7 sta $B4 jmp A060 BACF: lda #8 jsr BAD7 sta $B5 rts BAD7: pha ldy #7 sty $C1 jsr BCAF lda #12 jsr BD2B ldy #3 sty $C0 pla ldy #0 jsr BC02 lda #7 rts BAF1: .byte $40,$02,$00,$00,$00,$00 BAF7: lda #$FF bne W1 BAFB: lda #0 W1: pha lda #4 jsr BAD7 pla W2: pha lda #7 sta $C0 sta $CA jsr BCAF ldy #14 jsr BD15 jsr BCBB lda $580 ora $581 bne @7 ldx #$8C @3: clc lda LOMEM adc $500,X php clc adc #0 tay lda LOMEM+1 adc $501,X plp adc #0 cmp HIMEM+1 bcc @5 bne @4 cpy HIMEM bcc @5 @4: jmp B90E @5: sta 1,X sty 0,X dex dex cpx #$82 bcs @3 jsr W9 jsr B766 lda #0 sta $CA pla beq @6 rts @6: jmp A050 @7: lda #0 sta $CA jsr B90A BB64: lda #4 jsr BBB4 lda #0 beq W2 BB6D: lda #8 jsr BAD7 BB72: lda #$B sta $C0 ldx #$80 @8: sec lda 0,X sbc LOMEM sta $500,X inx lda 0,X sbc LOMEM+1 sta $500,X inx cpx #$8E bcc @8 jsr BCAF ldy #$E jsr BD15 jsr BCBB W9: jsr BCAF lda VNTP sta INBUFF lda VNTP+1 sta INBUFF+1 ldy $58D dey tya ldy $58C jsr BD17 jsr BCBB jmp BCF7 BBB4: nop nop pha ldx #BBCE stx INBUFF+1 ldx #7 pla tay lda #$80 jsr BBD8 jsr BCBB lda #7 rts BBCE: .byte "C:",$9B BBD1: lda #8 jsr BBB4 bne BB72 BBD8: pha lda #3 jsr BABE pla sta $34B,X tya sta $34A,X jsr BD1E jmp DA51 BBEC: jsr BD09 jmp BBF4 BBF2: lda #3 BBF4: sta $C0 jsr BCA8 jsr BD09 pha jsr BD09 tay pla BC02: pha tya pha jsr AADA jsr BD7D jsr BCAF pla sta $34B,X pla sta $34A,X jsr BD0F jsr BD9D jsr DA51 jmp BCBB BC22: lda #12 BC24: sta $C0 jsr BCA8 BC29: jsr BD29 jmp BCBB BC2F: jsr BCA8 lda #13 jsr BD2B jsr BD00 jmp BD31 BC3D: lda #$26 jsr BC24 lda $34C,X ldy $34D,X jsr BD33 jsr BCAF lda $34E,X jmp BD31 BC54: jsr BCA8 jsr ABCD jsr BCAF lda FR0 sta $34C,X lda FR0+1 sta $34D,X jsr ABCD jsr BCAF lda FR0 sta $34E,X lda #$25 sta $C0 bne BC29 BC78: jsr BCA8 jsr ABD7 lda FR0 ldx $C1 jmp BA9B BC85: jsr DA51 jsr BCA8 BC8B: lda #7 sta $C0 ldy #1 jsr BD15 jsr BCBB ldy #0 lda (INBUFF),Y jmp BD31 BC9E: jsr BA0C ldx #6 jsr BAC0 bne BC8B BCA8: jsr BD07 sta $C1 beq BCB8 BCAF: lda $C1 asl A asl A asl A asl A tax bpl BD06 BCB8: jsr B90C BCBB: jsr BD00 BCBE: bpl BD06 ldy #0 sty $2FE cmp #$80 bne BCD2 sty BRKKEY lda $CA beq BD06 jmp A000 BCD2: ldy $C1 BCD3: cmp #$88 beq BCE7 BCD8: sta $B9 cpy #7 bne BCE1 jsr BCF7 BCE1: jsr BD5B jmp B934 BCE7: cpy #7 bne BCD8 ldx #$5D cpx $C2 bne BCD8 jsr BCF7 jmp A053 BCF7: jsr BCAF beq BD06 lda #12 bne BD2B BD00: jsr BCAF lda ICSTA,X BD06: rts BD07: inc $A8 BD09: jsr ABCD lda FR0 rts BD0F: ldy #$FF bne BD15 ldy #0 BD15: lda #0 BD17: sta ICBLH,X tya sta ICBLL,X BD1E: lda INBUFF+1 ldy INBUFF sta ICBAH,X tya sta ICBAL,X BD29: lda $C0 BD2B: sta ICCOM,X jmp CIOV BD31: ldy #0 BD33: pha tya pha jsr AC06 pla sta FR0+1 pla sta FR0 jsr IFP jmp AC0C BD45: lda #0 ldx #7 BD49: sta $D200,X dex bne BD49 ldy #7 sty $C1 BD53: jsr BCF7 dec $C1 bne BD53 rts BD5B: lda #0 sta $B4 sta $B5 rts BD62: ldx #6 BD64: stx CIX lda BD72,X jsr BA99 ldx CIX dex bpl BD64 rts BD72: .byte $9B,"YDAER",$9B BD79: ldx #0 beq BD64 BD7D: jsr AB90 lda FR0 sta INBUFF lda FR0+1 sta INBUFF+1 ldy FR0+2 ldx FR0+3 beq BD90 ldy #$FF BD90: lda (INBUFF),Y sta $97 sty $98 lda #$9B sta (INBUFF),Y sta $92 rts BD9D: ldy $98 lda $97 sta (INBUFF),Y lda #0 sta $92 rts BDA8: jsr B83E bcs BDC8 bne BDA8 jsr BDCB cmp #12 beq BDDA cmp #$1E beq BDDA cmp #4 beq BDDA cmp #$22 beq BDDA BDC2: jsr B6F0 jsr B916 BDC8: jsr B914 BDCB: jsr B816 bcs BDC2 ldy $B2 dey lda (STMCUR),Y sta $A7 iny lda (STMCUR),Y BDDA: rts ldx $B4 bne BDED lda #$9B jsr BA99 BDE4: ldx $B4 bne BDED lda $C2 jsr BA99 BDED: ldx $B4 lda #5 jsr BABE jsr BD0F jmp BCBB BDFA: jsr ABFD jsr AD26 jmp ABB2 BE03: sec rts BE05: lda #4 bit FR0 bpl BE11 lda #2 bne BE11 BE0F: lda #1 BE11: sta $F0 lda FR0 and #$7F sta FR0 lda #$BD clc adc $FB tax ldy #$BE jsr FLD1R jsr FDIV bcc BE2A rts BE2A: lda FR0 and #$7F sec sbc #$40 bmi BE5E cmp #4 bpl BE03 tax lda FR0+1,X sta $F1 and #$10 beq BE42 lda #2 BE42: clc adc $F1 and #3 adc $F0 sta $F0 stx $F1 jsr FMOVE ldx $F1 lda #0 BE54: sta $E2,X inx cpx #3 bcc BE54 jsr FSUB BE5E: lsr $F0 bcc BE6F jsr FMOVE ldx #BECF jsr FLD0R jsr FSUB BE6F: ldx #$E6 ldy #5 jsr FSTOR jsr FMOVE jsr FMUL bcs BE03 lda #6 ldx #BE9F jsr PLYEVL ldx #$E6 ldy #5 jsr FLD1R jsr FMUL lsr $F0 bcc BE9E clc lda FR0 beq BE9E eor #$80 sta FR0 BE9E: rts BE9F: .byte $BD,$03,$55,$14,$99,$39 .byte $3E,$01,$60,$44,$27,$52 .byte $BE,$46,$81,$75,$43,$55 .byte $3F,$07,$96,$92,$62,$39 .byte $BF,$64,$59,$64,$08,$67 .byte $40,$01,$57,$07,$96,$32 ; 1.57079632 .byte $40,$90,$00,$00,$00,$00 ; 90.00000000 BEC9: .byte $3F,$01,$74,$53,$29,$25 BECF: .byte $40,$01,$00,$00,$00,$00 ; 1.00000000 BED5: lda #0 sta $F0 sta $F1 lda FR0 and #$7F cmp #$40 bmi BEF8 lda FR0 and #%10000000 sta $F0 inc $F1 lda #%01111111 and FR0 sta FR0 ldx #DFEA jsr DE95 BEF8: ldx #$E6 ldy #5 jsr FSTOR jsr FMOVE jsr FMUL bcs BF40 lda #11 ldx #DFAE jsr PLYEVL bcs BF40 ldx #$E6 ldy #5 jsr FLD1R jsr FMUL bcs BF40 lda $F1 beq BF32 ldx #$F0 ldy #$DF jsr FLD1R jsr FADD lda $F0 ora FR0 sta FR0 BF32: lda $FB beq BF40 ldx #BEC9 jsr FLD1R jsr FDIV BF40: rts BF41: sec rts BF43: lda #0 sta $F1 lda FR0 bmi BF41 cmp #$3F beq BF66 clc adc #1 sta $F1 sta $E0 lda #1 sta $E1 ldx #4 lda #0 BF5E: sta $E2,X dex bpl BF5E jsr FDIV BF66: lda #6 sta $EF ldx #$E6 ldy #5 jsr FSTOR jsr FMOVE ldx #BAF1 jsr FLD0R jsr FSUB ldx #$E6 ldy #5 jsr FLD1R jsr FMUL BF88: ldx #$EC ldy #5 jsr FSTOR jsr FMOVE ldx #$E6 ldy #5 jsr FLD0R jsr FDIV ldx #$EC ldy #5 jsr FLD1R jsr FSUB ldx #DF6C jsr FLD1R jsr FMUL lda FR0 beq BFC2 ldx #$EC ldy #5 jsr FLD1R jsr FADD dec $EF bpl BF88 BFC2: ldx #$EC ldy #5 jsr FLD0R lda $F1 beq BFF0 sec sbc #$40 clc ror A clc adc #$40 and #$7F sta $E0 lda $F1 ror A lda #1 bcc BFE2 lda #$10 BFE2: sta $E1 ldx #4 lda #0 BFE8: sta $E2,X dex bpl BFE8 jsr FMUL BFF0: rts .byte 0,0,0,0,0,0,0,0,0 BFFA: .word A000 BFFC: .word $500 BFFE: .word BFF0 .end