![]() |
Routines |
| Prev: 24925 | Up: Map | Next: 25019 |
| 24951 | LD A,96 | Message 96: newline | ||
| 24953 | LD (32722),A | Store this message number at 32722 so that it can be watched in the message queue | ||
| 24956 | CALL 30154 | Queue the message urgently | ||
| 24959 | LD A,97 | Message 97: 'JOYSTICK?' | ||
| 24961 | CALL 30154 | Queue this message urgently | ||
| 24964 | CALL 30972 | Wait until message 96 (newline) has left the queue (and therefore 'JOYSTICK?' is displayed) | ||
| 24967 | JR Z,24964 | |||
| 24969 | CALL 60121 | Wait for a keypress and collect its ASCII code in A | ||
| 24972 | JR Z,24969 | |||
| 24974 | SET 5,A | Convert the keypress to lower case | ||
| 24976 | LD HL,25019 | Point HL at the keypress offset patch table at 25019 | ||
| 24979 | LD DE,49968 | Point DE at the main keypress offset table | ||
| 24982 | LD BC,10 | There will be 10 bytes to copy | ||
| 24985 | CP 107 | Was 'k' pressed? | ||
| 24987 | JR NZ,25001 | Jump if not | ||
|
Now HL points at the appropriate keypress offset patch table (25029 if 'i' (Int2) was pressed, or 25019 otherwise), and A holds the input device indicator (107 if 'k' (Kempston) was pressed, or 0 otherwise).
|
||||
| 24989 | PUSH HL | Save the pointer to the keypress offset patch table briefly | ||
| 24990 | LD HL,65530 | Set the input device indicator for future games at 65530 | ||
| 24993 | LD (HL),A | |||
| 24994 | LD H,127 | Set the input device indicator for the current game at 32762 | ||
| 24996 | LD (HL),A | |||
| 24997 | POP HL | Restore the address of the keypress offset patch table to HL | ||
| 24998 | LDIR | Update the entries for keys 0-9 in the keypress offset table | ||
| 25000 | RET | |||
|
Some key other than 'k' (Kempston) was pressed.
|
||||
| 25001 | CP 99 | Was 'c' (Cursor) pressed? | ||
| 25003 | JR Z,25013 | Jump if so | ||
| 25005 | CP 110 | Was 'n' (None) pressed? | ||
| 25007 | JR Z,25013 | Jump if so | ||
| 25009 | LD L,197 | HL=25029 (keypress offset patch table for Int2) | ||
| 25011 | CP 105 | Set the zero flag if 'i' was pressed | ||
| 25013 | LD A,0 | 0 indicates that we're not using the Kempston joystick | ||
| 25015 | JR Z,24989 | Jump if 'i' (Int2) was pressed | ||
| 25017 | JR 24969 | Otherwise jump back to collect another keypress | ||
| Prev: 24925 | Up: Map | Next: 25019 |