diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index a65d17bb..126727fb 100644 Binary files a/A2OSX.BOOT.po and b/A2OSX.BOOT.po differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index d02ed288..f942c98e 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 33ceddee..a6748c1f 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -39,7 +39,8 @@ L.MSG.FILE .DA MSG.FILE L.PRODOS.FT.TXT .DA PRODOS.FT.TXT L.STAT .DA STAT L.TIME.Format .DA TIME.Format -L.TIME.Buffer .DA TIME.Buffer +L.TIME.Create .DA TIME.Create +L.TIME.Mod .DA TIME.Mod .DA 0 *-------------------------------------- CS.INIT >SYSCALL SYS.GetArgC @@ -218,36 +219,14 @@ CS.RUN.DEV ldy #S.STAT.PRODOS.DEVBLOCKS+1 >SYSCALL SYS.PrintFYA rts *-------------------------------------- -CS.RUN.DIR >PUSHW ZPPtr1 +CS.RUN.DIR jsr CS.RUN.PUSHDATES + + >PUSHW ZPPtr1 >LDYA L.MSG.DIR >SYSCALL SYS.PrintFYA rts *-------------------------------------- -CS.RUN.FILE >PUSHW L.TIME.Buffer - >PUSHW L.TIME.Format - lda ZPPtr2 - clc - adc #S.STAT.MTIME - tay - lda ZPPtr2+1 - adc #0 - >PUSHYA - >SYSCALL SYS.PStrFTime - - >PUSHW L.TIME.Buffer ModTime - - >PUSHW L.TIME.Buffer - >PUSHW L.TIME.Format - lda ZPPtr2 - clc - adc #S.STAT.CTIME - tay - lda ZPPtr2+1 - adc #0 - >PUSHYA - >SYSCALL SYS.PStrFTime - - >PUSHW L.TIME.Buffer Create Time +CS.RUN.FILE jsr CS.RUN.PUSHDATES lda ZPPtr2 clc @@ -274,6 +253,33 @@ CS.RUN.FILE >PUSHW L.TIME.Buffer >SYSCALL SYS.PrintFYA rts *-------------------------------------- +CS.RUN.PUSHDATES + >PUSHW L.TIME.Mod + >PUSHW L.TIME.Format + lda ZPPtr2 + clc + adc #S.STAT.MTIME + tay + lda ZPPtr2+1 + adc #0 + >PUSHYA + >SYSCALL SYS.PStrFTime + + >PUSHW L.TIME.Create + >PUSHW L.TIME.Format + lda ZPPtr2 + clc + adc #S.STAT.CTIME + tay + lda ZPPtr2+1 + adc #0 + >PUSHYA + >SYSCALL SYS.PStrFTime + + >PUSHW L.TIME.Mod ModTime + >PUSHW L.TIME.Create Create Time + rts +*-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y ldy #S.PS.hINDEV @@ -360,7 +366,7 @@ FileType2PSTR ldy #0 *-------------------------------------- CS.END MSG.DEV >CSTRING "%15S S%d,D%d Blocks Used:%5D,Total:%5D\n" -MSG.DIR >CSTRING "/%15S \n" +MSG.DIR >CSTRING "/%15S %S %S\n" MSG.FILE >CSTRING "%15S %S $%H %10u %S %S\n" *-------------------------------------- PRODOS.FT.HEX .HS 0406FAFCFDE2FF @@ -372,8 +378,9 @@ PRODOS.FT.TXT >PSTRING "TXT" >PSTRING "ATK" >PSTRING "SYS" PRODOS.FT.DFLT >PSTRING "$ " -TIME.Format >PSTRING "%y-%b-%d %H:%M" -TIME.Buffer .BS 16 +TIME.Format >PSTRING "%d-%b-%Y %H:%M" +TIME.Create .BS 20 +TIME.Mod .BS 20 HEXDIGIT .AS '0123456789ABCDEF' hFullPath .BS 1 STAT .BS S.STAT diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index d13f6cc3..ab3eb6cd 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -36,7 +36,6 @@ CS.START cld .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT -L.LIBSTR .DA LIBSTR L.MSG0 .DA MSG0 L.MSG1 .DA MSG1 L.MSG2 .DA MSG2 @@ -46,12 +45,7 @@ L.MSG5 .DA MSG5 L.MSG6 .DA MSG6 .DA 0 *-------------------------------------- -CS.INIT >LDYA L.LIBSTR - >SYSCALL SYS.LoadLibYA - bcs .9 - sta hLIBSTR - - ldy #MEM.COUNT Skip SLOT0 +CS.INIT ldy #MEM.COUNT Skip SLOT0 lda (pData),y inc sta (pData),y @@ -79,8 +73,8 @@ CS.RUN ldy #bCANCEL lda (pData),y bne .1 - >PUSHW L.MSG0 - >LIBCALL hLIBSTR,LIBSTR.PRINTF + >LDYA L.MSG0 + >SYSCALL SYS.PrintFYA .1 ldy #MEM.COUNT lda (pData),y @@ -129,20 +123,20 @@ CS.RUN ldy #bCANCEL >PUSHB (pData),y ldy #USED.COUNT >PUSHB (pData),y - >PUSHW L.MSG2 - >LIBCALL hLIBSTR,LIBSTR.PRINTF + >LDYA L.MSG2 + >SYSCALL SYS.PrintFYA >PUSHW MemMgr.HiMem - >PUSHW L.MSG3 - >LIBCALL hLIBSTR,LIBSTR.PRINTF + >LDYA L.MSG3 + >SYSCALL SYS.PrintFYA >PUSHW MemMgr.Free - >PUSHW L.MSG4 - >LIBCALL hLIBSTR,LIBSTR.PRINTF + >LDYA L.MSG4 + >SYSCALL SYS.PrintFYA >PUSHW MemMgr.LoMem - >PUSHW L.MSG5 - >LIBCALL hLIBSTR,LIBSTR.PRINTF + >LDYA L.MSG5 + >SYSCALL SYS.PrintFYA lda MemMgr.Free sec @@ -152,8 +146,8 @@ CS.RUN ldy #bCANCEL sbc MemMgr.LoMem+1 >PUSHYA - >PUSHW L.MSG6 - >LIBCALL hLIBSTR,LIBSTR.PRINTF + >LDYA L.MSG6 + >SYSCALL SYS.PrintFYA sec rts *-------------------------------------- @@ -188,8 +182,8 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN lda (pData),y >PUSHA - >PUSHW L.MSG1 - >LIBCALL hLIBSTR,LIBSTR.PRINTF + >LDYA L.MSG1 + >SYSCALL SYS.PrintFYA ldy #S.MEM.BIN lda (ZPPTR1),y @@ -300,13 +294,10 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? .9 sec rts *-------------------------------------- -CS.QUIT lda hLIBSTR - >SYSCALL SYS.UnloadLibA - clc +CS.QUIT clc rts *-------------------------------------- CS.END -LIBSTR >PSTRING "libstr.o" MSG0 >CSTRING "hMem Flags PID REF PTR LEN BINPATH/DATA\n" MSG1 >CSTRING " %03d %b %03d %03d $%H %05D " MSG2 >CSTRING "\nAllocated hMem:%d, Total:%d\n" @@ -314,7 +305,6 @@ MSG3 >CSTRING "High Memory: $%H\n" MSG4 >CSTRING "Free ULimit: $%H\n" MSG5 >CSTRING "Low Memory: $%H\n" MSG6 >CSTRING "\nFree Memory: %D Bytes.\n" -hLIBSTR .BS 1 *-------------------------------------- .DUMMY .OR 0 diff --git a/SYS/KERNEL.S.CIO.txt b/SYS/KERNEL.S.CIO.txt index 30b9e6d2..81fc50ea 100644 --- a/SYS/KERNEL.S.CIO.txt +++ b/SYS/KERNEL.S.CIO.txt @@ -451,13 +451,13 @@ DEC2HEX stz HEXBUF rol HEXBUF+1 rol HEXBUF+2 rol HEXBUF+3 - bcs .9 overflow!!! +* bcs .9 overflow!!! asl HEXBUF HEXBUF * 4 -> HEXBUF rol HEXBUF+1 rol HEXBUF+2 rol HEXBUF+3 - bcs .9 overflow!!! +* bcs .9 overflow!!! pla HEXBUF * 4 + HEXBUF -> HEXBUF adc HEXBUF @@ -471,13 +471,13 @@ DEC2HEX stz HEXBUF pla adc HEXBUF+3 sta HEXBUF+3 - bcs .99 overflow!!! +* bcs .99 overflow!!! asl HEXBUF HEXBUF * 10 -> HEXBUF rol HEXBUF+1 rol HEXBUF+2 rol HEXBUF+3 - bcs .99 overflow!!! +* bcs .99 overflow!!! inx lda ASCBUF,x @@ -496,11 +496,11 @@ DEC2HEX stz HEXBUF bne .1 rts -.9 pla discard saved HEXBUF - pla - pla - pla -.99 rts +*.9 pla discard saved HEXBUF +* pla +* pla +* pla +*.99 rts *-------------------------------------- *ACCESS .AS "drwxrwxrwx" HEXBUF .BS 4 32 bits max diff --git a/SYS/KERNEL.S.DIR.txt b/SYS/KERNEL.S.DIR.txt index df678e44..ddf5924f 100644 --- a/SYS/KERNEL.S.DIR.txt +++ b/SYS/KERNEL.S.DIR.txt @@ -22,7 +22,7 @@ K.OPENDIRYA jsr PFT.CheckPathYA bcs .9 >STYA ZPQuickPtr1 - stx K.OPENDIRYA.hDIR + stx K.READDIRA.hDir lda (ZPQuickPtr2) cmp #1 One char ? @@ -59,7 +59,7 @@ K.OPENDIRYA jsr PFT.CheckPathYA ldy #S.DIR.PRODOS.REF sta (ZPQuickPtr1),y -.8 lda K.OPENDIRYA.hDIR +.8 lda K.READDIRA.hDir clc rts @@ -69,24 +69,25 @@ K.OPENDIRYA jsr PFT.CheckPathYA sec .99 rts *-------------------------------------- -K.OPENDIRYA.hDIR .BS 1 -*-------------------------------------- * In : * A = hDIR * Out : * CC : X = hDIREND, Y,A = PTR to S.DIRENT * CS : A = EC, A = 0 : no more entry *-------------------------------------- +K.READDIRA.hDir .BS 1 K.READDIRA.hMem .BS 1 K.READDIRA.hDIRENT .BS 1 K.READDIRA.BufSize .BS 2 -K.READDIRA.EL .BS 1 -K.READDIRA.EBP .BS 1 -K.READDIRA.EC .BS 2 K.READDIRA.ECIB .BS 1 K.READDIRA.EC2Return .BS 1 +*--S.DIR Cache ------------------------ +K.READDIRA.EL .BS 1 +K.READDIRA.EPB .BS 1 +K.READDIRA.EC .BS 2 *-------------------------------------- K.READDIRA jsr PFT.CheckDirA + sta K.READDIRA.hDir jsr K.GetMemPtrA >STYA ZPQuickPtr1 @@ -227,9 +228,7 @@ K.READDIRA.ROOT stz MLICALL.PARAMS+1 All Volumes tax jmp K.GetMemPtrA *-------------------------------------- -K.READDIRA.DIR ldy #S.DIR.PRODOS.REF - lda (ZPQuickPtr1),y - sta MLICALL.PARAMS+1 +K.READDIRA.DIR sta MLICALL.PARAMS+1 A=#S.DIR.PRODOS.REF >PUSHWI 512 Get a 512 bytes buffer for reading dir... >PUSHBI 0 @@ -284,12 +283,12 @@ K.READDIRA.DIR ldy #S.DIR.PRODOS.REF bpl .3 .4 ldx K.READDIRA.EC - cpx K.READDIRA.EBP + cpx K.READDIRA.EPB lda K.READDIRA.EC+1 sbc #0 bcc .5 We have less than EPB to read - ldx K.READDIRA.EBP + ldx K.READDIRA.EPB .5 stx K.READDIRA.ECIB stz K.READDIRA.EC2Return @@ -341,15 +340,17 @@ K.READDIRA.DIR1 lda (ZPQuickPtr2) X = EntryCount In This Block .8 dex bne K.READDIRA.DIR1 -* pass #2 Fill Buffer... +* pass #2 Fill Buffer...(ZPQuickPtr1 & Ptr2 can now be trashed) K.READDIRA.DIR2 jsr K.READDIRA.GetBuf bcs .98 - ldy #S.DIR.PRODOS.EL Check if first run.... - lda (ZPQuickPtr1),y - bne .73 +* ldy #S.DIR.PRODOS.EL Check if first run.... +* lda (ZPQuickPtr1),y +* bne .73 - lda (ZPQuickPtr3) +.71 lda (ZPQuickPtr3) + beq .78 Empty slot, skip + and #$F0 cmp #$F0 Vol Header ? bne .72 @@ -362,20 +363,20 @@ K.READDIRA.DIR2 jsr K.READDIRA.GetBuf jsr K.READDIRA.ADD.. bra .78 -.73 lda K.READDIRA.EC +.73 lda K.READDIRA.EC Regular FILE/DIR sec sbc #1 sta K.READDIRA.EC - bcs .74 lda K.READDIRA.EC+1 sbc #0 sta K.READDIRA.EC+1 CC, we reached $ffff bcc .80 no more file to list... -.74 lda (ZPQuickPtr3) - beq .78 + jsr K.READDIRA.AddFNToBuf + jsr K.READDIRA.ClrStat + lda (ZPQuickPtr3) and #$F0 cmp #$D0 Directory ? bne .75 @@ -392,12 +393,16 @@ K.READDIRA.DIR2 jsr K.READDIRA.GetBuf inc ZPQuickPtr3+1 .79 dec K.READDIRA.ECIB - bne .72 + bne .71 .80 * lda #0 S.MEM.F.INIT0 already did this * sta (ZPQuickPtr4) Ending 0 + lda K.READDIRA.hDir Restore ZPQuickPtr1 trashed by STR API calls + jsr K.GetMemPtrA + >STYA ZPQuickPtr1 + ldx #3 ldy #S.DIR.PRODOS.EL+3 @@ -437,48 +442,35 @@ K.READDIRA.ADD. ldx #1 filename="1." K.READDIRA.ADD.. ldx #2 filename="2.." txa - jsr K.READDIRA.AddToBuf - lda #'.' filename="1." + jsr K.READDIRA.AddToBuf Add LEN + lda #'.' -.1 jsr K.READDIRA.AddToBuf +.1 jsr K.READDIRA.AddToBuf Add X dot(s) dex bne .1 jsr K.READDIRA.ClrStat - lda #$0F - sta KrnBuf256+S.STAT.PRODOS.TYPE - * ldy #$25 total_blocks * lda (ZPQuickPtr3),y * sta KrnBuf256+S.STAT.BLOCKS * iny * lda (ZPQuickPtr3),y * sta KrnBuf256+S.STAT.BLOCKS+1 - - bra K.READDIRA.ADDSTAT *-------------------------------------- -K.READDIRA.ADDD jsr K.READDIRA.AddFNToBuf - - jsr K.READDIRA.ClrStat - - lda #$0F +K.READDIRA.ADDD lda #$0F sta KrnBuf256+S.STAT.PRODOS.TYPE bra K.READDIRA.ADDSTAT *-------------------------------------- -K.READDIRA.ADDF jsr K.READDIRA.AddFNToBuf - - jsr K.READDIRA.ClrStat - - ldx #ADDF.DST-ADDF.SRC +K.READDIRA.ADDF ldx #ADDF.DST-ADDF.SRC .1 ldy ADDF.SRC-1,x lda (ZPQuickPtr3),y ldy ADDF.DST-1,x sta KrnBuf256,y dex bpl .1 - + >PUSHWI KrnBuf256+S.STAT.CTIME lda #$18 creation Date/time jsr K.READDIRA.ConvertTime @@ -540,7 +532,7 @@ K.READDIRA.ConvertTime lda ZPQuickPtr3+1 adc #0 >PUSHYA - jmp K.PTime2Time + jmp K.PTime2Time Will destroy Ptr1 & Ptr2 !!!! *-------------------------------------- ADDF.SRC .HS 1013141516171f20 ADDF.DST .DA #S.STAT.PRODOS.TYPE,#S.STAT.BLOCKS,#S.STAT.BLOCKS+1 @@ -551,7 +543,7 @@ ADDF.DST .DA #S.STAT.PRODOS.TYPE,#S.STAT.BLOCKS,#S.STAT.BLOCKS+1 * A = hDIR *-------------------------------------- K.CLOSEDIRA jsr PFT.CheckDirA - sta K.OPENDIRYA.hDIR + sta K.READDIRA.hDir jsr K.GetMemPtrA >STYA ZPQuickPtr1 @@ -561,12 +553,12 @@ K.CLOSEDIRA.1 ldy #S.DIR.PRODOS.REF sta MLICALL.PARAMS+1 >MLICALL MLICLOSE -.1 ldy #S.DIR.PRODOS.IOBUF +.1 ldy #S.DIR.PRODOS.IOBUF lda (ZPQuickPtr1),y beq .2 jsr K.FreeMemA -.2 lda K.OPENDIRYA.hDIR +.2 ldaK.READDIRA.hDir jsr K.FreeMemA clc rts diff --git a/SYS/KERNEL.S.STR.txt b/SYS/KERNEL.S.STR.txt index 4dd8b4f6..6d3ea445 100644 --- a/SYS/KERNEL.S.STR.txt +++ b/SYS/KERNEL.S.STR.txt @@ -298,26 +298,26 @@ K.PStrFTime.JMPH .DA /K.PStrFTime.A .DA /K.PStrFTime.Y .DA /K.PStrFTime.YY *-------------------------------------- -K.PStrFTime.A ldx #3 Max Len +K.PStrFTime.A ldx #3 Short day of week, 3 chars... .HS 2C Bit abs -K.PStrFTime.AA ldx #15 +K.PStrFTime.AA ldx #15 full DoW >LDYAI K.PStrFTime.DAY >STYA ZPQuickPtr4 ldy #S.Time.WDAY bra K.PStrFTime.STR -K.PStrFTime.B ldx #3 +K.PStrFTime.B ldx #3 Short Month, 3 chars.... .HS 2C Bit abs -K.PStrFTime.BB ldx #15 +K.PStrFTime.BB ldx #15 full Month.... >LDYAI K.PStrFTime.MON >STYA ZPQuickPtr4 ldy #S.Time.MONTH K.PStrFTime.STR lda (ZPQuickPtr1),y get required S.Time field value tay - beq .8 Illegal value + beq .9 Illegal value .1 dey range 0..x beq .2 @@ -342,8 +342,10 @@ K.PStrFTime.STR lda (ZPQuickPtr1),y get required S.Time field value tay dex bne .3 +.8 rts -.8 rts +.9 lda #'?' + jmp K.PStrFTime.addChar K.PStrFTime.D ldy #S.Time.DAY bra K.PStrFTime.addDecPtr1Y @@ -382,6 +384,7 @@ K.PStrFTime.addDecPtr1Y K.PStrFTime.addDecA sta K.PStrFTime.BIN stz K.PStrFTime.DEC + sed ldx #8 @@ -393,17 +396,18 @@ K.PStrFTime.addDecA dex bne .1 + cld * lda K.PStrFTime.DEC already in A - + pha lsr lsr lsr lsr ora #$30 jsr K.PStrFTime.addChar - lda K.PStrFTime.DEC + pla and #$0f ora #$30 *-------------------------------------- diff --git a/SYS/KERNEL.S.TIME.txt b/SYS/KERNEL.S.TIME.txt index 645b4dfb..9c3024f8 100644 --- a/SYS/KERNEL.S.TIME.txt +++ b/SYS/KERNEL.S.TIME.txt @@ -14,9 +14,9 @@ DAY0 .EQ 4 day 0 was a thursday *-------------------------------------- * K.TimeYA get System Time * In : -* Y,A = PTR to K.Time +* Y,A = PTR to S.TIME * Out : -* K.Time filled with ProDOS MLI date/time +* S.TIME filled with System date/time *-------------------------------------- K.TimeYA >STYA ZPQuickPtr2 >MLICALL MLIGETTIME @@ -26,7 +26,7 @@ K.TimeYA >STYA ZPQuickPtr2 *-------------------------------------- * In : * PULLW = Src PDATE/TIME (DWORD) -* PULLW = Dst PTR To K.Time +* PULLW = Dst PTR To S.TIME *-------------------------------------- K.PTime2Time >PULLW ZPQuickPtr1 >PULLW ZPQuickPtr2 @@ -163,7 +163,7 @@ K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7) * K.CTime2Time * In : * PULLW = Src CTIME DWORD -* PULLW = Dst PTR To K.Time +* PULLW = Dst PTR To S.TIME *-------------------------------------- K.CTime2Time >PULLW ZPQuickPtr1 >PULLW ZPQuickPtr2