Routines |
Prev: 29338 | Up: Map | Next: 29456 |
Used by the routine at WinnersTableNameEntry.
|
||||||||||
This is a highscore so collect the users name.
|
||||||||||
CollectName | 29365 | PUSH BC | Stash BC and HL on the stack. | |||||||
29366 | PUSH HL | |||||||||
29367 | LD HL,29593 | HL=Messaging_YourName. | ||||||||
29370 | CALL 6269 | Call OUT_LINE2. | ||||||||
Clear out the buffer from any previous name entries.
|
||||||||||
29373 | LD HL,29571 | HL=Buffer_NameEntry. | ||||||||
29376 | LD B,22 | Set a counter of 22 which is the maximum length of the name entry buffer. | ||||||||
Clear_NameEntryBuffer_Loop | 29378 | LD (HL),32 | Write an ASCII "SPACE" (32) to *HL. | |||||||
29380 | INC HL | Increment HL by one. | ||||||||
29381 | DJNZ Clear_NameEntryBuffer_Loop | Decrease counter by one and loop back to Clear_NameEntryBuffer_Loop until counter is zero. | ||||||||
29383 | XOR A | Write 0 to *FlagKeyEntry. | ||||||||
29384 | LD (29494),A | |||||||||
29387 | LD HL,29571 | HL=Buffer_NameEntry. | ||||||||
29390 | LD B,13 | B=13. | ||||||||
This entry point is used by the routine at NameEntryDelete.
|
||||||||||
NameEntryCollectInput | 29392 | PUSH BC | Stash BC and the buffer pointer on the stack. | |||||||
29393 | PUSH HL | |||||||||
This entry point is used by the routine at NameEntryDelete.
|
||||||||||
NameEntryCollectInput_Loop | 29394 | RES 5,(IY+1) | Reset bit 5 of *FLAGS which resets "when a new key has been pressed". | |||||||
29398 | CALL 703 | Call KEYBOARD. | ||||||||
29401 | BIT 5,(IY+1) | Jump to NameEntryCollectInput_Loop if no key was pressed. | ||||||||
29405 | JR Z,NameEntryCollectInput_Loop | |||||||||
29407 | LD A,(23560) | Jump to ShiftHighScores if *LAST-K (last key pressed) is "enter". | ||||||||
29410 | CP 13 | |||||||||
29412 | JR Z,ShiftHighScores | |||||||||
29414 | CP 12 | Jump to NameEntryDelete if *LAST-K (last key pressed) is "delete". | ||||||||
29416 | JR Z,NameEntryDelete | |||||||||
29418 | LD B,A | Copy the keypress into B. | ||||||||
29419 | LD A,(29494) | Jump to NameEntryCollectInput_Loop if *FlagKeyEntry is not zero. | ||||||||
29422 | OR A | |||||||||
29423 | JR NZ,NameEntryCollectInput_Loop | |||||||||
29425 | LD A,B | Jump to NameEntryCollectInput_Loop if B is lower than 32. | ||||||||
29426 | CP 32 | |||||||||
29428 | JR C,NameEntryCollectInput_Loop | |||||||||
29430 | CP 123 | Jump to NameEntryCollectInput_Loop if B is higher than 123. | ||||||||
29432 | JR NC,NameEntryCollectInput_Loop | |||||||||
29434 | POP HL | Restore the buffer pointer from the stack. | ||||||||
29435 | PUSH HL | Stash the buffer pointer on the stack again. | ||||||||
29436 | LD (HL),A | Write the keypress to the current position in the buffer. | ||||||||
29437 | RST 16 | Print the keypress to the screen. | ||||||||
Handle if no keys are being pressed, for reference:
In all instances the E register is returned with a value in the range of +0 to +39 the value being different for each of the forty keys of the keyboard, or the value +255 for no-key. |
||||||||||
NameEntryDebounce_Loop | 29438 | CALL 654 | Call KEY_SCAN. | |||||||
29441 | INC E | Set the zero flag if no keys have been pressed. | ||||||||
29442 | JR NZ,NameEntryDebounce_Loop | Jump to NameEntryDebounce_Loop unless no keys are being pressed. | ||||||||
29444 | POP HL | Restore the buffer pointer and BC from the stack. | ||||||||
29445 | POP BC | |||||||||
29446 | INC HL | Increment HL by one. | ||||||||
29447 | DJNZ NameEntryCollectInput | Decrease counter by one and loop back to NameEntryCollectInput until counter is zero. | ||||||||
29449 | LD A,1 | Write 1 to *FlagKeyEntry. | ||||||||
29451 | LD (29494),A | |||||||||
29454 | JR NameEntryCollectInput | Jump to NameEntryCollectInput. |
Prev: 29338 | Up: Map | Next: 29456 |