![]() |
Routines |
| Prev: F9BF | Up: Map | Next: FB4E |
|
Used by the routine at ChangeControls.
|
||||
| UserDefinedKeys | FAA8 | CALL CreateAdminPageTemplate | Call CreateAdminPageTemplate. | |
| FAAB | CALL GetKeypress | Call GetKeypress. | ||
| FAAE | JR NZ,UserDefinedKeys | Loop back to UserDefinedKeys until the pressed key is released. | ||
| FAB0 | LD HL,$FB4E | Write UserDefinedKeys_Buffer to *UserDefinedKeys_Pointer. | ||
| FAB3 | LD ($FB58),HL | |||
|
Print "SELECT THE CONTROLS FOR".
|
||||
| FAB6 | LD HL,$D0D5 | HL=Messaging_ChangeControls. | ||
| FAB9 | LD BC,$0403 | BC=0403 (screen co-ordinates). | ||
| FABC | CALL PrintString | Call PrintString. | ||
| FABF | INC HL | Move onto the start of the next message. | ||
| FAC0 | LD BC,$0602 | BC=0602 (screen co-ordinates). | ||
| FAC3 | CALL PrintString | Call PrintString. | ||
|
Programmatically display all the Messaging_Controls options.
|
||||
| FAC6 | LD HL,$D0EB | HL=Messaging_Controls. | ||
| FAC9 | LD BC,$0804 | BC=0804 (screen co-ordinates). | ||
| FACC | LD A,$05 | A=05 (control counter). | ||
| UserDefinedKeys_PrintLoop | FACE | PUSH AF | Stash the control counter and current screen co-ordinates on the stack. | |
| FACF | PUSH BC | |||
| FAD0 | CALL PrintString | Call PrintString. | ||
| FAD3 | POP BC | Restore the current screen co-ordinates and control counter from the stack. | ||
| FAD4 | POP AF | |||
| FAD5 | INC HL | Move onto the start of the next message. | ||
|
The options are two lines apart.
|
||||
| FAD6 | INC B | Increment B by two. | ||
| FAD7 | INC B | |||
| FAD8 | DEC A | Decrease the control counter by one. | ||
| FAD9 | 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).
|
||||
| FADB | DEC B | Decrease B by one. | ||
| FADC | CALL PrintString | Call PrintString. | ||
|
Set up displaying the "?" indicator to request the user defined keypress.
|
||||
| FADF | LD BC,$080B | BC=080B (screen co-ordinates). | ||
| UserDefinedKeys_Request | FAE2 | PUSH BC | Stash BC on the stack twice. | |
| FAE3 | PUSH BC | |||
| FAE4 | LD HL,$D104 | HL=Messaging_QuestionMark. | ||
| FAE7 | CALL PrintString | Call PrintString. | ||
|
Output to the screen buffer.
|
||||
| FAEA | CALL ScreenBuffer_Update | Call ScreenBuffer_Update. | ||
| FAED | CALL AttributeBuffer_Update | Call AttributeBuffer_Update. | ||
| UserDefinedKeys_Input | FAF0 | CALL ChooseControlType | Call ChooseControlType. | |
| FAF3 | JR NZ,UserDefinedKeys_Input | Loop back to UserDefinedKeys_Input until an option has been selected. | ||
| FAF5 | LD A,D | A=keypress. | ||
| FAF6 | CP $FF | Jump to UserDefinedKeys_Input if the keypress is invalid. | ||
| FAF8 | JR Z,UserDefinedKeys_Input | |||
| FAFA | EX DE,HL | Exchange the DE and HL registers. | ||
| FAFB | LD HL,$FBF2 | HL=Table_ASCII. | ||
| FAFE | LD B,$00 | Create an offset using BC. | ||
| FB00 | LD C,A | |||
| FB01 | ADD HL,BC | HL+=BC. | ||
| FB02 | LD A,(HL) | A=*HL. | ||
| FB03 | CP $80 | Jump to UserDefinedKeys_Input if A is higher than 80. | ||
| FB05 | JR NC,UserDefinedKeys_Input | |||
|
Set a print terminator.
|
||||
| FB07 | OR %10000000 | Set bit 7. | ||
| FB09 | LD (HL),A | Write A to *HL. | ||
| FB0A | LD HL,$D106 | HL=Messaging_Buffer. | ||
|
Remove the print terminator and write to the buffer.
|
||||
| FB0D | AND %01111111 | Keep only bits 0-6. | ||
| FB0F | 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.
|
||||
| FB10 | CP $21 | Jump to UserDefinedKeys_CheckIfCapsShift if A is not equal to 21. | ||
| FB12 | JR NZ,UserDefinedKeys_CheckIfCapsShift | |||
| FB14 | LD HL,$D10E | HL=Messaging_Enter. | ||
| UserDefinedKeys_CheckIfCapsShift | FB17 | CP $27 | Jump to UserDefinedKeys_CheckIfSymbolShift if A is not equal to 27. | |
| FB19 | JR NZ,UserDefinedKeys_CheckIfSymbolShift | |||
| FB1B | LD HL,$D108 | HL=Messaging_CapsShift. | ||
| UserDefinedKeys_CheckIfSymbolShift | FB1E | CP $18 | Jump to UserDefinedKeys_CheckIfSpace if A is not equal to 18. | |
| FB20 | JR NZ,UserDefinedKeys_CheckIfSpace | |||
| FB22 | LD HL,$D10A | HL=Messaging_SymbolShift. | ||
| UserDefinedKeys_CheckIfSpace | FB25 | CP $20 | Jump to UserDefinedKeys_PrintKey if A is not equal to 20. | |
| FB27 | JR NZ,UserDefinedKeys_PrintKey | |||
| FB29 | LD HL,$D10C | HL=Messaging_Space. | ||
|
Print the user defined key on the screen in the appropriate location.
|
||||
| UserDefinedKeys_PrintKey | FB2C | POP BC | Restore BC from the stack. | |
| FB2D | PUSH DE | Stash DE on the stack. | ||
| FB2E | CALL PrintString | Call PrintString. | ||
| FB31 | POP DE | Restore DE from the stack. | ||
|
Store the keypress port and value in the buffer.
|
||||
| FB32 | LD HL,($FB58) | HL=*UserDefinedKeys_Pointer. | ||
| FB35 | LD (HL),E | Write E to *HL. | ||
| FB36 | INC HL | Increment HL by one. | ||
| FB37 | LD (HL),D | Write D to *HL. | ||
| FB38 | INC HL | Move onto the next buffer location. | ||
| FB39 | LD ($FB58),HL | Update the stored buffer at *UserDefinedKeys_Pointer. | ||
| FB3C | POP BC | Restore BC from the stack. | ||
|
Move down two lines onto the next option.
|
||||
| FB3D | INC B | Increment B by two. | ||
| FB3E | INC B | |||
|
Check if we've reached the end?
|
||||
| FB3F | LD A,B | Jump to UserDefinedKeys_Request until B is equal to 12. | ||
| FB40 | CP $12 | |||
| FB42 | JR NZ,UserDefinedKeys_Request | |||
|
Output to the screen buffer.
|
||||
| FB44 | CALL ScreenBuffer_Update | Call ScreenBuffer_Update. | ||
| FB47 | CALL AttributeBuffer_Update | Call AttributeBuffer_Update. | ||
| FB4A | CALL ShortPause | Call ShortPause. | ||
| FB4D | RET | Return. | ||
| Prev: F9BF | Up: Map | Next: FB4E |