![]() |
Routines |
| Prev: 32107 | Up: Map | Next: 32376 |
|
Copies the parser slot into the clause. If the grammar count still needs a noun, it prints "which?" and reports no match.
|
||||
| Inglish_CopyTheParserSlot | 32116 | LD (46874),A | Update *46874. | |
| 32119 | PUSH IY | Copy the parser slot at IY into 47560. | ||
| 32121 | POP HL | |||
| 32122 | LD DE,47560 | |||
| 32125 | LD BC,24 | |||
| 32128 | LDIR | |||
| 32130 | RET | Return. | ||
| Inglish_CopyTheParserSlot_ReadTheGrammarCount | 32131 | LD A,(31060) | Read the grammar count. | |
| 32134 | LD HL,(31042) | Read the pointer stored in the first copy window. | ||
| Inglish_CopyTheParserSlot_CopyIntoTheClause | 32137 | PUSH HL | Call Inglish_CopyTheParserSlot to copy the parser slot into the clause. | |
| 32138 | CALL Inglish_CopyTheParserSlot | |||
| 32141 | LD HL,44492 | Point HL at "which[0x01] ?". | ||
|
This entry point is used by the routine at Inglish_PlantJumpRelativeIfNonZero.
|
||||
| Inglish_CopyTheParserSlot_OpenTheMessageGate | 32144 | CALL Inglish_OpenTheMessageGate | Call Inglish_OpenTheMessageGate to open the message gate. | |
| 32147 | CALL MessageOpenTheGateForAConjunction | Call MessageOpenTheGateForAConjunction to open the message gate for a conjunction. | ||
| 32150 | XOR A | Return zero from the parser-slot copy. | ||
| 32151 | RET | Return. | ||
| Inglish_CopyTheParserSlot_TestTheSecondMatch | 32152 | LD HL,31038 | Jump to Inglish_CopyTheParserSlot_PlantJumpIfZero if bit 0 of the second match buffer is clear. | |
| 32155 | BIT 0,(HL) | |||
| 32157 | JP Z,Inglish_CopyTheParserSlot_PlantJumpIfZero | |||
| 32160 | BIT 1,(HL) | See whether bit 1 of the second match buffer is set. | ||
| 32162 | LD HL,31048 | Jump to Inglish_CopyTheParserSlot_PointAtTheExitList if bit 1 of the second match buffer is clear. | ||
| 32165 | LD DE,46825 | |||
| 32168 | LD BC,46847 | |||
| 32171 | JR Z,Inglish_CopyTheParserSlot_PointAtTheExitList | |||
|
Test this flag.
|
||||
| 32173 | LD A,(31041) | Jump to Inglish_CopyTheParserSlot_DispatchTheAction if *31041 is zero. | ||
| 32176 | AND A | |||
| 32177 | JP Z,Inglish_CopyTheParserSlot_DispatchTheAction | |||
| 32180 | LD A,(31061) | Read the second grammar count. | ||
| 32183 | LD A,(31048) | Read the second copy window. | ||
| 32186 | 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 | 32188 | LD A,(46875) | Read *46875. | |
| 32191 | DEC A | Return if the conjunction count reached zero. | ||
| 32192 | RET Z | |||
|
Test the phrase scratch byte.
|
||||
| 32193 | LD A,(46876) | Jump to Inglish_CopyTheParserSlot_TestTheGrammarMarker if *46876 is zero. | ||
| 32196 | AND A | |||
| 32197 | JR Z,Inglish_CopyTheParserSlot_TestTheGrammarMarker | |||
| 32199 | POP HL | Jump back to InglishApplyAMatch_UpdateTheReplayPath to update the replay path. | ||
| 32200 | JP InglishApplyAMatch_UpdateTheReplayPath | |||
|
Test the flag.
|
||||
| Inglish_CopyTheParserSlot_TestTheGrammarMarker | 32203 | LD A,(31040) | Jump to Inglish_CopyTheParserSlot_TestTheSecondMatch if *31040 is 1. | |
| 32206 | CP 1 | |||
| 32208 | JR Z,Inglish_CopyTheParserSlot_TestTheSecondMatch | |||
| 32210 | LD HL,31037 | Jump to Inglish_CopyTheParserSlot_PlantJumpIfNotZero if bit 0 of the match buffer is clear. | ||
| 32213 | BIT 0,(HL) | |||
| 32215 | JP Z,Inglish_CopyTheParserSlot_PlantJumpIfNotZero | |||
| 32218 | BIT 1,(HL) | See whether bit 1 of the match buffer is set. | ||
| 32220 | LD HL,31042 | Jump to Inglish_CopyTheParserSlot_PointAtTheExitList if bit 1 of the match buffer is clear. | ||
| 32223 | LD DE,46824 | |||
| 32226 | LD BC,46846 | |||
| 32229 | JR Z,Inglish_CopyTheParserSlot_PointAtTheExitList | |||
|
Test this flag.
|
||||
| 32231 | LD A,(31039) | Jump to Inglish_CopyTheParserSlot_DispatchTheAction if *31039 is zero. | ||
| 32234 | AND A | |||
| 32235 | JR Z,Inglish_CopyTheParserSlot_DispatchTheAction | |||
| 32237 | DEC A | Jump back to Inglish_CopyTheParserSlot_ReadTheGrammarCount if the third match buffer has not reached zero. | ||
| 32238 | JR NZ,Inglish_CopyTheParserSlot_ReadTheGrammarCount | |||
| 32240 | CALL Inglish_TestTheScratchBits | Call Inglish_TestTheScratchBits to test the scratch bits. | ||
| 32243 | 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 | 32245 | CALL Inglish_OpenTheMessageGate | Call Inglish_OpenTheMessageGate to open the message gate. | |
| 32248 | CALL Turn_RunTheHandlerIfPresent | Call Turn_RunTheHandlerIfPresent to run the handler when one is present. | ||
| 32251 | JP InglishApplyAMatch_TestThePhraseScratchByte | Jump back to InglishApplyAMatch_TestThePhraseScratchByte to test the phrase scratch byte. | ||
| Inglish_CopyTheParserSlot_PointAtTheExitList | 32254 | PUSH HL | Call ExitsPointAtTheExitList to point IX at the exit list. | |
| 32255 | CALL ExitsPointAtTheExitList | |||
| 32258 | LD A,1 | Write 1 to the flag at BC: the noun-print flag at 46846, or the second-noun flag at 46847 when reached from 32162. | ||
| 32260 | LD (BC),A | |||
| 32261 | CALL ExitsFindTheExitToANamedPlace | Call ExitsFindTheExitToANamedPlace to find the exit to the place named. | ||
| 32264 | CP 255 | Jump to Inglish_CopyTheParserSlot_StoreTheObject if ExitsFindTheExitToANamedPlace did not return 255. | ||
| 32266 | JR NZ,Inglish_CopyTheParserSlot_StoreTheObject | |||
| 32268 | POP HL | Write 2 to *46864. | ||
| 32269 | LD A,2 | |||
| 32271 | LD (46864),A | |||
| 32274 | LD IX,49248 | Start the object search one slot before ObjectTable. | ||
| 32278 | XOR A | Put zero in A. | ||
| 32279 | LD (BC),A | Store it in the noun-print flag. | ||
| 32280 | PUSH HL | Save HL and call ConditionSamePlaceAsThePlayer to test whether the object at Pointer_CurrentCharacter is here. | ||
| 32281 | CALL ConditionSamePlaceAsThePlayer | |||
| 32284 | CP 255 | Jump to Inglish_CopyTheParserSlot_SayItIsNotHere if ConditionSamePlaceAsThePlayer returned 255. | ||
| 32286 | JR Z,Inglish_CopyTheParserSlot_SayItIsNotHere | |||
| Inglish_CopyTheParserSlot_StoreTheObject | 32288 | POP HL | Store it in the current object. | |
| 32289 | LD (DE),A | |||
| 32290 | JP Inglish_ArmTheMessageGate | Jump back to Inglish_ArmTheMessageGate to arm the message gate. | ||
| Inglish_CopyTheParserSlot_SayItIsNotHere | 32293 | CALL Inglish_OpenTheMessageGate | Call Inglish_OpenTheMessageGate to open the message gate. | |
| 32296 | LD HL,44499 | Point HL at "i do not see[0x00] here[0x14]". | ||
| 32299 | CALL MessageOpenTheGateForAConjunction | Call MessageOpenTheGateForAConjunction to open the message gate for a conjunction. | ||
| 32302 | XOR A | Return zero. | ||
| 32303 | RET | Return. | ||
| Inglish_CopyTheParserSlot_PlantJumpIfNotZero | 32304 | CALL Inglish_PlantJumpRelativeIfNonZero | Call Inglish_PlantJumpRelativeIfNonZero to plant JR NZ and read the two fields. | |
| 32307 | LD HL,(31064) | Read the pointer stored in the saved text pointer. | ||
| 32310 | PUSH HL | Point HL at "[0x0b] D[0x01][0x01][0x14]". | ||
| 32311 | LD HL,44513 | |||
|
Test this flag.
|
||||
| 32314 | LD A,(31040) | Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate if *31040 is zero. | ||
| 32317 | AND A | |||
| 32318 | JP Z,Inglish_CopyTheParserSlot_OpenTheMessageGate | |||
| 32321 | LD A,(31060) | Read the grammar count. | ||
| 32324 | CALL Inglish_CopyTheParserSlot | Call Inglish_CopyTheParserSlot to copy the parser slot. | ||
| 32327 | LD HL,44484 | Point HL at the "what ?" prompt in 44480. | ||
| 32330 | JP Inglish_CopyTheParserSlot_OpenTheMessageGate | Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate to open the message gate and print the prompt. | ||
| Inglish_CopyTheParserSlot_PlantJumpIfZero | 32333 | CALL Inglish_PlantJumpRelativeIfZero | Call Inglish_PlantJumpRelativeIfZero to plant JR Z and read the two fields. | |
| 32336 | LD HL,0 | Start from a clear pointer. | ||
| 32339 | PUSH HL | Read *CurrentObject. | ||
| 32340 | LD A,(46824) | |||
| 32343 | CALL Table_AddressTheObjectName | Call Table_AddressTheObjectName to address the object name. | ||
| 32346 | PUSH HL | Call Inglish_PlantJumpRelativeIfNonZero to plant JR NZ and read the two fields. | ||
| 32347 | CALL Inglish_PlantJumpRelativeIfNonZero | |||
| 32350 | LD HL,(31064) | Read the pointer stored in the saved text pointer. | ||
| 32353 | PUSH HL | Point HL at "[0x0b] Eat[0x01][0x01][0x00][0x01][0x01][0x01][0x14]". | ||
| 32354 | LD HL,44519 | |||
|
Test this flag.
|
||||
| 32357 | LD A,(31041) | Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate if *31041 is zero. | ||
| 32360 | AND A | |||
| 32361 | JP Z,Inglish_CopyTheParserSlot_OpenTheMessageGate | |||
| 32364 | LD A,(31061) | Read the second grammar count. | ||
| 32367 | CALL Inglish_CopyTheParserSlot | Call Inglish_CopyTheParserSlot to copy the parser slot. | ||
| 32370 | LD HL,44480 | Point HL at the "what ?" prompt in 44480. | ||
| 32373 | JP Inglish_CopyTheParserSlot_OpenTheMessageGate | Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate to open the message gate and print the prompt. | ||
| Prev: 32107 | Up: Map | Next: 32376 |