1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-24 11:31:31 +00:00
cc65/libsrc/atari/clock.s
Oliver Schmidt f723147f04 Streamlined clock rate handling.
* Docs say that CLK_TCK is an obsolete alias of CLOCKS_PER_SEC so there's no point in individual definitions.
* All targets determining the clock rate at runtime can use a common handling.
2020-10-25 14:06:44 +01:00

45 lines
1.1 KiB
ArmAsm

;
; Piotr Fusik, 04.11.2001
; originally by Ullrich von Bassewitz and Sidney Cadot
;
; clock_t clock (void);
; clock_t _clocks_per_sec (void);
;
.export _clock, __clocks_per_sec
.importzp sreg
.include "atari.inc"
.proc _clock
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
ldx #$00 ; Clear byte 1 of return value
stx sreg ; Clear byte 2 of return value
stx sreg+1 ; Clear byte 3 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