mirror of
https://github.com/cc65/cc65.git
synced 2024-11-16 18:08:04 +00:00
68 lines
1.7 KiB
ArmAsm
68 lines
1.7 KiB
ArmAsm
|
;
|
||
|
; Oliver Schmidt, 16.8.2018
|
||
|
;
|
||
|
; Common stuff for the clock routines
|
||
|
;
|
||
|
|
||
|
.include "c64.inc"
|
||
|
.include "get_tv.inc"
|
||
|
|
||
|
.export TM, load_tenth
|
||
|
|
||
|
.constructor inittime
|
||
|
.importzp sreg
|
||
|
.import _get_tv, _get_ostype
|
||
|
|
||
|
|
||
|
;----------------------------------------------------------------------------
|
||
|
.code
|
||
|
|
||
|
.proc load_tenth
|
||
|
|
||
|
lda #<(100 * 1000 * 1000 / $10000)
|
||
|
ldx #>(100 * 1000 * 1000 / $10000)
|
||
|
sta sreg
|
||
|
stx sreg+1
|
||
|
lda #<(100 * 1000 * 1000)
|
||
|
ldx #>(100 * 1000 * 1000)
|
||
|
rts
|
||
|
|
||
|
.endproc
|
||
|
|
||
|
;----------------------------------------------------------------------------
|
||
|
; Constructor that writes to the 1/10 sec register of the TOD to kick it
|
||
|
; into action. If this is not done, the clock hangs. We will read the register
|
||
|
; and write it again, ignoring a possible change in between.
|
||
|
.segment "ONCE"
|
||
|
|
||
|
.proc inittime
|
||
|
|
||
|
lda CIA1_TOD10
|
||
|
sta CIA1_TOD10
|
||
|
jsr _get_tv
|
||
|
cmp #TV::PAL
|
||
|
bne @60Hz
|
||
|
jsr _get_ostype
|
||
|
cmp #$43
|
||
|
beq @60Hz
|
||
|
lda CIA1_CRA
|
||
|
ora #$80
|
||
|
sta CIA1_CRA
|
||
|
@60Hz: rts
|
||
|
|
||
|
.endproc
|
||
|
|
||
|
;----------------------------------------------------------------------------
|
||
|
; TM struct with date set to 1970-01-01
|
||
|
.data
|
||
|
|
||
|
TM: .word 0 ; tm_sec
|
||
|
.word 0 ; tm_min
|
||
|
.word 0 ; tm_hour
|
||
|
.word 1 ; tm_mday
|
||
|
.word 0 ; tm_mon
|
||
|
.word 70 ; tm_year
|
||
|
.word 0 ; tm_wday
|
||
|
.word 0 ; tm_yday
|
||
|
.word 0 ; tm_isdst
|