Routines |
Prev: 615D | Up: Map | Next: 61BB |
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 | Next: 61BB |