|  | Routines | 
| Prev: F104 | Up: Map | Next: F1AF | 
| 
Used by the routine at Handler_Player.
 | ||||
| Handler_KeysAndLockedDoors | F107 | PUSH IX | Stash IX on the stack. | |
| F109 | LD IX,($5BDA) | IX=*ReferenceKeysAndLockedDoors. | ||
| Handler_KeysAndLockedDoors_Loop | F10D | LD A,(IX+$00) | Jump to Handler_Housekeeping if the terminator character has been received instead of a co-ordinate (FF). | |
| F110 | CP $FF | |||
| F112 | JR Z,Handler_Housekeeping | |||
| F114 | LD A,(IX+$05) | A=*IX+05. | ||
| F117 | AND %00000010 | Keep only bit 1. | ||
| F119 | JR Z,Handler_KeysAndLockedDoors_Next | Jump to Handler_KeysAndLockedDoors_Next if the result is zero. | ||
| F11B | LD A,(IX+$02) | Jump to Handler_KeysAndLockedDoors_Next if *IX+02 is not equal to C. | ||
| F11E | CP C | |||
| F11F | JR NZ,Handler_KeysAndLockedDoors_Next | |||
| F121 | LD A,(IX+$03) | Jump to Handler_KeysAndLockedDoors_0 if *IX+03 is equal to B. | ||
| F124 | CP B | |||
| F125 | JR Z,Handler_KeysAndLockedDoors_0 | |||
| Handler_KeysAndLockedDoors_Next | F127 | LD DE,$0006 | IX+=0006. | |
| F12A | ADD IX,DE | |||
| F12C | JR Handler_KeysAndLockedDoors_Loop | Jump to Handler_KeysAndLockedDoors_Loop. | ||
| Handler_KeysAndLockedDoors_0 | F12E | LD A,$06 | Write 06 to *SoundFlag_General. | |
| F130 | LD ($FFFE),A | |||
| F133 | LD (IX+$05),$01 | Write 01 to *IX+05. | ||
| F137 | LD C,(IX+$02) | C=*IX+02. | ||
| F13A | LD B,(IX+$03) | B=*IX+03. | ||
| F13D | LD E,$01 | Set the sprite width/ height in DE (01/02). | ||
| F13F | LD D,$02 | |||
| F141 | LD A,$00 | A=00. | ||
| F143 | CALL $E72F | Call E72F. | ||
| F146 | LD HL,($5C36) | Stash *CHARS on the stack. | ||
| F149 | PUSH HL | |||
| F14A | LD HL,$9F6C | Write 9F6C (Graphics_MaskSprite) to *CHARS. | ||
| F14D | LD ($5C36),HL | |||
| F150 | LD A,$20 | A=20. | ||
| F152 | CALL PrintSprite | Call PrintSprite. | ||
| F155 | POP HL | Restore the original value of *CHARS from the stack. | ||
| F156 | LD ($5C36),HL | |||
| F159 | LD A,(IX+$04) | A=*IX+04. | ||
| F15C | POP IX | Restore IX from the stack. | ||
| F15E | PUSH AF | Stash AF on the stack. | ||
| F15F | LD A,(IX+$10) | Jump to Handler_KeysAndLockedDoors_1 if *IX+10 is equal to 00. | ||
| F162 | CP $00 | |||
| F164 | JR Z,Handler_KeysAndLockedDoors_1 | |||
| F166 | PUSH IX | Stash IX on the stack. | ||
| F168 | CALL $F1E5 | Call F1E5. | ||
| F16B | LD HL,($5C36) | Stash *CHARS on the stack. | ||
| F16E | PUSH HL | |||
| F16F | LD HL,$8378 | Write 8378 (Graphics_RoomScaffolding_Empty) to *CHARS. | ||
| F172 | LD ($5C36),HL | |||
| F175 | LD A,$10 | Set INK: *ActiveRoom_KeyColour. | ||
| F177 | RST $10 | |||
| F178 | LD A,($5BCC) | |||
| F17B | RST $10 | |||
| F17C | LD (IX+$05),$03 | Write 03 to *IX+05. | ||
| F180 | LD C,(IX+$02) | C=*IX+02. | ||
| F183 | LD B,(IX+$03) | B=*IX+03. | ||
| F186 | PUSH BC | Stash BC on the stack. | ||
| F187 | CALL ConvertCoordinateToBufferOffset | Call ConvertCoordinateToBufferOffset. | ||
| F18A | CALL $0DD9 | Call CL_SET. | ||
| F18D | LD A,(IX+$04) | A=*IX+04. | ||
| F190 | ADD A,$41 | A+=41. TODO Graphics_KeyLabels | ||
| F192 | CALL $E804 | Call E804. | ||
| F195 | RST $10 | Print to the screen using RST 10. | ||
| F196 | POP BC | Restore BC from the stack. | ||
| F197 | DEC B | Decrease B by one. | ||
| F198 | CALL ConvertCoordinateToBufferOffset | Call ConvertCoordinateToBufferOffset. | ||
| F19B | CALL $0DD9 | Call CL_SET. | ||
| F19E | LD A,$4B | A=Graphics_KeyBottom (4B). | ||
| F1A0 | CALL $E804 | Call E804. | ||
| F1A3 | RST $10 | Print to the screen using RST 10. | ||
| F1A4 | POP HL | Restore the original value of *CHARS from the stack. | ||
| F1A5 | LD ($5C36),HL | |||
| F1A8 | POP IX | Restore IX from the stack. | ||
| Handler_KeysAndLockedDoors_1 | F1AA | POP AF | Restore AF from the stack. | |
| F1AB | LD (IX+$10),A | Write A to *IX+10. | ||
| F1AE | RET | Return. | ||
| Prev: F104 | Up: Map | Next: F1AF |