mirror of
https://github.com/cc65/cc65.git
synced 2024-12-25 17:29:50 +00:00
41 lines
1001 B
ArmAsm
41 lines
1001 B
ArmAsm
;
|
|
; clock_t clock (void);
|
|
;
|
|
|
|
.constructor initclock
|
|
.export _clock
|
|
|
|
.forceimport ticktock ; make sure that tickcount changes
|
|
.importzp tickcount, sreg
|
|
|
|
|
|
; Make the process clock start at zero.
|
|
|
|
.segment "ONCE"
|
|
initclock:
|
|
ldx #4 - 1
|
|
@lp: stz tickcount,x
|
|
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
|