]> git.sur5r.net Git - cc65/blobdiff - libsrc/atari/clock.s
setviewpage was never assembled
[cc65] / libsrc / atari / clock.s
index 174751c7acff093fa734b79174aad1f2013f3b11..c7435b77b3d3f9ad5400e663625ab5882e0a0db5 100644 (file)
@@ -1,13 +1,12 @@
 ;
-; Ullrich von Bassewitz, 25.07.2000
-;
-; Implemented using information from Sidney Cadot <sidney@janis.pds.twi.tudelft.nl>
+; Piotr Fusik, 04.11.2001
+; originally by Ullrich von Bassewitz and Sidney Cadot
 ;
 ; clock_t clock (void);
 ; unsigned _clocks_per_sec (void);
 ;
 
-       .export         _clock, __clocks_per_sec
+       .export         _clock, __clocks_per_sec
        .importzp       sreg
 
        .include        "atari.inc"
 
 .proc  _clock
 
-       lda     #0              ; Byte 3 is always zero
-               sta     sreg+1
-       php                     ; Save current I flag value
-       sei                     ; Disable interrupts
+       ldx     #5              ; Synchronize with Antic, so the interrupt won't change RTCLOK
+       stx     WSYNC           ; while we're reading it. The synchronization is done same as
+@L1:   dex                     ; in SETVBLV function in Atari OS.
+       bne     @L1
+       stx     sreg+1          ; Byte 3 is always zero
        lda     RTCLOK+2
-       sta     sreg
-       lda     RTCLOK          ; Read clock
        ldx     RTCLOK+1
-       plp                     ; Restore old I bit
+       ldy     RTCLOK
+       sty     sreg
        rts
 
 .endproc
 
 .proc  __clocks_per_sec
 
-       lda     #50             ; Assume PAL
-       ldx     PAL             ; use hw register, PALNTS is only supported on XL/XE ROM
-       beq     @L1
-       ldx     #0
+       lda     PAL             ; use hw register, PALNTS is only supported on XL/XE ROM
+       and     #$0e
+       bne     @NTSC
+       tax
+       lda     #50
+       rts
+@NTSC: ldx     #0
        lda     #60
-@L1:   rts
+       rts
 
 .endproc
-
-