fixed TI$ values and UDTIM rollover
This commit is contained in:
1 parent
ffbb58bcbc
commit
24115bc3ab
5 files changed
+41
-39
No files matched your search
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
table_TI_hi:
|
table_TI_hi:
|
||||||
|
|
||||||
.byte $36 // 10 hours = 3600000 ticks
|
.byte $20 // 10 hours = 2169000 ticks
|
||||||
.byte $05 // 1 hour = 360000 ticks
|
.byte $03 // 1 hour = 216000 ticks
|
||||||
.byte $00 // 10 minutes = 30000 ticks
|
.byte $00 // 10 minutes = 36000 ticks
|
||||||
.byte $00 // 1 minute = 3000 ticks
|
.byte $00 // 1 minute = 3600 ticks
|
||||||
.byte $00 // 10 seconds = 500 ticks
|
.byte $00 // 10 seconds = 600 ticks
|
||||||
.byte $00 // 1 second = 50 ticks
|
.byte $00 // 1 second = 60 ticks
|
||||||
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
table_TI_lo:
|
table_TI_lo:
|
||||||
|
|
||||||
.byte $80 // 10 hours = 3600000 ticks
|
.byte $80 // 10 hours = 2169000 ticks
|
||||||
.byte $40 // 1 hour = 360000 ticks
|
.byte $C0 // 1 hour = 216000 ticks
|
||||||
.byte $30 // 10 minutes = 30000 ticks
|
.byte $A0 // 10 minutes = 36000 ticks
|
||||||
.byte $B8 // 1 minute = 3000 ticks
|
.byte $10 // 1 minute = 3600 ticks
|
||||||
.byte $F4 // 10 seconds = 500 ticks
|
.byte $58 // 10 seconds = 600 ticks
|
||||||
.byte $32 // 1 second = 50 ticks
|
.byte $3C // 1 second = 60 ticks
|
||||||
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
table_TI_mid:
|
table_TI_mid:
|
||||||
|
|
||||||
.byte $EE // 10 hours = 3600000 ticks
|
.byte $F5 // 10 hours = 2169000 ticks
|
||||||
.byte $7E // 1 hour = 360000 ticks
|
.byte $4B // 1 hour = 216000 ticks
|
||||||
.byte $75 // 10 minutes = 30000 ticks
|
.byte $8C // 10 minutes = 36000 ticks
|
||||||
.byte $0B // 1 minute = 3000 ticks
|
.byte $0E // 1 minute = 3600 ticks
|
||||||
.byte $01 // 10 seconds = 500 ticks
|
.byte $02 // 10 seconds = 600 ticks
|
||||||
.byte $00 // 1 second = 50 ticks
|
.byte $00 // 1 second = 60 ticks
|
||||||
@@ -21,7 +21,7 @@ SETTIM:
|
|||||||
sty TIME + 0
|
sty TIME + 0
|
||||||
stx TIME + 1
|
stx TIME + 1
|
||||||
sta TIME + 2
|
sta TIME + 2
|
||||||
|
.break
|
||||||
// Enable interrupts. More elegant solution would be pha + sei + ... + pla,
|
// Enable interrupts. More elegant solution would be pha + sei + ... + pla,
|
||||||
// but (checked by running a test program) original ROM routine always
|
// but (checked by running a test program) original ROM routine always
|
||||||
// leaves IRQs enabled.
|
// leaves IRQs enabled.
|
||||||
|
|||||||
+22
-20
@@ -17,32 +17,34 @@ UDTIM:
|
|||||||
// (24 hours * 60 minutes * 60 seconds * 60 jiffies),
|
// (24 hours * 60 minutes * 60 seconds * 60 jiffies),
|
||||||
// after this time we have to reset the clock.
|
// after this time we have to reset the clock.
|
||||||
|
|
||||||
#if !HAS_OPCODES_65CE02
|
|
||||||
inc TIME+2
|
inc TIME+2
|
||||||
bne udtim_time_done // done with clock
|
bne udtim_rollover_check
|
||||||
inc TIME+1
|
inc TIME+1
|
||||||
#else
|
bne udtim_rollover_check
|
||||||
inw TIME+2
|
|
||||||
#endif
|
|
||||||
bne udtim_clock_rollover
|
|
||||||
inc TIME+0
|
inc TIME+0
|
||||||
|
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
|
|
||||||
|
udtim_rollover_check:
|
||||||
|
|
||||||
|
lda TIME+0
|
||||||
|
cmp #$4F
|
||||||
|
bcc udtim_time_done
|
||||||
|
lda TIME+1
|
||||||
|
cmp #$1A
|
||||||
|
bcc udtim_time_done
|
||||||
|
|
||||||
|
// FALLTROUGH
|
||||||
|
|
||||||
|
udtim_clock_reset:
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta TIME+0
|
||||||
|
sta TIME+1
|
||||||
|
sta TIME+2
|
||||||
|
|
||||||
|
// FALLTROUGH
|
||||||
|
|
||||||
udtim_time_done:
|
udtim_time_done:
|
||||||
|
|
||||||
jmp udtim_keyboard
|
jmp udtim_keyboard
|
||||||
|
|
||||||
udtim_clock_rollover:
|
|
||||||
|
|
||||||
// At this point TIME+0 contains 0
|
|
||||||
lda TIME+1
|
|
||||||
cmp #$1A
|
|
||||||
bne udtim_time_done // done with clock
|
|
||||||
lda TIME+0
|
|
||||||
cmp #$4F
|
|
||||||
bne udtim_time_done // done with clock
|
|
||||||
lda #$00
|
|
||||||
sta TIME+0
|
|
||||||
sta TIME+1
|
|
||||||
beq udtim_time_done // done with clock - will always jump
|
|
||||||
Reference in new issue
Block a user