1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-03 10:07:02 +00:00
cc65/libsrc/pce/clock.s

41 lines
1001 B
ArmAsm
Raw Normal View History

;
; clock_t clock (void);
;
2015-11-17 14:14:15 +00:00
.constructor initclock
.export _clock
2015-10-02 14:50:22 +00:00
2015-11-17 14:14:15 +00:00
.forceimport ticktock ; make sure that tickcount changes
.importzp tickcount, sreg
2015-07-16 14:54:40 +00:00
2015-11-17 14:14:15 +00:00
; Make the process clock start at zero.
.segment "ONCE"
2015-07-16 14:54:40 +00:00
initclock:
ldx #4 - 1
@lp: stz tickcount,x
2015-08-29 13:58:57 +00:00
dex
bpl @lp
rts
; ------------------------------------------------------------------------
.code
; This function might be interrupted while it is reading the several bytes of
; the clock. They are read again if that happens. (We do not want to stop
; interrupts because that might cause glitches in interrupt-driven graphics
; and sound.)
.proc _clock
lda tickcount
ldy tickcount+3
sty sreg+1
ldy tickcount+2
sty sreg
ldx tickcount+1
cmp tickcount
bne _clock ; clock changed; reread it
rts
.endproc