A2osX/BASIC.15/BASIC.S.B.txt

1688 lines
23 KiB
Plaintext
Raw Normal View History

NEW
AUTO 3,1
*--------------------------------------
BS.GETBUFR jsr LA1FB
bcs LA304
pha
sbc #$03
sta XBBB8
pla
LA2C5 sta GP.SBUFADR+1
ldx GP.OPENCNT
beq LA2EE
lda XBBB7
clc
adc #$04
sta XBBB7
LA2D6 cmp XBBEE,x
bne LA2EB
lda GP.SBUFADR+1
jsr LA356
jsr LA29F
lda GP.SBUFADR+1
adc #$04
bcc LA2C5
LA2EB dex
bne LA2D6
LA2EE lda GP.SBUFADR+1
bit GP.EXECACTV
bpl LA303
LA2F6 ldx #$08
jsr LA356
jsr LA29F
lda GP.SBUFADR+1
adc #$04
LA303 clc
LA304 rts
BS.FREEBUFR lda GP.OPENCNT
asl
asl
adc AS.HIMEM+1
sta XBBB7
lda AS.HIMEM+1
sta XBBB8
lda GP.RSHIMEM
cmp AS.HIMEM+1
beq LA354
sta AS.HIMEM+1
bit GP.EXECACTV
bpl LA327
jsr LA2F6
bcc LA345
LA327 lda XBBB7
ldx GP.OPENCNT
beq LA351
LA32F cmp XBBEE,x
bne LA34E
lda AS.HIMEM+1
jsr LA356
jsr LA29F
sec
lda XBBB7
sbc #$04
sta XBBB7
LA345 lda AS.HIMEM+1
sec
sbc #$04
sta AS.HIMEM+1
bcs LA327
LA34E dex
bne LA32F
LA351 jsr BS.KW.01
LA354 clc
rts
LA356 pha
lda XBBB8
jsr LA29F
pla
rts
LA35F ldy #$00
cpy XBBEE
beq LA376
LA366 lda (ZP.PCL),y
sta (ZP.A1L),y
iny
bne LA366
inc ZP.PCH
inc ZP.A1H
dec XBBEE
bne LA366
LA376 cpy XBBED
beq LA382
lda (ZP.PCL),y
sta (ZP.A1L),y
iny
bne LA376
LA382 rts
LA383 ldy XBBED
XA386 beq LA38F SELF MODIFIED
LA388 jsr LA39A
dec ZP.A1H
dec ZP.PCH
LA38F cpy XBBEE
beq LA3A2
dec XBBEE
jmp LA388
LA39A dey
lda (ZP.PCL),y
sta (ZP.A1L),y
tya
bne LA39A
LA3A2 rts
LA3A3 lda AS.VARSTART+1
sta ZP.A2H
lda AS.VARSTART
ldx AS.ARRAYSTART+1
clc
bcc LA3B3
LA3AE clc
lda ZP.A2L
adc #$07
LA3B3 sta ZP.A2L
bcc LA3B9
inc ZP.A2H
LA3B9 eor AS.ARRAYSTART
bne LA3BF
cpx ZP.A2H
LA3BF clc
beq LA3D6
ldy #$00
lda (ZP.A2L),y
iny
eor (ZP.A2L),y
bpl LA3AE
lda (ZP.A2L),y
bpl LA3AE
iny
jsr LA3FD
jmp LA3AE
LA3D6 lda ZP.A2L
sta XBBDC
LA3DB clc
jsr LA160
bcs LA410
LA3E1 ldy #$00
clc
jsr LA3FD
clc
lda #$03
adc ZP.A2L
sta ZP.A2L
bcc LA3F2
inc ZP.A2H
LA3F2 cmp XBBDC
bne LA3E1
cpx ZP.A2H
bne LA3E1
beq LA3DB
LA3FD lda (ZP.A2L),y
beq LA410
iny
iny
lda AS.VARSTART+1
cmp (ZP.A2L),y
bcs LA410
lda (ZP.A2L),y
adc XBBE2
sta (ZP.A2L),y
LA410 rts
LA411 jsr LA021
bcs LA47F
lda AS.ARRAYEND
sec
sbc AS.VARSTART
sta BS.BAS.HDR
sta XBBED
lda AS.ARRAYEND+1
sbc AS.VARSTART+1
sta BS.BAS.HDR+1
sta XBBEE
lda AS.ARRAYSTART
sbc AS.VARSTART
sta BS.BAS.HDR+2
lda AS.ARRAYSTART+1
sbc AS.VARSTART+1
sta BS.BAS.HDR+3
lda AS.STRINGSTART
sbc XBBED
sta ZP.A1L
lda AS.STRINGSTART+1
sbc #$00
sta ZP.A1H
lda AS.ARRAYEND
sbc XBBED
sta ZP.PCL
lda AS.ARRAYEND+1
sbc #$00
sta ZP.PCH
lda #$03
sta XA386+1
jsr LA383
lda #$07
sta XA386+1
lda ZP.A1L
sta XBBE9
inc ZP.A1H
lda ZP.A1H
sta XBBEA
lda AS.HIMEM
sec
sbc ZP.A1L
sta XBBEB
lda AS.HIMEM+1
sta BS.BAS.HDR+4
sbc ZP.A1H
sta XBBEC
clc
LA47F rts
LA480 lda BS.BAS.HDR
sta XBBED
clc
adc AS.VARSTART
sta AS.ARRAYEND
lda BS.BAS.HDR+1
sta XBBEE
adc AS.VARSTART+1
sta AS.ARRAYEND+1
lda AS.VARSTART
sta ZP.A1L
adc BS.BAS.HDR+2
sta AS.ARRAYSTART
lda AS.VARSTART+1
sta ZP.A1H
adc BS.BAS.HDR+3
sta AS.ARRAYSTART+1
lda XBBE9
sta ZP.PCL
lda XBBEA
sta ZP.PCH
jsr LA35F
lda XBBED
clc
adc ZP.PCL
sta AS.STRINGSTART
lda ZP.PCH
adc #$00
sta AS.STRINGSTART+1
sec
lda AS.HIMEM+1
sbc BS.BAS.HDR+4
beq LA4D0
sta XBBE2
jsr LA3A3
LA4D0 clc
rts
LA4D2 jsr BS.LINEBUFCLR80
lda #$A2
sta IO.LINEBUF
lda DIRENTBUF
and #$0F
tay
LA4E0 lda DIRENTBUF,y
ora #$80
sta IO.LINEBUF+1,y
dey
bne LA4E0
sty BS.TMPBUF4+2
lda DIRENTBUF.TYPE
ldx #$0E
LA4F3 iny
iny
cmp BS.PRODOSTYPES.H,x
beq LA505
iny
dex
bpl LA4F3
ldy #$13
jsr BS.AHEX2LINEBUFY
bne LA549
LA505 ldx #$02
pha
LA508 lda BS.PRODOSTYPES.ASC,y
sta $212,x
dey
dex
bpl LA508
pla
bit BS.CATWIDTH
bvc LA561
ldy #$4E
cmp #$06
beq LA533
cmp #$04
bne LA549
lda #$D2
sta $249
lda DIRENTBUF.AUXT
ldx DIRENTBUF.AUXT+1
jsr BS.AXDEC2LINEBUFY
jmp LA544
LA533 lda #$C1
sta $249
lda DIRENTBUF.AUXT
jsr BS.AHEX2LINEBUFY
lda DIRENTBUF.AUXT+1
jsr BS.AHEX2LINEBUFY
LA544 lda #$BD
sta $24A
LA549 lda DIRENTBUF.EOF+2
sta BS.TMPBUF4+2
lda DIRENTBUF.EOF
ldx DIRENTBUF.EOF+1
ldy #$46
jsr BS.AXDEC2LINEBUFY
ldx #$18
ldy #$3D
jsr LA57E
LA561 ldy #$1B
lda DIRENTBUF.UBLK
ldx DIRENTBUF.UBLK+1
jsr BS.AXDEC2LINEBUFY
lda DIRENTBUF.ACCESS
and #$C2
cmp #$C2
beq LA57A
lda #$AA
sta IO.LINEBUF+1
LA57A ldx #$21
ldy #$2C
LA57E lda $25A,x
lsr
sta XBC10
lda DIRENTBUF,x
pha
and #$1F
sta XBC0F
pla
rol
rol
rol
rol
and #$0F
beq LA5B1
cmp #$0D
bcs LA5B1
sta XBC0E
asl
adc XBC0E
sta XBC0E
lda XBC0F
beq LA5B1
lda XBC10
cmp #$64
bcc LA5C3
LA5B1 tya
sec
sbc #$06
tay
ldx #$08
LA5B8 lda BS.NODATE,x
sta IO.LINEBUF+1,y
dey
dex
bpl LA5B8
rts
LA5C3 lda $25C,x
pha
lda $25B,x
ldx #$00
cmp #$3C
bcc LA5D1
txa
LA5D1 jsr LA618
lda #$BA
sta IO.LINEBUF+1,y
dey
pla
ldx #$00
cmp #$18
bcc LA5E2
txa
LA5E2 cmp #$0A
php
jsr BS.AXDEC2LINEBUFY
plp
bcs LA5EC
dey
LA5EC dey
lda XBC10
jsr LA618
dey
ldx XBC0E
inx
inx
inx
LA5FA lda BS.MONTHS-4,x
sta IO.LINEBUF+1,y
dey
dex
cpx XBC0E
bne LA5FA
lda #$AD
sta IO.LINEBUF+1,y
sta $205,y
dey
lda XBC0F
ldx #$00
jmp BS.AXDEC2LINEBUFY
LA618 clc
adc #$64
jsr BS.AXDEC2LINEBUFY
iny
rts
BS.AHEX2LINEBUFY
pha
and #$0F
jsr LA62B
pla
lsr
lsr
lsr
lsr
LA62B ora #$B0
cmp #$BA
bcc LA633
adc #$06
LA633 sta IO.LINEBUF+1,y
dey
lda #$A4
sta IO.LINEBUF+1,y
rts
BS.AXDEC2LINEBUFY
stx BS.TMPBUF4+1
sta BS.TMPBUF4
LA643 jsr LA65B
lda BS.TMPBUF4+3
ora #$B0
sta IO.LINEBUF+1,y
dey
lda BS.TMPBUF4
ora BS.TMPBUF4+1
ora BS.TMPBUF4+2
bne LA643
rts
LA65B ldx #$18
lda #$00
sta BS.TMPBUF4+3
LA662 jsr BS.TMPBUF3x2
rol BS.TMPBUF4+3
sec
lda BS.TMPBUF4+3
sbc #$0A
bcc LA676
sta BS.TMPBUF4+3
inc BS.TMPBUF4
LA676 dex
bne LA662
rts
BS.LINEBUFCLR80 lda #$A0
ldx #$4F
LA67E sta IO.LINEBUF+1,x
dex
bpl LA67E
rts
BS.DOSCMD lda #$FF
sta GP.XCNUM
lda #$20
sta BS.GetCharSep
lda #$08
sta BS.GetCharMax
jsr BS.GetKWInCmdBuf
lda BS.CMDBUF
cmp #$41
bcs LA6A5
eor #$2D
beq LA6A5
LA6A2 jmp BS.ERR10
LA6A5 jsr BS.IsIntCmdMTR
bcs LA6A2
lda GP.STATE
bne LA6BA
lda GP.EXECACTV
bne LA6BA
jsr MON.CLREOL
jsr BS.CROUT
LA6BA lda #$00
sta GP.FoundBITS
sta GP.FoundBITS+1
sta BS.CMDBUF
sta MLI.PATHBUF
lda GP.VDEFSLT
sta GP.ParamS
lda GP.VDEFDRV
sta GP.ParamD
lda AS.HIMEM+1
sta XBBE3
ldx GP.XLEN
inx
inx
stx BS.GetCharMax
lda GP.AllowedBITS
beq LA744
asl
bmi LA747
jsr BS.GetKWInCmdBuf
php
pha
lda GP.AllowedBITS
bpl LA6F8
lda #MLI.C.GETPREFIX
jsr GP.GOSYSTEM
LA6F8 pla
plp
beq LA744
cmp #$2C
bne LA703
jmp LA795
LA703 cmp #$2F
beq LA70B
cmp #$41
bcc LA73D
LA70B dex
lda #$82
sta BS.GetCharSep
lsr
sta BS.GetCharMax
ldy #$00
jsr LAA2D
dey
sty BS.CMDBUF.LEN
lda #$01
sta GP.FoundBITS
LA723 lda BS.CMDBUF.LEN,y
sta MLI.PATHBUF,y
dey
bpl LA723
dex
jsr BS.GetCharSpaceSep
bne LA73A
bcc LA7A6
lda GP.AllowedBITS
lsr
bcs LA770
LA73A jmp BS.ERR10
LA73D lda GP.XCNUM
cmp #$06
bne LA73A
LA744 jmp LA7A6
LA747 jsr BS.GetKWInCmdBuf
beq LA73A
cmp #$41
beq LA79A
jsr BS.TMPBUF3Reset
sty XBC08
ldy #$13
sty XBC09
ldy #$40
sty GP.FoundBITS
jsr LA96E
bcs LA76F
lda GP.ParamINPR
cmp #$08
bcc LA79F
LA76C lda #$02
sec
LA76F rts
LA770 lsr
bcc LA795
jsr BS.GetCharSpaceSep
beq LA73A
dex
lda #$82
sta BS.GetCharSep
ldy #$01
jsr BS.GetPathInPathBuf
dey
dey
sty MLI.PATHBUF
lda #$03
sta GP.FoundBITS
dex
jsr BS.GetCharSpaceSep
bne LA73A
bcc LA7A6
LA795 jsr BS.GetCharSpaceSep
beq LA73A
LA79A jsr LA8F6
bcs LA76F
LA79F jsr BS.GetCharSpaceSep
bne LA73A
bcs LA795
LA7A6 lda GP.ParamS
beq LA76C
cmp #$08
bcs LA76C
lda GP.ParamD
beq LA76C
cmp #$03
bcs LA76C
lda GP.AllowedBITS
and #$21
lsr
beq LA7C9
lda GP.STATE
bne LA7C9
lda #$0F
sec
rts
LA7C9 bcc LA80B
lda GP.AllowedBITS+1
and #$04
beq LA80B
lda GP.FoundBITS
lsr
bcs LA7E1
lda GP.AllowedBITS
and #$90
beq BS.ERR10
bpl LA80B
LA7E1 lda BS.CMDBUF
eor #$2F
beq LA7ED
lda MLI.PFIXPTR
beq LA806
LA7ED lda GP.FoundBITS+1
and #$04
beq LA80B
bcs LA806
lda #$00
sta BS.CMDBUF.LEN
sta BS.CMDBUF
lda #$01
ora GP.FoundBITS
sta GP.FoundBITS
LA806 jsr BS.GetVolAtSxDy
bcs LA849
LA80B lda GP.XCNUM
asl
tax
lda BS.KW.JMP,x
sta BS.KW.JMPADDR
lda BS.KW.JMP+1,x
sta BS.KW.JMPADDR+1
clc
txa
beq LA844
eor #$32
beq LA844
lda GP.AllowedBITS+1
and #$04
beq LA844
lda GP.FoundBITS
lsr
bcc LA844
jsr BS.GetFileInfo
bcc LA844
cmp #$07
bne LA849
lda GP.AllowedBITS
and #$08
bne LA844
lda #$06
rts
LA844 jmp (BS.KW.JMPADDR)
BS.ERR10 lda #$10
LA849 sec
rts
BS.GetVolAtSxDy lda GP.ParamS
asl
asl
asl
asl
asl
pha
lda GP.ParamD
eor #$01
lsr
pla
ror
sta GP.MLIMRKEOFBUF.REFNUM
lda #$01
sta GP.SBUFADR
lda #$02
sta GP.SBUFADR+1
lda #MLI.C.ONLINE
jsr GP.GOSYSTEM
bcs LA849
lda GP.ParamD
sta GP.VDEFDRV
lda GP.ParamS
sta GP.VDEFSLT
lda BS.CMDBUF
eor #$2F
beq LA8F4
lda IO.LINEBUF+1
and #$0F
adc #$02
sta IO.LINEBUF+1
adc BS.CMDBUF.LEN
cmp #$40
tax
lda #$10
bcs LA8F5
ldy BS.CMDBUF.LEN
stx BS.CMDBUF.LEN
LA89D dex
dey
bmi LA8AA
lda BS.CMDBUF,y
sta BS.CMDBUF,x
jmp LA89D
LA8AA lda #$2F
sta BS.CMDBUF
LA8AF sta BS.CMDBUF,x
lda IO.LINEBUF,x
dex
bne LA8AF
lda GP.XCNUM
cmp #$0B
beq LA8F4
cmp #$16
beq LA8F4
cmp #$08
beq LA8F4
lda MLI.PATHBUF
tay
clc
adc IO.LINEBUF+1
cmp #$40
tax
lda #$10
bcs LA8F5
stx MLI.PATHBUF
LA8D9 dex
dey
bmi LA8E6
lda MLI.PATHBUF+1,y
sta MLI.PATHBUF+1,x
jmp LA8D9
LA8E6 lda #$2F
sta MLI.PATHBUF+1
LA8EB sta MLI.PATHBUF+1,x
lda IO.LINEBUF,x
dex
bne LA8EB
LA8F4 clc
LA8F5 rts
LA8F6 jsr BS.TMPBUF3Reset
ldy #$09
LA8FB cmp BS.KW.OPT,y
beq LA935
dey
bpl LA8FB
cmp #$54
beq LA90A
LA907 jmp BS.ERR10
LA90A lda #$04
and GP.AllowedBITS
beq LA931
ora GP.FoundBITS
sta GP.FoundBITS
lda #$00
sta XBC08
lda #$12
sta XBC09
jsr BS.GetCharSpaceSep
beq LA907
cmp #$24
beq LA984
cmp #$41
bcc LA96E
jmp BS.GetFTypeASC
LA931 sec
lda #$0B
rts
LA935 lda BS.KW.OPT.PBITSLO,y
beq LA955
and GP.AllowedBITS+1
beq LA931
cmp #$04
bne LA94F
and GP.FoundBITS+1
bne LA955
lda #$01
sta GP.ParamD
lda #$04
LA94F ora GP.FoundBITS+1
sta GP.FoundBITS+1
LA955 lda BS.KW.OPT.PBITSHI,y
and #$03
sta XBC08
lda BS.KW.OPT.PBITSHI,y
lsr
lsr
sta XBC09
jsr BS.GetCharSpaceSep
beq LA9BE
cmp #$24
beq LA984
LA96E stx GP.INPTR
jsr LAA6A
bcc LA97A
bmi LA9C1
bcs LA9BE
LA97A ldx GP.INPTR
jsr BS.GetCharSpaceSep
bne LA96E
beq LA99D
LA984 jsr BS.GetCharSpaceSep
beq LA9BE
LA989 stx GP.INPTR
jsr LAABC
bcc LA995
bmi LA9C1
bcs LA9BE
LA995 ldx GP.INPTR
jsr BS.GetCharSpaceSep
bne LA989
LA99D ldx #$02
LA99F cpx XBC08
beq LA9AC
lda BS.TMPBUF4,x
bne LA9C1
dex
bne LA99F
LA9AC ldy XBC09
LA9AF lda BS.TMPBUF4,x
sta GP.ParamA,y
dey
dex
bpl LA9AF
ldx GP.INPTR
clc
rts
LA9BE jmp BS.ERR10
LA9C1 jmp LA76C
BS.GetFTypeASC ldy #$00
LA9C6 sta BS.TMPBUF4,y
iny
cpy #$03
beq LA9D5
jsr BS.GetCharSpaceSep
bne LA9C6
beq LA9BE
LA9D5 stx GP.INPTR
LA9D8 ldx #$00
lda XBC08
cmp #$0F
beq LA9BE
asl
adc XBC08
tay
LA9E6 lda BS.TMPBUF4,x
eor BS.PRODOSTYPES.ASC,y
asl
bne LA9F7
iny
inx
cpx #$03
bne LA9E6
beq LA9FC
LA9F7 inc XBC08
bne LA9D8
LA9FC lda #$0E
sec
sbc XBC08
tay
lda BS.PRODOSTYPES.H,y
sta GP.ParamT
ldx GP.INPTR
clc
rts
BS.GetPathInPathBuf
jsr BS.GetCharUC
sta MLI.PATHBUF,y
iny
cmp #$2C
beq LAA45
cmp #$20
beq LAA45
cmp #$0D
beq LAA56
cpy BS.GetCharMax
bcc BS.GetPathInPathBuf
ora #$00
rts
BS.GetKWInCmdBuf
ldx #$00
ldy #$00
LAA2D jsr BS.GetCharUC
sta BS.CMDBUF,y
iny
cmp #$2C
beq LAA45
cmp #$20
beq LAA45
cmp #$0D
beq LAA56
cpy BS.GetCharMax
bcc LAA2D
LAA45 ora #$00
rts
BS.GetCharSpaceSep
lda #$20
sta BS.GetCharSep
jsr BS.GetCharUC
cmp #$2C
beq LAA57
cmp #$0D
LAA56 clc
LAA57 rts
BS.GetCharUC lda IO.LINEBUF,x
and #$7F
cmp #$61
bcc LAA63
and #$5F
LAA63 inx
cmp BS.GetCharSep
beq BS.GetCharUC
rts
LAA6A cmp #$30
bcc LAA72
cmp #$3A
bcc LAA76
LAA72 sec
ora #$00
rts
LAA76 and #$0F
pha
lda BS.TMPBUF4+2
cmp #$1A
bcs LAAA2
ldx #$02
LAA82 lda BS.TMPBUF4,x
pha
dex
bpl LAA82
jsr BS.TMPBUF3x2
jsr BS.TMPBUF3x2
ldx #$00
clc
LAA92 pla
adc BS.TMPBUF4,x
sta BS.TMPBUF4,x
inx
txa
eor #$03
bne LAA92
jsr BS.TMPBUF3x2
LAAA2 pla
bcs LAAB8
adc BS.TMPBUF4
sta BS.TMPBUF4
bcc LAABB
clc
inc BS.TMPBUF4+1
bne LAABB
inc BS.TMPBUF4+2
bne LAABB
LAAB8 lda #$FF
sec
LAABB rts
LAABC cmp #$30
bcc LAACC
cmp #$3A
bcc LAAD2
cmp #$41
bcc LAACC
cmp #$47
bcc LAAD0
LAACC sec
ora #$00
rts
LAAD0 sbc #$06
LAAD2 and #$0F
ldx #$03
LAAD6 jsr BS.TMPBUF3x2
bcs LAAB8
dex
bpl LAAD6
ora BS.TMPBUF4
sta BS.TMPBUF4
rts
BS.TMPBUF3x2 asl BS.TMPBUF4
rol BS.TMPBUF4+1
rol BS.TMPBUF4+2
rts
BS.IsIntCmd ldx #$1F
stx GP.XCNUM
lda BS.CMDBUF
eor #$2D
bne LAB03
inc GP.XCNUM
sta GP.XLEN
bne LAB20
LAB03 ldy #$08
sty GP.XLEN
LAB08 lda BS.KW.LEN,x
bpl LAB13
and #$7F
dey
dec GP.XLEN
LAB13 tax
LAB14 lda BS.CMDBUF,y
cmp BS.KW.TABLE,x
bne LAB33
dex
dey
bpl LAB14
LAB20 lda GP.XCNUM
asl
tax
lda BS.KW.PBITS-1,x
sta GP.AllowedBITS+1
lda BS.KW.PBITS-2,x
sta GP.AllowedBITS
clc
rts
LAB33 ldy GP.XLEN
dec GP.XCNUM
ldx GP.XCNUM
bne LAB08
dec GP.XCNUM
sec
jmp GP.EXTRNCMD
BS.TMPBUF3Reset ldy #$00
sty BS.TMPBUF4
sty BS.TMPBUF4+1
sty BS.TMPBUF4+2
rts
BS.KW.APPEND lda GP.FITYPE
cmp #$FC
beq BS.KW.02
cmp #$06
beq LABA3
cmp #$04
bne LAB63
jmp BS.KW.EXEC
LAB63 cmp #$FF
beq LAB6F
cmp #$B3
beq LAB6F
lda #$0D
sec
rts
LAB6F pha
jsr LB562
jsr LB36B
lda #$00
sta GP.ParamA
sta MLI.MEMTABL+19
sta MLI.MEMTABL+20
sta MLI.MEMTABL+21
sta MLI.MEMTABL+22
lda #$01
sta MLI.MEMTABL+23
lda #$20
sta GP.ParamA+1
pla
cmp #$FF
bne LABA6
sta GP.ParamT
lda #$80
sta GP.FoundBITS+1
lda #$05
sta GP.FoundBITS
LABA3 jmp BS.KW.BRUN
LABA6 sec
jsr MON.IIGSID
bcs LABA3
jmp LB099
BS.KW.X05 jsr LA411
lda AS.HIMEM+1
sta BS.AS.HIMEMSave
ldx XBBEA
dex
stx AS.HIMEM+1
jsr LAC22
ldx BS.AS.HIMEMSave
stx AS.HIMEM+1
bcs LAC33
jsr AS.CLEAR1
jsr LA480
lda #$00
beq LABE6
BS.KW.02 lda #$00
sta GP.IFILACTV
sta AS.ERRNUM
lda GP.FoundBITS
lsr
bcc LABF4
jsr LAC1D
bcs LAC33
jsr AS.CLEAR1
LABE6 sta AS.ERRFLG
jsr LACB6
jsr BS.SaveCSWKSW
jsr LABF4
jmp AS.NEXTSTMT
LABF4 jsr AS.NORMAL
lda #$A3
sta X9F65
lda #$FF
sta GP.XCNUM
sta ZP.PROMPT
ldx #$04
jsr BS.SetState
jmp BS.ERR10
BS.KW.RESTORE jsr LAC1D
bcs LAC33
BS.ENTRY jsr AS.CLEAR1
jsr BS.SetState0
lda #$00
sta ZP.CH
jmp AS.RESTART1
LAC1D jsr LB562
bcs LAC33
LAC22 jsr LAC34
bcs LAC33
sty AS.ARRAYSTART
sty AS.VARSTART
sty AS.ARRAYEND
stx AS.ARRAYSTART+1
stx AS.VARSTART+1
stx AS.ARRAYEND+1
LAC33 rts
LAC34 lda #$01
ldx #$FC
jsr BS.CheckFTypeXAccessA
bcs LAC33
lda #MLI.C.GETEOF
jsr GP.GOSYSTEM
bcs LAC33
lda AS.PGRMSTART
sta GP.MLIRW.DATAPTR
adc GP.SBUFADR
sta GP.ParamA
lda AS.PGRMSTART+1
sta GP.MLIRW.DATAPTR+1
adc GP.SBUFADR+1
sta GP.ParamA+1
bcs LAC5E
cmp AS.HIMEM+1
LAC5E lda #$0E
bcs LAC33
ldx GP.SBUFADR
ldy GP.SBUFADR+1
jsr BS.ReadXYBytes
bcs LAC33
jsr BS.FileClose
bcs LAC33
jsr LAC80
ldx GP.ParamA+1
ldy GP.ParamA
stx AS.PGRMEND+1
sty AS.PGRMEND
rts
LAC80 sec
lda AS.PGRMSTART
sbc GP.FIAUXTYPE
sta ZP.A1L
lda AS.PGRMSTART+1
sbc GP.FIAUXTYPE+1
sta ZP.A1H
ora ZP.A1L
clc
beq LACD9
ldx AS.PGRMSTART
lda AS.PGRMSTART+1
LAC98 stx ZP.PCL
sta ZP.PCH
ldy #$01
lda (ZP.PCL),y
dey
ora (ZP.PCL),y
beq LACD9
lda (ZP.PCL),y
adc ZP.A1L
tax
sta (ZP.PCL),y
iny
lda (ZP.PCL),y
adc ZP.A1H
sta (ZP.PCL),y
clc
bcc LAC98
LACB6 lda GP.FoundBITS+1
and #$08
clc
beq LACD9
lda GP.ParamAT
sta AS.LINNUM
lda GP.ParamAT+1
sta AS.LINNUM+1
jsr AS.FINDLINE
clc
lda AS.LOWTR
adc #$FF
sta AS.TXTPTR
lda AS.LOWTR+1
adc #$FF
sta AS.TXTPTR+1
clc
LACD9 rts
BS.KW.STORE bcc LACFE
lda #$FC
sta GP.ParamT
sta GP.FITYPE
lda #$C3
sta GP.FIACCESS
lda AS.PGRMSTART
sta GP.CRAUXTYPE
sta GP.FIAUXTYPE
lda AS.PGRMSTART+1
sta GP.CRAUXTYPE+1
sta GP.FIAUXTYPE+1
jsr BS.CreateFileOrDir
bcs LAD47
LACFE lda #$02
ldx #$FC
jsr BS.CheckFTypeXAccessA
bcs LAD47
lda AS.PGRMEND
sec
sbc AS.PGRMSTART
tax
sta GP.SBUFADR
lda AS.PGRMEND+1
sbc AS.PGRMSTART+1
tay
sta GP.SBUFADR+1
lda #$00
sta GP.SBUFADR+2
lda AS.PGRMSTART
sta GP.MLIRW.DATAPTR
lda AS.PGRMSTART+1
sta GP.MLIRW.DATAPTR+1
jsr BS.WriteXYBytes
bcs LAD47
lda #MLI.C.SETEOF
jsr GP.GOSYSTEM
bcs LAD47
jsr BS.FileClose
bcs LAD47
lda AS.PGRMSTART+1
ldx AS.PGRMSTART
cmp GP.FIAUXTYPE+1
bne LAD48
cpx GP.FIAUXTYPE
clc
bne LAD48
LAD47 rts
LAD48 stx GP.FIAUXTYPE
sta GP.FIAUXTYPE+1
jmp BS.SetFileInfoNoDate
BS.KW.CREATE lda #$00
sta GP.CRAUXTYPE
sta GP.CRAUXTYPE+1
lda GP.FoundBITS
and #$04
bne BS.CreateFileOrDir
lda #$0F
sta GP.ParamT
BS.CreateFileOrDir
lda GP.EXECACTV
asl
lda #$00
adc GP.OPENCNT
cmp #$08
bcs LAD8D
lda GP.ParamT
sta GP.CRTYPE
ldx #$C3
ldy #$01
cmp #$0F
bne LAD82
ldy #$0D
LAD82 stx GP.CRACCESS
sty GP.CRSTTYPE
lda #MLI.C.CREATE
jmp GP.GOSYSTEM
LAD8D lda #$0C
rts
BS.KW.RENAME lda GP.FoundBITS
lsr
lsr
lda #MLI.C.RENAME
bcs LAD9E
jmp BS.ERR10
BS.KW.DELETE lda #MLI.C.DESTROY
LAD9E jmp GP.GOSYSTEM
BS.KW.LOCK jsr BS.GetFileInfo
lda GP.FIACCESS
and #$3C
ora #$01
sta GP.FIACCESS
jmp BS.SetFileInfo
BS.KW.UNLOCK jsr BS.GetFileInfo
lda #$C3
ora GP.FIACCESS
sta GP.FIACCESS
jmp BS.SetFileInfo
BS.KW.PREFIX lda GP.FoundBITS+1
and #$04
sec
bne LADCB
lda GP.FoundBITS
lsr
LADCB lda #$C6
bcs LAD9E
lda ZP.PROMPT
beq LADF0
jsr BS.CROUT
ldx #$00
LADD8 cpx BS.CMDBUF.LEN
beq LADE8
lda BS.CMDBUF,x
ora #$80
jsr BS.COUT
inx
bne LADD8
LADE8 jsr BS.CROUT
jsr BS.CROUT
clc
rts
LADF0 lda #$FF
sta GP.PFXACTV
clc
rts
*--------------------------------------
MAN
SAVE usr/src/basic.15/basic.s.b
LOAD usr/src/basic.15/basic.s
ASM