![]() |
Routines |
| Prev: 7D6B | Up: Map | Next: 7E78 |
|
Copies the parser slot into the clause. If the grammar count still needs a noun, it prints "which?" and reports no match.
|
||||
| Inglish_CopyTheParserSlot | 7D74 | LD ($B71A),A | Update *B71A. | |
| 7D77 | PUSH IY | Copy the parser slot at IY into B9C8. | ||
| 7D79 | POP HL | |||
| 7D7A | LD DE,$B9C8 | |||
| 7D7D | LD BC,$0018 | |||
| 7D80 | LDIR | |||
| 7D82 | RET | Return. | ||
| Inglish_CopyTheParserSlot_ReadTheGrammarCount | 7D83 | LD A,($7954) | Read the grammar count. | |
| 7D86 | LD HL,($7942) | Read the pointer stored in the first copy window. | ||
| Inglish_CopyTheParserSlot_CopyIntoTheClause | 7D89 | PUSH HL | Call Inglish_CopyTheParserSlot to copy the parser slot into the clause. | |
| 7D8A | CALL Inglish_CopyTheParserSlot | |||
| 7D8D | LD HL,$ADCC | Point HL at "which[0x01] ?". | ||
|
This entry point is used by the routine at Inglish_PlantJumpRelativeIfNonZero.
|
||||
| Inglish_CopyTheParserSlot_OpenTheMessageGate | 7D90 | CALL Inglish_OpenTheMessageGate | Call Inglish_OpenTheMessageGate to open the message gate. | |
| 7D93 | CALL MessageOpenTheGateForAConjunction | Call MessageOpenTheGateForAConjunction to open the message gate for a conjunction. | ||
| 7D96 | XOR A | Return zero from the parser-slot copy. | ||
| 7D97 | RET | Return. | ||
| Inglish_CopyTheParserSlot_TestTheSecondMatch | 7D98 | LD HL,$793E | Jump to Inglish_CopyTheParserSlot_PlantJumpIfZero if bit 0 of the second match buffer is clear. | |
| 7D9B | BIT 0,(HL) | |||
| 7D9D | JP Z,Inglish_CopyTheParserSlot_PlantJumpIfZero | |||
| 7DA0 | BIT 1,(HL) | See whether bit 1 of the second match buffer is set. | ||
| 7DA2 | LD HL,$7948 | Jump to Inglish_CopyTheParserSlot_PointAtTheExitList if bit 1 of the second match buffer is clear. | ||
| 7DA5 | LD DE,$B6E9 | |||
| 7DA8 | LD BC,$B6FF | |||
| 7DAB | JR Z,Inglish_CopyTheParserSlot_PointAtTheExitList | |||
|
Test this flag.
|
||||
| 7DAD | LD A,($7941) | Jump to Inglish_CopyTheParserSlot_DispatchTheAction if *7941 is zero. | ||
| 7DB0 | AND A | |||
| 7DB1 | JP Z,Inglish_CopyTheParserSlot_DispatchTheAction | |||
| 7DB4 | LD A,($7955) | Read the second grammar count. | ||
| 7DB7 | LD A,($7948) | Read the second copy window. | ||
| 7DBA | JR Inglish_CopyTheParserSlot_CopyIntoTheClause | Jump to Inglish_CopyTheParserSlot_CopyIntoTheClause to copy the slot and print the question. | ||
|
This entry point is used by the routine at Inglish_ScoreTheCurrentAction.
|
||||
| Inglish_CopyTheParserSlot_ReadTheConjunctionCount | 7DBC | LD A,($B71B) | Read *B71B. | |
| 7DBF | DEC A | Return if the conjunction count reached zero. | ||
| 7DC0 | RET Z | |||
|
Test the phrase scratch byte.
|
||||
| 7DC1 | LD A,($B71C) | Jump to Inglish_CopyTheParserSlot_TestTheGrammarMarker if *B71C is zero. | ||
| 7DC4 | AND A | |||
| 7DC5 | JR Z,Inglish_CopyTheParserSlot_TestTheGrammarMarker | |||
| 7DC7 | POP HL | Jump back to InglishApplyAMatch_UpdateTheReplayPath to update the replay path. | ||
| 7DC8 | JP InglishApplyAMatch_UpdateTheReplayPath | |||
|
Test the flag.
|
||||
| Inglish_CopyTheParserSlot_TestTheGrammarMarker | 7DCB | LD A,($7940) | Jump to Inglish_CopyTheParserSlot_TestTheSecondMatch if *7940 is 01. | |
| 7DCE | CP $01 | |||
| 7DD0 | JR Z,Inglish_CopyTheParserSlot_TestTheSecondMatch | |||
| 7DD2 | LD HL,$793D | Jump to Inglish_CopyTheParserSlot_PlantJumpIfNotZero if bit 0 of the match buffer is clear. | ||
| 7DD5 | BIT 0,(HL) | |||
| 7DD7 | JP Z,Inglish_CopyTheParserSlot_PlantJumpIfNotZero | |||
| 7DDA | BIT 1,(HL) | See whether bit 1 of the match buffer is set. | ||
| 7DDC | LD HL,$7942 | Jump to Inglish_CopyTheParserSlot_PointAtTheExitList if bit 1 of the match buffer is clear. | ||
| 7DDF | LD DE,$B6E8 | |||
| 7DE2 | LD BC,$B6FE | |||
| 7DE5 | JR Z,Inglish_CopyTheParserSlot_PointAtTheExitList | |||
|
Test this flag.
|
||||
| 7DE7 | LD A,($793F) | Jump to Inglish_CopyTheParserSlot_DispatchTheAction if *793F is zero. | ||
| 7DEA | AND A | |||
| 7DEB | JR Z,Inglish_CopyTheParserSlot_DispatchTheAction | |||
| 7DED | DEC A | Jump back to Inglish_CopyTheParserSlot_ReadTheGrammarCount if the third match buffer has not reached zero. | ||
| 7DEE | JR NZ,Inglish_CopyTheParserSlot_ReadTheGrammarCount | |||
| 7DF0 | CALL Inglish_TestTheScratchBits | Call Inglish_TestTheScratchBits to test the scratch bits. | ||
| 7DF3 | JR NZ,Inglish_CopyTheParserSlot_TestTheSecondMatch | Jump back to Inglish_CopyTheParserSlot_TestTheSecondMatch unless Inglish_TestTheScratchBits returned with the zero flag set. | ||
|
This entry point is used by the routine at InglishApplyAMatch.
|
||||
| Inglish_CopyTheParserSlot_DispatchTheAction | 7DF5 | CALL Inglish_OpenTheMessageGate | Call Inglish_OpenTheMessageGate to open the message gate. | |
| 7DF8 | CALL Turn_RunTheHandlerIfPresent | Call Turn_RunTheHandlerIfPresent to run the handler when one is present. | ||
| 7DFB | JP InglishApplyAMatch_TestThePhraseScratchByte | Jump back to InglishApplyAMatch_TestThePhraseScratchByte to test the phrase scratch byte. | ||
| Inglish_CopyTheParserSlot_PointAtTheExitList | 7DFE | PUSH HL | Call ExitsPointAtTheExitList to point IX at the exit list. | |
| 7DFF | CALL ExitsPointAtTheExitList | |||
| 7E02 | LD A,$01 | Write 01 to the flag at BC: the noun-print flag at B6FE, or the second-noun flag at B6FF when reached from 7DA2. | ||
| 7E04 | LD (BC),A | |||
| 7E05 | CALL ExitsFindTheExitToANamedPlace | Call ExitsFindTheExitToANamedPlace to find the exit to the place named. | ||
| 7E08 | CP $FF | Jump to Inglish_CopyTheParserSlot_StoreTheObject if ExitsFindTheExitToANamedPlace did not return FF. | ||
| 7E0A | JR NZ,Inglish_CopyTheParserSlot_StoreTheObject | |||
| 7E0C | POP HL | Write 02 to *B710. | ||
| 7E0D | LD A,$02 | |||
| 7E0F | LD ($B710),A | |||
| 7E12 | LD IX,$C060 | Start the object search one slot before ObjectTable. | ||
| 7E16 | XOR A | Put zero in A. | ||
| 7E17 | LD (BC),A | Store it in the noun-print flag. | ||
| 7E18 | PUSH HL | Save HL and call ConditionSamePlaceAsThePlayer to test whether the object at Pointer_CurrentCharacter is here. | ||
| 7E19 | CALL ConditionSamePlaceAsThePlayer | |||
| 7E1C | CP $FF | Jump to Inglish_CopyTheParserSlot_SayItIsNotHere if ConditionSamePlaceAsThePlayer returned FF. | ||
| 7E1E | JR Z,Inglish_CopyTheParserSlot_SayItIsNotHere | |||
| Inglish_CopyTheParserSlot_StoreTheObject | 7E20 | POP HL | Store it in the current object. | |
| 7E21 | LD (DE),A | |||
| 7E22 | JP Inglish_ArmTheMessageGate | Jump back to Inglish_ArmTheMessageGate to arm the message gate. | ||
| Inglish_CopyTheParserSlot_SayItIsNotHere | 7E25 | CALL Inglish_OpenTheMessageGate | Call Inglish_OpenTheMessageGate to open the message gate. | |
| 7E28 | LD HL,$ADD3 | Point HL at "i do not see[0x00] here[0x14]". | ||
| 7E2B | CALL MessageOpenTheGateForAConjunction | Call MessageOpenTheGateForAConjunction to open the message gate for a conjunction. | ||
| 7E2E | XOR A | Return zero. | ||
| 7E2F | RET | Return. | ||
| Inglish_CopyTheParserSlot_PlantJumpIfNotZero | 7E30 | CALL Inglish_PlantJumpRelativeIfNonZero | Call Inglish_PlantJumpRelativeIfNonZero to plant JR NZ and read the two fields. | |
| 7E33 | LD HL,($7958) | Read the pointer stored in the saved text pointer. | ||
| 7E36 | PUSH HL | Point HL at "[0x0b] D[0x01][0x01][0x14]". | ||
| 7E37 | LD HL,$ADE1 | |||
|
Test this flag.
|
||||
| 7E3A | LD A,($7940) | Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate if *7940 is zero. | ||
| 7E3D | AND A | |||
| 7E3E | JP Z,Inglish_CopyTheParserSlot_OpenTheMessageGate | |||
| 7E41 | LD A,($7954) | Read the grammar count. | ||
| 7E44 | CALL Inglish_CopyTheParserSlot | Call Inglish_CopyTheParserSlot to copy the parser slot. | ||
| 7E47 | LD HL,$ADC4 | Point HL at the "what ?" prompt in ADC0. | ||
| 7E4A | JP Inglish_CopyTheParserSlot_OpenTheMessageGate | Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate to open the message gate and print the prompt. | ||
| Inglish_CopyTheParserSlot_PlantJumpIfZero | 7E4D | CALL Inglish_PlantJumpRelativeIfZero | Call Inglish_PlantJumpRelativeIfZero to plant JR Z and read the two fields. | |
| 7E50 | LD HL,$0000 | Start from a clear pointer. | ||
| 7E53 | PUSH HL | Read *CurrentObject. | ||
| 7E54 | LD A,($B6E8) | |||
| 7E57 | CALL Table_AddressTheObjectName | Call Table_AddressTheObjectName to address the object name. | ||
| 7E5A | PUSH HL | Call Inglish_PlantJumpRelativeIfNonZero to plant JR NZ and read the two fields. | ||
| 7E5B | CALL Inglish_PlantJumpRelativeIfNonZero | |||
| 7E5E | LD HL,($7958) | Read the pointer stored in the saved text pointer. | ||
| 7E61 | PUSH HL | Point HL at "[0x0b] Eat[0x01][0x01][0x00][0x01][0x01][0x01][0x14]". | ||
| 7E62 | LD HL,$ADE7 | |||
|
Test this flag.
|
||||
| 7E65 | LD A,($7941) | Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate if *7941 is zero. | ||
| 7E68 | AND A | |||
| 7E69 | JP Z,Inglish_CopyTheParserSlot_OpenTheMessageGate | |||
| 7E6C | LD A,($7955) | Read the second grammar count. | ||
| 7E6F | CALL Inglish_CopyTheParserSlot | Call Inglish_CopyTheParserSlot to copy the parser slot. | ||
| 7E72 | LD HL,$ADC0 | Point HL at the "what ?" prompt in ADC0. | ||
| 7E75 | JP Inglish_CopyTheParserSlot_OpenTheMessageGate | Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate to open the message gate and print the prompt. | ||
| Prev: 7D6B | Up: Map | Next: 7E78 |