A2osX/BASIC.FX/BASIC.S.A.txt

1317 lines
19 KiB
Plaintext
Raw Normal View History

NEW
AUTO 3,1
*--------------------------------------
BS.ResetCSWKSW pha
2022-03-18 17:59:39 +00:00
phx
ldx #3
.1 lda GP.VECTOUT,x
sta ZP.CSW,x
dex
bpl .1
plx
pla
rts
2022-03-13 12:52:24 +00:00
*--------------------------------------
BS.SetState0 ldx #$00
jsr BS.SetState
2022-03-13 12:52:24 +00:00
lda ZP.KSW+1
cmp GP.VDOSI+1
beq BS.SetCSWKSW2VDOS
2022-03-13 12:52:24 +00:00
lda ZP.CSW+1
cmp GP.VDOSO+1
beq BS.SetCSWKSW2VDOS
bne BS.SaveCSWKSW
2022-03-13 12:52:24 +00:00
*--------------------------------------
BS.IO.OUT cmp X9F65
bne L9A54
stx GP.PREGX
tsx
2022-03-13 12:52:24 +00:00
lda $103,x
cmp #$12 From AS rom: TRACE
bne L9A6E
2022-03-13 12:52:24 +00:00
lda $104,x
cmp #$D8 jsr from $D810, then JSR MON.COUT
bne L9A6E
ldx #$04
jsr BS.SetState
2022-03-13 12:52:24 +00:00
lda X9F65
ldx GP.PREGX
jmp BS.JMP.GP.VSYSO
L9A54 cmp GP.CHRLAST
sta GP.CHRLAST
bne L9A74
cmp #$8D
bne L9A74
2022-03-13 12:52:24 +00:00
lda ZP.CH
bne L9A69
2022-03-13 12:52:24 +00:00
lda BS.CMDBUF
cmp #$3F
2022-03-13 12:52:24 +00:00
L9A69 lda #$8D
bcs L9A74
rts
L9A6E ldx GP.PREGX
2022-03-13 12:52:24 +00:00
lda X9F65
L9A74 jsr BS.ResetCSWKSW
jsr MON.COUT
cmp #$8D
bne BS.SaveCSWKSW
2022-03-13 12:52:24 +00:00
lda AS.TRCFLG
cmp #$A5
beq L9A8B
sta GP.DTRACE
2022-03-13 12:52:24 +00:00
lda #$A5
sta AS.TRCFLG
2022-03-13 12:52:24 +00:00
L9A8B lda #$8D
BS.SaveCSWKSW pha
2022-03-18 17:59:39 +00:00
phx
ldx #3
.1 lda ZP.CSW,x
sta GP.VECTOUT,x
dex
bpl .1
plx
pla
BS.SetCSWKSW2VDOS
pha
2022-03-18 17:59:39 +00:00
phx
ldx #3
.1 lda GP.VDOSO,x
sta ZP.CSW,x
dex
bpl .1
plx
pla
rts
2022-03-13 12:52:24 +00:00
*--------------------------------------
BS.IO.IN bit GP.EXECACTV
2022-03-15 19:33:19 +00:00
bpl .1
jsr BS.SaveAXY
jmp BS.IO.IN.EXEC
2022-03-15 19:33:19 +00:00
.1 jsr BS.ResetCSWKSW
jsr MON.KEYIN0
cmp #$8D
2022-03-15 19:33:19 +00:00
beq .5
cmp #$FF
2022-03-18 17:59:39 +00:00
bne BS.SaveCSWKSW
* lda ZP.PROMPT
* >DEBUG
txa
beq BS.IO.IN.BS
2022-03-15 19:33:19 +00:00
lda #$88
jsr MON.COUT
2022-03-18 17:59:39 +00:00
2022-03-15 19:33:19 +00:00
lda #$A0
jsr MON.COUT
2022-03-18 17:59:39 +00:00
bra BS.IO.IN.BS
2022-03-15 19:33:19 +00:00
.5 jsr BS.SaveAXY
sta IO.LINEBUF,x
BS.CheckDOSCMD jsr BS.DOSCMD
bit GP.XCNUM
bmi L9AE8
bcs BS.ERROUT
ldy GP.PREGY
ldx #$00
2022-03-18 17:59:39 +00:00
BS.IO.IN.BS lda #$88
bra BS.SaveCSWKSW
2022-03-18 17:59:39 +00:00
L9AE8 jsr BS.RestoreAXY
bra BS.SaveCSWKSW
2022-03-15 19:33:19 +00:00
*--------------------------------------
2022-03-13 12:52:24 +00:00
BS.NODEVERR lda #$03
BS.ERROUT sta GP.ERRCODE
sta AS.ERRNUM
2022-03-13 12:52:24 +00:00
lda GP.STATE
cmp #$01
php
2022-03-13 12:52:24 +00:00
lda #$0F
sta MLI.LEVEL
2022-03-13 12:52:24 +00:00
stz GP.IFILACTV
stz GP.OFILACTV
stz GP.PFXACTV
stz GP.MLICF.REFNUM
2022-03-15 19:33:19 +00:00
jsr BS.MLIClose
bcs L9B27
jsr LA004
bcs L9B27
2022-03-13 12:52:24 +00:00
stz MLI.LEVEL
stz GP.MLICF.REFNUM
lda #MLI.C.FLUSH
jsr GP.GOSYSTEM
L9B27 plp
ldx #$04
bit AS.ERRFLG
bcs L9B30
ldx #$00
L9B30 php
jsr BS.SetState
jsr BS.SetCSWKSW2VDOS
2022-03-13 12:52:24 +00:00
lda GP.ERRCODE
plp
bmi L9B4D
php
jsr GP.PRINTERR
jsr LB36B
plp
bcs L9B53
jsr BS.CROUT
jmp AS.RESTART1
L9B4D ldx AS.REMSTK
dex
dex
txs
tax
2022-03-13 12:52:24 +00:00
L9B53 lda #$03
jmp AS.BITERRFLG
2022-03-15 19:33:19 +00:00
*--------------------------------------
2022-03-13 12:52:24 +00:00
L9B58 stz AS.ERRNUM
lda #$A3
sta X9F65
jsr AS.NORMAL
jsr BS.ResetCSWKSW
jsr BS.WriteTBUF
jsr BS.SetState0
jsr BS.RestoreAXY
jmp BS.IO.IN
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.IO.IN0 jsr BS.SaveAXY
bit GP.PFXACTV
bpl L9B7E
2022-03-13 12:52:24 +00:00
jmp BS.IO.IN.CAT
L9B7E bit GP.IFILACTV
bpl L9B86
jmp BS.IO.IN.FILE
L9B86 bit GP.EXECACTV
bmi BS.IO.IN.EXEC
2022-03-13 12:52:24 +00:00
lda ZP.PROMPT
2022-03-18 17:59:39 +00:00
cmp #"]"
beq L9B58
jsr BS.ResetCSWKSW
2022-03-13 12:52:24 +00:00
L9B94 lda GP.PREGA
ldy GP.PREGY
jsr MON.KEYIN0
cmp #$88
bne L9BAC
2022-03-13 12:52:24 +00:00
lda ZP.PROMPT
2022-03-18 17:59:39 +00:00
cmp #">"
beq L9BAA
txa
beq L9B94
2022-03-13 12:52:24 +00:00
L9BAA lda #$88
L9BAC jmp BS.SaveCSWKSW
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.IO.IN.EXEC sta (ZP.BASL),y
2022-03-13 12:52:24 +00:00
lda ZP.PROMPT
2022-03-18 17:59:39 +00:00
cmp #">"
beq L9BF2
2022-03-13 12:52:24 +00:00
lda IO.KBD
bpl L9BCD
cmp #$83
bne L9BCD
jsr LB36B
2022-03-13 12:52:24 +00:00
lda GP.STATE
bne L9C01
sta IO.KSTROBE
beq L9C01
L9BCD jsr BS.Setup4readEFBytesAt200
jsr L9C6C
bcs L9BFA
jsr BS.SaveAXY
bcc L9BDE
L9BDA dex
2022-03-13 12:52:24 +00:00
lda IO.LINEBUF,x
L9BDE ora #$80
sta IO.LINEBUF,x
txa
bne L9BDA
jsr BS.ResetCSWKSW
jsr BS.CheckDOSCMD
bit GP.XCNUM
bpl L9BCD
L9BF1 rts
L9BF2 jsr BS.Setup4readEFBytesAt200
jsr BS.ReadOneByte
bcc L9BF1
L9BFA jsr LB2B5
cmp #$05
bne L9C13
L9C01 ldx #$00
ldy ZP.CH
bne L9C0E
2022-03-18 17:59:39 +00:00
lda #"]"
sta ZP.PROMPT
2022-03-13 12:52:24 +00:00
lda #$88
rts
2022-03-13 12:52:24 +00:00
L9C0E lda (ZP.BASL),y
jmp (ZP.KSW)
2022-03-13 12:52:24 +00:00
L9C13 jmp BS.ERROUT
2022-03-15 19:33:19 +00:00
*--------------------------------------
2022-03-13 12:52:24 +00:00
BS.IO.IN.FILE lda ZP.PROMPT
2022-03-18 17:59:39 +00:00
cmp #"]"
bne L9C1F
jmp L9B58
2022-03-13 12:52:24 +00:00
L9C1F lda GP.PREGA
sta (ZP.BASL),y
2022-03-13 12:52:24 +00:00
lda IO.KBD
bpl L9C31
cmp #$83
bne L9C31
bit IO.KSTROBE
rts
2022-03-13 12:52:24 +00:00
L9C31 lda ZP.PROMPT
bit GP.DIRFLG
bmi L9C95
2022-03-18 17:59:39 +00:00
cmp #">"
beq L9C42
jsr L9C67
bcs L9C13
rts
L9C42 jsr BS.ReadOneByte
bcs L9C13
rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
2022-03-13 12:52:24 +00:00
BS.ReadOneByte lda GP.MLIRW.COUNT
sta GP.ParamL
2022-03-13 12:52:24 +00:00
lda #$01
sta GP.MLIRW.COUNT
2022-03-13 12:52:24 +00:00
lda #MLI.C.READ
jsr GP.GOSYSTEM
bcs L9C66
2022-03-13 12:52:24 +00:00
lda GP.ParamL
sta GP.MLIRW.COUNT
ldx GP.MLIRW.DATAPTR
2022-03-13 12:52:24 +00:00
lda IO.LINEBUF,x
L9C66 rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
2022-03-13 12:52:24 +00:00
L9C67 lda GP.PREGA
sta (ZP.BASL),y
2022-03-13 12:52:24 +00:00
L9C6C lda #MLI.C.READ
jsr GP.GOSYSTEM
bcs L9C66
2022-03-13 12:52:24 +00:00
lda GP.MLIRW.TRANS
beq L9C8E
clc
adc GP.MLIRW.DATAPTR
tax
2022-03-13 12:52:24 +00:00
lda IO.LINEBUF-1,x
and #$7F
cmp #$0D
bne L9C8E
2022-03-13 12:52:24 +00:00
lda GP.FoundBITS+1
and #$10
bne L9C8E
dex
2022-03-13 12:52:24 +00:00
L9C8E lda #$8D
ldy GP.PREGY
clc
rts
2022-03-18 17:59:39 +00:00
*--------------------------------------
L9C95 cmp #$BE
beq L9C8E
2022-03-13 12:52:24 +00:00
lda GP.PREGA
sta (ZP.BASL),y
2022-03-13 12:52:24 +00:00
lda #$4F
sta BS.CATWIDTH
2022-03-13 12:52:24 +00:00
lda #MLI.C.GETMARK
jsr GP.GOSYSTEM
bcs L9D1F
2022-03-13 12:52:24 +00:00
lda GP.SBUFADR
ora GP.SBUFADR+1
bne L9CDF
2022-03-13 12:52:24 +00:00
lda #$02
sta GP.CATFLAG
jsr BS.ReadDirEnt
bcs L9D1F
2022-03-13 12:52:24 +00:00
jsr BS.GetFTableIdx
lda XBC12
sta XBC5A,x
2022-03-13 12:52:24 +00:00
lda XBC13
sta XBC5B,x
jsr LB128
2022-03-13 12:52:24 +00:00
L9CD3 lda #$A2
sta IO.LINEBUF
2022-03-13 12:52:24 +00:00
lda #$8D
sta IO.LINEBUF,x
clc
rts
2022-03-13 12:52:24 +00:00
L9CDF lda GP.CATFLAG
beq L9D22
2022-03-13 12:52:24 +00:00
bmi L9CF9
2022-03-13 12:52:24 +00:00
ldx #$00
dec GP.CATFLAG
beq L9CD3
2022-03-13 12:52:24 +00:00
jsr BS.LINEBUFCLR80
ldx #$10
jsr BS.PRINTERRMSGX
L9CF5 ldx #$50
bne L9CD3
L9CF9 cmp #$FF
bne L9D1C
dec GP.CATFLAG
2022-03-13 12:52:24 +00:00
stz GP.MLIRW.COUNT
stz GP.MLIRW.COUNT+1
lda #MLI.C.READ
jsr GP.GOSYSTEM
jsr LB157
pha
2022-03-13 12:52:24 +00:00
lda GP.MLIRW.REFNUM
sta GP.MLIMRKEOFBUF.REFNUM
pla
bcc L9CF5
bcs L9D1F
2022-03-13 12:52:24 +00:00
L9D1C lda #$05
sec
L9D1F jmp BS.ERROUT
2022-03-13 12:52:24 +00:00
L9D22 lda #$FF
sta XBC16
2022-03-13 12:52:24 +00:00
jsr BS.GetFTableIdx
lda XBC5A,x
sta XBC12
2022-03-13 12:52:24 +00:00
lda XBC5B,x
sta XBC13
2022-03-13 12:52:24 +00:00
lda GP.SBUFADR+1
and #$01
tax
2022-03-13 12:52:24 +00:00
lda GP.SBUFADR
sec
L9D45 inc XBC16
sbc XBC12
bcs L9D45
dex
beq L9D45
jsr LB241
bcc L9D65
cmp #$02
beq L9D5D
cmp #$05
bne L9D1F
L9D5D dec GP.CATFLAG
ldx #$00
jmp L9CD3
L9D65 jsr LA4D2
jmp L9CF5
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.IO.IN.CAT cmp #$DD
bne L9D72
jmp L9B58
2022-03-13 12:52:24 +00:00
L9D72 lda GP.PREGA
sta (ZP.BASL),y
2022-03-13 12:52:24 +00:00
stz GP.PFXACTV
ldx BS.CMDBUF.LEN
2022-03-13 12:52:24 +00:00
L9D7F lda BS.CMDBUF.LEN,x
sta IO.LINEBUF-1,x
dex
bne L9D7F
ldx BS.CMDBUF.LEN
2022-03-13 12:52:24 +00:00
lda #$8D
rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.Setup4readEFBytesAt200
2022-03-13 12:52:24 +00:00
lda XBBFE
sta GP.MLIRW.REFNUM
2022-03-13 12:52:24 +00:00
lda #$02
sta GP.MLIRW.DATAPTR+1
2022-03-13 12:52:24 +00:00
lda #$EF
sta GP.MLIRW.COUNT
2022-03-13 12:52:24 +00:00
stz GP.MLIRW.COUNT+1
stz GP.MLIRW.DATAPTR
rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.VSYSO jsr BS.SaveAXY
cmp #$84
bne L9DC5
jsr BS.WriteTBUF
2022-03-15 19:33:19 +00:00
stz GP.INPTR
stz GP.IFILACTV
stz GP.OFILACTV
stz GP.PFXACTV
ldx #$08
jsr BS.SetState
jmp BS.RestoreAXY
L9DC5 ldx #$04
jsr BS.SetState
jsr BS.RestoreAXY
jmp BS.JMP.GP.VSYSO
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.IO.OUT.CAT jsr BS.SaveAXY
ldx GP.INPTR
sta IO.LINEBUF,x
cmp #$8D
beq L9DEB
inc GP.INPTR
bne L9DE7
2022-03-13 12:52:24 +00:00
lda #$10
L9DE4 jmp BS.ERROUT
L9DE7 ldx GP.PREGX
rts
L9DEB inx
dex
beq L9DFA
jsr BS.ResetCSWKSW
jsr BS.DOSCMD
bcs L9DE4
jsr BS.SaveCSWKSW
L9DFA ldx #$04
jsr BS.SetState
jmp BS.RestoreAXY
L9E02 sty GP.PREGY
ldy ZP.PROMPT
beq L9E15
dey
beq L9E15
dey
beq L9E15
ldy GP.PREGY
jmp L9A74
L9E15 ldy GP.TBUFPTR
and #$7F
sta (AS.HIMEM),y
ldy GP.PREGY
inc GP.TBUFPTR
bne L9E2F
jsr BS.SaveAXY
jsr BS.WriteTBUF256
bcs L9DE4
jsr BS.RestoreAXY
L9E2F rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.IO.OUT.TRACE pha
stx GP.PREGX
tsx
2022-03-13 12:52:24 +00:00
lda $104,x
cmp #$12
bne L9E46
2022-03-13 12:52:24 +00:00
lda $105,x
cmp #$D8
bne L9E46
pla
bcs L9EBA
L9E46 pla
ldx GP.PREGX
bit GP.OFILACTV
bpl L9E70
cmp #$DD
bne L9E5A
cmp ZP.PROMPT
beq L9E8A
L9E5A cmp #$8D
bne L9E02
2022-03-13 12:52:24 +00:00
lda ZP.PROMPT
cmp #$FF
2022-03-13 12:52:24 +00:00
lda #$8D
bcc L9E02
jsr BS.WriteTBUF
sta GP.OFILACTV
2022-03-13 12:52:24 +00:00
lda #$8D
bne L9EA3
L9E70 pha
2022-03-13 12:52:24 +00:00
lda GP.IFILACTV
ora GP.PFXACTV
bpl L9E81
2022-03-13 12:52:24 +00:00
lda ZP.PROMPT
ora #$04
cmp #$84
beq L9EA6
L9E81 pla
cmp #$DD
bne L9EA3
cmp ZP.PROMPT
bne L9EA3
L9E8A jsr BS.SaveAXY
2022-03-13 12:52:24 +00:00
lda GP.OPENCNT
beq L9EA0
jsr BS.WriteTBUF
sta GP.OFILACTV
jsr BS.ResetCSWKSW
2022-03-13 12:52:24 +00:00
lda #$15
jsr GP.PRINTERR
L9EA0 jsr BS.RestoreAXY
L9EA3 jmp L9A74
L9EA6 pla
cmp #$8D
bne L9EAE
cmp GP.CHRLAST
L9EAE sta GP.CHRLAST
bne L9EB5
sta ZP.PROMPT
L9EB5 rts
L9EB6 inc AS.TXTPTR+1
bne L9EBE
L9EBA inc AS.TXTPTR
beq L9EB6
L9EBE ldx #$FF
stx ZP.PROMPT
ldx AS.REMSTK
txs
bit GP.DTRACE
bmi L9F3D
L9ECA ldy #$00
2022-03-13 12:52:24 +00:00
lda (AS.TXTPTR),y
bmi L9EF5
beq L9EF2
L9ED2 dec GP.STRINGS
bne L9EF0
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART+1
sbc AS.ARRAYEND+1
cmp #$03
bcs L9EE9
jsr BS.WriteTBUF
jsr BS.KW.01
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART+1
sbc AS.ARRAYEND+1
L9EE9 sta GP.STRINGS
ldy #$00
2022-03-13 12:52:24 +00:00
lda (AS.TXTPTR),y
L9EF0 cmp #$3A
L9EF2 jmp AS.EXECSTMT
L9EF5 sta ZP.PROMPT
tay
2022-03-15 19:33:19 +00:00
lda BS.AS.KW-$80,y
bmi L9EF2
sta X9F00+1
2022-03-15 19:33:19 +00:00
X9F00 bne BS.AS.KW0 SELF MODIFIED
BS.AS.KW0
BS.AS.KW.IF
BS.AS.KW.PRINT
2022-03-18 17:59:39 +00:00
stz ZP.PROMPT
stz GP.CHRLAST
2022-03-15 19:33:19 +00:00
lda #BS.VSYSO
sta GP.VSYSO
2022-03-15 19:33:19 +00:00
lda /BS.VSYSO
sta GP.VSYSO+1
bne L9F32
2022-03-15 19:33:19 +00:00
BS.AS.KW.LIST lda #$01
.HS 2C BIT ABS
BS.AS.KW.CALL lda #$02
sta ZP.PROMPT
bne L9F32
2022-03-15 19:33:19 +00:00
BS.AS.KW.LET tya
jmp L9ED2
2022-03-15 19:33:19 +00:00
BS.AS.KW.TRACE sty GP.DTRACE
bne L9F2E
2022-03-15 19:33:19 +00:00
BS.AS.KW.NOTRACE
sta GP.DTRACE
dey
2022-03-13 12:52:24 +00:00
L9F2E lda #$4A
sta AS.TRCFLG
L9F32 tya
jmp AS.EXECSTMT
2022-03-15 19:33:19 +00:00
BS.AS.KW.RESUME stz AS.ERRNUM
tya
bne L9EF0
L9F3D jsr BS.ResetCSWKSW
2022-03-13 12:52:24 +00:00
lda #$A3
jsr MON.COUT
ldx AS.CURLINE
2022-03-13 12:52:24 +00:00
lda AS.CURLINE+1
jsr AS.INTPRINTAX
2022-03-13 12:52:24 +00:00
lda #$A0
jsr MON.COUT
jsr BS.SaveCSWKSW
sec
jmp L9ECA
2022-03-15 19:33:19 +00:00
BS.AS.KW.FLASH
2022-03-13 12:52:24 +00:00
lda #$E3
bne L9F5E
2022-03-15 19:33:19 +00:00
BS.AS.KW.NORMAL
BS.AS.KW.INVERSE
2022-03-13 12:52:24 +00:00
lda #$A3
L9F5E sta X9F65
tya
bne L9EF0
X9F65 .DA #$A3
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.SaveAXY sta GP.PREGA
stx GP.PREGX
sty GP.PREGY
rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
2022-03-13 12:52:24 +00:00
BS.RestoreAXY lda GP.PREGA
ldx GP.PREGX
ldy GP.PREGY
rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.SetState stx GP.STATE
ldy #$00
2022-03-13 12:52:24 +00:00
.1 lda BS.SYSIOVECTS,x
sta GP.VSYSO,y
inx
iny
cpy #$04
2022-03-13 12:52:24 +00:00
bne .1
rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
BS.PRINTERR tay
ldx BS.ERRCODES-1,y
BS.PRINTERRX jsr BS.PRINTERRMSGX
ldx GP.INPTR
stx BS.CATWIDTH
jsr BS.CROUT
2022-03-13 12:52:24 +00:00
lda #$87
jsr BS.COUT
BS.LINEBUFOUT ldx #$00
2022-03-13 12:52:24 +00:00
.1 lda IO.LINEBUF+1,x
jsr BS.COUT
inx
cpx BS.CATWIDTH
2022-03-13 12:52:24 +00:00
bcc .1
2022-03-13 12:52:24 +00:00
BS.CROUT lda #$8D
BS.COUT jmp MON.COUT
2022-03-13 12:52:24 +00:00
*--------------------------------------
BS.PRINTERRMSGX ldy #$00
clc
sty GP.INPTR
L9FBA jsr L9FD6
bne L9FC4
jsr L9FD6
ora #$10
L9FC4 tay
2022-03-13 12:52:24 +00:00
lda BS.TBL6,y
beq L9FD5
ldy GP.INPTR
sta IO.LINEBUF+1,y
inc GP.INPTR
bne L9FBA
L9FD5 rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
2022-03-13 12:52:24 +00:00
L9FD6 lda BS.TBL7,x
bcs L9FED
beq L9FE3
lsr
lsr
lsr
lsr
sec
rts
L9FE3 inx
2022-03-13 12:52:24 +00:00
lda BS.TBL7,x
sta GP.INPTR
inx
bne L9FD6
L9FED inx
and #$0F
clc
rts
2022-03-13 12:52:24 +00:00
*--------------------------------------
BS.WriteTBUF256 lda #$00
ldy #$01
2022-03-15 19:33:19 +00:00
bne BS.WriteTBUFAY
BS.WriteTBUF jsr LA004
bcc LA020
tay
pla
pla
tya
jmp BS.ERROUT
2022-03-15 19:33:19 +00:00
*--------------------------------------
LA004 ldy #$00
2022-03-13 12:52:24 +00:00
lda GP.TBUFPTR
beq LA01F
2022-03-15 19:33:19 +00:00
BS.WriteTBUFAY sta GP.MLIRW.COUNT
sty GP.MLIRW.COUNT+1
2022-03-13 12:52:24 +00:00
lda #MLI.C.WRITE
jsr GP.GOSYSTEM
stz GP.TBUFPTR
bcs LA020
LA01F clc
LA020 rts
2022-03-15 19:33:19 +00:00
*--------------------------------------
LA021 jsr BS.KW.01
bcs LA047
2022-03-13 12:52:24 +00:00
lda AS.PGRMSTART+1
sta BS.TXTTAB+1
2022-03-13 12:52:24 +00:00
lda AS.PGRMSTART
sta BS.TXTTAB
2022-03-13 12:52:24 +00:00
lda AS.HIMEM+1
sta XBBD8
2022-03-13 12:52:24 +00:00
lda #$03
sta XBBD9
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART+1
sta BS.MEMSIZE+1
2022-03-13 12:52:24 +00:00
lda #$00
sta BS.MEMSIZE
2022-03-13 12:52:24 +00:00
jsr LA089 Z
LA047 rts
2022-03-13 12:52:24 +00:00
BS.KW.01 stz BS.TXTTAB
lda #$03
sta XBBD9
2022-03-13 12:52:24 +00:00
lda AS.HIMEM+1
sta XBBD8
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART+1
sta BS.TXTTAB+1
sec
sbc AS.ARRAYEND+1
cmp #$07
bcc LA07D
sbc #$03
sta XBBD9
2022-03-13 12:52:24 +00:00
lda AS.ARRAYEND+1
adc #$00
sta XBBD8
2022-03-13 12:52:24 +00:00
lda AS.HIMEM+1
sbc AS.STRINGSTART+1
adc #$01
cmp XBBD9
bcs LA07D
sta XBBD9
2022-03-13 12:52:24 +00:00
LA07D lda AS.HIMEM+1
sta BS.MEMSIZE+1
2022-03-13 12:52:24 +00:00
lda AS.HIMEM
sta BS.MEMSIZE
sta AS.STRINGSTART
LA089 clc
beq LA08D
sec
2022-03-13 12:52:24 +00:00
LA08D lda BS.MEMSIZE+1
sta AS.STRINGSTART+1
sbc #$00
sta XBBDA
adc #$00
sta XBBDB
2022-03-13 12:52:24 +00:00
lda AS.ARRAYEND+1
adc #$01
sta XBBDD
2022-03-13 12:52:24 +00:00
LA0A3 lda AS.VARSTART
sbc #$06
sta ZP.A2L
2022-03-13 12:52:24 +00:00
lda AS.VARSTART+1
sbc #$00
sta ZP.A2H
2022-03-13 12:52:24 +00:00
lda AS.ARRAYSTART
sta XBBDC
2022-03-13 12:52:24 +00:00
lda XBBDA
cmp BS.TXTTAB+1
bcc LA0FA
sbc XBBD9
sta XBBD7
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART+1
sbc XBBDA
sbc XBBD7
eor #$FF
adc #$02
cmp XBBD7
bcc LA0D6
2022-03-13 12:52:24 +00:00
lda XBBD7
LA0D6 cmp BS.TXTTAB+1
bcs LA0E0
2022-03-13 12:52:24 +00:00
lda BS.TXTTAB+1
sbc #$00
LA0E0 sta XBBDA
jsr LA199
ldx AS.ARRAYSTART+1
jsr LA0FB
bcs LA0F8
jsr LA131
2022-03-13 12:52:24 +00:00
lda XBBDA
sta XBBDB
bcc LA0A3
2022-03-13 12:52:24 +00:00
LA0F8 lda #$0C
LA0FA rts
LA0FB clc
2022-03-13 12:52:24 +00:00
LA0FC lda ZP.A2L
adc #$07
sta ZP.A2L
bcc LA106
inc ZP.A2H
LA106 eor AS.ARRAYSTART
bne LA10E
cpx ZP.A2H
beq LA12F
LA10E ldy #$00
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
iny
eor (ZP.A2L),y
bpl LA0FB
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
bpl LA0FB
ldy #$04
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
cmp XBBDA
bcc LA0FC
cmp XBBDB
bcs LA0FB
jsr LA1BC
bcc LA0FC
rts
LA12F clc
rts
LA131 jsr LA160
bcs LA12F
LA136 ldy #$02
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
cmp XBBDA
bcc LA14A
cmp XBBDB
bcs LA14A
jsr LA1BC
bcc LA14B
rts
LA14A clc
2022-03-13 12:52:24 +00:00
LA14B lda #$03
adc ZP.A2L
sta ZP.A2L
bcc LA155
inc ZP.A2H
LA155 cmp XBBDC
bne LA136
cpx ZP.A2H
bne LA136
beq LA131
LA160 clc
2022-03-13 12:52:24 +00:00
lda XBBDC
sta ZP.A2L
stx ZP.A2H
eor AS.ARRAYEND
bne LA170
cpx AS.ARRAYEND+1
beq LA198
LA170 ldy #$02
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
adc ZP.A2L
sta XBBDC
iny
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
adc ZP.A2H
tax
ldy #$00
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
iny
eor (ZP.A2L),y
bpl LA160
ldy #$04
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
asl
adc #$05
adc ZP.A2L
sta ZP.A2L
bcc LA198
inc ZP.A2H
clc
LA198 rts
2022-03-13 12:52:24 +00:00
LA199 lda XBBD7
sta ZP.PCH
2022-03-13 12:52:24 +00:00
lda XBBD8
sta ZP.A1H
ldy #$00
sty ZP.PCL
sty ZP.A1L
ldx XBBD9
inx
2022-03-13 12:52:24 +00:00
LA1AD lda (ZP.PCL),y
sta (ZP.A1L),y
iny
bne LA1AD
inc ZP.A1H
inc ZP.PCH
dex
bne LA1AD
rts
LA1BC cmp XBBD7
bcc LA1C8
sbc XBBD7
clc
adc XBBD8
LA1C8 sta ZP.PCH
dey
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
sta ZP.PCL
dey
sec
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART
sbc (ZP.A2L),y
sta AS.STRINGSTART
iny
sta (ZP.A2L),y
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART+1
sbc #$00
sta AS.STRINGSTART+1
iny
sta (ZP.A2L),y
dey
dey
2022-03-13 12:52:24 +00:00
lda (ZP.A2L),y
beq LA1F2
tay
LA1EA dey
2022-03-13 12:52:24 +00:00
lda (ZP.PCL),y
sta (AS.STRINGSTART),y
tya
bne LA1EA
LA1F2 clc
2022-03-13 12:52:24 +00:00
lda XBBDD
sbc AS.STRINGSTART+1
rts
2022-03-13 12:52:24 +00:00
LA1F9 lda #$04
LA1FB sta XBBB5
jsr BS.KW.01
bcs LA24E
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART+1
sbc AS.ARRAYEND+1
cmp XBBB5
2022-03-13 12:52:24 +00:00
lda #$0C
bcc LA24E
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART+1
sta ZP.PCH
sbc XBBB5
sta ZP.A1H
sta AS.STRINGSTART+1
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART
sta ZP.PCL
sta ZP.A1L
2022-03-13 12:52:24 +00:00
lda AS.HIMEM
sbc ZP.PCL
sta XBBED
2022-03-13 12:52:24 +00:00
lda AS.HIMEM+1
sbc ZP.PCH
sta XBBEE
jsr LA35F
2022-03-13 12:52:24 +00:00
lda #$00
sec
sbc XBBB5
sta XBBE2
jsr LA3A3
2022-03-13 12:52:24 +00:00
lda AS.HIMEM+1
sta XBBB7
sec
sbc XBBB5
sta AS.HIMEM+1
clc
adc #$04
sta XBBE3
rts
LA24E sec
rts
LA250 jsr BS.KW.01
bcs LA29D
2022-03-13 12:52:24 +00:00
lda AS.HIMEM+1
sbc #$00
sta ZP.PCH
adc #$03
sta ZP.A1H
2022-03-13 12:52:24 +00:00
lda AS.STRINGSTART
sta ZP.PCL
sta ZP.A1L
2022-03-13 12:52:24 +00:00
lda AS.HIMEM
sec
sbc AS.STRINGSTART
sta XBBED
2022-03-13 12:52:24 +00:00
lda AS.HIMEM+1
sbc AS.STRINGSTART+1
sta XBBEE
jsr LA383
2022-03-13 12:52:24 +00:00
lda #$04
sta XBBE2
clc
adc AS.HIMEM+1
sta AS.HIMEM+1
jsr LA3A3
2022-03-13 12:52:24 +00:00
lda XBBE3
cmp AS.HIMEM+1
beq LA2B7
pha
ldx GP.OPENCNT
beq LA29B
2022-03-13 12:52:24 +00:00
lda AS.HIMEM+1
LA293 cmp XBBEE,x
beq LA29E
dex
bne LA293
LA29B pla
sec
LA29D rts
LA29E pla
2022-03-13 12:52:24 +00:00
LA29F sta GP.SBUFADR+1
sta XBBEE,x
2022-03-13 12:52:24 +00:00
stz GP.SBUFADR
lda XBBF6,x
sta GP.MLIMRKEOFBUF.REFNUM
2022-03-13 12:52:24 +00:00
lda #MLI.C.SETBUF
jsr GP.GOSYSTEM
bcs LA29D
LA2B7 clc
rts
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.a
LOAD usr/src/basic.fx/basic.s
ASM