Time API : Work In Progress,used in SHELL For Testing

Kernel : Dual Bank implemented
This commit is contained in:
Rémy GIBERT 2016-09-05 18:00:11 +02:00
parent af6d616a9b
commit 6fea4ec153
9 changed files with 245 additions and 206 deletions

View File

@ -110,7 +110,6 @@ MemMgr.XHiMem .EQ $C000
A2osX.SYSCALL .EQ $BE00 A2osX.SYSCALL .EQ $BE00
A2osX.LIBCALL .EQ $BE03 A2osX.LIBCALL .EQ $BE03
A2osX.MLICALL .EQ $BE06 A2osX.MLICALL .EQ $BE06
A2osX.ROMCALL .EQ $BE09
*-------------------------------------- *--------------------------------------
pCodeJmp .EQ $BE10 pCodeJmp .EQ $BE10
pLibJmp .EQ $BE13 pLibJmp .EQ $BE13
@ -173,6 +172,11 @@ SYS.PStr2StrArrayYA .EQ $1A
SYS.LoadDrvYA .EQ $20 SYS.LoadDrvYA .EQ $20
SYS.LoadLibYA .EQ $22 SYS.LoadLibYA .EQ $22
SYS.UnloadLibA .EQ $24 SYS.UnloadLibA .EQ $24
SYS.TimeYA .EQ $28
SYS.CTime2Time .EQ $2A
SYS.PTime2Time .EQ $2C
SYS.StrFTime .EQ $2E
*-------------------------------------- *--------------------------------------
SYS.ExpandPStrYA .EQ $32 SYS.ExpandPStrYA .EQ $32
@ -290,9 +294,9 @@ SYS.FEOF .EQ $EE
SYS.REMOVE .EQ $F0 SYS.REMOVE .EQ $F0
SYS.RENAME .EQ $F2 SYS.RENAME .EQ $F2
SYS.OPENDIRYA .EQ $F4 SYS.OPENDIRYA .EQ $F4
SYS.READDIRYA .EQ $F6 SYS.READDIRA .EQ $F6
SYS.CLOSEDIRYA .EQ $F8 SYS.CLOSEDIRA .EQ $F8
SYS.MKDIRYA .EQ $FA SYS.MKDIRYA .EQ $FA
SYS.MKNOD .EQ $FC SYS.MKNOD .EQ $FC
SYS.MKFIFO .EQ $FE SYS.MKFIFO .EQ $FE

View File

@ -25,7 +25,7 @@ SET80DISP .EQ $C00D W
CLRALTCHAR .EQ $C00E W CLRALTCHAR .EQ $C00E W
SETALTCHAR .EQ $C00F W SETALTCHAR .EQ $C00F W
KBDSTROBE .EQ $C010 W KBDSTROBE .EQ $C010 W
RDBNK2 .EQ $C011 R RDLCBNK2 .EQ $C011 R
RDLCRAM .EQ $C012 R RDLCRAM .EQ $C012 R
RDREADAUX .EQ $C013 R RDREADAUX .EQ $C013 R
RDWRITEAUX .EQ $C014 R RDWRITEAUX .EQ $C014 R
@ -91,5 +91,7 @@ RRAMBNK1 .EQ $C088 R
RROMWRAMBNK1 .EQ $C089 RR RROMWRAMBNK1 .EQ $C089 RR
RROMBNK1 .EQ $C08A R RROMBNK1 .EQ $C08A R
RRAMWRAMBNK1 .EQ $C08B RR RRAMWRAMBNK1 .EQ $C08B RR
*--------------------------------------
CLRC8ROM .EQ $CFFF R, Release C800-CFFF Rom Space for all cards
MAN MAN
SAVE INC/IO.I SAVE INC/IO.I

View File

@ -365,22 +365,37 @@ Cmd.Exec.SETVAR tax
>SYSCALL SYS.COutA >SYSCALL SYS.COutA
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
Cmd.Exec.DATE >SYSCALL SYS.MLIGetTime Cmd.Exec.DATE >LDYA L.TIME
>SYSCALL SYS.TimeYA
>PUSHWI TmpBuffer256
>PUSHW L.FMT.DATE
>PUSHW L.TIME
>SYSCALL SYS.StrFTime
>LDYAI TmpBuffer256
>SYSCALL SYS.PSTROutYA
bcs .9 bcs .9
>PUSHW DATELO
>LIBCALL hLIBSTR,LIBSTR.PRINTDATE
lda #13 lda #13
>SYSCALL SYS.COutA >SYSCALL SYS.COutA
clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
Cmd.Exec.TIME >SYSCALL SYS.MLIGetTime Cmd.Exec.TIME >LDYA L.TIME
>SYSCALL SYS.TimeYA
>PUSHWI TmpBuffer256
>PUSHW L.FMT.TIME
>PUSHW L.TIME
>SYSCALL SYS.StrFTime
>LDYAI TmpBuffer256
>SYSCALL SYS.PSTROutYA
bcs .9 bcs .9
>PUSHW TIMELO
>LIBCALL hLIBSTR,LIBSTR.PRINTTIME
lda #13 lda #13
>SYSCALL SYS.COutA >SYSCALL SYS.COutA
clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
Cmd.Exec.ECHO lda ARGS Cmd.Exec.ECHO lda ARGS

View File

@ -38,12 +38,14 @@ CS.START cld
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
*-------------------------------------- *--------------------------------------
L.LIBSTR .DA LIBSTR
L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.GREETINGS .DA MSG.GREETINGS
L.MSG.ERROR .DA MSG.ERROR L.MSG.ERROR .DA MSG.ERROR
L.ENV.PATH .DA ENV.PATH L.ENV.PATH .DA ENV.PATH
L.CMD .DA CMD L.CMD .DA CMD
L.ARGS .DA ARGS L.ARGS .DA ARGS
L.TIME .DA TIME
L.FMT.DATE .DA FMT.DATE
L.FMT.TIME .DA FMT.TIME
L.CMDS .DA CMDS L.CMDS .DA CMDS
J.INTCMDS .DA Cmd.Exec.CD J.INTCMDS .DA Cmd.Exec.CD
.DA Cmd.Exec.DATE .DA Cmd.Exec.DATE
@ -57,11 +59,7 @@ J.INTCMDS .DA Cmd.Exec.CD
.DA Cmd.Exec.TYPE .DA Cmd.Exec.TYPE
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >SYSCALL SYS.GetArgC
>SYSCALL SYS.LoadLibYA
bcs .9
sta hLIBSTR
>SYSCALL SYS.GetArgC
cmp #1 cmp #1
beq CS.INIT.INTERACTIVE no arg, continue starting interactive beq CS.INIT.INTERACTIVE no arg, continue starting interactive
@ -321,12 +319,8 @@ CS.QUIT jsr HIS.Quit
.1 ldy #hInputBuffer .1 ldy #hInputBuffer
lda (pData),y lda (pData),y
beq .2
>SYSCALL SYS.FreeMemA
.2 lda hLIBSTR
beq .8 beq .8
>SYSCALL SYS.UnloadLibA >SYSCALL SYS.FreeMemA
.8 clc .8 clc
rts rts
@ -442,14 +436,15 @@ CMDS >PSTRING "CD"
>PSTRING "TYPE" >PSTRING "TYPE"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
LIBSTR >PSTRING "libstr.o"
MSG.GREETINGS >PSTRING "\nA2osX-Shell on Dev=%h\n\n" MSG.GREETINGS >PSTRING "\nA2osX-Shell on Dev=%h\n\n"
MSG.ERROR >PSTRING "[%h]\n" MSG.ERROR >PSTRING "[%h]\n"
FMT.DATE >PSTRING "%Y/%m/%d"
FMT.TIME >PSTRING "%H:%M:%S"
EscChars >PSTRING "DBAC" EscChars >PSTRING "DBAC"
EscAscii .HS 04080A0B15 EscAscii .HS 04080A0B15
CMD .BS 256 CMD .BS 256
ARGS .BS 256 ARGS .BS 256
hLIBSTR .BS 1 TIME .BS S.TIME
hNEWPATH .BS 1 hNEWPATH .BS 1
hCmdLine .BS 1 hCmdLine .BS 1
Cmd.Exec.Mode .BS 1 Cmd.Exec.Mode .BS 1

View File

@ -257,6 +257,17 @@ S.CLOSEDIRA.1 ldy #S.DIR.PRODOS.REF
clc clc
rts rts
*-------------------------------------- *--------------------------------------
S.MKDIRYA jsr S.PFTCHECKPATHYA
>STYA MLICALL.PARAMS+1
lda #$C3
sta MLICALL.PARAMS+3 Access
lda #$0F
sta MLICALL.PARAMS+4 type=Directory
lda #$0D Storage=Linked List
sta MLICALL.PARAMS+7
>MLICALL MLICREATE
rts
*--------------------------------------
hONLINE .BS 1 hONLINE .BS 1
hDIRENT .BS 1 hDIRENT .BS 1
BufSize .BS 2 BufSize .BS 2

View File

@ -293,17 +293,6 @@ S.RENAME jsr S.PFTCHECKPATHYA
>MLICALL MLIRENAME >MLICALL MLIRENAME
rts rts
*-------------------------------------- *--------------------------------------
S.MKDIRYA jsr S.PFTCHECKPATHYA
>STYA MLICALL.PARAMS+1
lda #$C3
sta MLICALL.PARAMS+3 Access
lda #$0F
sta MLICALL.PARAMS+4 type=Directory
lda #$0D Storage=Linked List
sta MLICALL.PARAMS+7
>MLICALL MLICREATE
rts
*--------------------------------------
FIL.SetupPrt1A jsr S.GetMemPtrA FIL.SetupPrt1A jsr S.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPQuickPtr1
ldy #S.FILE.PRODOS.REF ldy #S.FILE.PRODOS.REF

View File

@ -27,9 +27,6 @@ A2osX.GP.Start jmp A2osX.SYSCALL1
*-------------------------------------- *--------------------------------------
jmp A2osX.MLICALL1 jmp A2osX.MLICALL1
*-------------------------------------- *--------------------------------------
jmp A2osX.ROMCALL1
*--------------------------------------
jmp BrkHandler
.BS $BE10-* .BS $BE10-*
*-------------------------------------- *--------------------------------------
jmp (pCode) pCodeJmp jmp (pCode) pCodeJmp
@ -41,13 +38,15 @@ A2osX.GP.Start jmp A2osX.SYSCALL1
GO.Reset jsr GO.AUXLC GO.Reset jsr GO.AUXLC
jmp S.KernelRun jmp S.KernelRun
*-------------------------------------- *--------------------------------------
A2osX.SYSCALL1 bit KERNEL.SYSCALL.FLAGS,x A2osX.SYSCALL1 phx
bit KERNEL.SYSCALL.FLAGS,x
bmi .2 bmi .2
bit RRAMWRAMBNK1 ldx #RRAMWRAMBNK1
bit RRAMWRAMBNK1 .HS 2C
jmp (KERNEL.SYSCALL,x) .2 ldx #RRAMWRAMBNK2
.2 bit RRAMWRAMBNK2 bit $C000,x
bit RRAMWRAMBNK2 bit $C000,x
plx
jmp (KERNEL.SYSCALL,x) jmp (KERNEL.SYSCALL,x)
*-------------------------------------- *--------------------------------------
A2osX.LIBCALL1 pha A2osX.LIBCALL1 pha
@ -68,51 +67,57 @@ A2osX.MLICALL1 jsr GO.MAINLC
jsr GO.AUXLC jsr GO.AUXLC
rts rts
*-------------------------------------- *--------------------------------------
A2osX.ROMCALL1 plx GO.MAINLC asl RDLCBNK2 We re coming from AUXLC, saving bank...
stx .1+1 ror A2osX.SaveLCBNK
plx
stx .1+2 php
ldx RROMBNK1
jsr .1
ldx RRAMWRAMBNK1
ldx RRAMWRAMBNK1
rts
.1 jmp $FFFF
*--------------------------------------
GO.MAINLC php
clc clc
.HS 2C bit abs .HS 2C bit abs
GO.AUXLC php GO.AUXLC php
sec sec
sei sei
sta A2osX.SaveA sta A2osX.SaveA
pla keep P in A for later
stx A2osX.SaveX stx A2osX.SaveX
sty A2osX.SaveY sty A2osX.SaveY
plx
pla Restore P in A for later
plx Get PC and add 1 for return
ply ply
inx inx
bne .1 bne .1
iny iny
.1 stx GO.EXIT.JMP+1 .1 stx GO.EXIT.JMP+1
sty GO.EXIT.JMP+2 sty GO.EXIT.JMP+2
ldx RRAMWRAMBNK1
ldx RRAMWRAMBNK1
ldy pStack ldy pStack
bcs GO.AUXLC1
GO.MAINLC1 tsx bcs .2 if CS, go AUXLC
bit RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
bit RRAMWRAMBNK1
tsx
stx A2osX.SaveSX stx A2osX.SaveSX
ldx A2osX.SaveSM ldx A2osX.SaveSM
txs txs
stx CLRALTZP sta CLRALTZP
bra GO.EXIT bra GO.EXIT
*--------------------------------------
GO.AUXLC1 stx SETALTZP .2 bit A2osX.SaveLCBNK Go AUXLC....Previous Go MAINLC Coming from BNK2 ?
bmi .3
ldx #RRAMWRAMBNK1
.HS 2C bit abs
.3 ldx #RRAMWRAMBNK2
bit $C000,x
bit $C000,x
sta SETALTZP
tsx tsx
stx A2osX.SaveSM stx A2osX.SaveSM
ldx A2osX.SaveSX ldx A2osX.SaveSX
@ -126,6 +131,7 @@ GO.EXIT sty pStack
plp plp
GO.EXIT.JMP jmp $FFFF GO.EXIT.JMP jmp $FFFF
*-------------------------------------- *--------------------------------------
A2osX.SaveLCBNK .BS 1
A2osX.SaveA .BS 1 A2osX.SaveA .BS 1
A2osX.SaveX .BS 1 A2osX.SaveX .BS 1
A2osX.SaveY .BS 1 A2osX.SaveY .BS 1
@ -141,8 +147,6 @@ A2osX.GP.End .EQ *
.DO A2osX.GP.End>$BEDF .DO A2osX.GP.End>$BEDF
ERROR:GP too big ERROR:GP too big
.FIN .FIN
*--------------------------------------
.BS A2osX.GP.START+$100-*
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE SYS/KERNEL.S.GP SAVE SYS/KERNEL.S.GP

View File

@ -29,10 +29,10 @@ KERNEL.SYSCALL .DA S.GetMem $00
.DA S.LoadLibYA .DA S.LoadLibYA
.DA S.UnloadLibA .DA S.UnloadLibA
.DA 0 .DA 0
.DA 0 .DA S.TimeYA
.DA 0 .DA S.CTime2Time
.DA 0 .DA S.PTime2Time
.DA 0 .DA S.StrFTime
*-------------------------------------- *--------------------------------------
.DA 0 $30 .DA 0 $30
.DA S.ExpandPStrYA .DA S.ExpandPStrYA
@ -133,21 +133,21 @@ KERNEL.SYSCALL .DA S.GetMem $00
.DA S.DecOutA .DA S.DecOutA
.DA S.DecOutYA .DA S.DecOutYA
*-------------------------------------- *--------------------------------------
.DA 0 $E0 .DA S.FOPEN $E0
.DA 0 .DA S.FCLOSEA
.DA 0 .DA S.FREAD
.DA 0 .DA S.FWRITE
.DA 0 .DA S.FFLUSHA
.DA 0 .DA S.FSEEK
.DA 0 .DA S.FTELLA
.DA 0 .DA S.FEOFA
*-------------------------------------- *--------------------------------------
.DA 0 $F0 .DA S.REMOVEYA $F0
.DA 0 .DA S.RENAME
.DA 0 .DA S.OPENDIRYA
.DA 0 .DA S.READDIRA
.DA 0 .DA S.CLOSEDIRA
.DA 0 .DA S.MKDIRYA
.DA 0 .DA 0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------

View File

@ -12,6 +12,75 @@ CENTURY0 .EQ 19
YEAR0 .EQ 70 YEAR0 .EQ 70
DAY0 .EQ 4 day 0 was a thursday DAY0 .EQ 4 day 0 was a thursday
*-------------------------------------- *--------------------------------------
* S.TimeYA get System Time
* In :
* Y,A = PTR to S.TIME
* Out :
* S.TIME filled with ProDOS MLI date/time
*--------------------------------------
S.TimeYA >STYA ZPQuickPtr2
>MLICALL MLIGETTIME
>LDYAI DATELO
>STYA ZPQuickPtr1
bra S.PTime2Time.1
*--------------------------------------
* In :
* PULLW = Src PDATE/TIME (DWORD)
* PULLW = Dst PTR To S.TIME
*--------------------------------------
S.PTime2Time >PULLW ZPQuickPtr1
>PULLW ZPQuickPtr2
S.PTime2Time.1 lda (ZPQuickPtr1) Get Year
lsr C is high bit of month
ldy #S.TIME.YEAR
sta (ZPQuickPtr2),y set year
pha save it for century adjust
ldy #1
lda (ZPQuickPtr1),y Get Month/day
pha save Day
ror
lsr
lsr
lsr
lsr
ldy #S.TIME.MONTH
sta (ZPQuickPtr2),y set month
pla get back day
and #$1F
iny
sta (ZPQuickPtr2),y set day
pla get back year
cmp #70 if before 70's CC
lda #19
adc #0 set date before 1970 -> 20xx
sta (ZPQuickPtr2) set Century
ldy #3
lda (ZPQuickPtr1),y Get Min
tax
dey
lda (ZPQuickPtr1),y Get Hour
ldy #S.TIME.HOUR
sta (ZPQuickPtr2),y set hour
iny
txa
sta (ZPQuickPtr2),y set min
iny
lda #0
sta (ZPQuickPtr2),y set seconds (ProDOS does not provide it)
S.ComputeWDAY
clc
rts
*--------------------------------------
* S.CTime2Time * S.CTime2Time
* In : * In :
* PULLW = Src CTIME DWORD * PULLW = Src CTIME DWORD
@ -201,75 +270,6 @@ S.CTime.Mod .BS 1
S.CTime.Century .BS 1 S.CTime.Century .BS 1
S.CTime.Year .BS 1 S.CTime.Year .BS 1
*-------------------------------------- *--------------------------------------
* S.TimeYA get System Time
* In :
* Y,A = PTR to S.TIME
* Out :
* S.TIME filled with ProDOS MLI date/time
*--------------------------------------
S.TimeYA >STYA ZPQuickPtr2
>MLICALL MLIGETTIME
>LDYAI DATELO
>STYA ZPQuickPtr1
bra S.PTime2Time.1
*--------------------------------------
* In :
* PULLW = Src PDATE/TIME (DWORD)
* PULLW = Dst PTR To S.TIME
*--------------------------------------
S.PTime2Time >PULLW ZPQuickPtr1
>PULLW ZPQuickPtr2
S.PTime2Time.1 lda (ZPQuickPtr1) Get Year
lsr C is high bit of month
ldy #S.TIME.YEAR
sta (ZPQuickPtr2),y set year
pla save it for century adjust
ldy #1
lda (ZPQuickPtr1),y Get Month/day
pha save Day
ror
lsr
lsr
lsr
lsr
ldy #S.TIME.MONTH
sta (ZPQuickPtr2),y set month
pla get back day
and #$1F
iny
sta (ZPQuickPtr2),y set day
pla get back year
cmp #70 if before 70's CC
lda #19
adc #0 set date before 1970 -> 20xx
sta (ZPQuickPtr2) set Century
ldy #3
lda (ZPQuickPtr1),y Get Min
tax
dey
lda (ZPQuickPtr1),y Get Hour
ldy #S.TIME.HOUR
sta (ZPQuickPtr2),y set hour
iny
txa
sta (ZPQuickPtr2),y set min
iny
lda #0
sta (ZPQuickPtr2),y set seconds (ProDOS does not provide it)
S.ComputeWDAY
clc
rts
*--------------------------------------
* S.StrFTime * S.StrFTime
* In : * In :
* PULLW = Src PTR To S.TIME * PULLW = Src PTR To S.TIME
@ -293,15 +293,21 @@ S.ComputeWDAY
*-------------------------------------- *--------------------------------------
S.StrFTime >PULLW ZPQuickPtr1 S.StrFTime >PULLW ZPQuickPtr1
>PULLW ZPQuickPtr2 >PULLW ZPQuickPtr2
>PULLW S.StrFTime.addChar+1 >PULLW ZPQuickPtr3
ldy #0 lda #0
sta (ZPQuickPtr3) Reset target PSTR length
tay
.1 iny .1 iny
lda (ZPQuickPtr2),y lda (ZPQuickPtr2),y
cmp #'%' cmp #'%'
beq .2 beq .2
phy
jsr S.StrFTime.addChar jsr S.StrFTime.addChar
ply
.10 tya .10 tya
cmp (ZPQuickPtr2) cmp (ZPQuickPtr2)
bne .1 bne .1
@ -312,7 +318,7 @@ S.StrFTime >PULLW ZPQuickPtr1
beq .8 beq .8
iny iny
ldx #S.StrFTime.jmp-S.StrFTime.Table ldx #S.StrFTime.JMPL-S.StrFTime.Table
.3 lda (ZPQuickPtr2),y .3 lda (ZPQuickPtr2),y
cmp S.StrFTime.Table-1,x cmp S.StrFTime.Table-1,x
@ -330,8 +336,7 @@ S.StrFTime >PULLW ZPQuickPtr1
ply ply
bra .10 bra .10
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
S.StrFTime.A S.StrFTime.A
S.StrFTime.AA S.StrFTime.AA
@ -341,27 +346,33 @@ S.StrFTime.D ldy #S.TIME.DAY
bra S.StrFTime.addDecPtr1Y bra S.StrFTime.addDecPtr1Y
S.StrFTime.HH ldy #S.TIME.HOUR S.StrFTime.HH ldy #S.TIME.HOUR
bra S.StrFTime.addDecPtr1Y bra S.StrFTime.addDecPtr1Y
S.StrFTime.II S.StrFTime.II ldy #S.TIME.HOUR
lda (ZPQuickPtr1),y
cmp #12
bcc .1
sbc #12
.1 bra S.StrFTime.addDecA
S.StrFTime.M ldy #S.TIME.MONTH S.StrFTime.M ldy #S.TIME.MONTH
bra S.StrFTime.addDecPtr1Y bra S.StrFTime.addDecPtr1Y
S.StrFTime.MM ldy #S.TIME.MINUTE S.StrFTime.MM ldy #S.TIME.MINUTE
bra S.StrFTime.addDecPtr1Y bra S.StrFTime.addDecPtr1Y
S.StrFTime.P S.StrFTime.P ldy #S.TIME.HOUR
lda (ZPQuickPtr1),y
cmp #12
bcc .1
lda #'p'
.HS 2C bit abs
.1 lda #'a'
jsr S.StrFTime.addChar
lda #'m'
bra S.StrFTime.addChar
S.StrFTime.SS ldy #S.TIME.SECOND S.StrFTime.SS ldy #S.TIME.SECOND
bra S.StrFTime.addDecPtr1Y bra S.StrFTime.addDecPtr1Y
S.StrFTime.W S.StrFTime.W ldy #S.TIME.WDAY
bra S.StrFTime.addDecPtr1Y
S.StrFTime.YY ldy #S.TIME.CENTURY S.StrFTime.YY ldy #S.TIME.CENTURY
jsr S.StrFTime.addDecPtr1Y jsr S.StrFTime.addDecPtr1Y
S.StrFTime.Y ldy #S.TIME.YEAR S.StrFTime.Y ldy #S.TIME.YEAR
bra S.StrFTime.addDecPtr1Y
*-------------------------------------- *--------------------------------------
S.StrFTime.addDecPtr1Y S.StrFTime.addDecPtr1Y
lda (ZPQuickPtr1),y lda (ZPQuickPtr1),y
@ -376,42 +387,47 @@ S.StrFTime.addDecA
pla pla
and #$0f and #$0f
ora #$30 ora #$30
*--------------------------------------
S.StrFTime.addChar S.StrFTime.addChar
sta $ffff pha
inc S.StrFTime.addChar+1 lda (ZPQuickPtr3)
bne .1 inc
inc S.StrFTime.addChar+2 sta (ZPQuickPtr3)
.1 rts tay
pla
sta (ZPQuickPtr3),y
rts
*-------------------------------------- *--------------------------------------
S.StrFTime.Table .AS "aAbBdHImMpSwyY" S.StrFTime.Table .AS "aAbBdHImMpSwyY"
S.StrFTime.JMPL .HS #S.StrFTime.A S.StrFTime.JMPL .DA #S.StrFTime.A
.HS #S.StrFTime.AA .DA #S.StrFTime.AA
.HS #S.StrFTime.B .DA #S.StrFTime.B
.HS #S.StrFTime.BB .DA #S.StrFTime.BB
.HS #S.StrFTime.D .DA #S.StrFTime.D
.HS #S.StrFTime.HH .DA #S.StrFTime.HH
.HS #S.StrFTime.II .DA #S.StrFTime.II
.HS #S.StrFTime.M .DA #S.StrFTime.M
.HS #S.StrFTime.MM .DA #S.StrFTime.MM
.HS #S.StrFTime.P .DA #S.StrFTime.P
.HS #S.StrFTime.SS .DA #S.StrFTime.SS
.HS #S.StrFTime.W .DA #S.StrFTime.W
.HS #S.StrFTime.Y .DA #S.StrFTime.Y
.HS #S.StrFTime.YY .DA #S.StrFTime.YY
S.StrFTime.JMPH .HS /S.StrFTime.A *--------------------------------------
.HS /S.StrFTime.AA S.StrFTime.JMPH .DA /S.StrFTime.A
.HS /S.StrFTime.B .DA /S.StrFTime.AA
.HS /S.StrFTime.BB .DA /S.StrFTime.B
.HS /S.StrFTime.D .DA /S.StrFTime.BB
.HS /S.StrFTime.HH .DA /S.StrFTime.D
.HS /S.StrFTime.II .DA /S.StrFTime.HH
.HS /S.StrFTime.M .DA /S.StrFTime.II
.HS /S.StrFTime.MM .DA /S.StrFTime.M
.HS /S.StrFTime.P .DA /S.StrFTime.MM
.HS /S.StrFTime.SS .DA /S.StrFTime.P
.HS /S.StrFTime.W .DA /S.StrFTime.SS
.HS /S.StrFTime.Y .DA /S.StrFTime.W
.HS /S.StrFTime.YY .DA /S.StrFTime.Y
.DA /S.StrFTime.YY
*-------------------------------------- *--------------------------------------
S.StrFTime.SDAY >PSTRING "Mon" S.StrFTime.SDAY >PSTRING "Mon"
>PSTRING "Tue" >PSTRING "Tue"
@ -420,6 +436,7 @@ S.StrFTime.SDAY >PSTRING "Mon"
>PSTRING "Fri" >PSTRING "Fri"
>PSTRING "Sat" >PSTRING "Sat"
>PSTRING "Sun" >PSTRING "Sun"
*--------------------------------------
S.StrFTime.LDAY >PSTRING "Monday" S.StrFTime.LDAY >PSTRING "Monday"
>PSTRING "Tuesday" >PSTRING "Tuesday"
>PSTRING "Wednesday" >PSTRING "Wednesday"
@ -427,6 +444,7 @@ S.StrFTime.LDAY >PSTRING "Monday"
>PSTRING "Friday" >PSTRING "Friday"
>PSTRING "Saturday" >PSTRING "Saturday"
>PSTRING "Sunday" >PSTRING "Sunday"
*--------------------------------------
S.StrFTime.SMON >PSTRING "Jan" S.StrFTime.SMON >PSTRING "Jan"
>PSTRING "Feb" >PSTRING "Feb"
>PSTRING "Mar" >PSTRING "Mar"
@ -439,6 +457,7 @@ S.StrFTime.SMON >PSTRING "Jan"
>PSTRING "Oct" >PSTRING "Oct"
>PSTRING "Nov" >PSTRING "Nov"
>PSTRING "Dec" >PSTRING "Dec"
*--------------------------------------
S.StrFTime.LMON >PSTRING "January" S.StrFTime.LMON >PSTRING "January"
>PSTRING "February" >PSTRING "February"
>PSTRING "March" >PSTRING "March"