![]() |
Routines |
| Prev: 63935 | Up: Map | Next: 64334 |
|
Used by the routine at ChangeControls.
|
||||
| UserDefinedKeys | 64168 | CALL CreateAdminPageTemplate | Call CreateAdminPageTemplate. | |
| 64171 | CALL GetKeypress | Call GetKeypress. | ||
| 64174 | JR NZ,UserDefinedKeys | Loop back to UserDefinedKeys until the pressed key is released. | ||
| 64176 | LD HL,64334 | Write UserDefinedKeys_Buffer to *UserDefinedKeys_Pointer. | ||
| 64179 | LD (64344),HL | |||
|
Print "SELECT THE CONTROLS FOR".
|
||||
| 64182 | LD HL,53461 | HL=Messaging_ChangeControls. | ||
| 64185 | LD BC,1027 | BC=1027 (screen co-ordinates). | ||
| 64188 | CALL PrintString | Call PrintString. | ||
| 64191 | INC HL | Move onto the start of the next message. | ||
| 64192 | LD BC,1538 | BC=1538 (screen co-ordinates). | ||
| 64195 | CALL PrintString | Call PrintString. | ||
|
Programmatically display all the Messaging_Controls options.
|
||||
| 64198 | LD HL,53483 | HL=Messaging_Controls. | ||
| 64201 | LD BC,2052 | BC=2052 (screen co-ordinates). | ||
| 64204 | LD A,5 | A=5 (control counter). | ||
| UserDefinedKeys_PrintLoop | 64206 | PUSH AF | Stash the control counter and current screen co-ordinates on the stack. | |
| 64207 | PUSH BC | |||
| 64208 | CALL PrintString | Call PrintString. | ||
| 64211 | POP BC | Restore the current screen co-ordinates and control counter from the stack. | ||
| 64212 | POP AF | |||
| 64213 | INC HL | Move onto the start of the next message. | ||
|
The options are two lines apart.
|
||||
| 64214 | INC B | Increment B by two. | ||
| 64215 | INC B | |||
| 64216 | DEC A | Decrease the control counter by one. | ||
| 64217 | JR NZ,UserDefinedKeys_PrintLoop | Jump to UserDefinedKeys_PrintLoop until all controls have been printed. | ||
|
Prints the last line manually "PUNCH" (as it's the second line of the option before it).
|
||||
| 64219 | DEC B | Decrease B by one. | ||
| 64220 | CALL PrintString | Call PrintString. | ||
|
Set up displaying the "?" indicator to request the user defined keypress.
|
||||
| 64223 | LD BC,2059 | BC=2059 (screen co-ordinates). | ||
| UserDefinedKeys_Request | 64226 | PUSH BC | Stash BC on the stack twice. | |
| 64227 | PUSH BC | |||
| 64228 | LD HL,53508 | HL=Messaging_QuestionMark. | ||
| 64231 | CALL PrintString | Call PrintString. | ||
|
Output to the screen buffer.
|
||||
| 64234 | CALL ScreenBuffer_Update | Call ScreenBuffer_Update. | ||
| 64237 | CALL AttributeBuffer_Update | Call AttributeBuffer_Update. | ||
| UserDefinedKeys_Input | 64240 | CALL ChooseControlType | Call ChooseControlType. | |
| 64243 | JR NZ,UserDefinedKeys_Input | Loop back to UserDefinedKeys_Input until an option has been selected. | ||
| 64245 | LD A,D | A=keypress. | ||
| 64246 | CP 255 | Jump to UserDefinedKeys_Input if the keypress is invalid. | ||
| 64248 | JR Z,UserDefinedKeys_Input | |||
| 64250 | EX DE,HL | Exchange the DE and HL registers. | ||
| 64251 | LD HL,64498 | HL=Table_ASCII. | ||
| 64254 | LD B,0 | Create an offset using BC. | ||
| 64256 | LD C,A | |||
| 64257 | ADD HL,BC | HL+=BC. | ||
| 64258 | LD A,(HL) | A=*HL. | ||
| 64259 | CP 128 | Jump to UserDefinedKeys_Input if A is higher than 128. | ||
| 64261 | JR NC,UserDefinedKeys_Input | |||
|
Set a print terminator.
|
||||
| 64263 | OR %10000000 | Set bit 7. | ||
| 64265 | LD (HL),A | Write A to *HL. | ||
| 64266 | LD HL,53510 | HL=Messaging_Buffer. | ||
|
Remove the print terminator and write to the buffer.
|
||||
| 64269 | AND %01111111 | Keep only bits 0-6. | ||
| 64271 | LD (HL),A | Write A to *HL. | ||
|
If "special keys" (e.g. Caps Shift/ Symbol Shift/ Enter/ Space) are selected, provide a means to show that these have been selected.
|
||||
| 64272 | CP 33 | Jump to UserDefinedKeys_CheckIfCapsShift if A is not equal to 33. | ||
| 64274 | JR NZ,UserDefinedKeys_CheckIfCapsShift | |||
| 64276 | LD HL,53518 | HL=Messaging_Enter. | ||
| UserDefinedKeys_CheckIfCapsShift | 64279 | CP 39 | Jump to UserDefinedKeys_CheckIfSymbolShift if A is not equal to 39. | |
| 64281 | JR NZ,UserDefinedKeys_CheckIfSymbolShift | |||
| 64283 | LD HL,53512 | HL=Messaging_CapsShift. | ||
| UserDefinedKeys_CheckIfSymbolShift | 64286 | CP 24 | Jump to UserDefinedKeys_CheckIfSpace if A is not equal to 24. | |
| 64288 | JR NZ,UserDefinedKeys_CheckIfSpace | |||
| 64290 | LD HL,53514 | HL=Messaging_SymbolShift. | ||
| UserDefinedKeys_CheckIfSpace | 64293 | CP 32 | Jump to UserDefinedKeys_PrintKey if A is not equal to 32. | |
| 64295 | JR NZ,UserDefinedKeys_PrintKey | |||
| 64297 | LD HL,53516 | HL=Messaging_Space. | ||
|
Print the user defined key on the screen in the appropriate location.
|
||||
| UserDefinedKeys_PrintKey | 64300 | POP BC | Restore BC from the stack. | |
| 64301 | PUSH DE | Stash DE on the stack. | ||
| 64302 | CALL PrintString | Call PrintString. | ||
| 64305 | POP DE | Restore DE from the stack. | ||
|
Store the keypress port and value in the buffer.
|
||||
| 64306 | LD HL,(64344) | HL=*UserDefinedKeys_Pointer. | ||
| 64309 | LD (HL),E | Write E to *HL. | ||
| 64310 | INC HL | Increment HL by one. | ||
| 64311 | LD (HL),D | Write D to *HL. | ||
| 64312 | INC HL | Move onto the next buffer location. | ||
| 64313 | LD (64344),HL | Update the stored buffer at *UserDefinedKeys_Pointer. | ||
| 64316 | POP BC | Restore BC from the stack. | ||
|
Move down two lines onto the next option.
|
||||
| 64317 | INC B | Increment B by two. | ||
| 64318 | INC B | |||
|
Check if we've reached the end?
|
||||
| 64319 | LD A,B | Jump to UserDefinedKeys_Request until B is equal to 18. | ||
| 64320 | CP 18 | |||
| 64322 | JR NZ,UserDefinedKeys_Request | |||
|
Output to the screen buffer.
|
||||
| 64324 | CALL ScreenBuffer_Update | Call ScreenBuffer_Update. | ||
| 64327 | CALL AttributeBuffer_Update | Call AttributeBuffer_Update. | ||
| 64330 | CALL ShortPause | Call ShortPause. | ||
| 64333 | RET | Return. | ||
| Prev: 63935 | Up: Map | Next: 64334 |