From: cuz Date: Tue, 12 Nov 2002 22:36:02 +0000 (+0000) Subject: Call _systime instead of always returning -1 X-Git-Tag: V2.12.0~2123 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=de7bb15dee4e0adb7d3b6841f4c1d24bbe7956f8;p=cc65 Call _systime instead of always returning -1 git-svn-id: svn://svn.cc65.org/cc65/trunk@1509 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/libsrc/common/time.s b/libsrc/common/time.s index 2ee3c04d2..1f032ec31 100644 --- a/libsrc/common/time.s +++ b/libsrc/common/time.s @@ -1,13 +1,14 @@ ; ; Ullrich von Bassewitz, 12.11.2002 ; -; time_t __fastcall__ time (time_t* t); +; time_t __fastcall__ time (time_t* timep); ; .export _time + .import __systime .import __errno - .importzp ptr1, sreg + .importzp ptr1, sreg, tmp1 .include "errno.inc" @@ -16,28 +17,51 @@ .proc _time - sta ptr1 - stx ptr1+1 ; t + pha + txa + pha ; Save timep + + jsr __systime ; Get the time (machine dependent) + + sta tmp1 ; Save low byte of result - ldx #$FF - stx sreg - stx sreg+1 +; Restore timep and check if it is NULL - ora ptr1+1 ; t == 0? + pla + sta ptr1 + pla + sta ptr1+1 ; Restore timep + ora ptr1 ; timep == 0? beq @L1 - ldy #$03 +; timep is not NULL, store the result there + + ldy #3 + lda sreg+1 + sta (ptr1),y + dey + lda sreg + sta (ptr1),y + dey txa -@L0: sta (ptr1),y ; *t = -1 + sta (ptr1),y dey - bpl @L0 - lda #$00 + lda tmp1 + sta (ptr1),y + +; If the result is less than zero, set ERRNO -@L1: sta __errno+1 +@L1: ldy sreg+1 + bpl @L2 + + lda #$00 + sta __errno+1 lda #ENOSYS ; Function not implemented sta __errno - txa ; A = $FF +; Reload the low byte of the result and return + +@L2: lda tmp1 rts .endproc