From dbdca1344426a42aa94a3857cc3e5d8d18f44abd Mon Sep 17 00:00:00 2001 From: rumbledethumps <16963588+rumbledethumps@users.noreply.github.com> Date: Fri, 5 Dec 2025 15:38:46 -0800 Subject: [PATCH] optimize and restore null test --- libsrc/common/localtime.s | 29 ++++++++++------------------- libsrc/rp6502/tzset_time.s | 5 +---- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/libsrc/common/localtime.s b/libsrc/common/localtime.s index bc64a19cd..aecea5996 100644 --- a/libsrc/common/localtime.s +++ b/libsrc/common/localtime.s @@ -10,23 +10,13 @@ .importzp sreg, ptr1 _localtime: -.if .cap(CPU_HAS_PUSHXY) - pha - phx - jsr _tzset_time - plx - pla -.else - pha - txa - pha - jsr _tzset_time - pla - tax - pla -.endif - jsr ldeaxi ; Load value + cpx #$00 ; Check for null pointer + bne :+ + cmp #$00 + beq no_pointer +: jsr ldeaxi ; Load value jsr pusheax ; Push it + jsr _tzset_time lda __tz+1+3 sta sreg+1 lda __tz+1+2 @@ -35,11 +25,12 @@ _localtime: lda __tz+1 jsr tosaddeax ; Add _tz.timezone jsr __time_t_to_tm ; Convert to struct tm - sta ptr1 ; Save returned tm pointer + sta ptr1 ; Returned tm pointer stx ptr1+1 ldy #16 lda __tz+0 ; Load _tz.daylight sta (ptr1),y ; Store to tm.tm_isdst - lda ptr1 ; Restore returned tm pointer - ldx ptr1+1 + lda ptr1 + +no_pointer: rts ; A/X already set diff --git a/libsrc/rp6502/tzset_time.s b/libsrc/rp6502/tzset_time.s index 60c1177d7..5bf1768a1 100644 --- a/libsrc/rp6502/tzset_time.s +++ b/libsrc/rp6502/tzset_time.s @@ -17,13 +17,10 @@ _tzset_time: - jsr pushax - jsr ldax0sp jsr ldeaxi jsr pusheax lda #CLOCK_REALTIME jsr pusha lda #<(__tz) ldx #>(__tz) - jsr _clock_gettimezone - jmp incsp2 + jmp _clock_gettimezone