![]() |
Routines |
Prev: 49217 | Up: Map | Next: 49533 |
Used by the routine at Handler_UserInput.
Handles the user pressing "ENTER".
|
||||||||||
UserInput_Enter | 49240 | LD (HL),A | Write 13 to the command buffer pointer for use as a termination character. | |||||||
Force a newline to be "printed" to the screen.
|
||||||||||
49241 | CALL SwitchNormalScreenOutput | Call SwitchNormalScreenOutput. | ||||||||
49244 | CALL PrintCharacter | Call PrintCharacter. | ||||||||
Clear down the word token buffer which will eventually hold the tokenised input.
|
||||||||||
49247 | LD HL,48486 | HL=UserInput_Token_1. | ||||||||
49250 | LD A,255 | A=255. | ||||||||
49252 | LD B,10 | Set a counter in B for the size of the word token buffer (10 bytes). | ||||||||
Write 255 10 times wiping the word token buffer.
|
||||||||||
EmptyWordTokenBuffer_Loop | 49254 | LD (HL),A | Write A to *HL. | |||||||
49255 | INC HL | Increment HL by one. | ||||||||
49256 | DJNZ EmptyWordTokenBuffer_Loop | Decrease the word token buffer counter by one and loop back to EmptyWordTokenBuffer_Loop until the whole buffer is cleared. | ||||||||
49258 | LD HL,48436 | HL=CommandBuffer. | ||||||||
49261 | LD C,10 | C=10. | ||||||||
Now begin tokenising the user input.
|
||||||||||
UserInputParser_Loop | 49263 | LD DE,48497 | DE=48497. | |||||||
49266 | LD B,4 | B=4. | ||||||||
49268 | LD A,32 | Write ASCII "SPACE" (32) to *DE. | ||||||||
UserInput_Enter_0 | 49270 | LD (DE),A | ||||||||
49271 | INC DE | Increment DE by one. | ||||||||
49272 | DJNZ UserInput_Enter_0 | Decrease counter by one and loop back to UserInput_Enter_0 until counter is zero. | ||||||||
49274 | XOR A | A=0. | ||||||||
49275 | OR C | Set the bits from C. | ||||||||
49276 | JP Z,UserInput_Enter_19 | Jump to UserInput_Enter_19 if DE is equal to C. | ||||||||
49279 | LD A,(HL) | Jump to UserInput_Enter_19 if *HL is equal to 13. | ||||||||
49280 | CP 13 | |||||||||
49282 | JP Z,UserInput_Enter_19 | |||||||||
49285 | LD B,4 | B=4. | ||||||||
49287 | LD DE,48497 | DE=48497. | ||||||||
UserInput_Enter_1 | 49290 | LD A,(HL) | A=*HL. | |||||||
49291 | CP 13 | Jump to UserInput_Enter_4 if A is equal to 13. | ||||||||
49293 | JR Z,UserInput_Enter_4 | |||||||||
49295 | CP 32 | Jump to UserInput_Enter_3 if A is equal to 32. | ||||||||
49297 | JR Z,UserInput_Enter_3 | |||||||||
49299 | CP 44 | Jump to UserInput_Enter_3 if A is equal to 44. | ||||||||
49301 | JR Z,UserInput_Enter_3 | |||||||||
49303 | LD (DE),A | Write A to *DE. | ||||||||
49304 | INC HL | Increment HL by one. | ||||||||
49305 | INC DE | Increment DE by one. | ||||||||
49306 | DJNZ UserInput_Enter_1 | Decrease counter by one and loop back to UserInput_Enter_1 until counter is zero. | ||||||||
UserInput_Enter_2 | 49308 | LD A,(HL) | A=*HL. | |||||||
49309 | CP 13 | Jump to UserInput_Enter_4 if A is equal to 13. | ||||||||
49311 | JR Z,UserInput_Enter_4 | |||||||||
49313 | CP 32 | Jump to UserInput_Enter_3 if A is equal to 32. | ||||||||
49315 | JR Z,UserInput_Enter_3 | |||||||||
49317 | CP 44 | Jump to UserInput_Enter_3 if A is equal to 44. | ||||||||
49319 | JR Z,UserInput_Enter_3 | |||||||||
49321 | INC HL | Increment HL by one. | ||||||||
49322 | JR UserInput_Enter_2 | Jump to UserInput_Enter_2. | ||||||||
UserInput_Enter_3 | 49324 | INC HL | Increment HL by one. | |||||||
49325 | LD A,(HL) | A=*HL. | ||||||||
49326 | CP 32 | Jump to UserInput_Enter_3 if A is equal to 32. | ||||||||
49328 | JR Z,UserInput_Enter_3 | |||||||||
49330 | CP 44 | Jump to UserInput_Enter_3 if A is equal to 44. | ||||||||
49332 | JR Z,UserInput_Enter_3 | |||||||||
UserInput_Enter_4 | 49334 | PUSH HL | Stash HL, DE and BC on the stack. | |||||||
49335 | PUSH DE | |||||||||
49336 | PUSH BC | |||||||||
49337 | LD HL,48524 | HL=Messaging_The. | ||||||||
49340 | LD DE,48497 | DE=48497. | ||||||||
49343 | LD B,4 | B=4. | ||||||||
UserInput_Enter_5 | 49345 | LD A,(DE) | Jump to UserInput_Enter_6 if *DE is not equal to *HL. | |||||||
49346 | CP (HL) | |||||||||
49347 | JR NZ,UserInput_Enter_6 | |||||||||
49349 | INC DE | Increment DE by one. | ||||||||
49350 | INC HL | Increment HL by one. | ||||||||
49351 | DJNZ UserInput_Enter_5 | Decrease counter by one and loop back to UserInput_Enter_5 until counter is zero. | ||||||||
UserInput_Enter_6 | 49353 | POP BC | Restore BC, DE and HL from the stack. | |||||||
49354 | POP DE | |||||||||
49355 | POP HL | |||||||||
49356 | JR Z,UserInputParser_Loop | Jump to UserInputParser_Loop if HL is equal to *HL. | ||||||||
49358 | DEC C | Decrease C by one. | ||||||||
49359 | LD (48509),HL | Write HL to *TempStore_TablePointer. | ||||||||
49362 | LD (48511),DE | Write DE to *TempStore_TableIndex. | ||||||||
49366 | LD (48513),BC | Write BC to *48513. | ||||||||
49370 | LD HL,(48396) | HL=*Pointer_Vocabulary. | ||||||||
49373 | LD C,0 | C=0. | ||||||||
UserInput_Enter_7 | 49375 | LD A,(HL) | Jump to UserInput_Enter_12 if *HL is equal to 255. | |||||||
49376 | CP 255 | |||||||||
49378 | JR Z,UserInput_Enter_12 | |||||||||
UserInput_Enter_8 | 49380 | LD DE,48497 | DE=48497. | |||||||
49383 | LD B,4 | B=4. | ||||||||
UserInput_Enter_9 | 49385 | LD A,(DE) | Jump to UserInput_Enter_10 if *DE is not equal to *HL. | |||||||
49386 | CP (HL) | |||||||||
49387 | JR NZ,UserInput_Enter_10 | |||||||||
49389 | INC DE | Increment DE by one. | ||||||||
49390 | INC HL | Increment HL by one. | ||||||||
49391 | DJNZ UserInput_Enter_9 | Decrease counter by one and loop back to UserInput_Enter_9 until counter is zero. | ||||||||
49393 | LD HL,48513 | HL=48513. | ||||||||
49396 | LD A,9 | A=9. | ||||||||
49398 | SUB (HL) | A-=*HL. | ||||||||
49399 | LD D,0 | D=0. | ||||||||
49401 | LD E,A | E=A. | ||||||||
49402 | LD HL,48486 | HL=UserInput_Token_1+DE. | ||||||||
49405 | ADD HL,DE | |||||||||
49406 | LD (HL),C | Write C to *HL. | ||||||||
49407 | LD HL,(48509) | HL=*TempStore_TablePointer. | ||||||||
49410 | LD DE,(48511) | DE=*TempStore_TableIndex. | ||||||||
49414 | LD BC,(48513) | BC=*48513. | ||||||||
49418 | JP UserInputParser_Loop | Jump to UserInputParser_Loop. | ||||||||
UserInput_Enter_10 | 49421 | LD E,B | E=B. | |||||||
49422 | LD D,0 | D=0. | ||||||||
49424 | ADD HL,DE | HL+=DE. | ||||||||
49425 | LD A,(HL) | A=*HL. | ||||||||
49426 | CP 44 | Jump to UserInput_Enter_11 if A is not equal to 44. | ||||||||
49428 | JR NZ,UserInput_Enter_11 | |||||||||
49430 | INC HL | Increment HL by one. | ||||||||
49431 | JR UserInput_Enter_8 | Jump to UserInput_Enter_8. | ||||||||
UserInput_Enter_11 | 49433 | INC C | Increment C by one. | |||||||
49434 | JR UserInput_Enter_7 | Jump to UserInput_Enter_7. | ||||||||
UserInput_Enter_12 | 49436 | LD HL,(48509) | HL=*TempStore_TablePointer. | |||||||
49439 | LD DE,(48511) | DE=*TempStore_TableIndex. | ||||||||
49443 | LD BC,(48513) | BC=*48513. | ||||||||
49447 | LD A,10 | C=10-C. | ||||||||
49449 | SUB C | |||||||||
49450 | LD C,A | |||||||||
49451 | LD HL,48436 | HL=CommandBuffer. | ||||||||
UserInput_Enter_13 | 49454 | DEC C | Decrease C by one. | |||||||
49455 | JR Z,UserInput_Enter_16 | Jump to UserInput_Enter_16 if C is equal to 10. | ||||||||
UserInput_Enter_14 | 49457 | LD A,(HL) | A=*HL. | |||||||
49458 | CP 32 | Jump to UserInput_Enter_15 if A is equal to 32. | ||||||||
49460 | JR Z,UserInput_Enter_15 | |||||||||
49462 | CP 44 | Jump to UserInput_Enter_15 if A is equal to 44. | ||||||||
49464 | JR Z,UserInput_Enter_15 | |||||||||
49466 | INC HL | Increment HL by one. | ||||||||
49467 | JR UserInput_Enter_14 | Jump to UserInput_Enter_14. | ||||||||
UserInput_Enter_15 | 49469 | INC HL | Increment HL by one. | |||||||
49470 | LD A,(HL) | A=*HL. | ||||||||
49471 | CP 32 | Jump to UserInput_Enter_15 if A is equal to 32. | ||||||||
49473 | JR Z,UserInput_Enter_15 | |||||||||
49475 | CP 44 | Jump to UserInput_Enter_15 if A is equal to 44. | ||||||||
49477 | JR Z,UserInput_Enter_15 | |||||||||
49479 | JR UserInput_Enter_13 | Jump to UserInput_Enter_13. | ||||||||
UserInput_Enter_16 | 49481 | PUSH HL | Stash HL on the stack. | |||||||
Print "I don't know the word:-".
|
||||||||||
49482 | LD HL,48549 | HL=Messaging_IDontKnowTheWord. | ||||||||
49485 | CALL PrintStringAndNewline | Call PrintStringAndNewline. | ||||||||
49488 | POP HL | Restore HL from the stack. | ||||||||
49489 | LD A,34 | Print a double quote character: "" ". |
||||||||
49491 | CALL PrintCharacter | |||||||||
UserInput_Enter_17 | 49494 | LD A,(HL) | A=*HL. | |||||||
49495 | CP 33 | Jump to UserInput_Enter_18 if A is less than 33. | ||||||||
49497 | JR C,UserInput_Enter_18 | |||||||||
49499 | INC HL | Increment HL by one. | ||||||||
49500 | CALL PrintCharacter | Call PrintCharacter. | ||||||||
49503 | JR UserInput_Enter_17 | Jump to UserInput_Enter_17. | ||||||||
UserInput_Enter_18 | 49505 | LD A,34 | Print a double quote character: "" ". |
|||||||
49507 | CALL PrintCharacter | |||||||||
Print ".".
|
||||||||||
49510 | LD HL,48937 | HL=Messaging_FullStop. | ||||||||
49513 | CALL PrintStringAndNewline | Call PrintStringAndNewline. | ||||||||
49516 | JR UserInput_Enter_20 | Jump to UserInput_Enter_20. | ||||||||
UserInput_Enter_19 | 49518 | LD A,(48486) | Return if *UserInput_Token_1 is not equal to 255. | |||||||
49521 | CP 255 | |||||||||
49523 | RET NZ | |||||||||
Print "I don't understand.".
|
||||||||||
49524 | LD HL,48529 | HL=Messaging_IDontUnderstand. | ||||||||
49527 | CALL PrintStringAndNewline | Call PrintStringAndNewline. | ||||||||
UserInput_Enter_20 | 49530 | JP Handler_UserInput | Jump to Handler_UserInput. |
Prev: 49217 | Up: Map | Next: 49533 |