![]() |
Routines |
Prev: C041 | Up: Map | Next: C17D |
Used by the routine at Handler_UserInput.
Handles the user pressing "ENTER".
|
||||||||||
UserInput_Enter | C058 | LD (HL),A | Write 0D to the command buffer pointer for use as a termination character. | |||||||
Force a newline to be "printed" to the screen.
|
||||||||||
C059 | CALL SwitchNormalScreenOutput | Call SwitchNormalScreenOutput. | ||||||||
C05C | CALL PrintCharacter | Call PrintCharacter. | ||||||||
Clear down the word token buffer which will eventually hold the tokenised input.
|
||||||||||
C05F | LD HL,$BD66 | HL=UserInput_Token_1. | ||||||||
C062 | LD A,$FF | A=FF. | ||||||||
C064 | LD B,$0A | Set a counter in B for the size of the word token buffer (0A bytes). | ||||||||
Write FF 0A times wiping the word token buffer.
|
||||||||||
EmptyWordTokenBuffer_Loop | C066 | LD (HL),A | Write A to *HL. | |||||||
C067 | INC HL | Increment HL by one. | ||||||||
C068 | DJNZ EmptyWordTokenBuffer_Loop | Decrease the word token buffer counter by one and loop back to EmptyWordTokenBuffer_Loop until the whole buffer is cleared. | ||||||||
C06A | LD HL,$BD34 | HL=CommandBuffer. | ||||||||
C06D | LD C,$0A | C=0A. | ||||||||
Now begin tokenising the user input.
|
||||||||||
UserInputParser_Loop | C06F | LD DE,$BD71 | DE=BD71. | |||||||
C072 | LD B,$04 | B=04. | ||||||||
C074 | LD A,$20 | Write ASCII "SPACE" (20) to *DE. | ||||||||
UserInput_Enter_0 | C076 | LD (DE),A | ||||||||
C077 | INC DE | Increment DE by one. | ||||||||
C078 | DJNZ UserInput_Enter_0 | Decrease counter by one and loop back to UserInput_Enter_0 until counter is zero. | ||||||||
C07A | XOR A | A=00. | ||||||||
C07B | OR C | Set the bits from C. | ||||||||
C07C | JP Z,UserInput_Enter_19 | Jump to UserInput_Enter_19 if DE is equal to C. | ||||||||
C07F | LD A,(HL) | Jump to UserInput_Enter_19 if *HL is equal to 0D. | ||||||||
C080 | CP $0D | |||||||||
C082 | JP Z,UserInput_Enter_19 | |||||||||
C085 | LD B,$04 | B=04. | ||||||||
C087 | LD DE,$BD71 | DE=BD71. | ||||||||
UserInput_Enter_1 | C08A | LD A,(HL) | A=*HL. | |||||||
C08B | CP $0D | Jump to UserInput_Enter_4 if A is equal to 0D. | ||||||||
C08D | JR Z,UserInput_Enter_4 | |||||||||
C08F | CP $20 | Jump to UserInput_Enter_3 if A is equal to 20. | ||||||||
C091 | JR Z,UserInput_Enter_3 | |||||||||
C093 | CP $2C | Jump to UserInput_Enter_3 if A is equal to 2C. | ||||||||
C095 | JR Z,UserInput_Enter_3 | |||||||||
C097 | LD (DE),A | Write A to *DE. | ||||||||
C098 | INC HL | Increment HL by one. | ||||||||
C099 | INC DE | Increment DE by one. | ||||||||
C09A | DJNZ UserInput_Enter_1 | Decrease counter by one and loop back to UserInput_Enter_1 until counter is zero. | ||||||||
UserInput_Enter_2 | C09C | LD A,(HL) | A=*HL. | |||||||
C09D | CP $0D | Jump to UserInput_Enter_4 if A is equal to 0D. | ||||||||
C09F | JR Z,UserInput_Enter_4 | |||||||||
C0A1 | CP $20 | Jump to UserInput_Enter_3 if A is equal to 20. | ||||||||
C0A3 | JR Z,UserInput_Enter_3 | |||||||||
C0A5 | CP $2C | Jump to UserInput_Enter_3 if A is equal to 2C. | ||||||||
C0A7 | JR Z,UserInput_Enter_3 | |||||||||
C0A9 | INC HL | Increment HL by one. | ||||||||
C0AA | JR UserInput_Enter_2 | Jump to UserInput_Enter_2. | ||||||||
UserInput_Enter_3 | C0AC | INC HL | Increment HL by one. | |||||||
C0AD | LD A,(HL) | A=*HL. | ||||||||
C0AE | CP $20 | Jump to UserInput_Enter_3 if A is equal to 20. | ||||||||
C0B0 | JR Z,UserInput_Enter_3 | |||||||||
C0B2 | CP $2C | Jump to UserInput_Enter_3 if A is equal to 2C. | ||||||||
C0B4 | JR Z,UserInput_Enter_3 | |||||||||
UserInput_Enter_4 | C0B6 | PUSH HL | Stash HL, DE and BC on the stack. | |||||||
C0B7 | PUSH DE | |||||||||
C0B8 | PUSH BC | |||||||||
C0B9 | LD HL,$BD8C | HL=Messaging_The. | ||||||||
C0BC | LD DE,$BD71 | DE=BD71. | ||||||||
C0BF | LD B,$04 | B=04. | ||||||||
UserInput_Enter_5 | C0C1 | LD A,(DE) | Jump to UserInput_Enter_6 if *DE is not equal to *HL. | |||||||
C0C2 | CP (HL) | |||||||||
C0C3 | JR NZ,UserInput_Enter_6 | |||||||||
C0C5 | INC DE | Increment DE by one. | ||||||||
C0C6 | INC HL | Increment HL by one. | ||||||||
C0C7 | DJNZ UserInput_Enter_5 | Decrease counter by one and loop back to UserInput_Enter_5 until counter is zero. | ||||||||
UserInput_Enter_6 | C0C9 | POP BC | Restore BC, DE and HL from the stack. | |||||||
C0CA | POP DE | |||||||||
C0CB | POP HL | |||||||||
C0CC | JR Z,UserInputParser_Loop | Jump to UserInputParser_Loop if HL is equal to *HL. | ||||||||
C0CE | DEC C | Decrease C by one. | ||||||||
C0CF | LD ($BD7D),HL | Write HL to *TempStore_TablePointer. | ||||||||
C0D2 | LD ($BD7F),DE | Write DE to *TempStore_TableIndex. | ||||||||
C0D6 | LD ($BD81),BC | Write BC to *BD81. | ||||||||
C0DA | LD HL,($BD0C) | HL=*Pointer_Vocabulary. | ||||||||
C0DD | LD C,$00 | C=00. | ||||||||
UserInput_Enter_7 | C0DF | LD A,(HL) | Jump to UserInput_Enter_12 if *HL is equal to FF. | |||||||
C0E0 | CP $FF | |||||||||
C0E2 | JR Z,UserInput_Enter_12 | |||||||||
UserInput_Enter_8 | C0E4 | LD DE,$BD71 | DE=BD71. | |||||||
C0E7 | LD B,$04 | B=04. | ||||||||
UserInput_Enter_9 | C0E9 | LD A,(DE) | Jump to UserInput_Enter_10 if *DE is not equal to *HL. | |||||||
C0EA | CP (HL) | |||||||||
C0EB | JR NZ,UserInput_Enter_10 | |||||||||
C0ED | INC DE | Increment DE by one. | ||||||||
C0EE | INC HL | Increment HL by one. | ||||||||
C0EF | DJNZ UserInput_Enter_9 | Decrease counter by one and loop back to UserInput_Enter_9 until counter is zero. | ||||||||
C0F1 | LD HL,$BD81 | HL=BD81. | ||||||||
C0F4 | LD A,$09 | A=09. | ||||||||
C0F6 | SUB (HL) | A-=*HL. | ||||||||
C0F7 | LD D,$00 | D=00. | ||||||||
C0F9 | LD E,A | E=A. | ||||||||
C0FA | LD HL,$BD66 | HL=UserInput_Token_1+DE. | ||||||||
C0FD | ADD HL,DE | |||||||||
C0FE | LD (HL),C | Write C to *HL. | ||||||||
C0FF | LD HL,($BD7D) | HL=*TempStore_TablePointer. | ||||||||
C102 | LD DE,($BD7F) | DE=*TempStore_TableIndex. | ||||||||
C106 | LD BC,($BD81) | BC=*BD81. | ||||||||
C10A | JP UserInputParser_Loop | Jump to UserInputParser_Loop. | ||||||||
UserInput_Enter_10 | C10D | LD E,B | E=B. | |||||||
C10E | LD D,$00 | D=00. | ||||||||
C110 | ADD HL,DE | HL+=DE. | ||||||||
C111 | LD A,(HL) | A=*HL. | ||||||||
C112 | CP $2C | Jump to UserInput_Enter_11 if A is not equal to 2C. | ||||||||
C114 | JR NZ,UserInput_Enter_11 | |||||||||
C116 | INC HL | Increment HL by one. | ||||||||
C117 | JR UserInput_Enter_8 | Jump to UserInput_Enter_8. | ||||||||
UserInput_Enter_11 | C119 | INC C | Increment C by one. | |||||||
C11A | JR UserInput_Enter_7 | Jump to UserInput_Enter_7. | ||||||||
UserInput_Enter_12 | C11C | LD HL,($BD7D) | HL=*TempStore_TablePointer. | |||||||
C11F | LD DE,($BD7F) | DE=*TempStore_TableIndex. | ||||||||
C123 | LD BC,($BD81) | BC=*BD81. | ||||||||
C127 | LD A,$0A | C=0A-C. | ||||||||
C129 | SUB C | |||||||||
C12A | LD C,A | |||||||||
C12B | LD HL,$BD34 | HL=CommandBuffer. | ||||||||
UserInput_Enter_13 | C12E | DEC C | Decrease C by one. | |||||||
C12F | JR Z,UserInput_Enter_16 | Jump to UserInput_Enter_16 if C is equal to 0A. | ||||||||
UserInput_Enter_14 | C131 | LD A,(HL) | A=*HL. | |||||||
C132 | CP $20 | Jump to UserInput_Enter_15 if A is equal to 20. | ||||||||
C134 | JR Z,UserInput_Enter_15 | |||||||||
C136 | CP $2C | Jump to UserInput_Enter_15 if A is equal to 2C. | ||||||||
C138 | JR Z,UserInput_Enter_15 | |||||||||
C13A | INC HL | Increment HL by one. | ||||||||
C13B | JR UserInput_Enter_14 | Jump to UserInput_Enter_14. | ||||||||
UserInput_Enter_15 | C13D | INC HL | Increment HL by one. | |||||||
C13E | LD A,(HL) | A=*HL. | ||||||||
C13F | CP $20 | Jump to UserInput_Enter_15 if A is equal to 20. | ||||||||
C141 | JR Z,UserInput_Enter_15 | |||||||||
C143 | CP $2C | Jump to UserInput_Enter_15 if A is equal to 2C. | ||||||||
C145 | JR Z,UserInput_Enter_15 | |||||||||
C147 | JR UserInput_Enter_13 | Jump to UserInput_Enter_13. | ||||||||
UserInput_Enter_16 | C149 | PUSH HL | Stash HL on the stack. | |||||||
Print "I don't know the word:-".
|
||||||||||
C14A | LD HL,$BDA5 | HL=Messaging_IDontKnowTheWord. | ||||||||
C14D | CALL PrintStringAndNewline | Call PrintStringAndNewline. | ||||||||
C150 | POP HL | Restore HL from the stack. | ||||||||
C151 | LD A,$22 | Print a double quote character: "" ". |
||||||||
C153 | CALL PrintCharacter | |||||||||
UserInput_Enter_17 | C156 | LD A,(HL) | A=*HL. | |||||||
C157 | CP $21 | Jump to UserInput_Enter_18 if A is less than 21. | ||||||||
C159 | JR C,UserInput_Enter_18 | |||||||||
C15B | INC HL | Increment HL by one. | ||||||||
C15C | CALL PrintCharacter | Call PrintCharacter. | ||||||||
C15F | JR UserInput_Enter_17 | Jump to UserInput_Enter_17. | ||||||||
UserInput_Enter_18 | C161 | LD A,$22 | Print a double quote character: "" ". |
|||||||
C163 | CALL PrintCharacter | |||||||||
Print ".".
|
||||||||||
C166 | LD HL,$BF29 | HL=Messaging_FullStop. | ||||||||
C169 | CALL PrintStringAndNewline | Call PrintStringAndNewline. | ||||||||
C16C | JR UserInput_Enter_20 | Jump to UserInput_Enter_20. | ||||||||
UserInput_Enter_19 | C16E | LD A,($BD66) | Return if *UserInput_Token_1 is not equal to FF. | |||||||
C171 | CP $FF | |||||||||
C173 | RET NZ | |||||||||
Print "I don't understand.".
|
||||||||||
C174 | LD HL,$BD91 | HL=Messaging_IDontUnderstand. | ||||||||
C177 | CALL PrintStringAndNewline | Call PrintStringAndNewline. | ||||||||
UserInput_Enter_20 | C17A | JP Handler_UserInput | Jump to Handler_UserInput. |
Prev: C041 | Up: Map | Next: C17D |