Update from Oliver Schmidt
git-svn-id: svn://svn.cc65.org/cc65/trunk@3766 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 12.11.2002
|
||||
; Oliver Schmidt, 22.08.2006
|
||||
;
|
||||
; time_t _systime (void);
|
||||
; /* Similar to time(), but:
|
||||
@@ -9,13 +9,69 @@
|
||||
; */
|
||||
;
|
||||
|
||||
.export __systime
|
||||
.export __systime
|
||||
.import _mktime
|
||||
|
||||
.include "zeropage.inc"
|
||||
.include "zeropage.inc"
|
||||
.include "mli.inc"
|
||||
|
||||
.struct tm
|
||||
tm_sec .word
|
||||
tm_min .word
|
||||
tm_hour .word
|
||||
tm_mday .word
|
||||
tm_mon .word
|
||||
tm_year .word
|
||||
tm_wday .word
|
||||
tm_yday .word
|
||||
tm_isdst .word
|
||||
.endstruct
|
||||
|
||||
__systime:
|
||||
lda #$FF
|
||||
tax
|
||||
sta sreg
|
||||
sta sreg+1
|
||||
rts ; Return -1
|
||||
; Update time
|
||||
lda #GET_TIME_CALL
|
||||
ldx #GET_TIME_COUNT
|
||||
jsr callmli
|
||||
bcs err
|
||||
|
||||
lda DATELO+1
|
||||
lsr
|
||||
php ; Save month msb
|
||||
cmp #70 ; Year < 70?
|
||||
bcs :+ ; No, leave alone
|
||||
adc #100 ; Move 19xx to 20xx
|
||||
: sta TM + tm::tm_year
|
||||
lda DATELO
|
||||
tax ; Save day
|
||||
plp ; Restore month msb
|
||||
ror
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
beq err ; [1..12] allows for validity check
|
||||
tay
|
||||
dey ; Move [1..12] to [0..11]
|
||||
sty TM + tm::tm_mon
|
||||
txa ; Restore day
|
||||
and #%00011111
|
||||
sta TM + tm::tm_mday
|
||||
|
||||
lda TIMELO+1
|
||||
sta TM + tm::tm_hour
|
||||
lda TIMELO
|
||||
sta TM + tm::tm_min
|
||||
|
||||
lda #<TM
|
||||
ldx #>TM
|
||||
jmp _mktime
|
||||
|
||||
err: lda #$FF
|
||||
tax
|
||||
sta sreg
|
||||
sta sreg+1
|
||||
rts ; Return -1
|
||||
|
||||
.bss
|
||||
|
||||
TM: .tag tm
|
||||
Reference in New Issue
Block a user