From 9e7cf3149157c59113721c4cf1a7b61ea5980211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 14 Oct 2016 17:39:49 +0200 Subject: [PATCH] Kernel version 0.8 : Migrating CMDs to new CIO/DIR/TIME API --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/LS.S.txt | 67 ++++++++++++++++++---------------- BIN/MEMDUMP.S.txt | 42 +++++++++------------- SYS/KERNEL.S.CIO.txt | 18 +++++----- SYS/KERNEL.S.DIR.txt | 82 +++++++++++++++++++----------------------- SYS/KERNEL.S.STR.txt | 20 ++++++----- SYS/KERNEL.S.TIME.txt | 8 ++--- 8 files changed, 115 insertions(+), 122 deletions(-) diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index a65d17bbbc11eb7cb6db5abba33992eeaa1177d0..126727fb81e6c5312b606131d78f09974ef22d9b 100644 GIT binary patch delta 3663 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 F`4=RR)QSKA delta 4205 zcmaJ^4_H%ImVYmK2?+*?3K+2JH3T&wAVbimPP+q6tJu=%bmxE9I?q`halhisw7WC@ zgFIVsk>T+LUU$%K?7V%Ss9|`_OWavM$Kp8iO*;uw@s$_I(}V=DvgiUnD+;!&?0KNJ z-Tl73`EvjK&b{ZHd+t5=oJS2Bs6m5}ZNitI&N01SPH3?)?P>3~g?YH=bQ$?<%7W$o zr|R%pjK%z7owioPV$8307U6p4FFO&w?DXhPT8G!3{(0414K!6hRW$ewX6qYv{3E9R zjUV7QP7lAqYw)d%_vd$X=i>CM{fx7EMf$7#Xlj^5XX9Kqr9)?#-~VE5`nfpDkhzO~ z9O=&kiFxpg`kXoJl3xRuVC1!F9h$UGB8^1n7N(= zFDkQGKx0o=7EDB$s(p){`7z$xn8?{Qi-rK?YF##B8&-vGj`OvQnc?}H5rVe{SMr|3^He>z=aqMk#4jXfT? z=LVeNz0YC+;yrErC}!$5fAWFNZ)&kYy|TsTx1iD3V_+EoE6^zO{(+T-S=$mQ$=p6r zf}dknR~NwXez!Uwzs|f_ZQt4!Z#*97ugBfjpJ=bFY{QRZ6*Dtn`PVhO5ZLC=D$;p9 zP6lmF*W>i)qZ<&!6boDi`f9v!`19rbXdG5U4cCUgG|rtVY zUuWuAYoet@V=wb!O}6KY^a)Y;S(7+Wex#~5K}QmmRZ@cPOEf&ZcjZUiT>|J=}=NIsI7g?bWvUqXd0sk1CqJqcP& zoPudpmlE_xjN7v_9HI86U`VXToq*&P#NESJW^5W z+7UPG2ZNh~2eIedyY?mp;&~|c^uq?F(4JBbj)Jv^#(EP045WK=8pa}Ow=W^2H&pc} z>L0P*Pn{}bBtN3xmN+v=Q^pptSd(bo3zXVX|AiDzgM<1gzYiZY(->Nb0UsPiD3YemycP zR_{-Bk26wx*C8ofq@+$T5?j;=RyGY96+;IokO_J@TO@O8xxWDP^R-Bo=w(mu=wPb& zA?cen%iL}`jHje>-UI&{_*YBiUsO)`yDyDitgNb*z*d!2H4l`x&P z7F$U~iHEm~rdNWt5gYo4$Ubj~3_mL_m>r**1*@1FwQH6?6Y`^W3|yMT|u%Pa6>I>Hh~#>o#9>USkI8ig7z*K9tno z@ADc59x!(fJ-fOzy6;G@M!ZQvtyn``T0k?fy4He)@;Zwtrsi zX=?s8*MB8(W8xEi>Z1Amk4qE^r*(4a>fJl^ zb$ajQND8H}@D}J_L8Z~kUcEw`>J}A})ly$&3F=9RM%FM=roy>OPN><6R#}zP=K9IZ z?`f`^r~+0)tzvalt{St#Ca>22Q>T9$@bOns>sdWD4-`mYF_alqpA7m+)EA3RbB6g> zqI@h`6^qibXt#Jvp1Z=Z4A9dX-~D@h!zNjnR*#)CyoO<%&B-ArM>sjGX-r0CF(JQc zT&8czjT183a9PNt6&ZbUSE7lf*)dd{z zf}@d$@KOV-YbIDd0Oy%ACyJNA3}T_9#o@oOkZ2)*g@xpA${nC>oFPtb#BVV#ocspV z|9WyIzKQwcNk{OMp<*ea)y?KPt5F0Uw*J9NaJ;)$)O@txOGlZKW+X zehKQxLEJ`&OJr+VDUMnTN^#rMSO9C*D8`UDHG+?5sap*e64_%M2Juyo*2YG~yMWM^ z7=XMbrkH0b=D``2%B;Fu=+VWG^b*Q5p#agTi;IiHHf7!fX6nRD$1oH1aicEo)5ocJ zc)v0ku2xdfcudeW0@BUvt;s8>#morjlm{CrPlQq1mD&NpQy{ZvmzQcU4e zn=+Ed(w0K>aRThRQ03=a%>4FV_UgsSW)&5dv^iBDa6-H<;1?$+7AG%m91_EPR#L$& z`sOPjvXuLpCr-D45i~V$b8;ApVLDFR&{`<3J=;GssavBAiw8+Qf#r1Ul0RQ z090NKI?U@2lj1taL5fl9mF-}tB>f;6EL1XsC@hN)I0AUWLEcQLsxRqzkW`Fq%-E+c z_@Y6dnTXovh;IVk^5z9nOr^D>4_ zUeU+OVi=YZ|3Umxd?da}CgpdTrq5pG{@bjfe%Xqf@TXhTO?bwcXH0k}{vY#kO~z?l z^8i0#!=GsVdMUnkULKmwJZ;c0f4;NQ+GqX1)?z!NR$ubXrKsbHIp1t;F2%pO>^r&2 zlF$WAyj!k5kL_LW6XrY``lr_ithjlqz&DPP-AR*qdkZ?}_6|fd9 zg-;?Y`w4vVSj!;^xyRn-w3W@)5OgavHh-HNCO-Q4tS(=!3oR*xci;~N!u+OO7e)95 zkdRjhL8eeNqLMra%KAJKe9Sz{)nh&8Z~@~fK#{RfNbQ+&q0W3^CshT$mxAUwg)P*N z!gl9w5z878z-EB@`BUKSzB`!j13ze^;m-1#?0M<}z-?u^*0kF+TJtSDeRxyiu z0u2`k=_>y%d4irwgPw)-_*wX>Yf*Fu zo@2!>Rn_e_RmJ!Dd{>&&l~&*qf6qHy%I^@jM)-Gep@P+Eb| z%0G!Z)**C!jW?4`2CQO({{n4Y>v;&9i%5{Lc`aB2Bv{DxsqF{eMXF^vj3q2x#ja`) z?{JOQi?_WRKQ{}z0lxnj76?B#cN}a=z`@n3Unusvvf9#M>8V{>dZ2h0K_`ma1Eoh3 X#r5Jet3TUce2hpGch{ddf*<)GWM;FW diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index d02ed288bf20ee5903e1c77682e34dfca4bc1691..f942c98ecd895646dd6be6b6efd138300e74d783 100644 GIT binary patch delta 16701 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 R!}Q_*|L6bx8UWAS^}oE~^ydHo delta 16205 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 AI{*Lx 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