Prev: F68F Up: Map Next: F6DD
F69B: increment the real time clock
Used by the routine at FFEA.
F69B A2 00 LDX #$00 clear X
F69D E6 A2 INC $A2 increment the jiffy clock low byte
F69F D0 06 BNE $F6A7 if no rollover ??
F6A1 E6 A1 INC $A1 increment the jiffy clock mid byte
F6A3 D0 02 BNE $F6A7 branch if no rollover
F6A5 E6 A0 INC $A0 increment the jiffy clock high byte
now subtract a days worth of jiffies from current count and remember only the Cb result
F6A7 38 SEC set carry for subtract
F6A8 A5 A2 LDA $A2 get the jiffy clock low byte
F6AA E9 01 SBC #$01 subtract $4F1A01 low byte
F6AC A5 A1 LDA $A1 get the jiffy clock mid byte
F6AE E9 1A SBC #$1A subtract $4F1A01 mid byte
F6B0 A5 A0 LDA $A0 get the jiffy clock high byte
F6B2 E9 4F SBC #$4F subtract $4F1A01 high byte
F6B4 90 06 BCC $F6BC if less than $4F1A01 jiffies skip the clock reset
else ..
F6B6 86 A0 STX $A0 clear the jiffy clock high byte
F6B8 86 A1 STX $A1 clear the jiffy clock mid byte
F6BA 86 A2 STX $A2 clear the jiffy clock low byte
This entry point is used by the routines at F875 and FE47.
this is wrong, there are $4F1A00 jiffies in a day so the reset to zero should occur when the value reaches $4F1A00 and not $4F1A01. this would give an extra jiffy every day and a possible TI value of 24:00:00
F6BC AD 01 DC LDA $DC01 read VIA 1 DRB, keyboard row port
F6BF CD 01 DC CMP $DC01 compare it with itself
F6C2 D0 F8 BNE $F6BC loop if changing
F6C4 AA TAX
F6C5 30 13 BMI $F6DA
F6C7 A2 BD LDX #$BD set c6
F6C9 8E 00 DC STX $DC00 save VIA 1 DRA, keyboard column drive
F6CC AE 01 DC LDX $DC01 read VIA 1 DRB, keyboard row port
F6CF EC 01 DC CPX $DC01 compare it with itself
F6D2 D0 F8 BNE $F6CC loop if changing
F6D4 8D 00 DC STA $DC00 save VIA 1 DRA, keyboard column drive
F6D7 E8 INX
F6D8 D0 02 BNE $F6DC
F6DA 85 91 STA $91 save the stop key column
F6DC 60 RTS
Prev: F68F Up: Map Next: F6DD