diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index 8941f399..dec7141d 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -187,7 +187,7 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read .12 ldy #bSuppress lda (pData),y - bpl .8 + bpl .13 ldy #bPrintedBlankLine lda (pData),y @@ -197,7 +197,9 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read .11 lda #$ff sta (pData),y - bra .8 + bne .1 +.13 clc + rts .1 ldy #bPrintedBlankLine lda #0 @@ -212,7 +214,7 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read bcs .6 cmp #13 Allow printing of CR even if not bPrintAll - beq .6 + beq .4 ldy #bPrintAll lda (pData),y @@ -242,6 +244,11 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read bra .7 +.4 lda #13 + >SYSCALL PutCA + bcs .9 + lda #10 + .6 >SYSCALL PutCA bcs .9 diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index 05a09409..f17d2111 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -8,12 +8,16 @@ AUTO 6 .OR $2000 .TF /A2OSX.BUILD/BIN/CHTYP *-------------------------------------- - .INB INC/MACROS.I - .INB INC/A2OSX.I + .INB /A2OSX.BUILD/INC/MACROS.I + .INB /A2OSX.BUILD/INC/A2OSX.I +*-------------------------------------- +X.COPY.TO.DEST .EQ 0 +X.DELETE.SOURCE .EQ 0 *-------------------------------------- ZPPtr1 .EQ ZPBIN ZPPtr2 .EQ ZPBIN+2 -ZPPtr3 .EQ ZPBIN+4 +ZPFileName .EQ ZPBIN+4 +ZPFileStat .EQ ZPBIN+6 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -36,214 +40,143 @@ CS.START cld L.MSG.USAGE .DA MSG.USAGE L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR -L.FullPath .DA FullPath +L.STAT .DA STAT L.PRODOS.FT.TXT .DA PRODOS.FT.TXT-1 .DA 0 *-------------------------------------- -CS.INIT ldy #S.PS.hARGS - lda (pPs),y - beq .98 - - >PUSHA - >PUSHBI $20 Push SEP=' ' - >PUSHBI 0 Push 0 for getting CMD & ARGS - >SYSCALL PStrGetTkn - bcs .99 - - ldy #hArg1 - sta (pData),y - txa - beq .98 - ldy #hArg2 - sta (pData),y +CS.INIT >SYSCALL GetArgC + sta ArgCount - jsr GetHexFileTypeA - bcs .99 - - ldy #hArg1 - lda (pData),y - >SYSCALL GetMemPtrA - >STYA ZPPtr1 - lda (ZPPtr1) +.1 dec ArgCount beq .98 + + lda ArgCount + >SYSCALL GetArgA + >STYA ZPPtr1 + + lda (ZPPtr1) + cmp #2 + bne .4 + ldy #1 lda (ZPPtr1),y - cmp #'/' - bne .10 + cmp #'-' + bne .4 - ldy #S.PS.hARGS - lda (pPs),y - bra .3 - -.10 ldy #S.PS.hARGS - lda (pPs),y - >PUSHA - ldy #S.PS.hPREFIX - lda (pPs),y - >PUSHA - >SYSCALL PStrCat - sta hDIRPATH - -.3 >SYSCALL GetMemPtrA - >SYSCALL ListDirInitYA - bcs .99 - ldy #hS.LISTDIR - sta (pData),y - - lda (pPs) - ora #S.PS.F.EVENT Now accept events - sta (pPs) - clc - rts - -.98 >LDYA L.MSG.USAGE - >SYSCALL PStrOutYA -.99 lda #SYSMGR.ERRSYN - sec - rts -*-------------------------------------- -CS.RUN ldy #bCANCEL - lda (pData),y - beq .10 + iny + lda (ZPPtr1),y - sec - rts + ldx OptionList -.10 ldy #bSTOP - lda (pData),y - beq .1 - clc -.99 rts - -.1 ldy #hS.LISTDIR - lda (pData),y - >SYSCALL ListDirNextA - bcs .99 - - pha - >SYSCALL GetMemPtrA - >STYA ZPPtr1 - lda (ZPPtr1) - pha - - and #$0F - sta (ZPPtr1) Adjust Filename len - - pla - and #$F0 - bne .8 skip VOLHeader ($f),DIRHeader ($e),DIR ($d) - - ldy #hS.LISTDIR - lda (pData),y - >SYSCALL GetMemPtrA - >STYA ZPPtr2 - - ldy #S.LISTDIR.hPATH - lda (ZPPtr2),y - >SYSCALL GetMemPtrA - >STYA ZPPtr2 - - lda (ZPPtr2) - tax - tay - -.2 lda (ZPPtr2),y - sta FullPath,y - dey +.2 cmp OptionList,x + beq .3 + dex bne .2 - ldy #0 -.3 inx - iny - lda (ZPPtr1),y - sta FullPath,x - tya - cmp (ZPPtr1) - bne .3 + bra .98 - stx FullPath +.3 ldy OptionVars-1,x + lda #$80 + sta (pData),y + bra .1 - >LDYA L.FullPath - >SYSCALL PStrOutYA +.4 >LDYA ZPPtr1 + jsr InitSrcDirYA + bcs .9 - >LDYA L.FullPath - >SYSCALL MLIGetFileInfoYA - bcs .5 - >STYA ZPPtr3 + bra .1 scan for any other args - - >LDYA L.MSG.OK - >SYSCALL PStrOutYA - bra .8 - -.5 >PUSHA - >LDYA L.MSG.ERR - >SYSCALL PStrOutYA - -.8 pla - >SYSCALL FreeMemA - clc - rts +.98 >LDYA L.MSG.USAGE + >SYSCALL PPrintFYA +.99 lda #SYSMGR.ERRSYN + sec +.9 rts *-------------------------------------- -CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? - lda (pEvent),y - ldy #S.PS.hStdIn - cmp (pPs),y - bne .9 - - lda (pEvent) - and #S.EVT.F.KEY is it a KEY event? - beq .9 - - ldy #S.EVT.DATAHI is it an O or SAPPLE key ? - lda (pEvent),y - bne .9 - - ldy #S.EVT.DATALO - lda (pEvent),y +CS.RUN >SYSCALL GetC + bcs .10 no char + cmp #$03 Ctrl-C - bne .1 + beq .92 Abort.... + + cmp #$13 Ctrl-S + bne .10 - lda #$FF - ldy #bCANCEL - sta (pData),y - bra .8 - -.1 cmp #$13 Ctrl-S - bne .8 - - ldy #bSTOP + ldy #bPause lda (pData),y - eor #$FF + eor #$ff sta (pData),y + bne .80 + +.10 ldy #bPause + lda (pData),y + bne .80 Pause... + + jsr GetEntry + bcs .9 + + ldy #hFilter + lda (pData),y + beq .4 No filter.... + + >SYSCALL GetMemPtrA + >PUSHYA + >PUSHW ZPFileName + >SYSCALL PStrMatch + bcs .8 no match, skip.... + +.4 ldy #S.STAT.P.DRIVE + lda (ZPFileStat),y ProDOS Device ? + bne .5 + + ldy #S.STAT.P.TYPE + lda (ZPFileStat),y + cmp #$0F Directory ? + bne .6 -.8 clc + jmp CS.RUN.DIR +.5 jmp CS.RUN.DEV +.6 jmp CS.RUN.FILE + +.9 jsr LeaveSubDir + bcs .92 + + jsr BasePath.. + +.8 jsr GetNextEntry +.80 clc rts -.9 sec +.92 lda #0 + sec +.99 rts +*-------------------------------------- +CS.RUN.DEV +.8 jsr GetNextEntry + clc +.9 rts +*-------------------------------------- +CS.RUN.DIR +.8 jsr GetNextEntry + clc +.9 rts +*-------------------------------------- +CS.RUN.FILE +.8 jsr GetNextEntry + clc +.9 rts +*-------------------------------------- +CS.DOEVENT sec rts *-------------------------------------- -CS.QUIT ldy #hS.LISTDIR - lda (pData),y - beq .1 - >SYSCALL ListDirCloseA +CS.QUIT jsr LeaveSubDir + bcc CS.QUIT -.1 ldy #hDIRPATH - lda (pData),y - beq .2 - >SYSCALL FreeMemA - -.2 ldy #hArg2 + ldy #hFilter lda (pData),y beq .3 >SYSCALL FreeMemA -.3 ldy #hArg1 - lda (pData),y - beq .8 - >SYSCALL FreeMemA - -.8 clc +.3 clc rts *-------------------------------------- GetHexFileTypeA >SYSCALL GetMemPtrA @@ -254,7 +187,7 @@ GetHexFileTypeA >SYSCALL GetMemPtrA ldy #1 lda (ZPPtr1),y - cmp #'$' + cmp #'%' bne .1 iny @@ -317,12 +250,19 @@ GetHexFileTypeA >SYSCALL GetMemPtrA .9 sec rts +*-------------------------------------- + .INB /A2OSX.SRC/BIN/X.FILEENUM.S *-------------------------------------- CS.END -MSG.USAGE >PSTR "Usage : CHTYP [File *,? wildcards allowed] [File type : $xx or SYS,TXT....]\n" +*-------------------------------------- +OptionList >PSTR "R" +OptionVars .DA #bRecurse +*-------------------------------------- +MSG.USAGE >PSTR "Usage : CHTYP <-R> [File *,? wildcards allowed] [File type : %HH, SYS,TXT....]\n" MSG.OK >PSTR " [Ok]\n" MSG.ERR >PSTR " [%h]\n" -FullPath .BS 64 +STAT .BS S.STAT +ArgCount .BS 1 Tmp .BS 1 *-------------------------------------- PRODOS.FT.COUNT .EQ 7 @@ -338,12 +278,14 @@ PRODOS.FT.TXT .AS "TXT" .DUMMY .OR 0 DS.START -hDIRPATH .BS 1 -hS.LISTDIR .BS 1 -hArg1 .BS 1 -hArg2 .BS 1 -bSTOP .BS 1 -bCANCEL .BS 1 +Index .BS 1 +hDIRs .BS X.MAX.RECURSE +hDIRENTs .BS X.MAX.RECURSE +oDIRENTs .BS X.MAX.RECURSE*2 +hSrcBasePath .BS 1 +hFilter .BS 1 +bPause .BS 1 +bRecurse .BS 1 HexFileType .BS 1 DS.END .ED diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 91398a9a..9d214774 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -126,11 +126,11 @@ CS.RUN >SYSCALL GetC lda (pData),y eor #$ff sta (pData),y - bne .8 + bne .80 .10 ldy #bPause lda (pData),y - bne .8 Pause... + bne .80 Pause... jsr GetEntry bcs .9 @@ -171,7 +171,7 @@ CS.RUN >SYSCALL GetC jsr BasePath.. .8 jsr GetNextEntry - clc +.80 clc rts .92 lda #0 diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index 7c896f5c..5860d841 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -447,12 +447,11 @@ CS.RUN.CopyStart >PUSHBI SYS.FOpen.R ldy #hSrcBasePath jsr CS.RUN.GetFilePath - + >PUSHWI UsrBuf256 - >SYSCALL FOpen bcs .99 - + ldy #hSrcFile sta (pData),y @@ -467,7 +466,6 @@ CS.RUN.CopyStart jsr CS.RUN.GetFilePath >PUSHWI UsrBuf256 - >SYSCALL FOpen bcs .9 @@ -523,7 +521,7 @@ CS.RUN.Copy stz .90+1 lda #'.' >SYSCALL PutCA rts - + .9 ldy #CopyRC sta (pData),y @@ -628,10 +626,12 @@ CS.QUIT jsr LeaveSubDir .2 ldy #hFilter lda (pData),y beq .8 - >SYSCALL FreeMemA +* >SYSCALL FreeMemA .8 clc rts *-------------------------------------- MAN SAVE /A2OSX.SRC/BIN/X.CPMVRM.S +LOAD /A2OSX.SRC/BIN/CP.S +ASM diff --git a/BIN/X.FILEENUM.S.txt b/BIN/X.FILEENUM.S.txt index f15e717b..6cbbd490 100644 --- a/BIN/X.FILEENUM.S.txt +++ b/BIN/X.FILEENUM.S.txt @@ -270,8 +270,8 @@ GetEntry ldy #index lda (ZPFileName) Empty !!! bne .8 - txa - >SYSCALL FreeMemA +* txa +* >SYSCALL FreeMemA sec rts diff --git a/Floppies/A2OSX.BUILD.po b/Floppies/A2OSX.BUILD.po index 36f37c95..49bff8bb 100644 Binary files a/Floppies/A2OSX.BUILD.po and b/Floppies/A2OSX.BUILD.po differ diff --git a/Floppies/A2OSX.SRC.po b/Floppies/A2OSX.SRC.po index 9855962c..d6bc8b04 100644 Binary files a/Floppies/A2OSX.SRC.po and b/Floppies/A2OSX.SRC.po differ diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index e1052cb0..a54692a9 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -50,8 +50,6 @@ A2osX.SaveSX .EQ $101 Aux * Aux $200 -> 3FD : /RAM Driver * Aux $3FE -> 3FF : IRQ Vector *-------------------------------------- -UsrBuf256 .EQ $0200 Main -*-------------------------------------- *D.STACK.BASE .EQ $0300 $03EF... D.STACK.TOP .EQ $03F0 ...Down to $0300 *-------------------------------------- @@ -60,9 +58,9 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300 * Main/Aux $400 -> $7FF : Console Screen * Main/Aux $800 -> $BFF : System Screen *-------------------------------------- -KrnBuf256 .EQ $0C00 Main +UsrBuf256 .EQ $0C00 Main *-------------------------------------- -* .EQ $0D00 +KrnBuf256 .EQ $0D00 Main *-------------------------------------- K.MLI.PARAMS .EQ $0E00 Main, 18 bytes min for GetFileInfo K.MLI.PATH .EQ K.MLI.PARAMS+18 diff --git a/SYS/KERNEL.S.FILE.txt b/SYS/KERNEL.S.FILE.txt index ce3a3ebf..883981b3 100644 --- a/SYS/KERNEL.S.FILE.txt +++ b/SYS/KERNEL.S.FILE.txt @@ -46,6 +46,7 @@ K.FOpen jsr PFT.CheckPathSTK sta K.MLI.PARAMS+7 ldx #3 + .1 lda DATELO,x sta K.MLI.PARAMS+8,x dex @@ -111,7 +112,7 @@ K.FOpen.10 >PUSHWI S.NODE.REG lda hFILE clc rts CC - + .98 pha save MLI error lda hFILE jsr K.FCloseA.1 @@ -134,18 +135,18 @@ K.FCloseA jsr PFT.CheckNodeA sta K.FCloseA.2+1 jsr K.GetMemPtrA >STYA ZPPtr1 - + K.FCloseA.1 ldy #S.NODE.REG.REF lda (ZPPtr1),y beq .1 sta K.MLI.PARAMS+1 >MLICALL MLICLOSE - + .1 ldy #S.NODE.REG.IOBUF lda (ZPPtr1),y beq K.FCloseA.2 jsr K.FreeMemA - + K.FCloseA.2 lda #$ff Self Modified jmp K.FreeMemA */-------------------------------------- @@ -239,28 +240,28 @@ K.FSeek jsr PFT.CheckNodeSTK >PULLB K.FSeek.FROM >PULLW K.FSeek.OFFSET >PULLW K.FSeek.OFFSET+2 - + lda K.FSeek.FROM - + * cmp #SYS.FSeek.SET =0 - + bne .1 stz K.MLI.PARAMS+2 stz K.MLI.PARAMS+3 stz K.MLI.PARAMS+4 bra .8 - + .1 cmp #SYS.FSeek.CUR bne .2 >MLICALL MLIGETMARK bcc .8 rts - + .2 cmp #SYS.FSeek.END bne .98 >MLICALL MLIGETEOF bcs .9 - + .8 lda K.MLI.PARAMS+2 adc K.FSeek.OFFSET sta K.MLI.PARAMS+2 @@ -271,7 +272,7 @@ K.FSeek jsr PFT.CheckNodeSTK adc K.FSeek.OFFSET+2 sta K.MLI.PARAMS+4 bcs .99 Offset out of range! - + >MLICALL MLISETMARK .9 rts @@ -314,10 +315,10 @@ K.FEOFA jsr PFT.CheckNodeA bcs .9 >STYA K.FEOFA.MARK stx K.FEOFA.MARK+2 - + >MLICALL MLIGETEOF bcs .9 - + sec lda K.MLI.PARAMS+2 sbc K.FEOFA.MARK @@ -371,7 +372,7 @@ FILE.SetIOBUF >PUSHWI 1024 get a ProDOS IOBUF >PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE jsr K.GetMem bcs .9 - + >STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call txa ldy #S.NODE.REG.IOBUF @@ -388,20 +389,20 @@ FILE.SetupPrt1A jsr K.GetMemPtrA FILE.MLI2STAT lda K.MLI.PARAMS+S.FILEINFO.ACCESS cmp #S.FILEINFO.ACCESS.FULL bne .1 - + lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO bra .2 - + .1 and #S.FILEINFO.ACCESS.R beq .2 lda #S.STAT.MODE.XO+S.STAT.MODE.RO - + .2 ldy #S.STAT.MODE sta (ZPPtr2),y ldx #2 ldy #S.STAT.P.TYPE+2 - + .3 lda K.MLI.PARAMS+S.FILEINFO.TYPE,x sta (ZPPtr2),y dey diff --git a/_MAKEBOOT.txt b/_MAKEBOOT.txt new file mode 100644 index 00000000..f453bbad --- /dev/null +++ b/_MAKEBOOT.txt @@ -0,0 +1,23 @@ +PR#3 +NEW +INC 1 +AUTO 6 +PREFIX /A2OSX.BUILD +echo \fBuilding A2OSX.BOOT Media... +format S6D1 A2OSX.BOOT +cp PRODOS /A2OSX.BOOT +cp -R SYS /A2OSX.BOOT +cp -R DRV /A2OSX.BOOT +cp -R LIB /A2OSX.BOOT +cp -R SBIN /A2OSX.BOOT + +md /A2OSX.BOOT/BIN +cp BIN/* /A2OSX.BOOT/BIN +md /A2OSX.BOOT/ETC +md /A2OSX.BOOT/SRV +md /A2OSX.BOOT/USR +cp A2OSX.SYSTEM /A2OSX.BOOT +cp A2OSX.STARTUP /A2OSX.BOOT + +MAN +TEXT MAKEBOOT