diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index eb4bfe92..928d63b6 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BASIC.FX/BASIC.S.GP..txt b/BASIC.FX/BASIC.S.GP..txt index d91d8ca4..467c80a8 100644 --- a/BASIC.FX/BASIC.S.GP..txt +++ b/BASIC.FX/BASIC.S.GP..txt @@ -8,69 +8,69 @@ NEW jmp BS.PRINTERR GP.PRINTERR .BS 1 GP.ERRCODE *-------------------------------------- -GP.OUTVECT0 .DA MON.COUT1 -GP.OUTVECT1 .DA BS.NODEVERR -GP.OUTVECT2 .DA BS.NODEVERR -GP.OUTVECT3 .DA BS.NODEVERR -GP.OUTVECT4 .DA BS.NODEVERR -GP.OUTVECT5 .DA BS.NODEVERR -GP.OUTVECT6 .DA BS.NODEVERR -GP.OUTVECT7 .DA BS.NODEVERR -GP.INVECT0 .DA MON.KEYIN -GP.INVECT1 .DA BS.NODEVERR -GP.INVECT2 .DA BS.NODEVERR -GP.INVECT3 .DA BS.NODEVERR -GP.INVECT4 .DA BS.NODEVERR -GP.INVECT5 .DA BS.NODEVERR -GP.INVECT6 .DA BS.NODEVERR -GP.INVECT7 .DA BS.NODEVERR -GP.VECTOUT .DA MON.COUT1 -GP.VECTIN .DA MON.KEYIN -GP.VDOSO .DA BS.JMP.GP.VSYSO -GP.VDOSI .DA BS.JMP.GP.VSYSI -GP.VSYSO .BS 2 -GP.VSYSI .BS 2 -GP.VDEFSLT .DA #6 -GP.VDEFDRV .DA #1 -GP.PREGA .BS 1 -GP.PREGX .BS 1 -GP.PREGY .BS 1 -GP.DTRACE .BS 1 -GP.STATE .BS 1 -GP.EXECACTV .BS 1 -GP.IFILACTV .BS 1 -GP.OFILACTV .BS 1 -GP.PFXACTV .BS 1 -GP.DIRFLG .BS 1 -GP.EDIRFLG .BS 1 -GP.STRINGS .BS 1 -GP.TBUFPTR .BS 1 -GP.INPTR .BS 1 -GP.CHRLAST .BS 1 -GP.OPENCNT .BS 1 -GP.EXECFILE .BS 1 -GP.CATFLAG .BS 1 -GP.XTRNADDR .BS 2 -GP.XLEN .BS 1 -GP.XCNUM .BS 1 -GP.AllowedBITS .BS 2 -GP.FoundBITS .BS 2 -GP.ParamA .BS 2 -GP.ParamB .BS 3 -GP.ParamE .BS 2 -GP.ParamL .BS 2 -GP.ParamS .BS 1 -GP.ParamD .BS 1 -GP.ParamF .BS 2 -GP.ParamR .BS 2 -GP.ParamV .BS 1 -GP.ParamAT .BS 2 -GP.ParamT .BS 1 -GP.ParamINPR .BS 1 -GP.VPATH1 .DA BS.CMDBUF.LEN -GP.VPATH2 .DA MLI.PATHBUF + .DA MON.COUT1 GP.OUTVECT0 + .DA BS.NODEVERR GP.OUTVECT1 + .DA BS.NODEVERR GP.OUTVECT2 + .DA BS.NODEVERR GP.OUTVECT3 + .DA BS.NODEVERR GP.OUTVECT4 + .DA BS.NODEVERR GP.OUTVECT5 + .DA BS.NODEVERR GP.OUTVECT6 + .DA BS.NODEVERR GP.OUTVECT7 + .DA MON.KEYIN GP.INVECT0 + .DA BS.NODEVERR GP.INVECT1 + .DA BS.NODEVERR GP.INVECT2 + .DA BS.NODEVERR GP.INVECT3 + .DA BS.NODEVERR GP.INVECT4 + .DA BS.NODEVERR GP.INVECT5 + .DA BS.NODEVERR GP.INVECT6 + .DA BS.NODEVERR GP.INVECT7 + .DA MON.COUT1 GP.VECTOUT + .DA MON.KEYIN GP.VECTIN + .DA BS.JMP.GP.VSYSO GP.VDOSO + .DA BS.JMP.GP.VSYSI GP.VDOSI + .BS 2 GP.VSYSO + .BS 2 GP.VSYSI + .DA #6 GP.VDEFSLT + .DA #1 GP.VDEFDRV + .BS 1 GP.PREGA + .BS 1 GP.PREGX + .BS 1 GP.PREGY + .BS 1 GP.DTRACE + .BS 1 GP.STATE + .BS 1 GP.EXECACTV + .BS 1 GP.IFILACTV + .BS 1 GP.OFILACTV + .BS 1 GP.PFXACTV + .BS 1 GP.DIRFLG + .BS 1 GP.EDIRFLG + .BS 1 GP.STRINGS + .BS 1 GP.TBUFPTR + .BS 1 GP.INPTR + .BS 1 GP.CHRLAST + .BS 1 GP.OPENCNT + .BS 1 GP.EXECFILE + .BS 1 GP.CATFLAG + .BS 2 GP.XTRNADDR + .BS 1 GP.XLEN + .BS 1 GP.XCNUM + .BS 2 GP.AllowedBITS + .BS 2 GP.FoundBITS + .BS 2 GP.ParamA + .BS 3 GP.ParamB + .BS 2 GP.ParamE + .BS 2 GP.ParamL + .BS 1 GP.ParamS + .BS 1 GP.ParamD + .BS 2 GP.ParamF + .BS 2 GP.ParamR + .BS 1 GP.ParamV + .BS 2 GP.ParamAT + .BS 1 GP.ParamT + .BS 1 GP.ParamINPR + .DA BS.CMDBUF.LEN GP.VPATH1 + .DA MLI.PATHBUF GP.VPATH2 *-------------------------------------- -GP.GOSYSTEM sta GP.GOSYSTEM.C + sta GP.GOSYSTEM.C GP.GOSYSTEM stx BS.CALLX and #$1F tax @@ -78,84 +78,83 @@ GP.GOSYSTEM sta GP.GOSYSTEM.C sta GP.GOSYSTEM.P ldx BS.CALLX jsr MLI -GP.GOSYSTEM.C .BS 1 -GP.GOSYSTEM.P .DA GP.GOSYSTEM.P + .BS 1 GP.GOSYSTEM.C + .DA GP.GOSYSTEM.P GP.GOSYSTEM.P bcs GP.BADCALL rts *-------------------------------------- -GP.BADCALL ldx #$12 + ldx #$12 GP.BADCALL -.1 cmp BS.MLIERTBL,x - beq .2 +GP.MLIERR1 cmp BS.MLIERTBL,x + beq GP.MLIERR2 dex - bpl .1 + bpl GP.MLIERR1 ldx #$13 -.2 lda BS.BIERRTBL,x +GP.MLIERR2 lda BS.BIERRTBL,x ldx BS.CALLX sec -GP.RTS rts + rts GP.RTS *-------------------------------------- -GP.CISPARE1 .BS 1 + .BS 1 GP.CISPARE1 *-------------------------------------- -GP.SCREATE .DA #7 -GP.SCREATEPATH .DA BS.CMDBUF.LEN -GP.CRACCESS .DA #$C3 -GP.CRTYPE .BS 1 -GP.CRAUXTYPE .BS 2 -GP.CRSTTYPE .BS 1 -GP.DATETIME .BS 4 + .DA #7 GP.SCREATE + .DA BS.CMDBUF.LEN GP.SCREATEPATH + .DA #$C3 GP.CRACCESS + .BS 1 GP.CRTYPE + .BS 2 GP.CRAUXTYPE + .BS 1 GP.CRSTTYPE + .BS 4 GP.DATETIME *-------------------------------------- -GP.SDSTROY .DA #1 -GP.SDSTROYPATH .DA BS.CMDBUF.LEN + .DA #1 GP.SDSTROY + .DA BS.CMDBUF.LEN GP.SDSTROYPATH *-------------------------------------- -GP.SRECNAME .DA #2 -GP.SRECNAMEOLD .DA BS.CMDBUF.LEN -GP.SRECNAMENEW .DA MLI.PATHBUF + .DA #2 GP.SRECNAME + .DA BS.CMDBUF.LEN GP.SRECNAMEOLD + .DA MLI.PATHBUF GP.SRECNAMENEW *-------------------------------------- -GP.SSGINFO .BS 1 -GP.SSGINFOPATH .DA BS.CMDBUF.LEN -GP.FIACCESS .BS 1 -GP.FITYPE .BS 1 -GP.FIAUXTYPE .BS 2 -GP.STTYPE .BS 1 -GP.FIBLOKS .BS 2 -GP.FIMDATE .BS 4 -GP.FICDATE .BS 4 + .BS 1 GP.SSGINFO + .DA BS.CMDBUF.LEN GP.SSGINFOPATH + .BS 1 GP.FIACCESS + .BS 1 GP.FITYPE + .BS 2 GP.FIAUXTYPE + .BS 1 GP.STTYPE + .BS 2 GP.FIBLOKS + .BS 4 GP.FIMDATE + .BS 4 GP.FICDATE *-------------------------------------- -GP.MLIMRKEOFBUF .DA #2 -GP.MLIMRKEOFBUF.REFNUM - .BS 1 -GP.SBUFADR .BS 3 + .DA #2 GP.MLIMRKEOFBUF + .BS 1 GP.MLIMRKEOFBUF.REFNUM + .BS 3 GP.SBUFADR *-------------------------------------- -GP.SOPEN .DA #3 -GP.TXTBUF .DA BS.CMDBUF.LEN -GP.OSYSBUF .BS 2 -GP.OREFNUM .BS 1 + .DA #3 GP.SOPEN + .DA BS.CMDBUF.LEN GP.TXTBUF + .BS 2 GP.OSYSBUF + .BS 1 GP.OREFNUM *-------------------------------------- -GP.SNEWLIN .DA #3 -GP.NEWLREF .BS 1 -GP.NLINEMASK .DA #$7F -GP.NLINECHAR .DA #13 + .DA #3 GP.SNEWLIN + .BS 1 GP.NEWLREF + .DA #$7F GP.NLINEMASK + .DA #13 GP.NLINECHAR *-------------------------------------- -GP.MLIRW .DA #4 -GP.MLIRW.REFNUM .BS 1 -GP.MLIRW.DATAPTR .BS 2 -GP.MLIRW.COUNT .BS 2 -GP.MLIRW.TRANS .BS 2 + .DA #4 GP.MLIRW + .BS 1 GP.MLIRW.REFNUM + .BS 2 GP.MLIRW.DATAPTR + .BS 2 GP.MLIRW.COUNT + .BS 2 GP.MLIRW.TRANS *-------------------------------------- -GP.MLICF .DA #1 -GP.MLICF.REFNUM .BS 1 + .DA #1 GP.MLICF + .BS 1 GP.MLICF.REFNUM *-------------------------------------- -GP.CCCSPARE .BS 1 + .BS 1 GP.CCCSPARE *-------------------------------------- GP.COPYRIGHT .AS -"COPYRIGHT APPLE, 1983" jmp BS.GETBUFR GP.GETBUFR jmp BS.FREEBUFR GP.FREEBUFR -GP.RSHIMEM .BS 5 + .BS 5 GP.RSHIMEM *-------------------------------------- MAN SAVE usr/src/basic.fx/basic.s.gp diff --git a/BASIC.FX/BASIC.S.LDR.txt b/BASIC.FX/BASIC.S.LDR.txt index fbee90b3..166e07fa 100644 --- a/BASIC.FX/BASIC.S.LDR.txt +++ b/BASIC.FX/BASIC.S.LDR.txt @@ -255,8 +255,8 @@ L21C3 lda LDR.JMP.GP.ENTRY,x sta DOS.WARMSTART,x sta DOS.COLDSTART,x sta MON.USRJMP,x - lda LDR.AMPERSANDJMP,x - sta MON.AMPERSANDJMP,x + lda LDR.AMPJMP,x + sta MON.AMPJMP,x dex bpl L21C3 @@ -280,8 +280,7 @@ L21C3 lda LDR.JMP.GP.ENTRY,x LDR.JMP.GP.ENTRY jmp GP.ENTRY -LDR.AMPERSANDJMP - jmp GP.DOSCMD +LDR.AMPJMP jmp GP.DOSCMD *-------------------------------------- LDR.KSW lda GP.INVECT0 sta ZP.KSW diff --git a/BASIC.FX/BASIC.S.txt b/BASIC.FX/BASIC.S.txt index 5e1a21c4..7cd0aa16 100644 --- a/BASIC.FX/BASIC.S.txt +++ b/BASIC.FX/BASIC.S.txt @@ -11,11 +11,12 @@ NEW sta $C010 .EM *-------------------------------------- - .INB inc/monitor.i + .INB inc/bs.i + .INB inc/mli.i .INB inc/io.i .INB inc/io.d2.i - .INB inc/mli.i - .INB inc/bs.i + .INB inc/as.i + .INB inc/mon.i *-------------------------------------- HIMEM .EQ $A000 LOWERCASE .EQ 1 @@ -34,53 +35,6 @@ ZPBLLenBits .EQ 13 bRAMFlag .EQ 14 ZPCode .EQ 15 - -ZP.WNDLFT .EQ $20 -ZP.WNDWDT .EQ $21 -ZP.WNDTOP .EQ $22 -ZP.WNDBOT .EQ $23 -ZP.CH .EQ $24 -ZP.CV .EQ $25 -ZP.BASL .EQ $28 -ZP.BASH .EQ $29 - -ZP.PROMPT .EQ $33 - -ZP.CSW .EQ $36 -ZP.KSW .EQ $38 - -ZP.PCL .EQ $3A -ZP.PCH .EQ $3B -ZP.A1L .EQ $3C -ZP.A1H .EQ $3D -ZP.A2L .EQ $3E -ZP.A2H .EQ $3F -ZP.A4L .EQ $40 -ZP.A4H .EQ $41 - -ZP.CMD .EQ $42 -ZP.UNITNUM .EQ $43 -ZP.BUFPTR .EQ $44 -ZP.BLKNUM .EQ $46 - -AS.LINNUM .EQ $50 - -AS.PGRMSTART .EQ $67 -AS.VARSTART .EQ $69 -AS.ARRAYSTART .EQ $6B -AS.ARRAYEND .EQ $6D -AS.STRINGSTART .EQ $6F -AS.STRINGPTR .EQ $71 -AS.HIMEM .EQ $73 - -AS.CURLINE .EQ $75 -AS.LOWTR .EQ $9B -AS.PGRMEND .EQ $AF -AS.TXTPTR .EQ $B8 -AS.ERRFLG .EQ $D8 -AS.ERRNUM .EQ $DE -AS.TRCFLG .EQ $F2 -AS.REMSTK .EQ $F8 *-------------------------------------- ZPXPtr1 .EQ 0 ZPXPtr2 .EQ 2 @@ -109,14 +63,6 @@ DOS.FILEMGRPARM .EQ $03DC DOS.RWTSPARM .EQ $03E3 DOS.RECONNECT .EQ $03DA DOS.JMPBRKVECT .EQ $03EF - -MON.AMPERSANDJMP .EQ $03F5 -MON.USRJMP .EQ $03F8 -MON.NMIJMP .EQ $03FB -MON.IRQVECT .EQ $03FE -MON.BRKVECT .EQ $03F0 -MON.POWERUP .EQ $03F2 -MON.POWERUPBYTE .EQ $03F4 *-------------------------------------- MLI.DEVPTRS .EQ $BF10 MLI.DEVPTRS3D2 .EQ $BF26 @@ -131,35 +77,6 @@ MLI.SLTBYT .EQ $BF99 MLI.PFIXPTR .EQ $BF9A MLI.MLIACTV .EQ $BF9B MLI.IVERSION .EQ $BFFD -*-------------------------------------- -AS.RESTART .EQ $D43C -AS.RESTART1 .EQ $D43F -AS.FINDLINE .EQ $D61A -AS.CLEAR1 .EQ $D665 -AS.NEXTSTMT .EQ $D7D2 -AS.EXECSTMT .EQ $D820 -AS.BITERRFLG .EQ $D865 -AS.NORMAL .EQ $F273 -AS.COLDBOOT .EQ $E000 -AS.INTPRINTAX .EQ $ED24 -*-------------------------------------- -MON.BREAKV .EQ $FA59 -MON.INIT .EQ $FB2F -MON.HOME .EQ $FC58 -MON.CLREOL .EQ $FC9C -MON.RDKEY .EQ $FD0C -MON.KEYIN0 .EQ $FD10 -MON.KEYIN .EQ $FD1B -MON.GETLN .EQ $FD6A -MON.CROUT .EQ $FD8E -MON.COUT .EQ $FDED -MON.COUT1 .EQ $FDF0 -MON.IIGSID .EQ $FE1F -MON.SETINV .EQ $FE80 -MON.SETNORM .EQ $FE84 -MON.SETKBD .EQ $FE89 -MON.SETVID .EQ $FE93 -MON.ENTERMON .EQ $FF69 *-------------------------------------- .INB usr/src/basic.fx/basic.s.ldr *-------------------------------------- diff --git a/BASIC.FX/TEST.S.txt b/BASIC.FX/TEST.S.txt index 989ed404..c3bbc17d 100644 --- a/BASIC.FX/TEST.S.txt +++ b/BASIC.FX/TEST.S.txt @@ -5,8 +5,14 @@ NEW .OR $2000 .TF BIN/test *-------------------------------------- - .INB inc/monitor.i + .MA DEBUG +:1 bit $C000 + bpl :1 + sta $C010 + .EM +*-------------------------------------- .INB inc/bs.i + .INB inc/mon.i *-------------------------------------- HEADER cld Allows BRUN at ORG=$2000 jmp CODE.START for debugging without relocation @@ -24,11 +30,15 @@ R.MSG .DA MSG CODE.START ldx #0 .1 lda MSG,x ABS relocation required - beq .8 + beq .2 - jsr COUT + jsr MON.COUT inx - jmp .1 ABS relocation required + bne .1 + +.2 + + .8 clc diff --git a/INC/AS.I.txt b/INC/AS.I.txt new file mode 100644 index 00000000..17ad2a20 --- /dev/null +++ b/INC/AS.I.txt @@ -0,0 +1,39 @@ +NEW + AUTO 3,1 + .LIST OFF +*-------------------------------------- +* AppleSoft ZP +* http://www.txbobsc.com/scsc/scdocumentor/index.html#toc +*-------------------------------------- +AS.LINNUM .EQ $50 + +AS.PGRMSTART .EQ $67 +AS.VARSTART .EQ $69 +AS.ARRAYSTART .EQ $6B +AS.ARRAYEND .EQ $6D +AS.STRINGSTART .EQ $6F +AS.STRINGPTR .EQ $71 +AS.HIMEM .EQ $73 + +AS.CURLINE .EQ $75 +AS.LOWTR .EQ $9B +AS.PGRMEND .EQ $AF +AS.TXTPTR .EQ $B8 +AS.ERRFLG .EQ $D8 +AS.ERRNUM .EQ $DE +AS.TRCFLG .EQ $F2 +AS.REMSTK .EQ $F8 +*-------------------------------------- +AS.RESTART .EQ $D43C +AS.RESTART1 .EQ $D43F +AS.FINDLINE .EQ $D61A +AS.CLEAR1 .EQ $D665 +AS.NEXTSTMT .EQ $D7D2 +AS.EXECSTMT .EQ $D820 +AS.BITERRFLG .EQ $D865 +AS.NORMAL .EQ $F273 +AS.COLDBOOT .EQ $E000 +AS.INTPRINTAX .EQ $ED24 +*-------------------------------------- +MAN +SAVE inc/as.i diff --git a/INC/BS.I.txt b/INC/BS.I.txt index 3f953233..63054f93 100644 --- a/INC/BS.I.txt +++ b/INC/BS.I.txt @@ -53,10 +53,133 @@ GP.EXTRNCMD .EQ $BE06 GP.ERROUT .EQ $BE09 GP.PRINTERR .EQ $BE0C GP.ERRCODE .EQ $BE0F - - +*-------------------------------------- +GP.OUTVECT0 .EQ $BE10 +GP.OUTVECT1 .EQ $BE12 +GP.OUTVECT2 .EQ $BE14 +GP.OUTVECT3 .EQ $BE16 +GP.OUTVECT4 .EQ $BE18 +GP.OUTVECT5 .EQ $BE1A +GP.OUTVECT6 .EQ $BE1C +GP.OUTVECT7 .EQ $BE1E +GP.INVECT0 .EQ $BE20 +GP.INVECT1 .EQ $BE22 +GP.INVECT2 .EQ $BE24 +GP.INVECT3 .EQ $BE26 +GP.INVECT4 .EQ $BE28 +GP.INVECT5 .EQ $BE2A +GP.INVECT6 .EQ $BE2C +GP.INVECT7 .EQ $BE2E +*-------------------------------------- +GP.VECTOUT .EQ $BE30 +GP.VECTIN .EQ $BE32 +GP.VDOSO .EQ $BE34 +GP.VDOSI .EQ $BE36 +GP.VSYSO .EQ $BE38 +GP.VSYSI .EQ $BE3A +*-------------------------------------- +GP.VDEFSLT .EQ $BE3C +GP.VDEFDRV .EQ $BE3D +GP.PREGA .EQ $BE3E +GP.PREGX .EQ $BE3F +GP.PREGY .EQ $BE40 +GP.DTRACE .EQ $BE41 +GP.STATE .EQ $BE42 +GP.EXECACTV .EQ $BE43 +GP.IFILACTV .EQ $BE44 +GP.OFILACTV .EQ $BE45 +GP.PFXACTV .EQ $BE46 +GP.DIRFLG .EQ $BE47 +GP.EDIRFLG .EQ $BE48 +GP.STRINGS .EQ $BE49 +GP.TBUFPTR .EQ $BE4A +GP.INPTR .EQ $BE4B +GP.CHRLAST .EQ $BE4C +GP.OPENCNT .EQ $BE4D +GP.EXECFILE .EQ $BE4E +GP.CATFLAG .EQ $BE4F +*-------------------------------------- +GP.XTRNADDR .EQ $BE50 +GP.XLEN .EQ $BE52 +GP.XCNUM .EQ $BE53 +*-------------------------------------- +GP.AllowedBITS .EQ $BE54 +GP.FoundBITS .EQ $BE56 +GP.ParamA .EQ $BE58 +GP.ParamB .EQ $BE5A +GP.ParamE .EQ $BE5D +GP.ParamL .EQ $BE5F +GP.ParamS .EQ $BE61 +GP.ParamD .EQ $BE62 +GP.ParamF .EQ $BE63 +GP.ParamR .EQ $BE65 +GP.ParamV .EQ $BE67 +GP.ParamAT .EQ $BE68 +GP.ParamT .EQ $BE6A +GP.ParamINPR .EQ $BE6B +GP.VPATH1 .EQ $BE6C +GP.VPATH2 .EQ $BE6E +*-------------------------------------- +GP.GOSYSTEM .EQ $BE70 +GP.GOSYSTEM.C .EQ $BE85 +GP.GOSYSTEM.P .EQ $BE86 +GP.BADCALL .EQ $BE8B +GP.RTS .EQ $BE9E +GP.CISPARE1 .EQ $BE9F +*-------------------------------------- +GP.SCREATE .EQ $BEA0 +GP.SCREATEPATH .EQ $BEA1 +GP.CRACCESS .EQ $BEA3 +GP.CRTYPE .EQ $BEA4 +GP.CRAUXTYPE .EQ $BEA5 +GP.CRSTTYPE .EQ $BEA7 +GP.DATETIME .EQ $BEA8 +*-------------------------------------- +GP.SDSTROY .EQ $BEAC +GP.SDSTROYPATH .EQ $BEAD +*-------------------------------------- +GP.SRECNAME .EQ $BEAF +GP.SRECNAMEOLD .EQ $BEB0 +GP.SRECNAMENEW .EQ $BEB2 +*-------------------------------------- +GP.SSGINFO .EQ $BEB4 +GP.SSGINFOPATH .EQ $BEB5 +GP.FIACCESS .EQ $BEB7 +GP.FITYPE .EQ $BEB8 +GP.FIAUXTYPE .EQ $BEB9 +GP.STTYPE .EQ $BEBB +GP.FIBLOKS .EQ $BEBC +GP.FIMDATE .EQ $BEBE +GP.FICDATE .EQ $BEC2 +*-------------------------------------- +GP.MLIMRKEOFBUF .EQ $BEC6 +GP.MLIMRKEOFBUF.REFNUM .EQ $BEC7 +GP.SBUFADR .EQ $BEC8 +*-------------------------------------- +GP.SOPEN .EQ $BECB +GP.TXTBUF .EQ $BECC +GP.OSYSBUF .EQ $BECE +GP.OREFNUM .EQ $BED0 +*-------------------------------------- +GP.SNEWLIN .EQ $BED1 +GP.NEWLREF .EQ $BED2 +GP.NLINEMASK .EQ $BED3 +GP.NLINECHAR .EQ $BED4 +*-------------------------------------- +GP.MLIRW .EQ $BED5 +GP.MLIRW.REFNUM .EQ $BED6 +GP.MLIRW.DATAPTR .EQ $BED7 +GP.MLIRW.COUNT .EQ $BED9 +GP.MLIRW.TRANS .EQ $BEDB +*-------------------------------------- +GP.MLICF .EQ $BEDD +GP.MLICF.REFNUM .EQ $BEDE +*-------------------------------------- +GP.CCCSPARE .EQ $BEDF +*-------------------------------------- GP.GETBUFR .EQ $BEF5 GP.FREEBUFR .EQ $BEF8 +GP.RSHIMEM .EQ $BEFB *-------------------------------------- MAN SAVE inc/bs.i diff --git a/INC/MON.I.txt b/INC/MON.I.txt new file mode 100644 index 00000000..0b522861 --- /dev/null +++ b/INC/MON.I.txt @@ -0,0 +1,133 @@ +NEW + AUTO 3,1 + .LIST OFF +*-------------------------------------- +* MON ZP locations +*-------------------------------------- +ZP.WNDLFT .EQ $20 +ZP.WNDWDT .EQ $21 +ZP.WNDTOP .EQ $22 +ZP.WNDBOT .EQ $23 +ZP.CH .EQ $24 +ZP.CV .EQ $25 +ZP.BASL .EQ $28 +ZP.BASH .EQ $29 + +ZP.PROMPT .EQ $33 + +ZP.CSW .EQ $36 +ZP.KSW .EQ $38 + +ZP.PCL .EQ $3A +ZP.PCH .EQ $3B +ZP.A1L .EQ $3C +ZP.A1H .EQ $3D +ZP.A2L .EQ $3E +ZP.A2H .EQ $3F +ZP.A4L .EQ $40 +ZP.A4H .EQ $41 + +ZP.CMD .EQ $42 +ZP.UNITNUM .EQ $43 +ZP.BUFPTR .EQ $44 +ZP.BLKNUM .EQ $46 +*-------------------------------------- +* ROM Standard Routines +*-------------------------------------- +MON.BRKVECT .EQ $03F0 +MON.POWERUP .EQ $03F2 +MON.POWERUPBYTE .EQ $03F4 +MON.AMPJMP .EQ $03F5 +MON.USRJMP .EQ $03F8 +MON.NMIJMP .EQ $03FB +MON.IRQVECT .EQ $03FE +*-------------------------------------- +MSLOT .EQ $7F8 $Cn n=slot using $C800 +*-------------------------------------- +COL80FIRM .EQ $C300 +*-------------------------------------- +MON.ENTERMON .EQ $FF69 +*-------------------------------------- +PLOT .EQ $F800 PLOT LORES BLOCK +HLINE .EQ $F819 HORIZ LORES LINE +VLINE .EQ $F828 VERTICAL LORES LINE +CLRSCR .EQ $F832 CLEAR FULL LORES SCREEN +CLRTOP .EQ $FB36 CLEAR TOP. LORES SCREEN +GBSCALC .EQ $F847 LORES BASE CALCULATION +NEXTCOL .EQ $F85F INCREASE LORES COLOR BY 3 +SETCOL .EQ $F864 SET LORES COLOR +SCRN .EQ $F871 READ LORES SCREEN COLOR +PRNTAX .EQ $F941 OUTPUT A THEN X. AS HEX +PRBLNK .EQ $F948 OUTPUT 3 SPACES VIA BOOKS +PRBL2 .EQ $F94A OUTPUT X BLANKS VIA HOOKS +romirq .EQ $FA41 monitor irq entry +MON.BREAKV .EQ $FA59 Monitor break vector +resetv .EQ $FA62 monitor reset entry +REGDSP .EQ $FAD7 DISPLAY WORKING REGISTERS +PREAD .EQ $FB1E READ GAME PADDLE X +MON.INIT .EQ $FB2F INITIALIZE TEXT SCREEN +SETTXT .EQ $FB39 SET UP TEXT SCREEN (NOT 2E!) +SETGR .EQ $FB40 SET UP GRAPHICS SCREEN +SETWND .EQ $FB4B SET NORMAL TEXT WINDOW +TABV .EQ $FB5B +SETPWRC .EQ $FB6F +version .EQ $FBB3 monitor ROM id byte +zidbyte .EQ $FBC0 monitor ROM id byte +BASCALC .EQ $FBC1 CALCULATE TEXT BASE ADDRESS (NOT 2E!} +BELL1 .EQ $FBDD BEEP SPEAKER IF CTRL-G +BELL2 .EQ $FBE4 BEEP SPEAKER ONCE +ADVANCE .EQ $FBF4 TEXT CURSOR ONE TO RIGHT +VIDOUT .EQ $FBFD OUTPUT ASCII TO SCREEN ONLY +BS .EQ $FC10 BACKSPACE SCREEN +UP .EQ $FC1A MOVE SCREEN CURSOR UP ONE LINE +VTAB .EQ $FC22 VERTICAL SCREEN TAB USING CV +VTABA .EQ $FC24 VERTICAL SCREEN TAB USING A +ESC1 .EQ $FC66 PROCESS ESCAPE CURSOR MOVES +CLREOP .EQ $FC42 CLEAR TO END OF PAGE +MON.HOME .EQ $FC58 CLEAR TEXT SCREEN AND HOME CURSOR +CR .EQ $FC62 CARRIAGE RETURN TO SCREEN +LF .EQ $FC66 LINEFEED TO SCREEN ONLY +SCROLL .EQ $FC70 SCROLL TEXT SCREEN UP ONE +MON.CLREOL .EQ $FC9C CLEAR TEXT TO END OF LINE +WAIT .EQ $FCA8 TIME DELAY SET BY ACCUMULATOR +MON.RDKEY .EQ $FD0C GET INPUT CHARACTER VIA HOOKS +MON.KEYIN0 .EQ $FD10 +MON.KEYIN .EQ $FD1B READ THE APPLE KEYBOARD +RDCHAR .EQ $FD35 GET KEY AND PROCESS ESC A-F +CANCEL .EQ $FD62 CANCEL KEYBOARD LINE ENTRY +GETLNZ .EQ $FD67 CR THEN GET KEYBOARD INPUT LINE +MON.GETLN .EQ $FD6A GET KEYBOARD INPUT LINE +GETLN1 .EQ $FD6F GET KBD INPUT, NO PROMPT +CROUT1 .EQ $FD8B CLEAR EOL THEN CR VIA BOOKS +MON.CROUT .EQ $FD8E OUTPUT CR VIA HOOKS +PRBYTE .EQ $FDDA OUTPUT FULL A IN HEX TO HOOKS +PRHEX .EQ $FDE3 OUTPUT LOW A IN HEX TO HOOKS +MON.COUT .EQ $FDED OUTPUT CHARACTER VIA HOOKS +MON.COUT1 .EQ $FDF0 OUTPUT CHARACTER TO SCREEN +MON.IIGSID .EQ $FE1F returns system info +MOVE .EQ $FE2C MOVE BLOCK OF MEMORY +VERIFY .EQ $FE36 VERIFY BLOCK OF MEMORY +LIST .EQ $FE5E DISASSEMBLE 20 INSTRUCTIONS +LIST2 .EQ $FE63 DISASSEMBLE •A• INSTRUCTIONS +MON.SETINV .EQ $FE80 PRINT INVERSE TEXT TO SCREEN +MON.SETNORM .EQ $FE84 PRINT NORMAL TEXT TO SCREEN +MON.SETKBD .EQ $FE89 GRAB INPUT HOOKS FOR KEYBOARD +MON.SETVID .EQ $FE93 GRAB OUTPUT HOOKS FOR SCREEN +XBASIC .EQ $FEB0 GO BASIC, DESTROYING OLD +BASCON .EQ $FEB3 GO BASIC, CONTINUING OLD +TRACE .EQ $FEC2 START TRACING (OLD ROM ONLY!) +STEP .EQ $FEC4 SINGLE STEP (OLD ROM ONLY!) +WRITE .EQ $FECD WRITE TO CASSETTE TAPE +READ .EQ $FEF0 READ TO CASSETTE TAPE +PRERR .EQ $FF2D PRINT "ERR" TO OUTPUT HOOK +BELL .EQ $FF3A OUTPUT BELL TO HOOKS +IORESR .EQ $FF3F RESTORE ALL WORKING REGISTER +IOSAVE .EQ $FF4A SAVE ALL WORKING REGISTERS +RETURN .EQ $FF58 "GUARANTEED" RETURN +OLDRST .EQ $FF59 OLD RESET, NO AUTOSTART +MON .EQ $FF65 ENTER MONITOR AND BEEP SPEAKER +MONZ .EQ $FF69 ENTER MONITOR QUIETLY +GETNUM .EQ $FFA7 ASCII TO HEX IN 3E & 3F +*-------------------------------------- +MAN +SAVE inc/mon.i