X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fatari%2Fclock.s;h=c7435b77b3d3f9ad5400e663625ab5882e0a0db5;hb=6657214a18d41ce76e9ea1bc8b67977ee13d3645;hp=174751c7acff093fa734b79174aad1f2013f3b11;hpb=7fa0e2e8eefe55c175afbaa39a22e0727467c373;p=cc65 diff --git a/libsrc/atari/clock.s b/libsrc/atari/clock.s index 174751c7a..c7435b77b 100644 --- a/libsrc/atari/clock.s +++ b/libsrc/atari/clock.s @@ -1,13 +1,12 @@ ; -; Ullrich von Bassewitz, 25.07.2000 -; -; Implemented using information from Sidney Cadot +; 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" @@ -15,15 +14,15 @@ .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 @@ -31,13 +30,14 @@ .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 - -