diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 3663be69..0e62e2dc 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/SYS/KERNEL.S.SHARED.txt b/SYS/KERNEL.S.SHARED.txt index 88413d5c..39860279 100644 --- a/SYS/KERNEL.S.SHARED.txt +++ b/SYS/KERNEL.S.SHARED.txt @@ -80,34 +80,38 @@ SHARED.TXTPTR.GetY sta SETREADAUX rts *-------------------------------------- -SHARED.FORPNT.PutY - sta CLRWRITEAUX - sta (FORPNT),y - sta SETWRITEAUX +SHARED.ZPPtr3.GetY + sta CLRREADAUX + lda (ZPPtr3),y + sta SETREADAUX rts *-------------------------------------- SHARED.TXTPTR.GetNext sta CLRREADAUX lda (TXTPTR) sta SETREADAUX - beq SHARED.TXTPTR.Next.9 + beq SHARED.RTS SHARED.TXTPTR.Next inc TXTPTR - bne SHARED.TXTPTR.Next.9 + bne SHARED.RTS inc TXTPTR+1 -SHARED.TXTPTR.Next.9 rts *-------------------------------------- -SHARED.FORPNT.GetNext +SHARED.FORPNT.PutY + sta CLRWRITEAUX + sta (FORPNT),y + sta SETWRITEAUX + rts +*-------------------------------------- +SHARED.FORPNT.PutNext sta CLRWRITEAUX sta (FORPNT) sta SETWRITEAUX -SHARED.FORPNT.Next +* SHARED.FORPNT.Next inc FORPNT - bne SHARED.FORPNT.Next.9 + bne SHARED.RTS inc FORPNT+1 -SHARED.FORPNT.Next.9 - rts +SHARED.RTS rts *-------------------------------------- SHARED.SPtr1PPtr2 >STYA ZPPtr1 @@ -121,11 +125,8 @@ SHARED.SPtr2PPtr1 *-------------------------------------- SHARED.GetCharPtr1 lda (ZPPtr1) - bne SHARED.NextCharPtr1 - rts -SHARED.PutCharPtr1 - sta (ZPPtr1) -SHARED.NextCharPtr1 + beq SHARED.RTS + inc ZPPtr1 bne .8 inc ZPPtr1+1 never Z @@ -171,7 +172,6 @@ SHARED.NextCharPtr2 SHARED.PullYA sta CLRREADAUX >PULLYA sta SETREADAUX -SHARED.PullYA.RTS rts *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index 10d19fe9..19c029e4 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -151,6 +151,6 @@ DRV.TERM.GetDevName rts *-------------------------------------- MAN -SAVE USR/SRC/SYS/KERNEL.S.TERMLC +SAVE USR/SRC/SYS/KERNEL.S.TERM LOAD USR/SRC/SYS/KERNEL.S ASM diff --git a/SYS/KERNEL.S.TERMX.txt b/SYS/KERNEL.S.TERMX.txt index c6fca118..6e1f22d4 100644 --- a/SYS/KERNEL.S.TERMX.txt +++ b/SYS/KERNEL.S.TERMX.txt @@ -1515,6 +1515,6 @@ BUF.BASEH .DA /0 .DA /1840 *-------------------------------------- MAN -SAVE USR/SRC/SYS/KERNEL.S.TERM +SAVE USR/SRC/SYS/KERNEL.S.TERMX LOAD USR/SRC/SYS/KERNEL.S ASM diff --git a/SYS/KERNEL.S.TIME.txt b/SYS/KERNEL.S.TIME.txt index 1f0906f6..33dd0115 100644 --- a/SYS/KERNEL.S.TIME.txt +++ b/SYS/KERNEL.S.TIME.txt @@ -22,9 +22,9 @@ K.Time >PULLW FORPNT * # StrFTime * ## C * Convert S.TIME struct to CSTR -* `void strftime (char* ptr, const char* format, const struct S.TIME* timeptr );` +* `void strftime (char* str, const char* format, const struct S.TIME* timeptr );` * ## ASM -* `>PUSHW ptr` +* `>PUSHW str` * `>PUSHW format` * + %a : Abbreviated weekday name : Thu * + %A : Full weekday name : Thursday @@ -45,8 +45,10 @@ K.Time >PULLW FORPNT * ## RETURN VALUE * none. always succeed. *\-------------------------------------- -K.StrFTime >PULLW ZPPtr1 timeptr - +K.StrFTime >PULLW ZPPtr3 S.TIME + >PULLW TXTPTR format + >PULLW FORPNT str + bra TIME.JMP */-------------------------------------- * # PTime2Time * Convert ProDOS Time To S.TIME @@ -70,8 +72,8 @@ K.PTime2Time * `>SYSCALL CTime2Time` * ## RETURN VALUE *\-------------------------------------- -K.CTime2Time >PULLW FORPNT - >PULLW TXTPTR +K.CTime2Time >PULLW FORPNT S.TIME + >PULLW TXTPTR ptime/ctime TIME.JMP sta SETREADAUX sta SETWRITEAUX diff --git a/SYS/KERNEL.S.TIMEX.txt b/SYS/KERNEL.S.TIMEX.txt index 10badb66..647bcfe9 100644 --- a/SYS/KERNEL.S.TIMEX.txt +++ b/SYS/KERNEL.S.TIMEX.txt @@ -4,26 +4,35 @@ NEW * https://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/lib/ansi/gmtime.c *-------------------------------------- SECSDAY .EQ 86400 60*60*24 -CENTURY0 .EQ 19 +CENT0 .EQ 19 YEAR0 .EQ 70 DAY0 .EQ 4 day 0 was a thursday *-------------------------------------- +* ZPPtr3 *S.TIME +* FORPNT str +* TXTPTR format +*-------------------------------------- K.StrFTime.I - -.1 jsr SHARED.GetCharPtr2 +.1 jsr SHARED.TXTPTR.GetNext beq .8 + cmp #'%' beq .2 - jsr SHARED.PutCharPtr1 + + jsr SHARED.FORPNT.PutNext bra .1 + .2 ldx #K.StrFTime.Cnt-1 - jsr SHARED.GetCharPtr2 + jsr SHARED.TXTPTR.GetNext beq .8 + .3 cmp K.StrFTime.Tbl,x beq .4 dex bpl .3 + bra .1 + .4 cpx #7 bcc .5 jsr K.StrFTime.AtX @@ -38,7 +47,7 @@ K.StrFTime.I .7 jmp (K.StrFTime.JMP,x) .8 lda #0 Terminate C string - sta (ZPPtr1) + jsr SHARED.FORPNT.PutNext clc rts *-------------------------------------- @@ -57,15 +66,15 @@ K.StrFTime.A sec Short day of week, 3 chars... .HS 90 BCC K.StrFTime.AA clc full DoW - lda #K.StrFTime.DAY - ldx /K.StrFTime.DAY + lda #TIMEX.DAY + ldx /TIMEX.DAY ldy #S.Time.WDAY bra K.StrFTime.STR K.StrFTime.B sec Short Month, 3 chars.... .HS 90 BCC K.StrFTime.BB clc full Month.... - lda #K.StrFTime.MON - ldx /K.StrFTime.MON + lda #TIMEX.MON + ldx /TIMEX.MON ldy #S.Time.MONTH K.StrFTime.STR sta ZPPtr4 stx ZPPtr4+1 @@ -73,7 +82,8 @@ K.StrFTime.STR sta ZPPtr4 ldx #15 bcc .10 ldx #3 -.10 lda (ZPPtr3),y get required S.Time field value + +.10 jsr SHARED.ZPPtr3.GetY get required S.Time field value tay beq .2 Illegal value, print ??? @@ -90,7 +100,7 @@ K.StrFTime.STR sta ZPPtr4 .3 iny lda (ZPPtr4),y - jsr SHARED.PutCharPtr1 + jsr SHARED.FORPNT.PutNext tya cmp (ZPPtr4) beq .8 @@ -100,39 +110,41 @@ K.StrFTime.STR sta ZPPtr4 .8 rts *-------------------------------------- K.StrFTime.II ldy #S.Time.HOUR - lda (ZPPtr3),y + jsr SHARED.ZPPtr3.GetY cmp #12 bcc K.StrFTime.addDecA sbc #12 bra K.StrFTime.addDecA + K.StrFTime.P ldy #S.Time.HOUR - lda (ZPPtr3),y + jsr SHARED.ZPPtr3.GetY cmp #12 bcc .1 lda #'p' .HS 2C bit abs .1 lda #'a' - jsr SHARED.PutCharPtr1 + jsr SHARED.FORPNT.PutNext lda #'m' - jmp SHARED.PutCharPtr1 + jmp SHARED.FORPNT.PutNext +t K.StrFTime.YY ldy #S.Time.CENTURY - jsr K.StrFTime.addDecPtr1Y + jsr K.StrFTime.addDecPtr3Y ldx #7 "y" K.StrFTime.AtX ldy K.StrFTime.OfsX-7,x *-------------------------------------- -K.StrFTime.addDecPtr1Y - lda (ZPPtr3),y +K.StrFTime.addDecPtr3Y + jsr SHARED.ZPPtr3.GetY K.StrFTime.addDecA ldx #2 ldy #'0' clc jsr MATH.A2STR10 lda A2osX.NumStrBuf - jsr SHARED.PutCharPtr1 + jsr SHARED.FORPNT.PutNext lda A2osX.NumStrBuf+1 - jmp SHARED.PutCharPtr1 + jmp SHARED.FORPNT.PutNext *-------------------------------------- -K.StrFTime.DAY >PSTR "???" +TIMEX.DAY >PSTR "???" >PSTR "Monday" >PSTR "Tuesday" >PSTR "Wednesday" @@ -141,7 +153,7 @@ K.StrFTime.DAY >PSTR "???" >PSTR "Saturday" >PSTR "Sunday" *-------------------------------------- -K.StrFTime.MON >PSTR "???" +TIMEX.MON >PSTR "???" >PSTR "January" >PSTR "February" >PSTR "March" @@ -155,16 +167,15 @@ K.StrFTime.MON >PSTR "???" >PSTR "November" >PSTR "December" *-------------------------------------- -K.StrFTime.MDAY .DA #3,#0,#3,#2,#3,#2,#3,#3,#2,#3,#2,#3 -*-------------------------------------- K.PTime2Time.I ldy #1 - lda (TXTPTR),y Get Year + jsr SHARED.TXTPTR.GetY Get Year lsr C is high bit of month ldy #S.Time.YEAR - sta (FORPNT),y set year + jsr SHARED.FORPNT.PutY set year sta ARG32+3 for computing Century/WDAY later - lda (TXTPTR) Get Month/day + ldy #0 + jsr SHARED.TXTPTR.GetY Get Month/day pha save Day ror @@ -173,11 +184,16 @@ K.PTime2Time.I ldy #1 lsr lsr ldy #S.Time.MONTH - sta (FORPNT),y set month + jsr SHARED.FORPNT.PutY set month + sta K.ComputeWDAY.1+1 + pla get back day and #$1F iny - sta (FORPNT),y set day + jsr SHARED.FORPNT.PutY set day + + dec adjust range 0.30 for MOD 7 + sta ARG32.Sign For later... lda ARG32+3 get back year cmp #69 if before 70 CC,if > 70, CS @@ -185,29 +201,30 @@ K.PTime2Time.I ldy #1 rol get back C in bit 0 eor #1 toggle C adc #19 set date before 1970 -> 20xx - sta (FORPNT) set Century + ldy #0 + jsr SHARED.FORPNT.PutY set Century sta ARG32+2 for computing WDAY later ldy #2 - lda (TXTPTR),y Get Min + jsr SHARED.TXTPTR.GetY Get Min tax iny - lda (TXTPTR),y Get Hour + jsr SHARED.TXTPTR.GetY Get Hour ldy #S.Time.HOUR - sta (FORPNT),y set hour + jsr SHARED.FORPNT.PutY set hour iny txa - sta (FORPNT),y set min + jsr SHARED.FORPNT.PutY set min iny lda #0 - sta (FORPNT),y set seconds (ProDOS does not provide it) + jsr SHARED.FORPNT.PutY set seconds (ProDOS does not provide it) *-------------------------------------- * 1/1/1970 was Thursday...if not leap, add one, if leap add 2 *-------------------------------------- K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7) pha - lda #CENTURY0 + lda #CENT0 sta ARG32 lda #YEAR0 sta ARG32+1 @@ -218,7 +235,7 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7) cpy ARG32+2 bne .2 cmp ARG32+3 - beq .4 + beq K.ComputeWDAY.1 .2 jsr TIMEX.IsLeap CS = Leap @@ -238,16 +255,14 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7) inc ARG32 bra .1 *-------------------------------------- -.4 ldy #S.Time.MONTH - lda (FORPNT),y get month - tax +K.ComputeWDAY.1 ldx #$ff SELF MODIFIED : month dex don't include actual month beq .71 .5 clc assume NO leap - lda K.StrFTime.MDAY-1,x get day count in this month + lda TIMEX.MDAY-1,x get day count in this month bne .6 february ? ldy ARG32+2 @@ -255,7 +270,7 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7) jsr TIMEX.IsLeap CS = Leap .6 pla - adc K.StrFTime.MDAY-1,x + adc TIMEX.MDAY-1,x cmp #7 bcc .7 @@ -266,10 +281,9 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7) bne .5 .71 pla - ldy #S.Time.DAY clc - adc (FORPNT),y get day in month (1..31) - dec adjust range 0.30 for MOD 7 + + adc ARG32.Sign get day in month (0..30) .8 cmp #7 MOD 7 bcc .80 @@ -278,10 +292,12 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7) .80 inc adjust range 1..7 ldy #S.Time.WDAY - sta (FORPNT),y + jsr SHARED.FORPNT.PutY clc rts *-------------------------------------- +TIMEX.MDAY .DA #3,#0,#3,#2,#3,#2,#3,#3,#2,#3,#2,#3 +*-------------------------------------- K.CTime2Time.I ldy #3 .1 lda (ZPPtr1),y @@ -316,7 +332,7 @@ K.CTime2Time.I ldy #3 tya ldy #S.Time.WDAY sta (ZPPtr2),y - ldy #CENTURY0 + ldy #CENT0 sty ZPPtr3 lda #YEAR0 sta ZPPtr3+1 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 2e00eafd..ddb94980 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -47,7 +47,6 @@ A2osX.AUX .DA #0 A2osX.AUX.B .PH $1000 .INB USR/SRC/SYS/KERNEL.S.OSDX .INB USR/SRC/SYS/KERNEL.S.SLISTX - .INB USR/SRC/SYS/KERNEL.S.PWDX Mem.XLoMem .EQ * .EP A2osX.AUX.S .EQ *-A2osX.AUX.B @@ -56,8 +55,9 @@ A2osX.AUXH .DA #0 .DA A2osX.AUXH.S A2osX.AUXH.B .PH Mem.XHiMem - .INB USR/SRC/SYS/KERNEL.S.TERM + .INB USR/SRC/SYS/KERNEL.S.TERMX .INB USR/SRC/SYS/KERNEL.S.MD5X + .INB USR/SRC/SYS/KERNEL.S.PWDX .INB USR/SRC/SYS/KERNEL.S.TIMEX .EP A2osX.AUXH.S .EQ *-A2osX.AUXH.B @@ -107,16 +107,15 @@ A2osX.E0.B .PH $E000 .INB USR/SRC/SYS/KERNEL.S.IRQ .INB USR/SRC/SYS/KERNEL.S.MEM .INB USR/SRC/SYS/KERNEL.S.MATH - .INB USR/SRC/SYS/KERNEL.S.TERMLC + .INB USR/SRC/SYS/KERNEL.S.TERM .INB USR/SRC/SYS/KERNEL.S.SHARED .INB USR/SRC/SYS/KERNEL.S.STDIO2 .INB USR/SRC/SYS/KERNEL.S.PWD .INB USR/SRC/SYS/KERNEL.S.TIME -********* TMP ***** go to A2osX.D1 +* go to A2osX.D1 .INB USR/SRC/SYS/KERNEL.S.IO .INB USR/SRC/SYS/KERNEL.S.PIPE .INB USR/SRC/SYS/KERNEL.S.PFT -********* TMP ***** go to A2osX.D2 DevMgr.Timer .BS 1 DevMgr.ASCREEN .BS 1