Prev: 32107 Up: Map Next: 32376
32116: Inglish: Copy The Parser Slot
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