mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-09 14:55:05 +00:00
Time API : Work In Progress,used in SHELL For Testing
Kernel : Dual Bank implemented
This commit is contained in:
parent
af6d616a9b
commit
6fea4ec153
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -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
|
||||||
@ -331,7 +337,6 @@ S.StrFTime >PULLW ZPQuickPtr1
|
|||||||
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"
|
||||||
|
Loading…
Reference in New Issue
Block a user