Routines |
Prev: 52193 | Up: Map | Next: 53712 |
|
||||
GameEntryPoint | 53674 | DI | Disable interrupts. | |
53675 | LD SP,65530 | SP=65530. | ||
Write 253 from InterruptLowOrderByteJumpTable for 256 bytes. All will become clear soon...
|
||||
53678 | LD HL,65024 | HL=InterruptLowOrderByteJumpTable. | ||
53681 | LD BC,253 | Set a counter in B of 0 (as it's a DJNZ this is really 256) and set C to 253 for the value to write. |
||
WriteInterruptJumpAddress_Loop | 53684 | LD (HL),C | Write 253 to *HL. | |
53685 | INC HL | Increment HL by one. | ||
53686 | DJNZ WriteInterruptJumpAddress_Loop | Decrease counter by one and loop back to WriteInterruptJumpAddress_Loop until counter is zero. | ||
One more for luck...
|
||||
53688 | LD (HL),C | Write C to *HL. | ||
This sets interrupt mode 2; when the system generates an interrupt, it'll use the high-order byte set here, together with a low-order byte generated from the system to form a 16-bit address to jump to.
As we've just set 253 to every address, this means that every generated interrupt will jump to 65277 which in turn will jump to 63581.
|
||||
53689 | LD A,254 | Set 254 as the high-order byte in I. | ||
53691 | LD I,A | |||
53693 | IM 2 | Set interrupt mode 2. | ||
53695 | LD HL,22595 | Write 22595 (attribute buffer location) to *SelectedMenuItem_ScreenPosition. | ||
53698 | LD (55415),HL | |||
53701 | LD A,1 | Write 1 ("keyboard") to *SelectedMenuItem. | ||
53703 | LD (60216),A | |||
53706 | LD HL,60260 | Write InputHandler_Keyboard to *Pointer_InputControl. | ||
53709 | LD (60214),HL | |||
Continue on to Game_Loop.
|
Prev: 52193 | Up: Map | Next: 53712 |