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 |