diff --git a/.Floppies/A2OSX.BOOTHD.woz b/.Floppies/A2OSX.BOOTHD.woz index ce4eca4f..eb16d2ab 100644 Binary files a/.Floppies/A2OSX.BOOTHD.woz and b/.Floppies/A2OSX.BOOTHD.woz differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 592552e5..da32ecf2 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index c53053a0..3c48d622 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/.Floppies/ProDOSFX.BOOT.po b/.Floppies/ProDOSFX.BOOT.po index 52f2f379..f2cbe983 100644 Binary files a/.Floppies/ProDOSFX.BOOT.po and b/.Floppies/ProDOSFX.BOOT.po differ diff --git a/BASIC.FX/BASIC.S.A.txt b/BASIC.FX/BASIC.S.A.txt index 52cca426..964d3fbb 100644 --- a/BASIC.FX/BASIC.S.A.txt +++ b/BASIC.FX/BASIC.S.A.txt @@ -475,7 +475,7 @@ L9D1C lda #$05 L9D1F jmp BS.ERROUT L9D22 lda #$FF - sta BS.CAR.EICB + sta BS.CAT.EICB jsr BS.GetFTableIdx @@ -489,7 +489,7 @@ L9D22 lda #$FF lda GP.SBUFADR sec -L9D45 inc BS.CAR.EICB +L9D45 inc BS.CAT.EICB sbc BS.CAT.EL bcs L9D45 @@ -914,7 +914,7 @@ BS.KW.FRE stz BS.TXTTAB sec sbc AS.ARRAYEND+1 cmp #$07 - bcc LA07D + bcc .1 sbc #$03 sta XBBD9 @@ -927,11 +927,11 @@ BS.KW.FRE stz BS.TXTTAB sbc AS.STRINGSTART+1 adc #$01 cmp XBBD9 - bcs LA07D + bcs .1 sta XBBD9 -LA07D lda AS.HIMEM+1 +.1 lda AS.HIMEM+1 sta BS.MEMSIZE+1 lda AS.HIMEM diff --git a/BASIC.FX/BASIC.S.B.txt b/BASIC.FX/BASIC.S.B.txt index 55be1c3a..063f7e9c 100644 --- a/BASIC.FX/BASIC.S.B.txt +++ b/BASIC.FX/BASIC.S.B.txt @@ -5,13 +5,13 @@ BS.GetSysBuf lda #$04 LA1FB sta XBBB5 jsr BS.KW.FRE - bcs LA24E + bcs .99 lda AS.STRINGSTART+1 sbc AS.ARRAYEND+1 cmp XBBB5 lda #BS.E.NOBUFFER - bcc LA24E + bcc .98 lda AS.STRINGSTART+1 sta ZP.PCH @@ -48,8 +48,8 @@ LA1FB sta XBBB5 sta BS.BUFPAGE rts -LA24E sec - rts +.98 sec +.99 rts XBBB5 .BS 1 *-------------------------------------- @@ -943,7 +943,7 @@ LAB63 cmp #$FF rts LAB6F pha - jsr LB562 + jsr BS.CloseAll jsr LB36B stz GP.ParamA @@ -980,10 +980,10 @@ BS.KW.CHAIN jsr LA411 ldx XBBEA dex stx AS.HIMEM+1 - jsr LAC22 + jsr BS.LoadBAS ldx BS.AS.HIMEMSave stx AS.HIMEM+1 - bcs LAC33 + bcs BS.LoadBAS0.RTS jsr AS.CLEAR1 jsr LA480 @@ -997,17 +997,17 @@ BS.KW.RUN stz GP.IFILACTV lsr bcc LABF4 - jsr LAC1D - bcs LAC33 + jsr BS.LoadBAS0 + bcs BS.LoadBAS0.RTS jsr AS.CLEAR1 LABE6 sta AS.ERRFLG - jsr LACB6 + jsr BS.SetRunLineNum jsr BS.SaveCSWKSW jsr LABF4 jmp AS.NEXTSTMT - +*-------------------------------------- LABF4 jsr AS.NORMAL lda #$A3 sta X9F65 @@ -1018,20 +1018,56 @@ LABF4 jsr AS.NORMAL jsr BS.SetState jmp BS.SYNERR *-------------------------------------- -BS.KW.LOAD jsr LAC1D - bcs LAC33 +BS.KW.LOAD jsr BS.LoadBAS0 + bcs BS.LoadBAS0.RTS BS.ENTRY jsr AS.CLEAR1 jsr BS.SetState0 stz ZP.CH jmp AS.RESTART1 +*-------------------------------------- +BS.LoadBAS0 jsr BS.CloseAll +BS.LoadBAS0.RTS bcs BS.LoadBAS.RTS -LAC1D jsr LB562 - bcs LAC33 +BS.LoadBAS lda #$01 + ldx #$FC + jsr BS.CheckFTypeXAccessA + bcs BS.LoadBAS.RTS -LAC22 jsr LAC34 - bcs LAC33 + jsr BS.MLIGetEOF + bcs BS.LoadBAS.RTS + + 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 .1 + + cmp AS.HIMEM+1 + +.1 lda #BS.E.TOOLARGE + bcs BS.LoadBAS.RTS + + ldx GP.SBUFADR + ldy GP.SBUFADR+1 + jsr BS.ReadXYBytes + bcs BS.LoadBAS.RTS + + jsr BS.MLIClose + bcs BS.LoadBAS.RTS + + jsr LAC80 + ldx GP.ParamA+1 + ldy GP.ParamA + + stx AS.PGRMEND+1 + sty AS.PGRMEND sty AS.ARRAYSTART sty AS.VARSTART @@ -1040,50 +1076,13 @@ LAC22 jsr LAC34 stx AS.VARSTART+1 stx AS.ARRAYEND+1 -LAC33 rts - -LAC34 lda #$01 - ldx #$FC - jsr BS.CheckFTypeXAccessA - bcs LAC33 - - jsr BS.MLIGetEOF - 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 #BS.E.TOOLARGE - bcs LAC33 - - ldx GP.SBUFADR - ldy GP.SBUFADR+1 - jsr BS.ReadXYBytes - bcs LAC33 - - jsr BS.MLIClose - bcs LAC33 - - jsr LAC80 - ldx GP.ParamA+1 - ldy GP.ParamA - stx AS.PGRMEND+1 - sty AS.PGRMEND - rts - +BS.LoadBAS.RTS rts +*-------------------------------------- LAC80 sec lda AS.PGRMSTART sbc GP.FIAUXTYPE sta ZP.A1L + lda AS.PGRMSTART+1 sbc GP.FIAUXTYPE+1 sta ZP.A1H @@ -1113,7 +1112,8 @@ LAC98 stx ZP.PCL clc bcc LAC98 -LACB6 lda GP.FoundBITS+1 +BS.SetRunLineNum + lda GP.FoundBITS+1 and #CMDBITS1.LINE clc beq LACD9 diff --git a/BASIC.FX/BASIC.S.C.txt b/BASIC.FX/BASIC.S.C.txt index 2a2c902e..68bcdf44 100644 --- a/BASIC.FX/BASIC.S.C.txt +++ b/BASIC.FX/BASIC.S.C.txt @@ -380,7 +380,7 @@ LB087 lda #BS.E.NODEV sec rts *-------------------------------------- -BS.KW.BYE jsr LB562 +BS.KW.BYE jsr BS.CloseAll jsr LB36B jsr BS.RAMReset * lda #$65 @@ -573,16 +573,15 @@ BS.ReadDirEnt lda #$59 jsr BS.MLIRead bcs LB203 - ldx #$03 - -LB1EA lda $27C,x - sta BS.CAT.EL,x - dex - bpl LB1EA + lda $27D + sta BS.CAT.EPB + lda $27C + sta BS.CAT.EL sta GP.MLIRW.COUNT + lda #$01 - sta BS.CAR.EICB + sta BS.CAT.EICB stz GP.SBUFADR+1 stz GP.SBUFADR+2 @@ -630,13 +629,13 @@ LB23D lda #BS.E.LOCKED LB241 lda GP.SBUFADR+1 and #$FE sta GP.SBUFADR+1 - ldy BS.CAR.EICB + ldy BS.CAT.EICB lda #$00 cpy BS.CAT.EPB bcc LB25D tay - sty BS.CAR.EICB + sty BS.CAT.EICB inc GP.SBUFADR+1 LB25A inc GP.SBUFADR+1 @@ -658,17 +657,17 @@ LB268 adc #$04 jsr BS.MLIRead bcs LB28D - inc BS.CAR.EICB + inc BS.CAT.EICB lda DIRENTBUF and #$F0 beq LB241 - lda BS.CAT.FileCnt - bne .1 +* lda BS.CAT.FileCnt +* bne .1 - dec BS.CAT.FileCnt+1 +* dec BS.CAT.FileCnt+1 -.1 dec BS.CAT.FileCnt +*.1 dec BS.CAT.FileCnt LB28D rts *-------------------------------------- @@ -805,7 +804,7 @@ LB36B lda GP.EXECACTV sta GP.EXECFILE ldx #$08 lda BS.REFNUMs,x - jsr LB515 + jsr BS.CloseA LB37B rts *-------------------------------------- @@ -1053,12 +1052,12 @@ LB508 rts *-------------------------------------- BS.KW.CLOSE lda GP.FoundBITS and #CMDBITS0.FN1 - beq LB562 + beq BS.CloseAll jsr BS.CheckFilename bcs LB4B1 -LB515 sta GP.MLICF.REFNUM +BS.CloseA sta GP.MLICF.REFNUM lda BS.BUFPAGEs-1,x sta BS.BUFPAGE bit GP.EXECFILE @@ -1094,13 +1093,13 @@ LB53F stz MLI.LEVEL LB55E dec GP.OPENCNT rts *-------------------------------------- -LB562 ldx GP.OPENCNT +BS.CloseAll ldx GP.OPENCNT beq LB573 stx GP.EXECFILE lda BS.REFNUMs,x - jsr LB515 - bcc LB562 + jsr BS.CloseA + bcc BS.CloseAll LB572 rts @@ -1111,7 +1110,7 @@ LB573 stz GP.MLICF.REFNUM jmp BS.MLIClose *-------------------------------------- BS.KW.POSITION jsr BS.CheckFilename - bcs LB5EF + bcs LB5F0 sta GP.MLIRW.REFNUM sta GP.NEWLREF @@ -1135,17 +1134,17 @@ LB592 lda GP.FoundBITS+1 LB5AD lda #$EF sta GP.MLIRW.COUNT - stz GP.MLIRW.COUNT+1 - stz GP.MLIRW.DATAPTR + stz GP.MLIRW.DATAPTR lda #$02 sta GP.MLIRW.DATAPTR+1 + lda #$7F sta GP.NLINEMASK lda #MLI.C.NEWLINE jsr GP.GOSYSTEM - bcs LB5EF + bcs LB5F0 LB5CB lda GP.ParamF ora GP.ParamF+1 @@ -1153,7 +1152,7 @@ LB5CB lda GP.ParamF beq LB5F0 jsr BS.MLIRead - bcs LB5EF + bcs LB5F0 lda GP.ParamF sbc #$00 @@ -1164,7 +1163,7 @@ LB5CB lda GP.ParamF bcs LB5CB LB5ED lda #BS.E.INVOPT -LB5EF sec + sec LB5F0 rts *-------------------------------------- LB5F1 lda BS.RecordSize diff --git a/BASIC.FX/BASIC.S.D.txt b/BASIC.FX/BASIC.S.D.txt index 4f3fd169..0a113dba 100644 --- a/BASIC.FX/BASIC.S.D.txt +++ b/BASIC.FX/BASIC.S.D.txt @@ -189,8 +189,8 @@ BS.CATWIDTH .BS 1 BS.CAT.EL .BS 1 BS.CAT.EPB .BS 1 -BS.CAT.FileCnt .BS 2 -BS.CAR.EICB .BS 1 +*BS.CAT.FileCnt .BS 2 +BS.CAT.EICB .BS 1 *-------------------------------------- .LIST ON BS.FREESPACE .EQ $BC17-* diff --git a/BASIC.FX/BASIC.S.LDR.txt b/BASIC.FX/BASIC.S.LDR.txt index bbdb7049..6763a6e4 100644 --- a/BASIC.FX/BASIC.S.LDR.txt +++ b/BASIC.FX/BASIC.S.LDR.txt @@ -343,12 +343,12 @@ LDR.ShrinkRAM stz bRAMFlag dex bpl .2 -.9 sec No $BF device found at S3D2 -.99 rts dont use LC !!!! - -.8 clc +.8 clc No $BF device found rts +.9 sec +.99 rts + .3 jsr LDR.GFInfoRAM bcs .99 diff --git a/BASIC.FX/BASIC.S.X.txt b/BASIC.FX/BASIC.S.X.txt index feaf4964..eb74c2eb 100644 --- a/BASIC.FX/BASIC.S.X.txt +++ b/BASIC.FX/BASIC.S.X.txt @@ -1361,12 +1361,6 @@ BSX.ToUpper cmp #'a' eor #$20 .9 rts -*-------------------------------------- - .LIST ON -BSX.SIZE .EQ *-BSX.JMPX - .LIST OFF - - .BS $F000-* *-------------------------------------- MAN SAVE usr/src/basic.fx/basic.s.x diff --git a/BASIC.FX/BASIC.S.txt b/BASIC.FX/BASIC.S.txt index 90296756..8b065a8b 100644 --- a/BASIC.FX/BASIC.S.txt +++ b/BASIC.FX/BASIC.S.txt @@ -236,7 +236,8 @@ LDR.GP.DST .EQ * LDR.AUX.SRC .PH $E000 LDR.AUX.DST .EQ * .INB usr/src/basic.fx/basic.s.x - .EP + .INB usr/src/basic.fx/basic.s.xm + .EP *-------------------------------------- MAN SAVE usr/src/basic.fx/basic.s diff --git a/ProDOS.FX/ProDOS.S.CCLK.txt b/ProDOS.FX/ProDOS.S.CCLK.txt index 5640d327..034e87e9 100644 --- a/ProDOS.FX/ProDOS.S.CCLK.txt +++ b/ProDOS.FX/ProDOS.S.CCLK.txt @@ -52,6 +52,6 @@ savestate .HS 00 state of the state register *-------------------------------------- CCLK.LEN .EQ *-CCLK.START MAN -SAVE USR/SRC/PRODOS.FX/PRODOS.S.CCLK -LOAD USR/SRC/PRODOS.FX/PRODOS.S +SAVE usr/src/prodos.fx/prodos.s.cclk +LOAD usr/src/prodos.fx/prodos.s ASM diff --git a/ProDOS.FX/ProDOS.S.GP.txt b/ProDOS.FX/ProDOS.S.GP.txt index f8d19fbb..cc7c49c7 100644 --- a/ProDOS.FX/ProDOS.S.GP.txt +++ b/ProDOS.FX/ProDOS.S.GP.txt @@ -148,6 +148,12 @@ GP.MLICONT sec *.3 lda p8areg restore acc * rti exit +*-------------------------------------- +GP.TOOLBOX bit RRAMWRAMBNK1 + bit RRAMWRAMBNK1 + jsr XDOS.TOOLBOX + bit RROMBNK2 + rts *-------------------------------------- .LIST ON GP.FREE2 .EQ $BFEB-* @@ -170,6 +176,6 @@ kversion .HS 23 represents release 2.0.3 *-------------------------------------- GP.LEN .EQ *-GP.START MAN -SAVE USR/SRC/PRODOS.FX/PRODOS.S.GP -LOAD USR/SRC/PRODOS.FX/PRODOS.S +SAVE usr/src/prodos.fx/prodos.s.gp +LOAD usr/src/prodos.fx/prodos.s ASM diff --git a/ProDOS.FX/ProDOS.S.ILDR.txt b/ProDOS.FX/ProDOS.S.ILDR.txt index 7d84a596..4f9836b9 100644 --- a/ProDOS.FX/ProDOS.S.ILDR.txt +++ b/ProDOS.FX/ProDOS.S.ILDR.txt @@ -15,10 +15,47 @@ ILDR.START jsr MLI check for file 'atinit' jsr ILDR.LoadFile bcc .1 - jmp ILDR.MLIERR +.9 jmp ILDR.MLIERR .1 lda RROMBNK2 enable ROM jsr sysentry execute ATinit +*-------------------------------------- + .DO READCAT=1 + + lda LDR.MLIOL.P+1 Boot unitnum + sta ILDR.MLIRB.P+1 + + stz dst + lda /dbuf + ldy #$02 read directory into buffer + ldx #0 + +.2 sta dst+1 + sta ILDR.MLIRB.P+3 Data buf HI + sty ILDR.MLIRB.P+4 Blk Num LO + stx ILDR.MLIRB.P+5 Blk Num HI + + jsr MLI + .DA #MLIREADBLOCK + .DA ILDR.MLIRB.P + bcs .9 + + ldy #$03 get next block# from link + lda (dst),y + tax + dey + ora (dst),y 00 00 -> Last Block + beq .8 + + lda (dst),y + tay + lda dst+1 + inc + inc add $200 to buffer pointer + cmp /dbuf+$800 until it points past end of buffer. + bcc .2 if ok, read next block. + +.8 .FIN *-------------------------------------- * BOOT block read 4 directory blocks at dbuf=$C00 -> $13FF *-------------------------------------- @@ -90,7 +127,6 @@ ILDR.ENUMPM .DO PM jsr setvid jsr setkbd jsr home - jmp sysentry go run interpreter .9 jsr MLI no .SYSTEM found, so quit. @@ -327,6 +363,13 @@ ILDR.LCBits .HS 8040201008040201 ILDR.GFINFO .DA #10 PARAM CNT .DA ILDR.ATINIT .BS S.FI-3 +*-------------------------------------- + .DO READCAT=1 +ILDR.MLIRB.P .DA #3 + .DA #0 unit number + .DA 0 2 byte data buffer + .DA 0 2 byte block number + .FIN *-------------------------------------- ILDR.OPEN .DA #3 PARAM CNT .BS 2 Filename diff --git a/ProDOS.FX/ProDOS.S.IRQ.txt b/ProDOS.FX/ProDOS.S.IRQ.txt index 59f63188..8e67fcd1 100644 --- a/ProDOS.FX/ProDOS.S.IRQ.txt +++ b/ProDOS.FX/ProDOS.S.IRQ.txt @@ -90,6 +90,6 @@ irqv .DA * PATCHED with ROM vector by LDR IRQ.LEN .EQ *-IRQ *-------------------------------------- MAN -SAVE USR/SRC/PRODOS.FX/PRODOS.S.IRQ -LOAD USR/SRC/PRODOS.FX/PRODOS.S +SAVE usr/src/prodos.fx/prodos.s.irq +LOAD usr/src/prodos.fx/prodos.s ASM diff --git a/ProDOS.FX/ProDOS.S.LDR.txt b/ProDOS.FX/ProDOS.S.LDR.txt index 3498f309..be9d9037 100644 --- a/ProDOS.FX/ProDOS.S.LDR.txt +++ b/ProDOS.FX/ProDOS.S.LDR.txt @@ -26,20 +26,16 @@ LDR.MSG.IIgs .AT "IIgs" LDR.MSG.Unknown .AT "Unknown" LDR.MSG.CLK .AT "?Clk" LDR.MSG.RAM .AT "/RAM" -LDR.MSG.ROOTERR .AT "ERR reading CATALOG" +LDR.MSG.PFXERR .AT "ERR setting prefix" *-------------------------------------- p16start inc LDR.BootFlag set = 2 for GQuit rts atalkset inc LDR.BootFlag set = 1 for appletalk rts prostart lda unitnum sta LDR.MLIOL.P+1 - .DO READCAT=1 - sta LDR.MLIRB.P+1 - .FIN - cld bit RROMBNK2 - + sta CLR80DISP sta CLR80STORE @@ -157,11 +153,6 @@ m128k sta idapple Save MACHID in temp location lda #$01 patch for the gs rom trb statereg to force off intcxrom - ldx #PAKME.ILDR-PAKME.Table - ldy #ILDR.START - lda /ILDR.START - jsr X.Unpak.XatYA - ldx #PAKME.GP-PAKME.Table ldy #MLI lda /MLI @@ -271,22 +262,47 @@ LDR.Common jsr LDR.BlkDevScan jsr LDR.SetupRAM *-------------------------------------- + lda LDR.MLIOL.P+1 Boot unitnum + sta DEVNUM + + ldx DEVCNT + +.1 lda DEVLST,x + eor DEVNUM + and #$f0 + beq .2 + + dex + bpl .1 + + brk + +.2 lda DEVLST,x + pha + +.3 lda DEVLST+1,x + sta DEVLST,x + cpx DEVCNT + inx + bcc .3 + + pla + ldx DEVCNT + sta DEVLST,x + lda LDR.BootFlag get setup entry point flag - beq LDR.ReadRoot taken if normal boot. + beq LDR.SetPrefix taken if normal boot. bit RROMBNK2 rts return to caller at setup entry point. *-------------------------------------- -LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals - sta devnum last device used - - jsr MLI +LDR.SetPrefix jsr MLI .DA #MLIONLINE .DA LDR.MLIOL.P bcs .9 lda pbuf+1 get volume name length. - and #$0F strip devnum + and #$0F strip SDDDxxxx beq .9 inc add 1 for leading '/' @@ -299,42 +315,16 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals .DA LDR.MLISETP.P bcs .9 - .DO READCAT=1 - stz dst - lda /dbuf - ldy #$02 read directory into buffer - ldx #0 + jsr CROUT -.1 sta dst+1 - sta LDR.MLIRB.P+3 Data buf HI - sty LDR.MLIRB.P+4 Blk Num LO - stx LDR.MLIRB.P+5 Blk Num HI - jsr MLI - .DA #MLIREADBLOCK - .DA LDR.MLIRB.P - bcs .9 - - ldy #$03 get next block# from link - lda (dst),y - tax - dey - ora (dst),y 00 00 -> Last Block - beq .8 - - lda (dst),y - tay - lda dst+1 - inc - inc add $200 to buffer pointer - cmp /dbuf+$800 until it points past end of buffer. - bcc .1 if ok, read next block. - .FIN - -.8 jsr CROUT + ldx #PAKME.ILDR-PAKME.Table + ldy #ILDR.START + lda /ILDR.START + jsr X.Unpak.XatYA jmp ILDR.START -.9 ldx #LDR.MSG.ROOTERR +.9 ldx #LDR.MSG.PFXERR jsr LDR.PrintX bra * *-------------------------------------- @@ -576,16 +566,13 @@ LDR.ClkDevXCLK bit RROMBNK2 lda $DFFF cmp #$CD - bne .9 - - lda $D8F0 - bit $F851 - cmp #$AD beq .1 -.9 rts +.9 bit $F851 + rts -.1 lda #'X' +.1 bit $F851 + lda #'X' ldx PAKME.XCLK ldy PAKME.XCLK+1 *-------------------------------------- @@ -624,14 +611,38 @@ LDR.SetupRAM lda DEVCNT lda /$FF00 jsr X.Unpak.XatYA + lda RAMX.PAK + bne .1 + sta SETWRITEAUX ldx #PAKME.RAMX-PAKME.Table ldy #$0200 lda /$0200 jsr X.Unpak.XatYA + bra .7 + +.1 ldx #PAKME.RAMX-PAKME.Table + ldy #$0800 + lda /$0800 + jsr X.Unpak.XatYA + + sta SETWRITEAUX - sta CLRWRITEAUX + ldx #$FE + +.2 lda $900,x + sta $300,x + dex + txa + bne .2 + +.3 lda $800,x + sta $200,x + inx + bne .3 + +.7 sta CLRWRITEAUX lda #RAMDRV put driver address into sta DEVPTRS3D2 @@ -1304,13 +1315,6 @@ LDR.MLIOL.P .DA #2 LDR.MLISETP.P .DA #1 .DA pbuf - .DO READCAT=1 -LDR.MLIRB.P .DA #3 - .DA #0 unit number - .DA 0 2 byte data buffer - .DA 0 2 byte block number - .FIN - LDR.SPStatus.P .DA #$03 # of parms LDR.SPStatus.U .DA #$00 unit number (code for smartport stat) .DA LDR.SPStatusBuf diff --git a/ProDOS.FX/ProDOS.S.RAM.txt b/ProDOS.FX/ProDOS.S.RAM.txt index eddbea02..c7d3357b 100644 --- a/ProDOS.FX/ProDOS.S.RAM.txt +++ b/ProDOS.FX/ProDOS.S.RAM.txt @@ -3,24 +3,32 @@ NEW RAM.START RAMDRV cld no decimal. ldx #$0B save 13 bytes of parms + .1 lda A1L,x sta a1l1,x dex bpl .1 + ldx #$01 + .2 lda passit,x save xfer vectors sta sp1,x dex bpl .2 + lda A4L get command. beq stat 0 = status + cmp #$04 check for command too high. bcs ioerr if it is, i/o error + eor #$03 sta A4L 0=format, 2=read, 1=write beq format + ldy bloknml+1 check for large block number. bne ioerr too big. + lda bloknml block # bmi ioerr largest block number is $7F @@ -31,25 +39,33 @@ RAMDRV cld no decimal. format lda #RAMXDRV card entry point sta passit lda /RAMXDRV + gocard sta passit+1 also used by 'mainwrt' sec direction ram -> card clv start with original zero page jmp xfer transfer control + ioerr lda #$27 bne H2D41 + lda #$2B write protect error. H2D41 sec flags error bcs H2D47 + noerr .EQ * stat lda #$00 clc + H2D47 php save status pha and error code. + ldx #$0B restore 13 byes of parms + H2D4B lda a1l1,x sta A1L,x dex bpl H2D4B + lda sp1 restore xfer parms. bit $6060 addr $FF58 must = rts ($60) as in ROM sta passit @@ -58,23 +74,30 @@ H2D4B lda a1l1,x pla restore error code plp and status. rts + mainwrt sta SETWRITEAUX write to alt 48K ldy #$00 + H2D6A lda (A1L),y pointers set in card by 'setptr' sta (A4L),y lda (A2L),y sta (A3L),y dey bne H2D6A + sta CLRWRITEAUX write to main 48K. lda #donewrt done writing card sta passit lda /donewrt jmp gocard -sp1 .HS 0000 -a1l1 .BS 13 13 bytes of storage *-------------------------------------- RAM.LEN .EQ *-RAM.START + + .DUMMY +sp1 .HS 0000 +a1l1 .BS 13 13 bytes of storage + .ED +*-------------------------------------- MAN SAVE usr/src/prodos.fx/prodos.s.ram LOAD usr/src/prodos.fx/prodos.s diff --git a/ProDOS.FX/ProDOS.S.RAMX.txt b/ProDOS.FX/ProDOS.S.RAMX.txt index d9ab032d..5377e924 100644 --- a/ProDOS.FX/ProDOS.S.RAMX.txt +++ b/ProDOS.FX/ProDOS.S.RAMX.txt @@ -338,7 +338,7 @@ R01 .HS 00 page requested BITMAP .HS 00FFFFFF blocks 0-7 used .HS FFFFFFFF .HS FFFFFFFF - .HS FFFFFFFE + .HS FFFFFFFE block 127 used (IRQV) VDIR .HS F3 storage type = F, name length = 3 .AS "RAM" access .DA #$C3 destroy, rename, read enabled @@ -346,7 +346,7 @@ access .DA #$C3 destroy, rename, read enabled .HS 0D .HS 0000 .HS 0300 block 3 - .HS 7F 128 blocks + .DA #128 128 blocks exitcard lda RRAMWRAMBNK1 restore language card lda RRAMWRAMBNK1 diff --git a/ProDOS.FX/ProDOS.S.SEL1.txt b/ProDOS.FX/ProDOS.S.SEL1.txt index 2e8a16b3..9b89992f 100644 --- a/ProDOS.FX/ProDOS.S.SEL1.txt +++ b/ProDOS.FX/ProDOS.S.SEL1.txt @@ -1,58 +1,61 @@ NEW AUTO 3,1 +*-------------------------------------- * object code = sel_1 * Bird's Better Bye at org = dispadr *-------------------------------------- -SEL1.START -birdbye cld - lda RROMBNK2 read ROM +SEL1.START cld + bit RROMBNK2 read ROM + stz softev lda #$10 set reset vector to 'dispadr' sta softev+1 jsr setpwrc create power-up byte + lda #$A0 jsr $C300 initialize 80 column text card - ldx #$17 * set up memory bitmap in global page -L5D16 stz MEMTABL,x P8 memory bitmap - dex - bpl L5D16 - inc MEMTABL+$17 protect global page - lda #$CF protect zero page, stack and page 1 - sta MEMTABL + ldx #0 + jsr GP.TOOLBOX reset MEMTABL + lda #$02 sta smparms init set mark parms pcount. - +*-------------------------------------- * drive selector - +*-------------------------------------- ldx DEVCNT get device count and - stx lstpntr store in zero page. - lda devnum get last slot/drive - bne volname + +.1 lda DEVLST,x + and #$F0 + cmp DEVNUM + beq SEL1.VolName + + dex + bra .1 + +SEL1.NextVol ldx lstpntr get device list pointer. + bne .1 -ds2 ldx lstpntr get device list pointer. - lda DEVLST,x get unit number from list. - cpx #$01 make sure it's real. - bcs L5D3F if so, change list pointer. ldx DEVCNT get device count. inx -L5D3F dex decrement list pointer and restore. - stx lstpntr + +.1 dex + lda DEVLST,x get unit number from list. -* get and store volume name - -volname sta ol_unit store unit number for online. +SEL1.VolName stx lstpntr + sta ol_unit store unit number for online. jsr MLI .DA #MLIONLINE .DA ol_parms - bcs ds2 error check. + bcs SEL1.NextVol error check. stz dlevel haven't read root directory yet. lda pbuf+1 load description byte. and #$0F mask for name length. - beq ds2 if 0, then try next unit. + beq SEL1.NextVol if 0, then try next unit. + adc #$02 add 2 to length. tax name length in x. @@ -64,13 +67,14 @@ vnam1 stx pbuf save the name length * open and read directory - jsr MLI + jsr MLI .DA #MLIOPEN .DA op_parms bcc L5D7F good open. lda dlevel trying to open root directory ? - beq ds2 yes, just move to next volume. + beq SEL1.NextVol yes, just move to next volume. + jsr bell1 no, generate bell tone jsr popdir and stay at same level. stx pbuf @@ -82,9 +86,9 @@ L5D7F inc dlevel sta rd_refn store in read sta sm_refn and setmark parm lists. lda #$2B set read parm list for - sta dhdr_len directory header length. - stz dhdr_len+1 - jsr doread read directory + sta rd_reqlen directory header length. + stz rd_reqlen+1 + jsr SEL1.ReadEntry read directory bcs L5DB3 ldx #$03 @@ -94,7 +98,7 @@ L5D9A lda sysentry+$23,x copy directory info dex bpl L5D9A - sta dhdr_len put entry length in read parm list. + sta rd_reqlen put entry length in read parm list. lda #$01 set block file counter to 1. sta blkfl stz fpos_mid zero out msb's of file position @@ -102,6 +106,7 @@ L5D9A lda sysentry+$23,x copy directory info lda filecnt any files in directory ? ora filecnt+1 bne L5DB5 if so, continue + L5DB3 bra L5E29 else go close directory file. L5DB5 bit filecnt+1 check msb of file count. @@ -114,6 +119,7 @@ L5DB9 lda fpos_mid get mid byte of setmark file position. lda #$00 cpy entblk have we read all entries in this block ? bcc L5DCE if not, continue. + tay if so, zero y-reg and sty blkfl reset block counter / flag inc fpos_mid @@ -122,6 +128,7 @@ L5DB9 lda fpos_mid get mid byte of setmark file position. * if transfer to second sector, handle it. L5DCC inc fpos_mid + L5DCE dey decrement file block counter clc bmi L5DD8 @@ -133,33 +140,38 @@ L5DCE dey decrement file block counter L5DD8 adc #$04 add 4 and put in sta fpos_lo low byte of setmark. jsr MLI call mli - .DA #MLISETMARK - .DA #smparms parameters address = $0060 + .DA #MLISETMARK + .DA #smparms parameters address = $0060 .HS 00 bcs L5DB3 error - jsr doread + jsr SEL1.ReadEntry bcs L5DB3 error. inc blkfl increase count of files read. lda sysentry file type/length. and #$F0 mask off high nibble. beq L5DB9 deleted file, try next one. + dec filecnt decrement low file count. bne L5DF8 + dec filecnt+1 and high if necessary. L5DF8 ror sysentry+$1E check access bit. bcc L5DB5 if no read, try next file. + lda sysentry+$10 get file type. cmp #$0F directory file ? beq L5E08 then continue. + cmp #$FF system file ? bne L5DB5 no, read next file. L5E08 ldx filecount get valid files read. cpx #$80 if greater than size of filename buffer bcs L5E29 then close directory + sta filetyps,x else store filetype in zero page jsr namecalc and go set up storage area. ldy #$0F @@ -175,7 +187,7 @@ L5E15 lda sysentry,y get byte of filename inc filecount increment valid file counter bne L5DB5 get next file (branch always) -L5E26 jmp ds2 error. try next unit. +L5E26 jmp SEL1.NextVol error. try next unit. L5E29 jsr MLI close directory file .DA #MLICLOSE @@ -195,6 +207,7 @@ L5E29 jsr MLI close directory file L5E48 lda pbuf+1,x beq showfiles + jsr output inx bne L5E48 @@ -203,9 +216,12 @@ showfiles stz valcnt stz topname init top filename index. lda filecount # of valid files. beq keyloop if no files. + cmp #$15 more than what will fit on screen ? bcc L5E61 no. + lda #$14 limit to 20 files on the screen. + L5E61 sta gp_cnt lda #$02 set window dimensions sta wndtop @@ -213,50 +229,66 @@ L5E61 sta gp_cnt lda #$16 sta wndwdth sta wndbot + L5E6F jsr nameprnt output filename to screen inc valcnt dec gp_cnt file counter. bne L5E6F continue printing names. + stz valcnt beq L5EAA if last file, it needs to be inverse. + uparrow jsr nameprnt print old name in normal. ldx valcnt get old name number. beq L5EAA if already at the top name + dec valcnt else fix index. lda cv current cursor line. cmp #$02 at top line of window ? bne L5EAA no, move up normally. + dec topname fix offset index lda #$16 else sroll windows down a line. bne L5EA7 branch always. + dnarrow jsr nameprnt print old name in normal. ldx valcnt get old name number. inx add one. cpx filecount bcs L5EAA if already at last filename + stx valcnt else update index. lda cv current cursor line. cmp #$15 at bottom line of window ? bne L5EAA no, move cursor normally. + inc topname update offset index lda #$17 else scroll up a line. + L5EA7 jsr cout L5EAA jsr setinv set inverse text mode. jsr nameprnt output last filename. + keyloop lda kbd get keyboard input. bpl keyloop loop until key pressed. + sta KBDSTROBE clear strobe. jsr setnorm set normal text mode. ldx filecount are any files displayed ? beq L5ECB no, don't accept arrow keys or return. + cmp #$8D return ? beq L5EF4 then run selected file. + cmp #$8A down ? beq dnarrow move down a name. + cmp #$8B up ? beq uparrow move up a name. + L5ECB cmp #$89 tab ? beq L5EED new volume. + cmp #$9B esc ? bne keyloop no, try again else pop up a directory. @@ -279,7 +311,7 @@ L5EDD dex ldx pbuf L5EEC rts -L5EED jmp ds2 set up new unit number. +L5EED jmp SEL1.NextVol set up new unit number. L5EF0 inx @@ -287,7 +319,7 @@ L5EF1 jmp vnam1 get new directory info. * run selected file -L5EF4 jsr MLI +L5EF4 jsr MLI .DA #MLISETPREFIX .DA pf_parms bcs L5EED error. @@ -321,10 +353,14 @@ L5F04 iny start at y = 1. lda op_refn move reference number sta rd_refn for read. - lda #$FF read the entire file. - sta dhdr_len - sta dhdr_len+1 - jsr doread read selected file. + +* lda #$FF read the entire file. +* sta rd_reqlen +* sta rd_reqlen+1 + + dec rd_reqlen+1 was $002B, now $FF2B + + jsr SEL1.Read read selected file. php save possible error. jsr MLI close file. ignore any error from close .DA #MLICLOSE @@ -337,11 +373,14 @@ L5F04 iny start at y = 1. * y = index to message teminated by 0. sethorz sta ch + msgout lda dsp2msg,y beq L5F57 + jsr cout iny bne msgout + L5F57 rts * name pointer calculator for name storage area @@ -361,6 +400,7 @@ namecalc stz fnstore+1 init high byte of 16-bit shift clc adc fnstore+1 sta fnstore+1 + ldy #$00 lda (fnstore),y file name length sta namelen @@ -379,6 +419,7 @@ nameprnt lda #$02 jsr TABV set vertical position. lda filetyps,x get filetype (x is unchanged by tabv). bmi L5F99 branch if system file. + stz ch80col adjust cursor position. lda invflg ave current inverse setting pha @@ -397,31 +438,39 @@ L5F9F iny y = 1 (first time). bcc L5F9F no. outsp lda #$A0 - bne L5FB1 branch always. + .HS 2C BIT ABS homecurs lda #$99 -output ora #$80 set high bit. -L5FB1 jmp cout output to screen. -doread jsr MLI mli read call +output ora #$80 set high bit. + jmp cout output to screen. + +SEL1.ReadEntry jsr SEL1.Read + bcs SEL1.Read.RTS + + ldy #sysentry + lda /sysentry + ldx #2 + jmp GP.TOOLBOX + +SEL1.Read jsr MLI mli read call .DA #MLIREAD .DA rd_parms - rts - +SEL1.Read.RTS rts +*-------------------------------------- * data area +*-------------------------------------- +dsp2msg .AS -"RETURN: Select | TAB: Chg Vol | ESC: Back" + .HS 00 -dsp2msg .AS -"RETURN: Select | TAB: Chg Vol | " - .AS -"ESC: Back" - .DA #$00 - -fldrmsg .DA #$0F inverse control code +fldrmsg .HS 0F inverse control code .HS 1B enable mousetext .AS -"XY" folder characters .HS 18 disable mousetext .HS 0E normal control code .HS 00 - -op_parms .DA #$03 3 parms +*-------------------------------------- +op_parms .DA #3 3 parms .DA pbuf pathname .DA op_buf file buffer op_refn .HS 00 reference number @@ -439,17 +488,20 @@ pf_parms .DA #01 one parm rd_parms .DA #04 4 parms rd_refn .HS 01 reference number .DA sysentry data buffer - +*-------------------------------------- + .LIST ON +SEL1.LEN .EQ *-SEL1.START + .LIST OFF +*-------------------------------------- * these last 2 parms (4 bytes) may extend past $300 length limit since * the request count is set prior to using the parm block and the transfer * count isn't used at all (except by prodos) +*-------------------------------------- .DUMMY - .BS 2 requested length +rd_reqlen .BS 2 requested length .BS 2 actual length -dhdr_len .BS 1 directory header length (actually uses 2 bytes) .ED *-------------------------------------- -SEL1.LEN .EQ *-SEL1.START MAN SAVE usr/src/prodos.fx/prodos.s.sel1 LOAD usr/src/prodos.fx/prodos.s diff --git a/ProDOS.FX/ProDOS.S.SEL2.txt b/ProDOS.FX/ProDOS.S.SEL2.txt index e4372231..3562ec25 100644 --- a/ProDOS.FX/ProDOS.S.SEL2.txt +++ b/ProDOS.FX/ProDOS.S.SEL2.txt @@ -437,6 +437,6 @@ button2 .DA #$0B *-------------------------------------- SEL2.LEN .EQ *-SEL2.START MAN -SAVE USR/SRC/PRODOS.FX/PRODOS.S.SEL2 -LOAD USR/SRC/PRODOS.FX/PRODOS.S +SAVE usr/src/prodos.fx/prodos.s.sel2 +LOAD usr/src/prodos.fx/prodos.s ASM diff --git a/ProDOS.FX/ProDOS.S.TCLK.txt b/ProDOS.FX/ProDOS.S.TCLK.txt index 96fe3709..d18fcd2a 100644 --- a/ProDOS.FX/ProDOS.S.TCLK.txt +++ b/ProDOS.FX/ProDOS.S.TCLK.txt @@ -113,6 +113,6 @@ yradj .DA #$12 Monday TCLK.LEN .EQ *-TCLK.START *-------------------------------------- MAN -SAVE USR/SRC/PRODOS.FX/PRODOS.S.TCLK -LOAD USR/SRC/PRODOS.FX/PRODOS.S +SAVE usr/src/prodos.fx/prodos.s.tclk +LOAD usr/src/prodos.fx/prodos.s ASM diff --git a/ProDOS.FX/ProDOS.S.XDOS.A.txt b/ProDOS.FX/ProDOS.S.XDOS.A.txt index f547f7d4..d117c19a 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.A.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.A.txt @@ -580,7 +580,7 @@ XDOS.Online jsr mvdbufr figure out how big buffer has to be. ldy #$01 lda (A3L),y if 0 then cbytes=$100 else $010 for one and #$F0 device. mask out unused nibble. - sta devnum last device used. + sta DEVNUM last device used. beq .1 branch if all devices. lda #$10 cbytes = $010 @@ -600,14 +600,14 @@ XDOS.Online jsr mvdbufr figure out how big buffer has to be. bne .3 sta namptr used as pointer to user buffer. - lda devnum get device # again. + lda DEVNUM get device # again. bne online1 branch if only 1 device to process. jsr mvdevnums get list of currently recognized dev's. .4 phx save index to last item on list lda loklst,x - sta devnum save desired device to look at. + sta DEVNUM save desired device to look at. jsr online1 log this volume and return it's name. lda namptr inc pointer for next device clc @@ -693,7 +693,7 @@ online1.OK lda VCBs,x get volume name count bpl .1 svdevn ldy namptr index to 1st byte of this entry. - lda devnum upper nibble = device# and + lda DEVNUM upper nibble = device# and ora (usrbuf),y lower nibble = name length. sta (usrbuf),y @@ -714,7 +714,7 @@ tstfnf cmp #MLI.E.FNOTFND 'file not found' is ok cmp #$0D bne ctyperr report type error if not directory. -tstdspc lda devnum make sure destination device +tstdspc lda DEVNUM make sure destination device jsr twrprot1 is not write protected. bcs H351D @@ -1010,7 +1010,7 @@ drevise1 lda bkbitflg (bit 5 = backup needed) tsb d_attr mark entry as backupable lda d_dev get device # of directory - sta devnum to be revised + sta DEVNUM to be revised lda d_entblk and address of directory block. ldx d_entblk+1 diff --git a/ProDOS.FX/ProDOS.S.XDOS.B.txt b/ProDOS.FX/ProDOS.S.XDOS.B.txt index 2a925128..4fb5c2d0 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.B.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.B.txt @@ -314,7 +314,7 @@ XDOS.FindVol jsr XDOS.FindVolInVCBOrDev dex bpl .1 - lda devnum setup device # for this directory + lda DEVNUM setup device # for this directory sta d_dev jsr movhed0 setup other header info from directory @@ -345,7 +345,7 @@ nxtpnam1 ldy namptr inc pathname pointer to next name tay then prefixed directory has been moved bne L395F to another device. branch if not. - lda devnum revise devnum for prefixed directory + lda DEVNUM revise DEVNUM for prefixed directory sta p_dev L395F lda pathbuf,y test for end of name. @@ -361,7 +361,7 @@ XDOS.FindVolInVCBOrDev tay set ptr to volume name L396F sty vnptr and save. - sta devnum zero out dev# until vcb located. + sta DEVNUM zero out dev# until vcb located. lda #VCB0 @@ -392,7 +392,7 @@ L398A cmp pathbuf,y is it the same as requested vol name? plx restore pointer to matching vcb. stx vcbptr save it for future reference. lda VCBs+VCB.DEV,x get it's device # - sta devnum and save it. + sta DEVNUM and save it. lda #$02 assume prefix is not used and ldx #$00 that root directory is to be used. @@ -436,7 +436,7 @@ L39CC ldx vcbptr check if current (matched) vcb is active L39D4 lda vnptr make path ptr same as volume ptr sta namptr jsr mvdevnums copy all device #'s to be examined. - lda devnum log current device 1st before searching + lda DEVNUM log current device 1st before searching bne L39F1 others. L39E2 ldx DEVCNT scan look list for devices we need @@ -461,7 +461,7 @@ L39F4 cmp loklst,x of prospective devices. bmi L39ED if dev was removed from devlst (/RAM). -L39FE sta devnum preserve device to be checked next. +L39FE sta DEVNUM preserve device to be checked next. stz loklst,x mark this one as tested. jsr XDOS.FindVCBForDevNum find vcb that claims this dev (if any). @@ -501,12 +501,12 @@ L3A2D lda DEVLST,x active device list. rts *-------------------------------------- XDOS.FindVCBForDevNum - lda #VCB0 look for vcb for devnum + lda #VCB0 look for vcb for DEVNUM ldy #$FF .1 tax new index to next vcb lda VCBs+VCB.DEV,x check all devnums - cmp devnum is this the vcb? + cmp DEVNUM is this the vcb? beq .7 lda VCBs,x is this a free vcb? @@ -623,7 +623,7 @@ L3ACE lda gbuf+4,y pla get length again sta VCBs,x and save. - lda devnum last device used. + lda DEVNUM last device used. sta VCBs+VCB.DEV,x save device # and ldy #0 diff --git a/ProDOS.FX/ProDOS.S.XDOS.C.txt b/ProDOS.FX/ProDOS.S.XDOS.C.txt index 58480ade..5b3662a1 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.C.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.C.txt @@ -219,10 +219,10 @@ wrtbmap lda #$02 write command. sta A4L - lda devnum save current dev # + lda DEVNUM save current dev # pha lda bmadev get bitmap's dev # - sta devnum + sta DEVNUM lda bmadadr and disk address sta bloknml lda bmadadr+1 @@ -233,7 +233,7 @@ wrtbmap lda #$02 write command. jsr XDOS.RWBlock plx keep A=error code if CS - stx devnum + stx DEVNUM L3DB6 rts *-------------------------------------- @@ -271,7 +271,7 @@ XDOS.RWBlock sta buf+1 buffer high. lda #$FF indicates reg call made to dev handler sta ioaccess - lda devnum transfer dev # for dispatcher to + lda DEVNUM transfer dev # for dispatcher to sta unitnum convert to unit #. jmp XDOS.DevCall call the driver. *-------------------------------------- @@ -293,7 +293,9 @@ XDOS.CheckAndUnpackGBuf rts XDOS.UnpackGBuf jsr XDOS.Pack.Init - + +XDOS.UnpackZPT .EQ * + .1 lda (zpt) and #$0F beq .6 @@ -801,7 +803,7 @@ fileio1 lda $00,x get memory address of buffer from lda #$FF also, set to indicate reg call made to sta ioaccess device handler. - lda devnum transfer device # for dispatcher + lda DEVNUM transfer device # for dispatcher sta unitnum to convert to unit #. stz p8error clear global error code. jmp XDOS.DevCall call the driver. diff --git a/ProDOS.FX/ProDOS.S.XDOS.E.txt b/ProDOS.FX/ProDOS.S.XDOS.E.txt index a9218d1f..51c25854 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.E.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.E.txt @@ -233,7 +233,7 @@ L47C1 pla XDOS.FCBDevIDSelect ldx fcbptr lda FCBs+FCB.DEVID,x - sta devnum + sta DEVNUM rts *-------------------------------------- XDOS.SetFCBSType diff --git a/ProDOS.FX/ProDOS.S.XDOS.F.txt b/ProDOS.FX/ProDOS.S.XDOS.F.txt index ddbcec59..7c479312 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.F.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.F.txt @@ -24,7 +24,7 @@ L4B39 lda d_attr make sure ok to destroy file. lda #MLI.E.LOCKED access error jsr GP.P8errv -L4B45 lda devnum last device used. +L4B45 lda DEVNUM last device used. jsr twrprot1 test for write protected hardware bcs L4B66 before going thru deallocation. @@ -789,6 +789,30 @@ XRW.DEBUG.PBYTEx .FIN *-------------------------------------- +XDOS.TOOLBOX jmp (.1,x) + +.1 .DA XDOS.TOOLBOX.MEMRESET + .DA XDOS.TOOLBOX.UnpackYA + +XDOS.TOOLBOX.MEMRESET + ldx #$17 + +.1 stz MEMTABL,x P8 memory bitmap + dex + bne .1 + + inc MEMTABL+$17 protect global page + lda #$CF protect zero page, stack and page 1 + sta MEMTABL + rts + +XDOS.TOOLBOX.UnpackYA + sty zpt + sta zpt+1 + + ldx #1 + jmp XDOS.UnpackZPT +*-------------------------------------- * data tables *-------------------------------------- XDOS.CmdNums .HS D3D4D5D6 table of valid mli command numbers. @@ -1009,6 +1033,6 @@ cortflag .EQ $FEFF cortland flag. 1 = Cortland system (must stay within *-------------------------------------- XDOS.LEN .EQ *-XDOS MAN -SAVE USR/SRC/PRODOS.FX/PRODOS.S.XDOS.F -LOAD USR/SRC/PRODOS.FX/PRODOS.S +SAVE usr/src/prodos.fx/prodos.s.xdos.f +LOAD usr/src/prodos.fx/prodos.s ASM diff --git a/ProDOS.FX/ProDOS.S.txt b/ProDOS.FX/ProDOS.S.txt index e64ca3fb..8566a368 100644 --- a/ProDOS.FX/ProDOS.S.txt +++ b/ProDOS.FX/ProDOS.S.txt @@ -5,7 +5,7 @@ NEW .OR $2000 .TF PRODOS,TSYS *-------------------------------------- -READCAT .EQ 0 Boot Block read Catalog at $C00 +READCAT .EQ 1 Boot Block read Catalog at $C00 ENHFILENAME .EQ 1 LOWERCASE .EQ 1 ACL .EQ 1 diff --git a/SBIN/INITD.S.txt b/SBIN/INITD.S.txt index 7726e505..0837c87d 100644 --- a/SBIN/INITD.S.txt +++ b/SBIN/INITD.S.txt @@ -5,7 +5,7 @@ NEW .OR $2000 .TF sbin/initd *-------------------------------------- -INITDDBG .EQ 0 +INITDDBG .EQ 1 *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i