This commit is contained in:
rumbledethumps
2025-12-06 11:38:27 -08:00
parent 18f084eafb
commit 328f7e6a43
7 changed files with 51 additions and 59 deletions

View File

@@ -1,17 +0,0 @@
#include <rp6502.h>
#include <time.h>
int clock_gettimezone (time_t time, clockid_t clock_id, struct _timezone* tz)
{
int ax;
ria_set_ax (clock_id);
ria_push_long (time);
ax = ria_call_int (RIA_OP_CLOCK_GETTIMEZONE);
if (ax >= 0) {
char i;
for (i = 0; i < sizeof (struct _timezone); i++) {
((char*)tz)[i] = ria_pop_char ();
}
}
return ax;
}

12
libsrc/rp6502/localtime.s Normal file
View File

@@ -0,0 +1,12 @@
;
; struct tm* __fastcall__ localtime (const time_t* timep);
;
.export _localtime
.import __localtime
;--------------------------------------------------------------------------
_localtime = __localtime

View File

@@ -0,0 +1,31 @@
#include <rp6502.h>
#include <time.h>
#include <stdbool.h>
static bool tzset_set = false;
struct tm* __fastcall__ _time_t_to_tm (const time_t t);
struct tm* __fastcall__ _localtime (const time_t* timep)
{
long time = *timep;
struct tm* tm;
ria_set_axsreg (*timep);
time += ria_call_long (RIA_OP_TZQUERY);
tm = _time_t_to_tm (time);
tm->tm_isdst = ria_pop_char ();
if (!tzset_set) { tzset (); }
return tm;
}
void tzset (void)
{
int ax = ria_call_int (RIA_OP_TZSET);
if (ax >= 0) {
char i;
for (i = 0; i < sizeof (struct _timezone); i++) {
((char*)&_tz)[i] = ria_pop_char ();
}
tzset_set = true;
}
}

View File

@@ -1,26 +0,0 @@
; tzset_time.s
;
; This file is part of
; cc65 - a freeware C compiler for 6502 based systems
;
; https://cc65.github.io
;
; See "LICENSE" file for legal information.
;
; void __fastcall__ tzset_time (time_t* time);
;
.export _tzset_time
.import _clock_gettimezone, __tz
.import pushax, ldax0sp, ldeaxi, pusheax, pusha, incsp2
.include "time.inc"
_tzset_time:
jsr ldeaxi
jsr pusheax
lda #CLOCK_REALTIME
jsr pusha
lda #<(__tz)
ldx #>(__tz)
jmp _clock_gettimezone