diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index cbb44a2a..eb4bfe92 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BASIC.FX/BASIC.S.A.txt b/BASIC.FX/BASIC.S.A.txt index 5aba1175..29ec9e11 100644 --- a/BASIC.FX/BASIC.S.A.txt +++ b/BASIC.FX/BASIC.S.A.txt @@ -181,7 +181,7 @@ BS.ERROUT sta GP.ERRCODE stz MLI.LEVEL stz GP.MLICF.REFNUM - lda #MLI.C.FLUSH + lda #MLI.FLUSH jsr GP.GOSYSTEM L9B27 plp @@ -276,7 +276,7 @@ BS.IO.IN.EXEC sta (ZP.BASL),y lda GP.STATE bne L9C01 - sta IO.KSTROBE + sta IO.KBDSTROBE beq L9C01 L9BCD jsr BS.Setup4readEFBytesAt200 @@ -336,7 +336,7 @@ L9C1F lda GP.PREGA cmp #$83 bne L9C31 - bit IO.KSTROBE + bit IO.KBDSTROBE rts L9C31 lda ZP.PROMPT diff --git a/BASIC.FX/BASIC.S.B.txt b/BASIC.FX/BASIC.S.B.txt index cf2dbcfe..7802193b 100644 --- a/BASIC.FX/BASIC.S.B.txt +++ b/BASIC.FX/BASIC.S.B.txt @@ -115,7 +115,7 @@ BS.SetFileBuf sta GP.SBUFADR+1 stz GP.SBUFADR lda BS.REFNUMs,x sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.SETBUF + lda #MLI.SETBUF jmp GP.GOSYSTEM *-------------------------------------- BS.GETBUFR jsr BS.GetSysBufA @@ -461,7 +461,9 @@ BS.LINEBUFCLR80 lda #$A0 rts *-------------------------------------- -BS.DOSCMD lda #$FF +BS.DOSCMD stz BS.bFreeBuf + + lda #$FF sta GP.XCNUM lda #$20 sta BS.GetCharSep @@ -481,9 +483,9 @@ LA6A5 jsr BS.IsIntCmd bcc .1 jsr BS.IsExtCmd - bcs LA6A2 + bcc .1 - jmp BS.ExecCmd + rts .1 lda GP.STATE bne LA6BA @@ -524,7 +526,7 @@ LA6BA stz GP.FoundBITS lda GP.AllowedBITS bpl LA6F8 CMDBITS0.PFIX - lda #MLI.C.GETPREFIX + lda #MLI.GETPREFIX jsr GP.GOSYSTEM LA6F8 pla @@ -738,11 +740,27 @@ LA80B lda GP.XCNUM rts .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 LA849 sec rts + +BS.bFreeBuf .BS 1 *-------------------------------------- BS.GetVolAtSxDy lda GP.ParamS asl @@ -762,7 +780,7 @@ BS.GetVolAtSxDy lda GP.ParamS ldy #$02 jsr BS.SetSBUFADRXY - lda #MLI.C.ONLINE + lda #MLI.ONLINE jsr GP.GOSYSTEM bcs LA849 @@ -1229,7 +1247,7 @@ BS.CreateFileOrDir LAD82 stx GP.CRACCESS sty GP.CRSTTYPE - lda #MLI.C.CREATE + lda #MLI.CREATE jmp GP.GOSYSTEM LAD8D lda #BS.E.NOBUFFER @@ -1238,14 +1256,14 @@ LAD8D lda #BS.E.NOBUFFER BS.KW.RENAME lda GP.FoundBITS lsr lsr - lda #MLI.C.RENAME + lda #MLI.RENAME bcs LAD9E jmp BS.SYNERR *-------------------------------------- -BS.KW.DELETE lda #MLI.C.DESTROY +BS.KW.DELETE lda #MLI.DESTROY .HS 2C BIT ABS -BS.SETPREFIX lda #MLI.C.SETPREFIX +BS.SETPREFIX lda #MLI.SETPREFIX LAD9E jmp GP.GOSYSTEM *-------------------------------------- @@ -1297,7 +1315,6 @@ LADF0 sec rts *-------------------------------------- BS.IsExtCmd ldx #BSX.GetPath.X - jsr BS.ToAUX ldx BS.CMDBUF.LEN @@ -1317,40 +1334,89 @@ BS.IsExtCmd ldx #BSX.GetPath.X bra .1 .2 stx BS.CMDBUF.LEN + dey + sty GP.XLEN jsr BS.GetFileInfo - bcs .9 - - jsr MON.CROUT + bcs .99 - lda GP.FIAUXTYPE+1 - ldx GP.FIAUXTYPE - jsr PRNTAX + stz GP.XCNUM + + lda AS.HIMEM+1 + sta BS.BUFPAGE - jsr MON.CROUT + lda #$01 Read + ldx #$06 BIN - lda #$01 - ldx #$04 jsr BS.OpenTypeXAccessA - >DEBUG - bcs .9 + bcs .99 jsr BS.MLIGetEOF - bcs .9 + php + pha + jsr BS.MLIClose + pla + plp + bcs .99 - lda GP.SBUFADR+1 - ldx GP.SBUFADR - jsr PRNTAX - - jsr MON.CROUT - - - jmp BS.MLIClose - -.9 rts -*-------------------------------------- -BS.ExecCmd clc + lda GP.SBUFADR+2 File LEN in GP.SBUFADR + beq .20 + + lda #BS.E.TOOLARGE + sec 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 SAVE usr/src/basic.fx/basic.s.b diff --git a/BASIC.FX/BASIC.S.C.txt b/BASIC.FX/BASIC.S.C.txt index b1b62e9f..da5de054 100644 --- a/BASIC.FX/BASIC.S.C.txt +++ b/BASIC.FX/BASIC.S.C.txt @@ -153,7 +153,7 @@ LAEDD jsr BS.MLISetMark rts LAEF7 ldx GP.XCNUM - lda #MLI.C.READ + lda #MLI.READ cpx #$0F bne LAF24 @@ -169,7 +169,7 @@ LAEF7 ldx GP.XCNUM jsr BS.SetSBUFADRXY0 jsr BS.MLISetEOF -LAF22 lda #MLI.C.WRITE +LAF22 lda #MLI.WRITE LAF24 jsr GP.GOSYSTEM bcs LAF38 @@ -291,19 +291,19 @@ BS.WriteXYBytes sec stx GP.MLIRW.COUNT bcc BS.MLIRead -BS.MLIWrite lda #MLI.C.WRITE +BS.MLIWrite lda #MLI.WRITE .HS 2C BIT ABS -BS.MLIRead lda #MLI.C.READ +BS.MLIRead lda #MLI.READ .HS 2C BIT ABS -BS.MLIClose lda #MLI.C.CLOSE +BS.MLIClose lda #MLI.CLOSE .HS 2C BIT ABS -BS.MLIGetEOF lda #MLI.C.GETEOF +BS.MLIGetEOF lda #MLI.GETEOF .HS 2C BIT ABS -BS.MLISetEOF lda #MLI.C.SETEOF +BS.MLISetEOF lda #MLI.SETEOF .HS 2C BIT ABS -BS.MLIGetMark lda #MLI.C.GETMARK +BS.MLIGetMark lda #MLI.GETMARK .HS 2C BIT ABS -BS.MLISetMark lda #MLI.C.SETMARK +BS.MLISetMark lda #MLI.SETMARK jmp GP.GOSYSTEM *-------------------------------------- BS.KW.PR lda #$00 @@ -385,12 +385,12 @@ BS.KW.BYE jsr BS.CloseAll jsr BS.RAMReset * lda #$65 jsr MLI - .DA #MLI.C.QUIT + .DA #MLI.QUIT .DA GP.MLIRW *-------------------------------------- BS.QUIT.IIgs jsr BS.RAMReset jsr MLI - .DA #MLI.C.QUIT + .DA #MLI.QUIT .DA .1 .1 .DA #4 @@ -478,7 +478,7 @@ LB0FD lda IO.KBD lda GP.STATE bne LB113 - bit IO.KSTROBE + bit IO.KBDSTROBE bcs LB113 LB10E lda #$FF @@ -531,7 +531,7 @@ BS.MkCatLineF jsr BS.SetSBUFADRCMDBUF lda MLI.DEVNUM sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.ONLINE + lda #MLI.ONLINE jsr GP.GOSYSTEM bcs LB127 @@ -608,7 +608,7 @@ BS.OpenTypeXAccessA sta GP.OSYSBUF+1 lda #$0F sta MLI.LEVEL - lda #MLI.C.OPEN + lda #MLI.OPEN jsr GP.GOSYSTEM bcs LB238 @@ -742,7 +742,7 @@ LB2FB tya sta BS.BUFPAGEs-1,x lda BS.REFNUMs,x sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.SETBUF + lda #MLI.SETBUF jsr GP.GOSYSTEM bcc LB30D @@ -755,7 +755,7 @@ LB30E sta BS.BUFPAGE stz MLI.LEVEL - lda #MLI.C.OPEN + lda #MLI.OPEN jsr GP.GOSYSTEM bcc LB327 @@ -782,7 +782,7 @@ LB333 sta GP.MLIRW.REFNUM lda #$7F sta GP.NLINEMASK - lda #MLI.C.NEWLINE + lda #MLI.NEWLINE jsr GP.GOSYSTEM lda GP.FoundBITS+1 and #CMDBITS1.F+CMDBITS1.R @@ -833,7 +833,7 @@ BS.KW.FLUSH lda GP.FoundBITS bcs .9 .1 sta GP.MLICF.REFNUM - lda #MLI.C.FLUSH + lda #MLI.FLUSH jsr GP.GOSYSTEM .9 rts @@ -911,7 +911,7 @@ LB41D jsr BS.GetSysBuf lda #$07 sta MLI.LEVEL - lda #MLI.C.OPEN + lda #MLI.OPEN jsr GP.GOSYSTEM bcc LB43B @@ -1143,7 +1143,7 @@ LB5AD lda #$EF lda #$7F sta GP.NLINEMASK - lda #MLI.C.NEWLINE + lda #MLI.NEWLINE jsr GP.GOSYSTEM bcs LB5F0 @@ -1252,7 +1252,7 @@ LB67C sta GP.MLIRW.DATAPTR stz GP.MLIRW.COUNT+1 - lda #MLI.C.NEWLINE + lda #MLI.NEWLINE jsr GP.GOSYSTEM bcs LB69B @@ -1485,7 +1485,7 @@ LB805 dey LB839 rts *-------------------------------------- BS.GetFileInfo ldx #$0A - lda #MLI.C.GETFILEINFO + lda #MLI.GFINFO bne LB858 BS.SetFileInfoNoDate @@ -1496,7 +1496,7 @@ BS.SetFileInfoNoDate bpl .1 BS.SetFileInfo ldx #$07 - lda #MLI.C.SETFILEINFO + lda #MLI.SFINFO LB858 stx GP.SSGINFO jmp GP.GOSYSTEM @@ -1550,7 +1550,7 @@ BS.KW.ONLINE jsr MON.CROUT .1 sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.ONLINE + lda #MLI.ONLINE jsr GP.GOSYSTEM bcc .2 @@ -1765,10 +1765,10 @@ BS.KW.PATH lda GP.FoundBITS jsr MON.CROUT ldx #$00 -.1 cpx MLI.PATHBUF +.1 cpx BS.CMDBUF.LEN beq .2 - lda MLI.PATHBUF+1,x + lda BS.CMDBUF+1,x ora #$80 jsr MON.COUT inx @@ -1784,7 +1784,7 @@ BS.SetPath clc rts *-------------------------------------- BS.WBlock jsr MLI - .DA #MLI.C.WRITEBLOCK + .DA #MLI.WRITEBLOCK .DA BS.WBlock.P bcs .9 @@ -1811,7 +1811,7 @@ BS.Expand2PATHBUF beq .1 jsr MLI no, get current path as a base - .DA #MLI.C.GETPREFIX + .DA #MLI.GETPREFIX .DA BS.Expand2.P .1 ldx #BSX.Expand.X diff --git a/BASIC.FX/BASIC.S.GP..txt b/BASIC.FX/BASIC.S.GP..txt index 6e1ae09a..d91d8ca4 100644 --- a/BASIC.FX/BASIC.S.GP..txt +++ b/BASIC.FX/BASIC.S.GP..txt @@ -1,12 +1,12 @@ NEW AUTO 3,1 *-------------------------------------- -GP.ENTRY jmp BS.ENTRY -GP.DOSCMD jmp BS.DOSCMD -GP.EXTRNCMD jmp GP.RTS -GP.ERROUT jmp BS.ERROUT -GP.PRINTERR jmp BS.PRINTERR -GP.ERRCODE .BS 1 + jmp BS.ENTRY GP.ENTRY + jmp BS.DOSCMD GP.DOSCMD + jmp GP.RTS GP.EXTRNCMD + jmp BS.ERROUT GP.ERROUT + jmp BS.PRINTERR GP.PRINTERR + .BS 1 GP.ERRCODE *-------------------------------------- GP.OUTVECT0 .DA MON.COUT1 GP.OUTVECT1 .DA BS.NODEVERR @@ -85,15 +85,15 @@ GP.GOSYSTEM.P .DA GP.GOSYSTEM.P *-------------------------------------- GP.BADCALL ldx #$12 -LBE8D cmp BS.MLIERTBL,x - beq LBE97 +.1 cmp BS.MLIERTBL,x + beq .2 dex - bpl LBE8D + bpl .1 ldx #$13 -LBE97 lda BS.BIERRTBL,x +.2 lda BS.BIERRTBL,x ldx BS.CALLX sec @@ -153,8 +153,8 @@ GP.MLICF.REFNUM .BS 1 GP.CCCSPARE .BS 1 *-------------------------------------- GP.COPYRIGHT .AS -"COPYRIGHT APPLE, 1983" -GP.GETBUFR jmp BS.GETBUFR -GP.FREEBUFR jmp BS.FREEBUFR + jmp BS.GETBUFR GP.GETBUFR + jmp BS.FREEBUFR GP.FREEBUFR GP.RSHIMEM .BS 5 *-------------------------------------- MAN diff --git a/BASIC.FX/BASIC.S.LDR.txt b/BASIC.FX/BASIC.S.LDR.txt index eeac11fc..fbee90b3 100644 --- a/BASIC.FX/BASIC.S.LDR.txt +++ b/BASIC.FX/BASIC.S.LDR.txt @@ -157,7 +157,7 @@ L2115 iny beq L214E jsr MLI - .DA #MLI.C.GETPREFIX + .DA #MLI.GETPREFIX .DA LDR.GETSETPFX.P bne L218B @@ -177,11 +177,11 @@ L213E dex bcs L216F jsr MLI - .DA #MLI.C.SETPREFIX + .DA #MLI.SETPREFIX .DA LDR.SETPFXSLASH.P L214E jsr MLI - .DA #MLI.C.ONLINE + .DA #MLI.ONLINE .DA LDR.ONLINE.P bne L218B @@ -194,7 +194,7 @@ L214E jsr MLI lda #'/' sta MLI.PATHBUF+1 jsr MLI - .DA #MLI.C.SETPREFIX + .DA #MLI.SETPREFIX .DA LDR.GETSETPFX.P bne L218B @@ -222,7 +222,7 @@ L218B lda LDR.PFX.LEN bcs L2198 jsr MLI - .DA #MLI.C.SETPREFIX + .DA #MLI.SETPREFIX .DA LDR.SETPFXSLASH.P L2198 lda LDR.STARTUP.LEN @@ -367,7 +367,7 @@ LDR.GFInfoYA sty LDR.GFINFO.P+1 pha jsr MLI - .DA #MLI.C.GETFILEINFO + .DA #MLI.GFINFO .DA LDR.GFINFO.P plx diff --git a/BASIC.FX/BASIC.S.X.txt b/BASIC.FX/BASIC.S.X.txt index bfc8fae5..47441ece 100644 --- a/BASIC.FX/BASIC.S.X.txt +++ b/BASIC.FX/BASIC.S.X.txt @@ -45,6 +45,9 @@ BSX.Fre0.X .EQ *-BSX.JMP BSX.Fre1.X .EQ *-BSX.JMP .DA BSX.Fre1 *-------------------------------------- +BSX.Rel.X .EQ *-BSX.JMP + .DA BSX.Rel +*-------------------------------------- BSX.CheckOpt jsr BS.TMPBUF3Reset jsr BSX.ToUpper @@ -486,9 +489,6 @@ BSX.IsIntCmd lda #BSX.IntCmds .5 dec GP.XCNUM bne .1 - - - sec rts *-------------------------------------- diff --git a/BASIC.FX/BASIC.S.XR.txt b/BASIC.FX/BASIC.S.XR.txt new file mode 100644 index 00000000..035d53e9 --- /dev/null +++ b/BASIC.FX/BASIC.S.XR.txt @@ -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 diff --git a/BASIC.FX/BASIC.S.txt b/BASIC.FX/BASIC.S.txt index 5f4955cc..5e1a21c4 100644 --- a/BASIC.FX/BASIC.S.txt +++ b/BASIC.FX/BASIC.S.txt @@ -12,52 +12,14 @@ NEW .EM *-------------------------------------- .INB inc/monitor.i + .INB inc/io.i .INB inc/io.d2.i + .INB inc/mli.i + .INB inc/bs.i *-------------------------------------- HIMEM .EQ $A000 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 ZPPtr2 .EQ 2 ZPInBufPtr .EQ 4 @@ -156,36 +118,6 @@ MON.BRKVECT .EQ $03F0 MON.POWERUP .EQ $03F2 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.DEVPTRS3D2 .EQ $BF26 MLI.DEVNUM .EQ $BF30 @@ -200,23 +132,6 @@ MLI.PFIXPTR .EQ $BF9A MLI.MLIACTV .EQ $BF9B 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.RESTART1 .EQ $D43F AS.FINDLINE .EQ $D61A @@ -300,6 +215,7 @@ X.TRkFMT.Z .EQ $10 .LIST OFF .INB usr/src/basic.fx/basic.s.xf .INB usr/src/basic.fx/basic.s.xm + .INB usr/src/basic.fx/basic.s.xr .INB usr/src/basic.fx/basic.s.x .EP AUX.LEN .EQ *-LDR.AUX.SRC diff --git a/BASIC.FX/TEST.S.txt b/BASIC.FX/TEST.S.txt new file mode 100644 index 00000000..989ed404 --- /dev/null +++ b/BASIC.FX/TEST.S.txt @@ -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 diff --git a/INC/BS.I.txt b/INC/BS.I.txt new file mode 100644 index 00000000..3f953233 --- /dev/null +++ b/INC/BS.I.txt @@ -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