; ; Colin Leroy-Mira, 2024 ; ; char* __fastcall__ asctime (const struct tm* timep) ; .export _asctime .import _strftime, pushax .importzp ptr1 .include "time.inc" .macpack cpu ; ------------------------------------------------------------------------ ; Special values ; We need to be able to store up to 38 bytes: ; 1234567890123456789012345678901234567 ; "Wednesday September ..1 00:00:00 1970" MAX_BUF_LEN = 38 ; ------------------------------------------------------------------------ ; Code _asctime: ; Backup timep .if (.cpu .bitand ::CPU_ISET_65SC02) pha phx .else sta ptr1 stx ptr1+1 .endif ; Push buf lda #buf jsr pushax ; Push sizeof(buf) lda #MAX_BUF_LEN jsr pushax ; Push format string lda #fmt jsr pushax ; Restore timep .if (.cpu .bitand ::CPU_ISET_65SC02) plx pla .else lda ptr1 ldx ptr1+1 .endif ; Call formatter jsr _strftime ; Check return status bne :+ cpx #$00 bne :+ rts : lda #buf rts .data fmt: .byte '%' .byte 'c' .byte $0A .byte $00 .bss buf: .res MAX_BUF_LEN