![]() |
Routines |
Prev: 615D | Up: Map |
|
||||||||
6177 | LD A,$60 | Message 0x60: newline | ||||||
6179 | LD ($7FD2),A | Store this message number at 7FD2 so that it can be watched in the message queue | ||||||
617C | CALL $75CA | Queue the message urgently | ||||||
617F | LD A,$61 | Message 0x61: 'JOYSTICK?' | ||||||
6181 | CALL $75CA | Queue this message urgently | ||||||
6184 | CALL $78FC | Wait until message 0x60 (newline) has left the queue (and therefore 'JOYSTICK?' is displayed) | ||||||
6187 | JR Z,$6184 | |||||||
6189 | CALL $EAD9 | Wait for a keypress and collect its ASCII code in A | ||||||
618C | JR Z,$6189 | |||||||
618E | SET 5,A | Convert the keypress to lower case | ||||||
6190 | LD HL,$61BB | Point HL at the keypress offset patch table at 61BB | ||||||
6193 | LD DE,$C330 | Point DE at the main keypress offset table | ||||||
6196 | LD BC,$000A | There will be 10 bytes to copy | ||||||
6199 | CP $6B | Was 'k' pressed? | ||||||
619B | JR NZ,$61A9 | Jump if not | ||||||
Now HL points at the appropriate keypress offset patch table (61C5 if 'i' (Int2) was pressed, or 61BB otherwise), and A holds the input device indicator (0x6B if 'k' (Kempston) was pressed, or 0x00 otherwise).
|
||||||||
619D | PUSH HL | Save the pointer to the keypress offset patch table briefly | ||||||
619E | LD HL,$FFFA | Set the input device indicator for future games at FFFA | ||||||
61A1 | LD (HL),A | |||||||
61A2 | LD H,$7F | Set the input device indicator for the current game at 7FFA | ||||||
61A4 | LD (HL),A | |||||||
61A5 | POP HL | Restore the address of the keypress offset patch table to HL | ||||||
61A6 | LDIR | Update the entries for keys 0-9 in the keypress offset table | ||||||
61A8 | RET | |||||||
Some key other than 'k' (Kempston) was pressed.
|
||||||||
61A9 | CP $63 | Was 'c' (Cursor) pressed? | ||||||
61AB | JR Z,$61B5 | Jump if so | ||||||
61AD | CP $6E | Was 'n' (None) pressed? | ||||||
61AF | JR Z,$61B5 | Jump if so | ||||||
61B1 | LD L,$C5 | HL=61C5 (keypress offset patch table for Int2) | ||||||
61B3 | CP $69 | Set the zero flag if 'i' was pressed | ||||||
61B5 | LD A,$00 | 0 indicates that we're not using the Kempston joystick | ||||||
61B7 | JR Z,$619D | Jump if 'i' (Int2) was pressed | ||||||
61B9 | JR $6189 | Otherwise jump back to collect another keypress |
Prev: 615D | Up: Map |