diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 47025e44..9b0822ac 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 5ccd2a43..8c8ba31a 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -15,10 +15,15 @@ X.DELETE.SOURCE .EQ 0 *-------------------------------------- MAX.COL .EQ 4 *-------------------------------------- -ZPPtr1 .EQ ZPBIN -ZPPtr2 .EQ ZPBIN+2 -ZPFileName .EQ ZPBIN+4 -ZPFileStat .EQ ZPBIN+6 + .DUMMY + .OR ZPBIN +ZS.START +ZPPtr1 .BS 2 +ZPPtr2 .BS 2 +ZPFileName .BS 2 +ZPFileStat .BS 2 +ZS.END + .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -26,11 +31,12 @@ CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 - .DA 0 - .DA CS.END-CS.START CS - .DA DS.END-DS.START DS - .DA #64 SS - .DA #8 ZP + .DA #0 S.PS.F.EVENT + .DA #0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data SegmentSize + .DA #64 Stack Size + .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table @@ -49,7 +55,10 @@ L.PRODOS.FT.TXT .DA PRODOS.FT.TXT L.FMT.DateTime .DA FMT.DateTime .DA 0 *-------------------------------------- -CS.INIT +CS.INIT clc + rts +*-------------------------------------- +CS.RUN .1 >INC.G ArgCount >SYSCALL ArgV bcs .6 @@ -79,38 +88,38 @@ CS.INIT .4 >LDYA ZPPtr1 jsr InitSrcDirYA - bcs .9 + bcc .1 scan for any other args - bra .1 scan for any other args +.9 rts .6 >LDA.G index do we have a Source dir ? - bne .8 + bne CS.RUN.LOOP -.7 ldy #S.PS.hPREFIX + ldy #S.PS.hPREFIX lda (pPs),y >SYSCALL GetMemPtr jsr InitSrcDirYA - bcs .9 - -.8 clc -.9 rts + bcs .9 *-------------------------------------- -CS.RUN >SYSCALL GetChar - bcs .10 no char +CS.RUN.LOOP >SLEEP + + >SYSCALL GetChar + bcs .2 no char cmp #$03 Ctrl-C - beq .92 Abort.... + bne .1 Abort.... + rts CS - cmp #$13 Ctrl-S - bne .10 +.1 cmp #$13 Ctrl-S + bne .2 >LDA.G bPause eor #$ff sta (pData),y - bne .80 + bne CS.RUN.LOOP -.10 >LDA.G bPause - bne .80 Pause... +.2 >LDA.G bPause + bne CS.RUN.LOOP jsr GetEntry bcs .9 @@ -143,10 +152,21 @@ CS.RUN >SYSCALL GetChar cmp #$0F Directory ? bne .6 - jmp CS.RUN.DIR -.5 jmp CS.RUN.DEV -.6 jmp CS.RUN.FILE + jsr CS.RUN.PRINT.DIR + bcs .99 + bra .8 +.5 jsr CS.RUN.PRINT.DEV + bcs .99 + bra .8 + +.6 jsr CS.RUN.PRINT.FILE + bcs .99 + +.8 jsr GetNextEntry + + bcc .92 + .9 ldy #bLong lda (pData),y bmi .91 @@ -155,20 +175,20 @@ CS.RUN >SYSCALL GetChar bcs .99 .91 jsr LeaveSubDir - bcs .92 + bcs .98 jsr BasePath.. + jsr GetNextEntry -.8 jsr GetNextEntry -.80 clc - rts +.92 jmp CS.RUN.LOOP -.92 lda #0 +.98 lda #0 sec .99 rts *-------------------------------------- -CS.RUN.DEV >LDA.G bLong - bpl CS.RUN.DIR +CS.RUN.PRINT.DEV + >LDA.G bLong + bpl CS.RUN.PRINT.DIR ldy #S.STAT.P.DEVBLOCKS+1 >PUSHB (ZPFileStat),y @@ -197,14 +217,13 @@ CS.RUN.DEV >LDA.G bLong >LDYA ZPFileName jsr EnterSubDirYA bcs .9 - jsr CS.RUN.ENTER.MSG - rts + jmp CS.RUN.ENTER.MSG -.8 jsr GetNextEntry - clc +.8 clc .9 rts *-------------------------------------- -CS.RUN.DIR >LDA.G bAllmostAll +CS.RUN.PRINT.DIR + >LDA.G bAllmostAll bmi .10 lda (ZPFileName) @@ -219,7 +238,7 @@ CS.RUN.DIR >LDA.G bAllmostAll >LDYA L.MSG.DIR >SYSCALL printf - bcs .9 + bcs .99 ldy #0 @@ -250,7 +269,8 @@ CS.RUN.DIR >LDA.G bAllmostAll >PUSHBI 8 >LDYA L.MSG.DIREXT >SYSCALL printf - bcs .9 + +.99 bcs .9 .5 ldy #bRecurse lda (pData),y @@ -266,14 +286,13 @@ CS.RUN.DIR >LDA.G bAllmostAll >LDYA ZPFileName jsr EnterSubDirYA bcs .9 - jsr CS.RUN.ENTER.MSG - rts + jmp CS.RUN.ENTER.MSG -.8 jsr GetNextEntry - clc +.8 clc .9 rts *-------------------------------------- -CS.RUN.FILE ldy #bLong +CS.RUN.PRINT.FILE + ldy #bLong lda (pData),y bmi .1 @@ -283,10 +302,7 @@ CS.RUN.FILE ldy #bLong >SYSCALL printf bcs .9 - jsr CS.RUN.UpdateColCnt - jsr GetNextEntry - clc - rts + jmp CS.RUN.UpdateColCnt .1 jsr CS.RUN.PUSHDATES @@ -319,10 +335,7 @@ CS.RUN.FILE ldy #bLong >PUSHBI 16 >LDYA L.MSG.FILEEXT >SYSCALL printf - bcs .9 - - jsr GetNextEntry - clc + .9 rts *-------------------------------------- CS.RUN.PUSHDATES @@ -379,10 +392,7 @@ CS.RUN.PUSHDATES rts *-------------------------------------- CS.RUN.UpdateColCnt - ldy #ColCount - lda (pData),y - inc - sta (pData),y + >INC.G ColCount cmp #MAX.COL bne CS.RUN.NewLine.8 @@ -390,8 +400,7 @@ CS.RUN.UpdateColCnt sta (pData),y bra CS.RUN.NewLine.1 *-------------------------------------- -CS.RUN.NewLine ldy #ColCount - lda (pData),y +CS.RUN.NewLine >LDA.G ColCount beq CS.RUN.NewLine.8 CS.RUN.NewLine.1 lda #13 diff --git a/BIN/X.FILEENUM.G.txt b/BIN/X.FILEENUM.G.txt index d40e799a..77449413 100644 --- a/BIN/X.FILEENUM.G.txt +++ b/BIN/X.FILEENUM.G.txt @@ -19,3 +19,5 @@ hDstBasePath .BS 1 *-------------------------------------- MAN SAVE USR/SRC/BIN/X.FILEENUM.G +LOAD USR/SRC/BIN/LS.S +ASM diff --git a/BIN/X.FILEENUM.S.txt b/BIN/X.FILEENUM.S.txt index 939d98c6..90b57232 100644 --- a/BIN/X.FILEENUM.S.txt +++ b/BIN/X.FILEENUM.S.txt @@ -312,12 +312,8 @@ InitDstDirYA >SYSCALL RealPath GetNextEntry jsr GetEntry bcs .9 - ldy #0 - -.10 iny - lda (ZPFileName),y Save actual file len for setting up - bne .10 - phy new offset later + jsr GetFilenameLen Save actual file len for setting up + pha new offset later lda ZPFileStat clc @@ -331,12 +327,8 @@ GetNextEntry jsr GetEntry lda (ZPFileName) are we at end of this buffer ? beq .1 yes, go read next one ... - sec - adc ZPFileName - sta ZPFileStat - lda ZPFileName+1 - adc #0 - sta ZPFileStat+1 + jsr GetFilenameLen + jsr SetFileStatPtr jsr GetoDIRENT @@ -368,27 +360,16 @@ GetNextEntry jsr GetEntry .1 pla jsr GetEntry.ReadDir bcs .9 - lda (ZPFileName) - beq .99 - ldy #0 - -.2 iny - lda (ZPFileName),y - bne .2 - tya - - sec - adc ZPFileName - sta ZPFileStat - lda ZPFileName+1 - adc #0 - sta ZPFileStat+1 + jsr GetFilenameLen + beq GetNextEntry.99 + + jsr SetFileStatPtr clc .9 rts -.99 sec +GetNextEntry.99 sec rts *-------------------------------------- GetEntry jsr GethDIRENT @@ -399,9 +380,7 @@ GetEntry jsr GethDIRENT lda (ZPFileName) Empty !!! bne .8 - -* txa -* >SYSCALL FreeMem + sec rts @@ -420,18 +399,8 @@ GetEntry jsr GethDIRENT adc (pData),y sta ZPFileName+1 ZPFileName=ZPFileName+oDIRENT -.8 ldy #0 - -.81 iny - lda (ZPFileName),y - bne .81 - tya - sec - adc ZPFileName - sta ZPFileStat - lda ZPFileName+1 - adc #0 - sta ZPFileStat+1 +.8 jsr GetFilenameLen + jsr SetFileStatPtr clc .9 rts @@ -589,7 +558,7 @@ BasePath..1 lda (pData),y >STYA ZPPtr1 save full path - ldy #0 + ldy #$ff .1 iny lda (ZPPtr1),y get len @@ -609,6 +578,24 @@ BasePath..1 lda (pData),y rts *-------------------------------------- +GetFilenameLen ldy #$ff + +.1 iny + lda (ZPFileName),y + bne .1 + + tya + + rts +*-------------------------------------- +SetFileStatPtr sec + adc ZPFileName + sta ZPFileStat + lda ZPFileName+1 + adc #0 + sta ZPFileStat+1 + rts +*-------------------------------------- GethDIR ldy #index lda (pData),y clc diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 62684ff8..48be6b21 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -91,15 +91,12 @@ IO.OPEN.9 sec IO.OPEN.RTS rts *-------------------------------------- IO.OPEN.REG >MLICALL MLIGETFILEINFO - bcc K.IO.OPEN.REG.E Already Exists + bcc IO.OPEN.REG.E Already Exists bit K.Open.FLAGS Create if not exists ? bpl IO.OPEN.9 No, return MLI error - lda #S.FI.A.FULL Yes, Create... - sta K.MLI.PARAMS+3 Access - - ldx #2 + ldx #2 Yes, Create... .1 lda K.Open.TYPE,x sta K.MLI.PARAMS+4,x File type,Aux type @@ -107,19 +104,11 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO bpl .1 lda #S.FI.ST.STD - sta K.MLI.PARAMS+7 - ldx #3 - -.2 lda DATELO,x - sta K.MLI.PARAMS+8,x - dex - bpl .2 - - >MLICALL MLICREATE + jsr IO.MLI.CREATE bcs IO.OPEN.RTS -K.IO.OPEN.REG.E >LDYAI S.FD.REG +IO.OPEN.REG.E >LDYAI S.FD.REG ldx #S.MEM.F.INIT0+S.MEM.F.FD jsr MEM.GetMem.YAX bcs IO.OPEN.RTS @@ -203,6 +192,21 @@ IO.OPEN.SSOCK IO.OPEN.PIPE clc rts +*-------------------------------------- +IO.MLI.CREATE sta K.MLI.PARAMS+7 Storage Type + + ldx #3 + +.1 lda DATELO,x + sta K.MLI.PARAMS+8,x Create Date/Time + dex + bpl .1 + + lda #S.FI.A.FULL + sta K.MLI.PARAMS+3 Access + + >MLICALL MLICREATE + rts */-------------------------------------- * # close * ## C diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 742e271d..8c8ac33e 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -148,25 +148,14 @@ K.Stat.DST .DA #S.STAT.P.TYPE * A = EC *\------------------------------------- K.MKDir jsr PFT.CheckPathYA - bcs K.MKDir.RTS + bcs K.Stat.9 - lda #S.FI.A.FULL - sta K.MLI.PARAMS+S.FI.A lda #S.FI.T.DIR - sta K.MLI.PARAMS+S.FI.T + sta K.MLI.PARAMS+4 + stz K.MLI.PARAMS+5 + stz K.MLI.PARAMS+6 lda #S.FI.ST.DIR - sta K.MLI.PARAMS+S.FI.ST - -* jsr DATETIME - - ldx #3 -.1 lda DATELO,x - sta K.MLI.PARAMS+8,x - dex - bpl .1 - - >MLICALL MLICREATE -K.MKDir.RTS rts + jmp IO.MLI.CREATE */-------------------------------------- * # MkNod * Create a special or ordinary file. @@ -189,14 +178,14 @@ K.MkNod >STYA ZPPtr1 pathname >PULLB K.S.STAT+S.STAT.DEV jsr K.GetMemPtr - bcs K.MKDir.RTS + bcs K.MKNOD.RTS >STYA pFD >LDYA ZPPtr1 ldx K.S.STAT+S.STAT.DEV jsr STAT.NewhNodeYAX - bcs K.MKDir.RTS + bcs K.MKNOD.RTS lda (pFD) #S.FD.T @@ -218,7 +207,7 @@ STAT.MKNOD.DSOCK STAT.MKNOD.SSOCK STAT.MKNOD.PIPE clc - rts +K.MKNOD.RTS rts */-------------------------------------- * # MKFIFO * return a hFILE to a new FIFO