]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/commitdiff
time and date allways from server. 1.25ms interrupt
authorLeo C <erbl259-lmu@yahoo.de>
Sat, 13 Jun 2015 18:09:26 +0000 (20:09 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Sat, 13 Jun 2015 18:09:26 +0000 (20:09 +0200)
cbios/time.180

index e2ffc6b79f3f815f8e285d143d70a87eac827dd1..cd01749ac76c223db1cf3d42345d50e308bb7b71 100644 (file)
        cseg    ; time must be done from resident memory
 ?time:
        inc     c                       ;zero if ff
-       ret     nz                      ;nothing to do
-
        ld      c,3
+       jr      z,time_set
+
+       ld      a,(time_to)
+       or      a
+       ret     nz
 
+       dec     c
+time_set:
        b0call  gs_rtc
+       ld      a,0ffh
+       ld      (time_to),a
        ret
 
 ;----------------------------------------------------------------------
@@ -38,14 +45,12 @@ gs_rtc:
        push    hl
        push    de
 
-       di
        ld      hl,(@date)
        ld      a,(@hour)
        ld      d,a
        ld      a,(@min)
        ld      e,a
        ld      a,(@sec)
-       ei
        ld      b,a                     ;b = sec, c = subcommand
        push    hl                      ;2
        push    de                      ;4
@@ -70,14 +75,12 @@ gs_rtc:
        pop     de
        pop     hl
        ld      a,b
-       di
        ld      (@sec),a
        ld      a,e
        ld      (@min),a
        ld      a,d
        ld      (@hour),a
        ld      (@date),hl
-       ei
 
        pop     de
        pop     hl
@@ -108,7 +111,7 @@ prt0ini:
 
        ld      hl,(f_cpu)
        ld      de,(f_cpu+2)
-       ld      bc,PRT_PRE * 100        ;1/100 s == 10 ms interrupt rate
+       ld      bc,PRT_PRE * 800        ;1/800 s == 1,25 ms interrupt rate
        call    div32_16
 
        out0    (tmdr0l),l
@@ -120,10 +123,11 @@ prt0ini:
        out0    (tcr),a
        ret
 
+
 ;----------------------------------------------------------------------
 ; timer interrupt
 ;
-;    10 ms clock tick
+;    1,25 ms clock tick
 
 
        cseg    ;common!
@@ -133,52 +137,32 @@ isvprt0:
        in0     a,(tmdr0l)
        in0     a,(tmdr0h)
 
-       ld      a,(counter_10ms)                ;
-       inc     a
-       cp      100                     ;100 * 10ms ?
-       jr      nz,iprt_1
-
-       ld      a,(@sec)
-       inc     a
-       daa
-       cp      60h
-       jr      nz,iprt_2
-
-       ld      a,(@min)
-       inc     a
-       daa
-       cp      60h
-       jr      nz,iprt_3
-
-       ld      a,(@hour)
-       inc     a
-       daa
-       cp      24h
-       jr      nz,iprt_4
-
-       push    hl
-       ld      hl,(@date)
-       inc     hl
-       ld      (@date),hl
-       pop     hl
-
-       xor     a
-iprt_4:
-       ld      (@hour),a
-       xor     a
-iprt_3:
-       ld      (@min),a
-       xor     a
-iprt_2:
-       ld      (@sec),a
-       xor     a
+       push    hl                      ;11
+       ld      hl,uptime               ; 9
+       inc     (hl)                    ;10
+       jr      nz,iprt_1               ;6/8    38
+       inc     hl                      ; 4
+       inc     (hl)                    ;10
+       jr      nz,iprt_1               ;6/8            58
+       inc     hl                      ; 4
+       inc     (hl)                    ;10
+       jr      nz,iprt_1               ;6/8
+       inc     hl                      ; 4
+       inc     (hl)                    ;10
 iprt_1:
-       ld      (counter_10ms),a
+       pop     hl                      ; 9
+       ld      a,(time_to)
+       sub     a,1
+       jr      c,iprt_0
+       ld      (time_to),a
+iprt_0:
        pop     af
        ei
        ret
 
-counter_10ms:
+uptime:
+       dw      0,0
+time_to:
        db      0
 
        end