Prev: 95D2 Up: Map Next: 9635
95ED: Interrupt Routine
Used by the routine at AliasInterruptRedirect.
InterruptRoutine 95ED PUSH AF Stash AF, BC, DE, HL and IX on the stack.
95EE PUSH BC
95EF PUSH DE
95F0 PUSH HL
95F1 PUSH IX
95F3 CALL $CBF7 Call CBF7.
95F6 LD A,($9B2B) Jump to GetControls if *9B2B is not zero.
95F9 AND A
95FA JR Z,GetControls
95FC LD HL,$9AB5 HL=9AB5.
95FF DEC (HL) Decrease *HL by one.
9600 JR NZ,GetControls Jump to GetControls if *HL is not zero.
9602 LD (HL),$32 Write "2" to *HL.
Handle the units digit of AroundTheClock_Timer.
9604 LD HL,$A38D HL=A38D (2nd digit of AroundTheClock_Timer).
9607 DEC (HL) Decrease *HL by one.
Has A38D just ticked down from a "0"?
9608 LD A,(HL) Jump to InterruptDrivenTimer if *HL is not equal to 2F ("0" minus one).
9609 CP $2F
960B JR NZ,InterruptDrivenTimer
Replace the unit digit with a "9".
960D LD (HL),$39 Write "9" to *HL.
Handle the tens digit of AroundTheClock_Timer.
960F LD HL,$A38C HL=AroundTheClock_Timer.
9612 DEC (HL) Decrease *HL by one.
Has AroundTheClock_Timer just ticked down from a "0"?
9613 LD A,(HL) Jump to InterruptDrivenTimer if *L is not equal to 2F ("0" minus one).
9614 CP $2F
9616 JR NZ,InterruptDrivenTimer
This signifies that the time is now up!
9618 LD A,$01 Write 01 to *9B2A.
961A LD ($9B2A),A
961D DEC A Write 00 to *9B2B.
961E LD ($9B2B),A
9621 JR GetControls Jump to GetControls.
Print the "Around The Clock" timer.
InterruptDrivenTimer 9623 CALL Messaging_AroundTheClock_Timer Call Messaging_AroundTheClock_Timer.
GetControls 9626 CALL InterruptDrivenControls Call InterruptDrivenControls.
9629 LD ($F821),A Write A to *ControlByte.
962C POP IX Restore IX, HL, DE, BC and AF from the stack.
962E POP HL
962F POP DE
9630 POP BC
9631 POP AF
9632 EI Enable interrupts.
9633 RETI Return from the interrupt routine.
Prev: 95D2 Up: Map Next: 9635