optimize and restore null test

This commit is contained in:
rumbledethumps
2025-12-05 15:38:46 -08:00
parent 71f2ffbffc
commit dbdca13444
2 changed files with 11 additions and 23 deletions

View File

@@ -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

View File

@@ -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