A2osX/BASIC.FX/BASIC.S.XM.txt

314 lines
4.4 KiB
Plaintext
Raw Normal View History

2022-05-25 18:46:02 +00:00
NEW
AUTO 3,1
*--------------------------------------
XBBD7 .BS 1
XBBD8 .BS 1
XBBD9 .BS 1 .DA #4 ????
XBBDA .BS 1
XBBDB .BS 1
XBBDD .BS 1
*--------------------------------------
BSX.FRE0 jsr BSX.FRE1
bcs .9
lda ASX.PGRMSTART+1
sta BS.TXTTAB+1
lda ASX.PGRMSTART
sta BS.TXTTAB
lda ASX.HIMEM+1
sta XBBD8
lda #$03
sta XBBD9
lda ASX.STRINGSTART+1
sta BS.MEMSIZE+1
lda #$00
sta BS.MEMSIZE
bra BSX.FRE2 Z
.9 rts
*--------------------------------------
BSX.FRE1 stz BS.TXTTAB
lda ASX.HIMEM+1
sta XBBD8
lda #$03
sta XBBD9
lda ASX.STRINGSTART+1
sta BS.TXTTAB+1
sec
sbc ASX.ARRAYEND+1
cmp #$07
bcc .1
sbc #$03
sta XBBD9
lda ASX.ARRAYEND+1
adc #$00
sta XBBD8
lda ASX.HIMEM+1
sbc ASX.STRINGSTART+1
adc #$01
cmp XBBD9
bcs .1
sta XBBD9
.1 lda ASX.HIMEM+1
sta BS.MEMSIZE+1
lda ASX.HIMEM
sta BS.MEMSIZE
sta ASX.STRINGSTART
*--------------------------------------
BSX.FRE2 clc
beq .1
sec
.1 lda BS.MEMSIZE+1
sta ASX.STRINGSTART+1
sbc #$00
sta XBBDA
adc #$00
sta XBBDB
lda ASX.ARRAYEND+1
adc #$01
sta XBBDD
.2 lda ASX.VARSTART
sbc #$06
sta ZP.A2L
lda ASX.VARSTART+1
sbc #$00
sta ZP.A2H
lda ASX.ARRAYSTART
sta XBBDC
lda XBBDA
cmp BS.TXTTAB+1
bcc .9
sbc XBBD9
sta XBBD7
lda ASX.STRINGSTART+1
sbc XBBDA
sbc XBBD7
eor #$FF
adc #$02
cmp XBBD7
bcc .3
lda XBBD7
.3 cmp BS.TXTTAB+1
bcs .4
lda BS.TXTTAB+1
sbc #$00
.4 sta XBBDA
jsr BSX.LA199
ldx ASX.ARRAYSTART+1
jsr BSX.LA0FB
bcs .5
jsr BSX.LA131
lda XBBDA
sta XBBDB
bcc .2
.5 lda #BS.E.NOBUFFER
.9 rts
*--------------------------------------
BSX.LA0FB clc
.1 lda ZP.A2L
adc #$07
sta ZP.A2L
bcc .2
inc ZP.A2H
.2 eor ASX.ARRAYSTART
bne .3
cpx ZP.A2H
beq BSX.LA12F
.3 ldy #$00
lda (ZP.A2L),y
iny
eor (ZP.A2L),y
bpl BSX.LA0FB
lda (ZP.A2L),y
bpl BSX.LA0FB
ldy #$04
lda (ZP.A2L),y
cmp XBBDA
bcc .1
cmp XBBDB
bcs BSX.LA0FB
jsr BSX.LA1BC
bcc .1
rts
BSX.LA12F clc
rts
*--------------------------------------
BSX.LA131 jsr BSX.LA160
bcs BSX.LA12F
.1 ldy #$02
lda (ZP.A2L),y
cmp XBBDA
bcc .2
cmp XBBDB
bcs .2
jsr BSX.LA1BC
bcc .3
rts
.2 clc
.3 lda #$03
adc ZP.A2L
sta ZP.A2L
bcc .4
inc ZP.A2H
.4 cmp XBBDC
bne .1
cpx ZP.A2H
bne .1
beq BSX.LA131
*--------------------------------------
BSX.LA160 clc
lda XBBDC
sta ZP.A2L
stx ZP.A2H
eor ASX.ARRAYEND
bne .1
cpx ASX.ARRAYEND+1
beq .9
.1 ldy #$02
lda (ZP.A2L),y
adc ZP.A2L
sta XBBDC
iny
lda (ZP.A2L),y
adc ZP.A2H
tax
ldy #$00
lda (ZP.A2L),y
iny
eor (ZP.A2L),y
bpl BSX.LA160
ldy #$04
lda (ZP.A2L),y
asl
adc #$05
adc ZP.A2L
sta ZP.A2L
bcc .9
inc ZP.A2H
clc
.9 rts
*--------------------------------------
BSX.LA199 lda XBBD7
sta ZP.PCH
lda XBBD8
sta ZP.A1H
ldy #$00
sty ZP.PCL
sty ZP.A1L
ldx XBBD9
inx
.1 lda (ZP.PCL),y
sta (ZP.A1L),y
iny
bne .1
inc ZP.A1H
inc ZP.PCH
dex
bne .1
rts
*--------------------------------------
BSX.LA1BC cmp XBBD7
bcc .1
sbc XBBD7
clc
adc XBBD8
.1 sta ZP.PCH
dey
lda (ZP.A2L),y
sta ZP.PCL
dey
sec
lda ASX.STRINGSTART
sbc (ZP.A2L),y
sta ASX.STRINGSTART
sta .3+1
iny
sta (ZP.A2L),y
lda ASX.STRINGSTART+1
sbc #$00
sta ASX.STRINGSTART+1
sta .3+2
iny
sta (ZP.A2L),y
dey
dey
lda (ZP.A2L),y
beq .8
tay
.2 dey
lda (ZP.PCL),y
.3 sta $FFFF,y SELF MODIFIED
tya
bne .2
.8 clc
lda XBBDD
sbc ASX.STRINGSTART+1
rts
*--------------------------------------
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.xm
LOAD usr/src/basic.fx/basic.s
ASM