]> git.sur5r.net Git - cc65/blobdiff - libsrc/atari/clock.s
Some small first changes for the 'atarixl' target.
[cc65] / libsrc / atari / clock.s
index 6aa8836a68310dd07438a167867a7ba5a67e45f0..e04416c18b0e6de6f354cfb8c3dd2c7d7cebc2a9 100644 (file)
@@ -1,43 +1,42 @@
 ;
-; 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
-       .importzp       sreg
+        .export         _clock, __clocks_per_sec
+        .importzp       sreg
 
-       .include        "atari.inc"
+        .include        "atari.inc"
 
 
-.proc  _clock
+.proc   _clock
 
-       lda     #0              ; Byte 3 is always zero
-               sta     sreg+1
-       php                     ; Save current I flag value
-       sei                     ; Disable interrupts
-       lda     RTCLOK          ; Read clock
-       ldx     RTCLOK+1
-               ldy     RTCLOK+2
-       plp                     ; Restore old I bit
-               sty     sreg
-       rts
+        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
+        ldx     RTCLOK+1
+        ldy     RTCLOK
+        sty     sreg
+        rts
 
 .endproc
 
 
-.proc  __clocks_per_sec
+.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     #60
-@L1:   rts
+        ldx     #$00            ; Clear high byte of return value
+        lda     PAL             ; use hw register, PALNTS is only supported on XL/XE ROM
+        and     #$0e
+        bne     @NTSC
+        lda     #50
+        rts
+@NTSC:  lda     #60
+        rts
 
 .endproc
-
-