Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-01-21 12:06:59 +01:00
parent 8244429491
commit a40a5660b8
7 changed files with 96 additions and 79 deletions

Binary file not shown.

View File

@ -80,34 +80,38 @@ SHARED.TXTPTR.GetY
sta SETREADAUX sta SETREADAUX
rts rts
*-------------------------------------- *--------------------------------------
SHARED.FORPNT.PutY SHARED.ZPPtr3.GetY
sta CLRWRITEAUX sta CLRREADAUX
sta (FORPNT),y lda (ZPPtr3),y
sta SETWRITEAUX sta SETREADAUX
rts rts
*-------------------------------------- *--------------------------------------
SHARED.TXTPTR.GetNext SHARED.TXTPTR.GetNext
sta CLRREADAUX sta CLRREADAUX
lda (TXTPTR) lda (TXTPTR)
sta SETREADAUX sta SETREADAUX
beq SHARED.TXTPTR.Next.9 beq SHARED.RTS
SHARED.TXTPTR.Next SHARED.TXTPTR.Next
inc TXTPTR inc TXTPTR
bne SHARED.TXTPTR.Next.9 bne SHARED.RTS
inc TXTPTR+1 inc TXTPTR+1
SHARED.TXTPTR.Next.9
rts rts
*-------------------------------------- *--------------------------------------
SHARED.FORPNT.GetNext SHARED.FORPNT.PutY
sta CLRWRITEAUX
sta (FORPNT),y
sta SETWRITEAUX
rts
*--------------------------------------
SHARED.FORPNT.PutNext
sta CLRWRITEAUX sta CLRWRITEAUX
sta (FORPNT) sta (FORPNT)
sta SETWRITEAUX sta SETWRITEAUX
SHARED.FORPNT.Next * SHARED.FORPNT.Next
inc FORPNT inc FORPNT
bne SHARED.FORPNT.Next.9 bne SHARED.RTS
inc FORPNT+1 inc FORPNT+1
SHARED.FORPNT.Next.9 SHARED.RTS rts
rts
*-------------------------------------- *--------------------------------------
SHARED.SPtr1PPtr2 SHARED.SPtr1PPtr2
>STYA ZPPtr1 >STYA ZPPtr1
@ -121,11 +125,8 @@ SHARED.SPtr2PPtr1
*-------------------------------------- *--------------------------------------
SHARED.GetCharPtr1 SHARED.GetCharPtr1
lda (ZPPtr1) lda (ZPPtr1)
bne SHARED.NextCharPtr1 beq SHARED.RTS
rts
SHARED.PutCharPtr1
sta (ZPPtr1)
SHARED.NextCharPtr1
inc ZPPtr1 inc ZPPtr1
bne .8 bne .8
inc ZPPtr1+1 never Z inc ZPPtr1+1 never Z
@ -171,7 +172,6 @@ SHARED.NextCharPtr2
SHARED.PullYA sta CLRREADAUX SHARED.PullYA sta CLRREADAUX
>PULLYA >PULLYA
sta SETREADAUX sta SETREADAUX
SHARED.PullYA.RTS
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -151,6 +151,6 @@ DRV.TERM.GetDevName
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.TERMLC SAVE USR/SRC/SYS/KERNEL.S.TERM
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S
ASM ASM

View File

@ -1515,6 +1515,6 @@ BUF.BASEH .DA /0
.DA /1840 .DA /1840
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.TERM SAVE USR/SRC/SYS/KERNEL.S.TERMX
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S
ASM ASM

View File

@ -22,9 +22,9 @@ K.Time >PULLW FORPNT
* # StrFTime * # StrFTime
* ## C * ## C
* Convert S.TIME struct to CSTR * 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 * ## ASM
* `>PUSHW ptr` * `>PUSHW str`
* `>PUSHW format` * `>PUSHW format`
* + %a : Abbreviated weekday name : Thu * + %a : Abbreviated weekday name : Thu
* + %A : Full weekday name : Thursday * + %A : Full weekday name : Thursday
@ -45,8 +45,10 @@ K.Time >PULLW FORPNT
* ## RETURN VALUE * ## RETURN VALUE
* none. always succeed. * none. always succeed.
*\-------------------------------------- *\--------------------------------------
K.StrFTime >PULLW ZPPtr1 timeptr K.StrFTime >PULLW ZPPtr3 S.TIME
>PULLW TXTPTR format
>PULLW FORPNT str
bra TIME.JMP
*/-------------------------------------- */--------------------------------------
* # PTime2Time * # PTime2Time
* Convert ProDOS Time To S.TIME * Convert ProDOS Time To S.TIME
@ -70,8 +72,8 @@ K.PTime2Time
* `>SYSCALL CTime2Time` * `>SYSCALL CTime2Time`
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.CTime2Time >PULLW FORPNT K.CTime2Time >PULLW FORPNT S.TIME
>PULLW TXTPTR >PULLW TXTPTR ptime/ctime
TIME.JMP sta SETREADAUX TIME.JMP sta SETREADAUX
sta SETWRITEAUX sta SETWRITEAUX

View File

@ -4,26 +4,35 @@ NEW
* https://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/lib/ansi/gmtime.c * https://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/lib/ansi/gmtime.c
*-------------------------------------- *--------------------------------------
SECSDAY .EQ 86400 60*60*24 SECSDAY .EQ 86400 60*60*24
CENTURY0 .EQ 19 CENT0 .EQ 19
YEAR0 .EQ 70 YEAR0 .EQ 70
DAY0 .EQ 4 day 0 was a thursday DAY0 .EQ 4 day 0 was a thursday
*-------------------------------------- *--------------------------------------
* ZPPtr3 *S.TIME
* FORPNT str
* TXTPTR format
*--------------------------------------
K.StrFTime.I K.StrFTime.I
.1 jsr SHARED.TXTPTR.GetNext
.1 jsr SHARED.GetCharPtr2
beq .8 beq .8
cmp #'%' cmp #'%'
beq .2 beq .2
jsr SHARED.PutCharPtr1
jsr SHARED.FORPNT.PutNext
bra .1 bra .1
.2 ldx #K.StrFTime.Cnt-1 .2 ldx #K.StrFTime.Cnt-1
jsr SHARED.GetCharPtr2 jsr SHARED.TXTPTR.GetNext
beq .8 beq .8
.3 cmp K.StrFTime.Tbl,x .3 cmp K.StrFTime.Tbl,x
beq .4 beq .4
dex dex
bpl .3 bpl .3
bra .1 bra .1
.4 cpx #7 .4 cpx #7
bcc .5 bcc .5
jsr K.StrFTime.AtX jsr K.StrFTime.AtX
@ -38,7 +47,7 @@ K.StrFTime.I
.7 jmp (K.StrFTime.JMP,x) .7 jmp (K.StrFTime.JMP,x)
.8 lda #0 Terminate C string .8 lda #0 Terminate C string
sta (ZPPtr1) jsr SHARED.FORPNT.PutNext
clc clc
rts rts
*-------------------------------------- *--------------------------------------
@ -57,15 +66,15 @@ K.StrFTime.A sec Short day of week, 3 chars...
.HS 90 BCC .HS 90 BCC
K.StrFTime.AA clc full DoW K.StrFTime.AA clc full DoW
lda #K.StrFTime.DAY lda #TIMEX.DAY
ldx /K.StrFTime.DAY ldx /TIMEX.DAY
ldy #S.Time.WDAY ldy #S.Time.WDAY
bra K.StrFTime.STR bra K.StrFTime.STR
K.StrFTime.B sec Short Month, 3 chars.... K.StrFTime.B sec Short Month, 3 chars....
.HS 90 BCC .HS 90 BCC
K.StrFTime.BB clc full Month.... K.StrFTime.BB clc full Month....
lda #K.StrFTime.MON lda #TIMEX.MON
ldx /K.StrFTime.MON ldx /TIMEX.MON
ldy #S.Time.MONTH ldy #S.Time.MONTH
K.StrFTime.STR sta ZPPtr4 K.StrFTime.STR sta ZPPtr4
stx ZPPtr4+1 stx ZPPtr4+1
@ -73,7 +82,8 @@ K.StrFTime.STR sta ZPPtr4
ldx #15 ldx #15
bcc .10 bcc .10
ldx #3 ldx #3
.10 lda (ZPPtr3),y get required S.Time field value
.10 jsr SHARED.ZPPtr3.GetY get required S.Time field value
tay tay
beq .2 Illegal value, print ??? beq .2 Illegal value, print ???
@ -90,7 +100,7 @@ K.StrFTime.STR sta ZPPtr4
.3 iny .3 iny
lda (ZPPtr4),y lda (ZPPtr4),y
jsr SHARED.PutCharPtr1 jsr SHARED.FORPNT.PutNext
tya tya
cmp (ZPPtr4) cmp (ZPPtr4)
beq .8 beq .8
@ -100,39 +110,41 @@ K.StrFTime.STR sta ZPPtr4
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
K.StrFTime.II ldy #S.Time.HOUR K.StrFTime.II ldy #S.Time.HOUR
lda (ZPPtr3),y jsr SHARED.ZPPtr3.GetY
cmp #12 cmp #12
bcc K.StrFTime.addDecA bcc K.StrFTime.addDecA
sbc #12 sbc #12
bra K.StrFTime.addDecA bra K.StrFTime.addDecA
K.StrFTime.P ldy #S.Time.HOUR K.StrFTime.P ldy #S.Time.HOUR
lda (ZPPtr3),y jsr SHARED.ZPPtr3.GetY
cmp #12 cmp #12
bcc .1 bcc .1
lda #'p' lda #'p'
.HS 2C bit abs .HS 2C bit abs
.1 lda #'a' .1 lda #'a'
jsr SHARED.PutCharPtr1 jsr SHARED.FORPNT.PutNext
lda #'m' lda #'m'
jmp SHARED.PutCharPtr1 jmp SHARED.FORPNT.PutNext
t
K.StrFTime.YY ldy #S.Time.CENTURY K.StrFTime.YY ldy #S.Time.CENTURY
jsr K.StrFTime.addDecPtr1Y jsr K.StrFTime.addDecPtr3Y
ldx #7 "y" ldx #7 "y"
K.StrFTime.AtX ldy K.StrFTime.OfsX-7,x K.StrFTime.AtX ldy K.StrFTime.OfsX-7,x
*-------------------------------------- *--------------------------------------
K.StrFTime.addDecPtr1Y K.StrFTime.addDecPtr3Y
lda (ZPPtr3),y jsr SHARED.ZPPtr3.GetY
K.StrFTime.addDecA K.StrFTime.addDecA
ldx #2 ldx #2
ldy #'0' ldy #'0'
clc clc
jsr MATH.A2STR10 jsr MATH.A2STR10
lda A2osX.NumStrBuf lda A2osX.NumStrBuf
jsr SHARED.PutCharPtr1 jsr SHARED.FORPNT.PutNext
lda A2osX.NumStrBuf+1 lda A2osX.NumStrBuf+1
jmp SHARED.PutCharPtr1 jmp SHARED.FORPNT.PutNext
*-------------------------------------- *--------------------------------------
K.StrFTime.DAY >PSTR "???" TIMEX.DAY >PSTR "???"
>PSTR "Monday" >PSTR "Monday"
>PSTR "Tuesday" >PSTR "Tuesday"
>PSTR "Wednesday" >PSTR "Wednesday"
@ -141,7 +153,7 @@ K.StrFTime.DAY >PSTR "???"
>PSTR "Saturday" >PSTR "Saturday"
>PSTR "Sunday" >PSTR "Sunday"
*-------------------------------------- *--------------------------------------
K.StrFTime.MON >PSTR "???" TIMEX.MON >PSTR "???"
>PSTR "January" >PSTR "January"
>PSTR "February" >PSTR "February"
>PSTR "March" >PSTR "March"
@ -155,16 +167,15 @@ K.StrFTime.MON >PSTR "???"
>PSTR "November" >PSTR "November"
>PSTR "December" >PSTR "December"
*-------------------------------------- *--------------------------------------
K.StrFTime.MDAY .DA #3,#0,#3,#2,#3,#2,#3,#3,#2,#3,#2,#3
*--------------------------------------
K.PTime2Time.I ldy #1 K.PTime2Time.I ldy #1
lda (TXTPTR),y Get Year jsr SHARED.TXTPTR.GetY Get Year
lsr C is high bit of month lsr C is high bit of month
ldy #S.Time.YEAR ldy #S.Time.YEAR
sta (FORPNT),y set year jsr SHARED.FORPNT.PutY set year
sta ARG32+3 for computing Century/WDAY later 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 pha save Day
ror ror
@ -173,11 +184,16 @@ K.PTime2Time.I ldy #1
lsr lsr
lsr lsr
ldy #S.Time.MONTH ldy #S.Time.MONTH
sta (FORPNT),y set month jsr SHARED.FORPNT.PutY set month
sta K.ComputeWDAY.1+1
pla get back day pla get back day
and #$1F and #$1F
iny 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 lda ARG32+3 get back year
cmp #69 if before 70 CC,if > 70, CS 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 rol get back C in bit 0
eor #1 toggle C eor #1 toggle C
adc #19 set date before 1970 -> 20xx 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 sta ARG32+2 for computing WDAY later
ldy #2 ldy #2
lda (TXTPTR),y Get Min jsr SHARED.TXTPTR.GetY Get Min
tax tax
iny iny
lda (TXTPTR),y Get Hour jsr SHARED.TXTPTR.GetY Get Hour
ldy #S.Time.HOUR ldy #S.Time.HOUR
sta (FORPNT),y set hour jsr SHARED.FORPNT.PutY set hour
iny iny
txa txa
sta (FORPNT),y set min jsr SHARED.FORPNT.PutY set min
iny iny
lda #0 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 * 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) K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7)
pha pha
lda #CENTURY0 lda #CENT0
sta ARG32 sta ARG32
lda #YEAR0 lda #YEAR0
sta ARG32+1 sta ARG32+1
@ -218,7 +235,7 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7)
cpy ARG32+2 cpy ARG32+2
bne .2 bne .2
cmp ARG32+3 cmp ARG32+3
beq .4 beq K.ComputeWDAY.1
.2 jsr TIMEX.IsLeap CS = Leap .2 jsr TIMEX.IsLeap CS = Leap
@ -238,16 +255,14 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7)
inc ARG32 inc ARG32
bra .1 bra .1
*-------------------------------------- *--------------------------------------
.4 ldy #S.Time.MONTH K.ComputeWDAY.1 ldx #$ff SELF MODIFIED : month
lda (FORPNT),y get month
tax
dex don't include actual month dex don't include actual month
beq .71 beq .71
.5 clc assume NO leap .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 ? bne .6 february ?
ldy ARG32+2 ldy ARG32+2
@ -255,7 +270,7 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7)
jsr TIMEX.IsLeap CS = Leap jsr TIMEX.IsLeap CS = Leap
.6 pla .6 pla
adc K.StrFTime.MDAY-1,x adc TIMEX.MDAY-1,x
cmp #7 cmp #7
bcc .7 bcc .7
@ -266,10 +281,9 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7)
bne .5 bne .5
.71 pla .71 pla
ldy #S.Time.DAY
clc 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 .8 cmp #7 MOD 7
bcc .80 bcc .80
@ -278,10 +292,12 @@ K.ComputeWDAY lda #DAY0-1 Thursday : 4 (-1 for mod 7)
.80 inc adjust range 1..7 .80 inc adjust range 1..7
ldy #S.Time.WDAY ldy #S.Time.WDAY
sta (FORPNT),y jsr SHARED.FORPNT.PutY
clc clc
rts rts
*-------------------------------------- *--------------------------------------
TIMEX.MDAY .DA #3,#0,#3,#2,#3,#2,#3,#3,#2,#3,#2,#3
*--------------------------------------
K.CTime2Time.I ldy #3 K.CTime2Time.I ldy #3
.1 lda (ZPPtr1),y .1 lda (ZPPtr1),y
@ -316,7 +332,7 @@ K.CTime2Time.I ldy #3
tya tya
ldy #S.Time.WDAY ldy #S.Time.WDAY
sta (ZPPtr2),y sta (ZPPtr2),y
ldy #CENTURY0 ldy #CENT0
sty ZPPtr3 sty ZPPtr3
lda #YEAR0 lda #YEAR0
sta ZPPtr3+1 sta ZPPtr3+1

View File

@ -47,7 +47,6 @@ A2osX.AUX .DA #0
A2osX.AUX.B .PH $1000 A2osX.AUX.B .PH $1000
.INB USR/SRC/SYS/KERNEL.S.OSDX .INB USR/SRC/SYS/KERNEL.S.OSDX
.INB USR/SRC/SYS/KERNEL.S.SLISTX .INB USR/SRC/SYS/KERNEL.S.SLISTX
.INB USR/SRC/SYS/KERNEL.S.PWDX
Mem.XLoMem .EQ * Mem.XLoMem .EQ *
.EP .EP
A2osX.AUX.S .EQ *-A2osX.AUX.B A2osX.AUX.S .EQ *-A2osX.AUX.B
@ -56,8 +55,9 @@ A2osX.AUXH .DA #0
.DA A2osX.AUXH.S .DA A2osX.AUXH.S
A2osX.AUXH.B .PH Mem.XHiMem 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.MD5X
.INB USR/SRC/SYS/KERNEL.S.PWDX
.INB USR/SRC/SYS/KERNEL.S.TIMEX .INB USR/SRC/SYS/KERNEL.S.TIMEX
.EP .EP
A2osX.AUXH.S .EQ *-A2osX.AUXH.B 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.IRQ
.INB USR/SRC/SYS/KERNEL.S.MEM .INB USR/SRC/SYS/KERNEL.S.MEM
.INB USR/SRC/SYS/KERNEL.S.MATH .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.SHARED
.INB USR/SRC/SYS/KERNEL.S.STDIO2 .INB USR/SRC/SYS/KERNEL.S.STDIO2
.INB USR/SRC/SYS/KERNEL.S.PWD .INB USR/SRC/SYS/KERNEL.S.PWD
.INB USR/SRC/SYS/KERNEL.S.TIME .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.IO
.INB USR/SRC/SYS/KERNEL.S.PIPE .INB USR/SRC/SYS/KERNEL.S.PIPE
.INB USR/SRC/SYS/KERNEL.S.PFT .INB USR/SRC/SYS/KERNEL.S.PFT
********* TMP ***** go to A2osX.D2
DevMgr.Timer .BS 1 DevMgr.Timer .BS 1
DevMgr.ASCREEN .BS 1 DevMgr.ASCREEN .BS 1