]> git.sur5r.net Git - cc65/blobdiff - libsrc/apple2/systime.s
fix comments
[cc65] / libsrc / apple2 / systime.s
index 1d039e80e0ac43fc79e4baa583a12bc17b8894a3..0a5f530bac58a0b53941ae5817b25748a9deca75 100644 (file)
@@ -1,5 +1,5 @@
 ;
-; Ullrich von Bassewitz, 12.11.2002
+; Oliver Schmidt, 22.08.2006
 ;
 ; time_t _systime (void);
 ; /* Similar to time(), but:
@@ -9,20 +9,55 @@
 ;  */
 ;
 
-       .export         __systime
-
-        .importzp       sreg
-
-.code
-
-.proc   __systime
-
-        lda     #$FF
-        tax
-        sta     sreg
-        sta     sreg+1
-        rts                     ; Return -1
-
-.endproc
-
-
+        .include        "time.inc"
+       .include        "zeropage.inc"
+       .include        "mli.inc"
+
+__systime:
+       ; Update time
+       lda     #GET_TIME_CALL
+       ldx     #GET_TIME_COUNT
+       jsr     callmli
+       bcs     err
+
+       lda     DATELO+1
+       lsr
+       php                     ; Save month msb
+       cmp     #70             ; Year < 70?
+       bcs     :+              ; No, leave alone
+       adc     #100            ; Move 19xx to 20xx
+:      sta     TM + tm::tm_year
+       lda     DATELO
+       tax                     ; Save day
+       plp                     ; Restore month msb
+       ror
+       lsr
+       lsr
+       lsr
+       lsr
+       beq     err             ; [1..12] allows for validity check
+       tay
+       dey                     ; Move [1..12] to [0..11]
+       sty     TM + tm::tm_mon
+       txa                     ; Restore day
+       and     #%00011111
+       sta     TM + tm::tm_mday
+
+       lda     TIMELO+1
+       sta     TM + tm::tm_hour
+       lda     TIMELO
+       sta     TM + tm::tm_min
+
+       lda     #<TM
+       ldx     #>TM
+       jmp     _mktime
+
+err:   lda     #$FF
+       tax
+       sta     sreg
+       sta     sreg+1
+       rts                     ; Return -1
+
+       .bss
+
+TM:    .tag    tm