BASIC.SYSTEM : Added EXTCMDs (wip)

This commit is contained in:
burniouf 2024-01-07 13:44:01 +01:00
parent 4aedd7caee
commit 04e3901894
11 changed files with 456 additions and 176 deletions

Binary file not shown.

View File

@ -181,7 +181,7 @@ BS.ERROUT sta GP.ERRCODE
stz MLI.LEVEL stz MLI.LEVEL
stz GP.MLICF.REFNUM stz GP.MLICF.REFNUM
lda #MLI.C.FLUSH lda #MLI.FLUSH
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
L9B27 plp L9B27 plp
@ -276,7 +276,7 @@ BS.IO.IN.EXEC sta (ZP.BASL),y
lda GP.STATE lda GP.STATE
bne L9C01 bne L9C01
sta IO.KSTROBE sta IO.KBDSTROBE
beq L9C01 beq L9C01
L9BCD jsr BS.Setup4readEFBytesAt200 L9BCD jsr BS.Setup4readEFBytesAt200
@ -336,7 +336,7 @@ L9C1F lda GP.PREGA
cmp #$83 cmp #$83
bne L9C31 bne L9C31
bit IO.KSTROBE bit IO.KBDSTROBE
rts rts
L9C31 lda ZP.PROMPT L9C31 lda ZP.PROMPT

View File

@ -115,7 +115,7 @@ BS.SetFileBuf sta GP.SBUFADR+1
stz GP.SBUFADR stz GP.SBUFADR
lda BS.REFNUMs,x lda BS.REFNUMs,x
sta GP.MLIMRKEOFBUF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.C.SETBUF lda #MLI.SETBUF
jmp GP.GOSYSTEM jmp GP.GOSYSTEM
*-------------------------------------- *--------------------------------------
BS.GETBUFR jsr BS.GetSysBufA BS.GETBUFR jsr BS.GetSysBufA
@ -461,7 +461,9 @@ BS.LINEBUFCLR80 lda #$A0
rts rts
*-------------------------------------- *--------------------------------------
BS.DOSCMD lda #$FF BS.DOSCMD stz BS.bFreeBuf
lda #$FF
sta GP.XCNUM sta GP.XCNUM
lda #$20 lda #$20
sta BS.GetCharSep sta BS.GetCharSep
@ -481,9 +483,9 @@ LA6A5 jsr BS.IsIntCmd
bcc .1 bcc .1
jsr BS.IsExtCmd jsr BS.IsExtCmd
bcs LA6A2 bcc .1
jmp BS.ExecCmd rts
.1 lda GP.STATE .1 lda GP.STATE
bne LA6BA bne LA6BA
@ -524,7 +526,7 @@ LA6BA stz GP.FoundBITS
lda GP.AllowedBITS lda GP.AllowedBITS
bpl LA6F8 CMDBITS0.PFIX bpl LA6F8 CMDBITS0.PFIX
lda #MLI.C.GETPREFIX lda #MLI.GETPREFIX
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
LA6F8 pla LA6F8 pla
@ -738,11 +740,27 @@ LA80B lda GP.XCNUM
rts rts
.8 clc .8 clc
LA844 jmp (BS.KW.JMPADDR) LA844 jsr .1
bit BS.bFreeBuf
bpl .8
php
pha
jsr GP.FREEBUFR
pla
plp
.8 rts
.1 jmp (BS.KW.JMPADDR)
BS.SYNERR lda #BS.E.SYNTAX BS.SYNERR lda #BS.E.SYNTAX
LA849 sec LA849 sec
rts rts
BS.bFreeBuf .BS 1
*-------------------------------------- *--------------------------------------
BS.GetVolAtSxDy lda GP.ParamS BS.GetVolAtSxDy lda GP.ParamS
asl asl
@ -762,7 +780,7 @@ BS.GetVolAtSxDy lda GP.ParamS
ldy #$02 ldy #$02
jsr BS.SetSBUFADRXY jsr BS.SetSBUFADRXY
lda #MLI.C.ONLINE lda #MLI.ONLINE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LA849 bcs LA849
@ -1229,7 +1247,7 @@ BS.CreateFileOrDir
LAD82 stx GP.CRACCESS LAD82 stx GP.CRACCESS
sty GP.CRSTTYPE sty GP.CRSTTYPE
lda #MLI.C.CREATE lda #MLI.CREATE
jmp GP.GOSYSTEM jmp GP.GOSYSTEM
LAD8D lda #BS.E.NOBUFFER LAD8D lda #BS.E.NOBUFFER
@ -1238,14 +1256,14 @@ LAD8D lda #BS.E.NOBUFFER
BS.KW.RENAME lda GP.FoundBITS BS.KW.RENAME lda GP.FoundBITS
lsr lsr
lsr lsr
lda #MLI.C.RENAME lda #MLI.RENAME
bcs LAD9E bcs LAD9E
jmp BS.SYNERR jmp BS.SYNERR
*-------------------------------------- *--------------------------------------
BS.KW.DELETE lda #MLI.C.DESTROY BS.KW.DELETE lda #MLI.DESTROY
.HS 2C BIT ABS .HS 2C BIT ABS
BS.SETPREFIX lda #MLI.C.SETPREFIX BS.SETPREFIX lda #MLI.SETPREFIX
LAD9E jmp GP.GOSYSTEM LAD9E jmp GP.GOSYSTEM
*-------------------------------------- *--------------------------------------
@ -1297,7 +1315,6 @@ LADF0 sec
rts rts
*-------------------------------------- *--------------------------------------
BS.IsExtCmd ldx #BSX.GetPath.X BS.IsExtCmd ldx #BSX.GetPath.X
jsr BS.ToAUX jsr BS.ToAUX
ldx BS.CMDBUF.LEN ldx BS.CMDBUF.LEN
@ -1317,40 +1334,89 @@ BS.IsExtCmd ldx #BSX.GetPath.X
bra .1 bra .1
.2 stx BS.CMDBUF.LEN .2 stx BS.CMDBUF.LEN
dey
sty GP.XLEN
jsr BS.GetFileInfo jsr BS.GetFileInfo
bcs .9 bcs .99
jsr MON.CROUT
lda GP.FIAUXTYPE+1 stz GP.XCNUM
ldx GP.FIAUXTYPE
jsr PRNTAX lda AS.HIMEM+1
sta BS.BUFPAGE
jsr MON.CROUT lda #$01 Read
ldx #$06 BIN
lda #$01
ldx #$04
jsr BS.OpenTypeXAccessA jsr BS.OpenTypeXAccessA
>DEBUG bcs .99
bcs .9
jsr BS.MLIGetEOF jsr BS.MLIGetEOF
bcs .9 php
pha
jsr BS.MLIClose
pla
plp
bcs .99
lda GP.SBUFADR+1 lda GP.SBUFADR+2 File LEN in GP.SBUFADR
ldx GP.SBUFADR beq .20
jsr PRNTAX
lda #BS.E.TOOLARGE
jsr MON.CROUT sec
jmp BS.MLIClose
.9 rts
*--------------------------------------
BS.ExecCmd clc
rts rts
.20 lda GP.SBUFADR+1
sta GP.MLIRW.COUNT+1
ldx GP.SBUFADR
stx GP.MLIRW.COUNT
beq .3
inc
.3 jsr GP.GETBUFR
bcs .99
dec BS.bFreeBuf
stz GP.MLIRW.DATAPTR
stz BS.KW.JMPADDR
lda GP.SBUFADR+1 Buffer Addr in GP.SBUFADR
sta GP.MLIRW.DATAPTR+1
sta BS.KW.JMPADDR+1
lda AS.HIMEM+1
sta BS.BUFPAGE
lda #$01 Read
ldx #$06 BIN
jsr BS.OpenTypeXAccessA
bcs .98
lda #MLI.READ
jsr GP.GOSYSTEM
bcs .98
jsr BS.MLIClose
bcs .98
ldx #BSX.Rel.X
jsr BS.ToAUX
bcc .99
.98 pha
jsr GP.FREEBUFR
pla
sec
.99 rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/basic.fx/basic.s.b SAVE usr/src/basic.fx/basic.s.b

View File

@ -153,7 +153,7 @@ LAEDD jsr BS.MLISetMark
rts rts
LAEF7 ldx GP.XCNUM LAEF7 ldx GP.XCNUM
lda #MLI.C.READ lda #MLI.READ
cpx #$0F cpx #$0F
bne LAF24 bne LAF24
@ -169,7 +169,7 @@ LAEF7 ldx GP.XCNUM
jsr BS.SetSBUFADRXY0 jsr BS.SetSBUFADRXY0
jsr BS.MLISetEOF jsr BS.MLISetEOF
LAF22 lda #MLI.C.WRITE LAF22 lda #MLI.WRITE
LAF24 jsr GP.GOSYSTEM LAF24 jsr GP.GOSYSTEM
bcs LAF38 bcs LAF38
@ -291,19 +291,19 @@ BS.WriteXYBytes sec
stx GP.MLIRW.COUNT stx GP.MLIRW.COUNT
bcc BS.MLIRead bcc BS.MLIRead
BS.MLIWrite lda #MLI.C.WRITE BS.MLIWrite lda #MLI.WRITE
.HS 2C BIT ABS .HS 2C BIT ABS
BS.MLIRead lda #MLI.C.READ BS.MLIRead lda #MLI.READ
.HS 2C BIT ABS .HS 2C BIT ABS
BS.MLIClose lda #MLI.C.CLOSE BS.MLIClose lda #MLI.CLOSE
.HS 2C BIT ABS .HS 2C BIT ABS
BS.MLIGetEOF lda #MLI.C.GETEOF BS.MLIGetEOF lda #MLI.GETEOF
.HS 2C BIT ABS .HS 2C BIT ABS
BS.MLISetEOF lda #MLI.C.SETEOF BS.MLISetEOF lda #MLI.SETEOF
.HS 2C BIT ABS .HS 2C BIT ABS
BS.MLIGetMark lda #MLI.C.GETMARK BS.MLIGetMark lda #MLI.GETMARK
.HS 2C BIT ABS .HS 2C BIT ABS
BS.MLISetMark lda #MLI.C.SETMARK BS.MLISetMark lda #MLI.SETMARK
jmp GP.GOSYSTEM jmp GP.GOSYSTEM
*-------------------------------------- *--------------------------------------
BS.KW.PR lda #$00 BS.KW.PR lda #$00
@ -385,12 +385,12 @@ BS.KW.BYE jsr BS.CloseAll
jsr BS.RAMReset jsr BS.RAMReset
* lda #$65 * lda #$65
jsr MLI jsr MLI
.DA #MLI.C.QUIT .DA #MLI.QUIT
.DA GP.MLIRW .DA GP.MLIRW
*-------------------------------------- *--------------------------------------
BS.QUIT.IIgs jsr BS.RAMReset BS.QUIT.IIgs jsr BS.RAMReset
jsr MLI jsr MLI
.DA #MLI.C.QUIT .DA #MLI.QUIT
.DA .1 .DA .1
.1 .DA #4 .1 .DA #4
@ -478,7 +478,7 @@ LB0FD lda IO.KBD
lda GP.STATE lda GP.STATE
bne LB113 bne LB113
bit IO.KSTROBE bit IO.KBDSTROBE
bcs LB113 bcs LB113
LB10E lda #$FF LB10E lda #$FF
@ -531,7 +531,7 @@ BS.MkCatLineF jsr BS.SetSBUFADRCMDBUF
lda MLI.DEVNUM lda MLI.DEVNUM
sta GP.MLIMRKEOFBUF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.C.ONLINE lda #MLI.ONLINE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB127 bcs LB127
@ -608,7 +608,7 @@ BS.OpenTypeXAccessA
sta GP.OSYSBUF+1 sta GP.OSYSBUF+1
lda #$0F lda #$0F
sta MLI.LEVEL sta MLI.LEVEL
lda #MLI.C.OPEN lda #MLI.OPEN
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB238 bcs LB238
@ -742,7 +742,7 @@ LB2FB tya
sta BS.BUFPAGEs-1,x sta BS.BUFPAGEs-1,x
lda BS.REFNUMs,x lda BS.REFNUMs,x
sta GP.MLIMRKEOFBUF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.C.SETBUF lda #MLI.SETBUF
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcc LB30D bcc LB30D
@ -755,7 +755,7 @@ LB30E sta BS.BUFPAGE
stz MLI.LEVEL stz MLI.LEVEL
lda #MLI.C.OPEN lda #MLI.OPEN
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcc LB327 bcc LB327
@ -782,7 +782,7 @@ LB333 sta GP.MLIRW.REFNUM
lda #$7F lda #$7F
sta GP.NLINEMASK sta GP.NLINEMASK
lda #MLI.C.NEWLINE lda #MLI.NEWLINE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
lda GP.FoundBITS+1 lda GP.FoundBITS+1
and #CMDBITS1.F+CMDBITS1.R and #CMDBITS1.F+CMDBITS1.R
@ -833,7 +833,7 @@ BS.KW.FLUSH lda GP.FoundBITS
bcs .9 bcs .9
.1 sta GP.MLICF.REFNUM .1 sta GP.MLICF.REFNUM
lda #MLI.C.FLUSH lda #MLI.FLUSH
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
.9 rts .9 rts
@ -911,7 +911,7 @@ LB41D jsr BS.GetSysBuf
lda #$07 lda #$07
sta MLI.LEVEL sta MLI.LEVEL
lda #MLI.C.OPEN lda #MLI.OPEN
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcc LB43B bcc LB43B
@ -1143,7 +1143,7 @@ LB5AD lda #$EF
lda #$7F lda #$7F
sta GP.NLINEMASK sta GP.NLINEMASK
lda #MLI.C.NEWLINE lda #MLI.NEWLINE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB5F0 bcs LB5F0
@ -1252,7 +1252,7 @@ LB67C sta GP.MLIRW.DATAPTR
stz GP.MLIRW.COUNT+1 stz GP.MLIRW.COUNT+1
lda #MLI.C.NEWLINE lda #MLI.NEWLINE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB69B bcs LB69B
@ -1485,7 +1485,7 @@ LB805 dey
LB839 rts LB839 rts
*-------------------------------------- *--------------------------------------
BS.GetFileInfo ldx #$0A BS.GetFileInfo ldx #$0A
lda #MLI.C.GETFILEINFO lda #MLI.GFINFO
bne LB858 bne LB858
BS.SetFileInfoNoDate BS.SetFileInfoNoDate
@ -1496,7 +1496,7 @@ BS.SetFileInfoNoDate
bpl .1 bpl .1
BS.SetFileInfo ldx #$07 BS.SetFileInfo ldx #$07
lda #MLI.C.SETFILEINFO lda #MLI.SFINFO
LB858 stx GP.SSGINFO LB858 stx GP.SSGINFO
jmp GP.GOSYSTEM jmp GP.GOSYSTEM
@ -1550,7 +1550,7 @@ BS.KW.ONLINE jsr MON.CROUT
.1 sta GP.MLIMRKEOFBUF.REFNUM .1 sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.C.ONLINE lda #MLI.ONLINE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcc .2 bcc .2
@ -1765,10 +1765,10 @@ BS.KW.PATH lda GP.FoundBITS
jsr MON.CROUT jsr MON.CROUT
ldx #$00 ldx #$00
.1 cpx MLI.PATHBUF .1 cpx BS.CMDBUF.LEN
beq .2 beq .2
lda MLI.PATHBUF+1,x lda BS.CMDBUF+1,x
ora #$80 ora #$80
jsr MON.COUT jsr MON.COUT
inx inx
@ -1784,7 +1784,7 @@ BS.SetPath clc
rts rts
*-------------------------------------- *--------------------------------------
BS.WBlock jsr MLI BS.WBlock jsr MLI
.DA #MLI.C.WRITEBLOCK .DA #MLI.WRITEBLOCK
.DA BS.WBlock.P .DA BS.WBlock.P
bcs .9 bcs .9
@ -1811,7 +1811,7 @@ BS.Expand2PATHBUF
beq .1 beq .1
jsr MLI no, get current path as a base jsr MLI no, get current path as a base
.DA #MLI.C.GETPREFIX .DA #MLI.GETPREFIX
.DA BS.Expand2.P .DA BS.Expand2.P
.1 ldx #BSX.Expand.X .1 ldx #BSX.Expand.X

View File

@ -1,12 +1,12 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
GP.ENTRY jmp BS.ENTRY jmp BS.ENTRY GP.ENTRY
GP.DOSCMD jmp BS.DOSCMD jmp BS.DOSCMD GP.DOSCMD
GP.EXTRNCMD jmp GP.RTS jmp GP.RTS GP.EXTRNCMD
GP.ERROUT jmp BS.ERROUT jmp BS.ERROUT GP.ERROUT
GP.PRINTERR jmp BS.PRINTERR jmp BS.PRINTERR GP.PRINTERR
GP.ERRCODE .BS 1 .BS 1 GP.ERRCODE
*-------------------------------------- *--------------------------------------
GP.OUTVECT0 .DA MON.COUT1 GP.OUTVECT0 .DA MON.COUT1
GP.OUTVECT1 .DA BS.NODEVERR GP.OUTVECT1 .DA BS.NODEVERR
@ -85,15 +85,15 @@ GP.GOSYSTEM.P .DA GP.GOSYSTEM.P
*-------------------------------------- *--------------------------------------
GP.BADCALL ldx #$12 GP.BADCALL ldx #$12
LBE8D cmp BS.MLIERTBL,x .1 cmp BS.MLIERTBL,x
beq LBE97 beq .2
dex dex
bpl LBE8D bpl .1
ldx #$13 ldx #$13
LBE97 lda BS.BIERRTBL,x .2 lda BS.BIERRTBL,x
ldx BS.CALLX ldx BS.CALLX
sec sec
@ -153,8 +153,8 @@ GP.MLICF.REFNUM .BS 1
GP.CCCSPARE .BS 1 GP.CCCSPARE .BS 1
*-------------------------------------- *--------------------------------------
GP.COPYRIGHT .AS -"COPYRIGHT APPLE, 1983" GP.COPYRIGHT .AS -"COPYRIGHT APPLE, 1983"
GP.GETBUFR jmp BS.GETBUFR jmp BS.GETBUFR GP.GETBUFR
GP.FREEBUFR jmp BS.FREEBUFR jmp BS.FREEBUFR GP.FREEBUFR
GP.RSHIMEM .BS 5 GP.RSHIMEM .BS 5
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -157,7 +157,7 @@ L2115 iny
beq L214E beq L214E
jsr MLI jsr MLI
.DA #MLI.C.GETPREFIX .DA #MLI.GETPREFIX
.DA LDR.GETSETPFX.P .DA LDR.GETSETPFX.P
bne L218B bne L218B
@ -177,11 +177,11 @@ L213E dex
bcs L216F bcs L216F
jsr MLI jsr MLI
.DA #MLI.C.SETPREFIX .DA #MLI.SETPREFIX
.DA LDR.SETPFXSLASH.P .DA LDR.SETPFXSLASH.P
L214E jsr MLI L214E jsr MLI
.DA #MLI.C.ONLINE .DA #MLI.ONLINE
.DA LDR.ONLINE.P .DA LDR.ONLINE.P
bne L218B bne L218B
@ -194,7 +194,7 @@ L214E jsr MLI
lda #'/' lda #'/'
sta MLI.PATHBUF+1 sta MLI.PATHBUF+1
jsr MLI jsr MLI
.DA #MLI.C.SETPREFIX .DA #MLI.SETPREFIX
.DA LDR.GETSETPFX.P .DA LDR.GETSETPFX.P
bne L218B bne L218B
@ -222,7 +222,7 @@ L218B lda LDR.PFX.LEN
bcs L2198 bcs L2198
jsr MLI jsr MLI
.DA #MLI.C.SETPREFIX .DA #MLI.SETPREFIX
.DA LDR.SETPFXSLASH.P .DA LDR.SETPFXSLASH.P
L2198 lda LDR.STARTUP.LEN L2198 lda LDR.STARTUP.LEN
@ -367,7 +367,7 @@ LDR.GFInfoYA sty LDR.GFINFO.P+1
pha pha
jsr MLI jsr MLI
.DA #MLI.C.GETFILEINFO .DA #MLI.GFINFO
.DA LDR.GFINFO.P .DA LDR.GFINFO.P
plx plx

View File

@ -45,6 +45,9 @@ BSX.Fre0.X .EQ *-BSX.JMP
BSX.Fre1.X .EQ *-BSX.JMP BSX.Fre1.X .EQ *-BSX.JMP
.DA BSX.Fre1 .DA BSX.Fre1
*-------------------------------------- *--------------------------------------
BSX.Rel.X .EQ *-BSX.JMP
.DA BSX.Rel
*--------------------------------------
BSX.CheckOpt jsr BS.TMPBUF3Reset BSX.CheckOpt jsr BS.TMPBUF3Reset
jsr BSX.ToUpper jsr BSX.ToUpper
@ -486,9 +489,6 @@ BSX.IsIntCmd lda #BSX.IntCmds
.5 dec GP.XCNUM .5 dec GP.XCNUM
bne .1 bne .1
sec sec
rts rts
*-------------------------------------- *--------------------------------------

191
BASIC.FX/BASIC.S.XR.txt Normal file
View File

@ -0,0 +1,191 @@
NEW
AUTO 3,1
*--------------------------------------
* GP.FIAUXTYPE = ORG
* GP.MLIRW.DATAPTR = new ORG
*--------------------------------------
BSX.RelOfs .BS 2
BSX.RelStart .BS 2
BSX.RelEnd .BS 2
BSX.RelStop .BS 2
*--------------------------------------
BSX.Rel lda GP.MLIRW.DATAPTR
sta ZP.A1L
sec
sbc GP.FIAUXTYPE
sta BSX.RelOfs
lda GP.MLIRW.DATAPTR+1
sta ZP.A1L+1
sbc GP.FIAUXTYPE+1
sta BSX.RelOfs+1
ldy #2
lda (ZP.A1L),y
sta BSX.RelStart
iny
lda (ZP.A1L),y
sta BSX.RelStart+1
ldy #10
lda (ZP.A1L),y
sta BSX.RelEnd
iny
lda (ZP.A1L),y
sta BSX.RelEnd+1
ldy #8
lda (ZP.A1L),y
clc
adc BSX.RelOfs
sta BSX.RelStop
iny
lda (ZP.A1L),y
adc BSX.RelOfs+1
sta BSX.RelStop+1
ldy #4
lda (ZP.A1L),y
sta GP.AllowedBITS
iny
lda (ZP.A1L),y
sta GP.AllowedBITS+1
ldy #2
jsr BSX.RelAtA1Y relocate CLD JMP CODE.START
lda #16 skip header
jsr BSX.RelSkipA
.1 ldy #1
lda (ZP.A1L),y
ora (ZP.A1L)
beq .20
dey ldy #0
jsr BSX.RelAtA1Y
lda #2
jsr BSX.RelSkipA
bra .1
.20 lda #2
jsr BSX.RelSkipA
.2 lda (ZP.A1L)
lsr
tax
lda BSX.65R02,x
bcs .3
lsr
lsr
lsr
lsr
.3 and #$0f
bit #$08
beq .7
and #$07
pha
ldy #1
jsr BSX.RelAtA1Y
lda (ZP.A1L)
cmp #$20 JSR
bne .6
ldy #1
lda (ZP.A1L),y
bne .6
iny
lda (ZP.A1L),y
cmp #$BF jsr $BF00 ?
bne .6
pla
lda #6
pha
.6 pla
.7 clc
adc ZP.A1L
sta ZP.A1L
bcc .8
inc ZP.A1L+1
.8 cmp BSX.RelStop
lda ZP.A1L+1
sbc BSX.RelStop+1
bcc .2
clc
rts
*--------------------------------------
BSX.RelAtA1Y lda (ZP.A1L),y
tax
iny
cpx BSX.RelStart
lda (ZP.A1L),y
sbc BSX.RelStart+1
bcc .9
cpx BSX.RelEnd
lda (ZP.A1L),y
sbc BSX.RelEnd+1
bcs .9
dey
lda (ZP.A1L),y
clc
adc BSX.RelOfs
sta (ZP.A1L),y
iny
lda (ZP.A1L),y
adc BSX.RelOfs+1
sta (ZP.A1L),y
.9 rts
*--------------------------------------
BSX.RelSkipA clc
adc ZP.A1L
sta ZP.A1L
bcc .8
inc ZP.A1L+1
.8 rts
*--------------------------------------
* 65R02 OPCODES
*--------------------------------------
* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
BSX.65R02 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS B.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
*--------------------------------------
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.xr
LOAD usr/src/basic.fx/basic.s
ASM

View File

@ -12,52 +12,14 @@ NEW
.EM .EM
*-------------------------------------- *--------------------------------------
.INB inc/monitor.i .INB inc/monitor.i
.INB inc/io.i
.INB inc/io.d2.i .INB inc/io.d2.i
.INB inc/mli.i
.INB inc/bs.i
*-------------------------------------- *--------------------------------------
HIMEM .EQ $A000 HIMEM .EQ $A000
LOWERCASE .EQ 1 LOWERCASE .EQ 1
*-------------------------------------- *--------------------------------------
BS.E.RANGE .EQ $02
BS.E.NODEV .EQ $03
BS.E.WPROT .EQ $04
BS.E.ENDOFDATA .EQ $05
BS.E.PATHNFND6 .EQ $06
BS.E.PATHNFND7 .EQ $07
BS.E.IO .EQ $08
BS.E.DISKFULL .EQ $09
BS.E.LOCKED .EQ $0A
BS.E.INVOPT .EQ $0B
BS.E.NOBUFFER .EQ $0C
BS.E.MISMATCH .EQ $0D
BS.E.TOOLARGE .EQ $0E
BS.E.NODIRECT .EQ $0F
BS.E.SYNTAX .EQ $10
BS.E.DIRFULL .EQ $11
BS.E.FNOTOPEN .EQ $12
BS.E.DUPFILE .EQ $13
BS.E.FBUSTY .EQ $14
BS.E.FSTILLOPEN .EQ $15
*--------------------------------------
CMDBITS0.PFIX .EQ $80 Prefix needs fetching, pathname optional
CMDBITS0.SLOT .EQ $40 No parameters to be processed
CMDBITS0.RRUN .EQ $20 Command only valid during program
CMDBITS0.FNOPT .EQ $10 Filename is optional
CMDBITS0.CRFLG .EQ $08 CREATE allowed
CMDBITS0.T .EQ $04 File type
CMDBITS0.FN2 .EQ $02 Filename '2' for RENAME
CMDBITS0.FN1 .EQ $01 Filename expected
CMDBITS1.A .EQ $80 Address
CMDBITS1.B .EQ $40 Byte
CMDBITS1.E .EQ $20 End address
CMDBITS1.L .EQ $10 Length
CMDBITS1.LINE .EQ $08 '@' line number
CMDBITS1.SD .EQ $04 Slot and drive numbers
CMDBITS1.F .EQ $02 Field
CMDBITS1.R .EQ $01 Record
CMDBITS1.V .EQ $00 Volume number ignored
*--------------------------------------
ZPPtr1 .EQ 0 ZPPtr1 .EQ 0
ZPPtr2 .EQ 2 ZPPtr2 .EQ 2
ZPInBufPtr .EQ 4 ZPInBufPtr .EQ 4
@ -156,36 +118,6 @@ MON.BRKVECT .EQ $03F0
MON.POWERUP .EQ $03F2 MON.POWERUP .EQ $03F2
MON.POWERUPBYTE .EQ $03F4 MON.POWERUPBYTE .EQ $03F4
*-------------------------------------- *--------------------------------------
MLI.MAXPATH .EQ 64
MLI.C.ALLOCIRQ .EQ $40
MLI.C.DEALLOCIRQ .EQ $41
MLI.C.ATALK .EQ $42
MLI.C.QUIT .EQ $65
MLI.C.READBLOCK .EQ $80
MLI.C.WRITEBLOCK .EQ $81
MLI.C.GETTIME .EQ $82
MLI.C.CREATE .EQ $C0
MLI.C.DESTROY .EQ $C1
MLI.C.RENAME .EQ $C2
MLI.C.SETFILEINFO .EQ $C3
MLI.C.GETFILEINFO .EQ $C4
MLI.C.ONLINE .EQ $C5
MLI.C.SETPREFIX .EQ $C6
MLI.C.GETPREFIX .EQ $C7
MLI.C.OPEN .EQ $C8
MLI.C.NEWLINE .EQ $C9
MLI.C.READ .EQ $CA
MLI.C.WRITE .EQ $CB
MLI.C.CLOSE .EQ $CC
MLI.C.FLUSH .EQ $CD
MLI.C.SETMARK .EQ $CE
MLI.C.GETMARK .EQ $CF
MLI.C.SETEOF .EQ $D0
MLI.C.GETEOF .EQ $D1
MLI.C.SETBUF .EQ $D2
MLI.C.GETBUF .EQ $D3
*--------------------------------------
MLI .EQ $BF00
MLI.DEVPTRS .EQ $BF10 MLI.DEVPTRS .EQ $BF10
MLI.DEVPTRS3D2 .EQ $BF26 MLI.DEVPTRS3D2 .EQ $BF26
MLI.DEVNUM .EQ $BF30 MLI.DEVNUM .EQ $BF30
@ -200,23 +132,6 @@ MLI.PFIXPTR .EQ $BF9A
MLI.MLIACTV .EQ $BF9B MLI.MLIACTV .EQ $BF9B
MLI.IVERSION .EQ $BFFD MLI.IVERSION .EQ $BFFD
*-------------------------------------- *--------------------------------------
IO.KBD .EQ $C000 R
IO.CLR80STORE .EQ $C000 W
IO.SET80STORE .EQ $C001 W
IO.CLRREADAUX .EQ $C002 W
IO.SETREADAUX .EQ $C003 W
IO.CLRWRITEAUX .EQ $C004 W
IO.SETWRITEAUX .EQ $C005 W
IO.CLRALTZP .EQ $C008 W
IO.SETALTZP .EQ $C009 W
IO.CLR80DISP .EQ $C00C W
IO.SET80DISP .EQ $C00D W
IO.KSTROBE .EQ $C010 W
IO.RROMBNK2 .EQ $C082 R
IO.RRAMWRAMBNK2 .EQ $C083 RR
IO.RROMBNK1 .EQ $C08A R
IO.RRAMWRAMBNK1 .EQ $C08B RR
*--------------------------------------
AS.RESTART .EQ $D43C AS.RESTART .EQ $D43C
AS.RESTART1 .EQ $D43F AS.RESTART1 .EQ $D43F
AS.FINDLINE .EQ $D61A AS.FINDLINE .EQ $D61A
@ -300,6 +215,7 @@ X.TRkFMT.Z .EQ $10
.LIST OFF .LIST OFF
.INB usr/src/basic.fx/basic.s.xf .INB usr/src/basic.fx/basic.s.xf
.INB usr/src/basic.fx/basic.s.xm .INB usr/src/basic.fx/basic.s.xm
.INB usr/src/basic.fx/basic.s.xr
.INB usr/src/basic.fx/basic.s.x .INB usr/src/basic.fx/basic.s.x
.EP .EP
AUX.LEN .EQ *-LDR.AUX.SRC AUX.LEN .EQ *-LDR.AUX.SRC

45
BASIC.FX/TEST.S.txt Normal file
View File

@ -0,0 +1,45 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65c02
.OR $2000
.TF BIN/test
*--------------------------------------
.INB inc/monitor.i
.INB inc/bs.i
*--------------------------------------
HEADER cld Allows BRUN at ORG=$2000
jmp CODE.START for debugging without relocation
.DA #0 CMDBITS0
.DA #0 CMDBITS1
.DA 0 spare
.DA CODE.END
.DA DATA.END
.DA 0
.DA 0 spare....16 bytes header
*--------------------------------------
R.MSG .DA MSG
.DA 0
*--------------------------------------
CODE.START ldx #0
.1 lda MSG,x ABS relocation required
beq .8
jsr COUT
inx
jmp .1 ABS relocation required
.8 clc
rts
CODE.END .EQ *
*--------------------------------------
MSG .CZ -"\r\rHello from test EXT command.\r\r"
DATA.END .EQ *
*--------------------------------------
MAN
SAVE usr/src/basic.fx/test.s
ASM

62
INC/BS.I.txt Normal file
View File

@ -0,0 +1,62 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
* BASIC.SYSTEM Defines
*--------------------------------------
BS.E.RANGE .EQ $02
BS.E.NODEV .EQ $03
BS.E.WPROT .EQ $04
BS.E.ENDOFDATA .EQ $05
BS.E.PATHNFND6 .EQ $06
BS.E.PATHNFND7 .EQ $07
BS.E.IO .EQ $08
BS.E.DISKFULL .EQ $09
BS.E.LOCKED .EQ $0A
BS.E.INVOPT .EQ $0B
BS.E.NOBUFFER .EQ $0C
BS.E.MISMATCH .EQ $0D
BS.E.TOOLARGE .EQ $0E
BS.E.NODIRECT .EQ $0F
BS.E.SYNTAX .EQ $10
BS.E.DIRFULL .EQ $11
BS.E.FNOTOPEN .EQ $12
BS.E.DUPFILE .EQ $13
BS.E.FBUSTY .EQ $14
BS.E.FSTILLOPEN .EQ $15
*--------------------------------------
CMDBITS0.PFIX .EQ $80 Prefix needs fetching, pathname optional
CMDBITS0.SLOT .EQ $40 No parameters to be processed
CMDBITS0.RRUN .EQ $20 Command only valid during program
CMDBITS0.FNOPT .EQ $10 Filename is optional
CMDBITS0.CRFLG .EQ $08 CREATE allowed
CMDBITS0.T .EQ $04 File type
CMDBITS0.FN2 .EQ $02 Filename '2' for RENAME
CMDBITS0.FN1 .EQ $01 Filename expected
CMDBITS1.A .EQ $80 Address
CMDBITS1.B .EQ $40 Byte
CMDBITS1.E .EQ $20 End address
CMDBITS1.L .EQ $10 Length
CMDBITS1.LINE .EQ $08 '@' line number
CMDBITS1.SD .EQ $04 Slot and drive numbers
CMDBITS1.F .EQ $02 Field
CMDBITS1.R .EQ $01 Record
CMDBITS1.V .EQ $00 Volume number ignored
*--------------------------------------
* BASIC.SYSTEM Global page
*--------------------------------------
GP.ENTRY .EQ $BE00
GP.DOSCMD .EQ $BE03
GP.EXTRNCMD .EQ $BE06
GP.ERROUT .EQ $BE09
GP.PRINTERR .EQ $BE0C
GP.ERRCODE .EQ $BE0F
GP.GETBUFR .EQ $BEF5
GP.FREEBUFR .EQ $BEF8
*--------------------------------------
MAN
SAVE inc/bs.i