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:
|
||||
|
||||
.byte $36 // 10 hours = 3600000 ticks
|
||||
.byte $05 // 1 hour = 360000 ticks
|
||||
.byte $00 // 10 minutes = 30000 ticks
|
||||
.byte $00 // 1 minute = 3000 ticks
|
||||
.byte $00 // 10 seconds = 500 ticks
|
||||
.byte $00 // 1 second = 50 ticks
|
||||
.byte $20 // 10 hours = 2169000 ticks
|
||||
.byte $03 // 1 hour = 216000 ticks
|
||||
.byte $00 // 10 minutes = 36000 ticks
|
||||
.byte $00 // 1 minute = 3600 ticks
|
||||
.byte $00 // 10 seconds = 600 ticks
|
||||
.byte $00 // 1 second = 60 ticks
|
||||
@@ -8,9 +8,9 @@
|
||||
|
||||
table_TI_lo:
|
||||
|
||||
.byte $80 // 10 hours = 3600000 ticks
|
||||
.byte $40 // 1 hour = 360000 ticks
|
||||
.byte $30 // 10 minutes = 30000 ticks
|
||||
.byte $B8 // 1 minute = 3000 ticks
|
||||
.byte $F4 // 10 seconds = 500 ticks
|
||||
.byte $32 // 1 second = 50 ticks
|
||||
.byte $80 // 10 hours = 2169000 ticks
|
||||
.byte $C0 // 1 hour = 216000 ticks
|
||||
.byte $A0 // 10 minutes = 36000 ticks
|
||||
.byte $10 // 1 minute = 3600 ticks
|
||||
.byte $58 // 10 seconds = 600 ticks
|
||||
.byte $3C // 1 second = 60 ticks
|
||||
@@ -8,9 +8,9 @@
|
||||
|
||||
table_TI_mid:
|
||||
|
||||
.byte $EE // 10 hours = 3600000 ticks
|
||||
.byte $7E // 1 hour = 360000 ticks
|
||||
.byte $75 // 10 minutes = 30000 ticks
|
||||
.byte $0B // 1 minute = 3000 ticks
|
||||
.byte $01 // 10 seconds = 500 ticks
|
||||
.byte $00 // 1 second = 50 ticks
|
||||
.byte $F5 // 10 hours = 2169000 ticks
|
||||
.byte $4B // 1 hour = 216000 ticks
|
||||
.byte $8C // 10 minutes = 36000 ticks
|
||||
.byte $0E // 1 minute = 3600 ticks
|
||||
.byte $02 // 10 seconds = 600 ticks
|
||||
.byte $00 // 1 second = 60 ticks
|
||||
@@ -21,7 +21,7 @@ SETTIM:
|
||||
sty TIME + 0
|
||||
stx TIME + 1
|
||||
sta TIME + 2
|
||||
|
||||
.break
|
||||
// Enable interrupts. More elegant solution would be pha + sei + ... + pla,
|
||||
// but (checked by running a test program) original ROM routine always
|
||||
// leaves IRQs enabled.
|
||||
|
||||
+22
-20
@@ -17,32 +17,34 @@ UDTIM:
|
||||
// (24 hours * 60 minutes * 60 seconds * 60 jiffies),
|
||||
// after this time we have to reset the clock.
|
||||
|
||||
#if !HAS_OPCODES_65CE02
|
||||
inc TIME+2
|
||||
bne udtim_time_done // done with clock
|
||||
bne udtim_rollover_check
|
||||
inc TIME+1
|
||||
#else
|
||||
inw TIME+2
|
||||
#endif
|
||||
bne udtim_clock_rollover
|
||||
bne udtim_rollover_check
|
||||
inc TIME+0
|
||||
|
||||
// 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:
|
||||
|
||||
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