mirror of
https://github.com/A2osX/A2osX.git
synced 2025-03-19 07:29:38 +00:00
Kernel 0.93++
This commit is contained in:
parent
8244429491
commit
a40a5660b8
Binary file not shown.
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user