X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=libsrc%2Fc128%2Fsystime.s;h=e12d016b810fdcab189c975da586feb88c71f8e5;hb=5bf8523dcd61f140e7ed5921e529a1b75c9b471b;hp=468d7da19100530c1dbcbc1aa931d75c72dfc5c9;hpb=09adce2fec8d7407770c4386920317e2b837a0a7;p=cc65 diff --git a/libsrc/c128/systime.s b/libsrc/c128/systime.s index 468d7da19..e12d016b8 100644 --- a/libsrc/c128/systime.s +++ b/libsrc/c128/systime.s @@ -3,51 +3,51 @@ ; ; time_t _systime (void); ; /* Similar to time(), but: -; * - Is not ISO C -; * - Does not take the additional pointer -; * - Does not set errno when returning -1 -; */ +; ** - Is not ISO C +; ** - Does not take the additional pointer +; ** - Does not set errno when returning -1 +; */ ; .include "time.inc" .include "c128.inc" - .include "get_tv.inc" + .include "get_tv.inc" .constructor initsystime - .importzp tmp1, tmp2 - .import _get_tv + .importzp tmp1, tmp2 + .import _get_tv ;---------------------------------------------------------------------------- .code -.proc __systime - - lda CIA1_TODHR - bpl AM - and #%01111111 - sed - clc - adc #$12 - cld -AM: jsr BCD2dec - sta TM + tm::tm_hour - lda CIA1_TODMIN - jsr BCD2dec - sta TM + tm::tm_min - lda CIA1_TODSEC - jsr BCD2dec - sta TM + tm::tm_sec - lda CIA1_TOD10 ; Dummy read to unfreeze - lda #TM - jmp _mktime +.proc __systime + + lda CIA1_TODHR + bpl AM + and #%01111111 + sed + clc + adc #$12 + cld +AM: jsr BCD2dec + sta TM + tm::tm_hour + lda CIA1_TODMIN + jsr BCD2dec + sta TM + tm::tm_min + lda CIA1_TODSEC + jsr BCD2dec + sta TM + tm::tm_sec + lda CIA1_TOD10 ; Dummy read to unfreeze + lda #TM + jmp _mktime ; dec = (((BCD>>4)*10) + (BCD&0xf)) BCD2dec:tax - and #%00001111 - sta tmp1 - txa + and #%00001111 + sta tmp1 + txa and #%11110000 ; *16 lsr ; *8 sta tmp2 @@ -63,27 +63,27 @@ BCD2dec:tax ; Constructor that writes to the 1/10 sec register of the TOD to kick it ; into action. If this is not done, the clock hangs. We will read the register ; and write it again, ignoring a possible change in between. +.segment "INIT" .proc initsystime lda CIA1_TOD10 sta CIA1_TOD10 - jsr _get_tv - cmp #TV::PAL - bne @60Hz - lda CIA1_CRA - ora #$80 - sta CIA1_CRA -@60Hz: rts + jsr _get_tv + cmp #TV::PAL + bne @60Hz + lda CIA1_CRA + ora #$80 + sta CIA1_CRA +@60Hz: rts .endproc - ;---------------------------------------------------------------------------- ; TM struct with date set to 1970-01-01 .data -TM: .word 0 ; tm_sec +TM: .word 0 ; tm_sec .word 0 ; tm_min .word 0 ; tm_hour .word 1 ; tm_mday @@ -92,4 +92,3 @@ TM: .word 0 ; tm_sec .word 0 ; tm_wday .word 0 ; tm_yday .word 0 ; tm_isdst -