optimize and restore null test
This commit is contained in:
@@ -10,23 +10,13 @@
|
|||||||
.importzp sreg, ptr1
|
.importzp sreg, ptr1
|
||||||
|
|
||||||
_localtime:
|
_localtime:
|
||||||
.if .cap(CPU_HAS_PUSHXY)
|
cpx #$00 ; Check for null pointer
|
||||||
pha
|
bne :+
|
||||||
phx
|
cmp #$00
|
||||||
jsr _tzset_time
|
beq no_pointer
|
||||||
plx
|
: jsr ldeaxi ; Load value
|
||||||
pla
|
|
||||||
.else
|
|
||||||
pha
|
|
||||||
txa
|
|
||||||
pha
|
|
||||||
jsr _tzset_time
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
pla
|
|
||||||
.endif
|
|
||||||
jsr ldeaxi ; Load value
|
|
||||||
jsr pusheax ; Push it
|
jsr pusheax ; Push it
|
||||||
|
jsr _tzset_time
|
||||||
lda __tz+1+3
|
lda __tz+1+3
|
||||||
sta sreg+1
|
sta sreg+1
|
||||||
lda __tz+1+2
|
lda __tz+1+2
|
||||||
@@ -35,11 +25,12 @@ _localtime:
|
|||||||
lda __tz+1
|
lda __tz+1
|
||||||
jsr tosaddeax ; Add _tz.timezone
|
jsr tosaddeax ; Add _tz.timezone
|
||||||
jsr __time_t_to_tm ; Convert to struct tm
|
jsr __time_t_to_tm ; Convert to struct tm
|
||||||
sta ptr1 ; Save returned tm pointer
|
sta ptr1 ; Returned tm pointer
|
||||||
stx ptr1+1
|
stx ptr1+1
|
||||||
ldy #16
|
ldy #16
|
||||||
lda __tz+0 ; Load _tz.daylight
|
lda __tz+0 ; Load _tz.daylight
|
||||||
sta (ptr1),y ; Store to tm.tm_isdst
|
sta (ptr1),y ; Store to tm.tm_isdst
|
||||||
lda ptr1 ; Restore returned tm pointer
|
lda ptr1
|
||||||
ldx ptr1+1
|
|
||||||
|
no_pointer:
|
||||||
rts ; A/X already set
|
rts ; A/X already set
|
||||||
|
|||||||
@@ -17,13 +17,10 @@
|
|||||||
|
|
||||||
|
|
||||||
_tzset_time:
|
_tzset_time:
|
||||||
jsr pushax
|
|
||||||
jsr ldax0sp
|
|
||||||
jsr ldeaxi
|
jsr ldeaxi
|
||||||
jsr pusheax
|
jsr pusheax
|
||||||
lda #CLOCK_REALTIME
|
lda #CLOCK_REALTIME
|
||||||
jsr pusha
|
jsr pusha
|
||||||
lda #<(__tz)
|
lda #<(__tz)
|
||||||
ldx #>(__tz)
|
ldx #>(__tz)
|
||||||
jsr _clock_gettimezone
|
jmp _clock_gettimezone
|
||||||
jmp incsp2
|
|
||||||
|
|||||||
Reference in New Issue
Block a user