Prev: 31996 Up: Map Next: 32084
32023: Inglish: Find The Second Noun
Used by the routine at Inglish_ResolveTheFirstNoun.
Finds the second noun the same way, storing it as the second object. When the second-noun flag at 46847 is 1 it uses the place-by-exit test at ExitsFindTheExitToANamedPlace; otherwise it uses the object test at ConditionSamePlaceAsThePlayer. The record found is kept at 31056, and bit 0 of 46877 is copied to 46863.
Inglish_FindTheSecondNoun 32023 XOR A Clear *46863.
32024 LD (46863),A
32027 PUSH IY Use the other saved object pointer as the record being walked.
32029 LD IX,(31056)
32033 LD A,(46847) Read *46847.
32036 DEC A Jump to Inglish_FindTheSecondNoun_PointAtTheOtherNounTest if the second-noun flag is 1.
32037 JR Z,Inglish_FindTheSecondNoun_PointAtTheOtherNounTest
32039 LD IY,40409 Point IY at ConditionSamePlaceAsThePlayer to use as the noun test.
32043 LD A,(46878) Read *46878.
32046 AND 3 Store the low two bits of the clause being built in *46864.
32048 LD (46864),A
32051 CALL Inglish_RunTheSecondNounTest Call Inglish_RunTheSecondNounTest to run the second noun test.
32054 CP 255 Compare the result of the noun test with 255.
Inglish_FindTheSecondNoun_SaveTheSecondRecord 32056 LD (31056),IX Remember this record in the other saved object pointer.
32060 POP IY Restore the parser pointer from the stack and read *46877.
32062 PUSH AF
32063 LD A,(46877)
32066 AND 1 Keep only bit 0.
32068 LD (46863),A Store the result at 46863.
32071 POP AF Restore AF from the stack.
32072 RET Return.
Inglish_FindTheSecondNoun_PointAtTheOtherNounTest 32073 LD IY,40608 Point IY at ExitsFindTheExitToANamedPlace to use as the noun test.
32077 CALL Inglish_RunTheSecondNounTest Call Inglish_RunTheSecondNounTest to run the second noun test.
32080 CP 255 Compare the result of the noun test with 255.
32082 JR Inglish_FindTheSecondNoun_SaveTheSecondRecord Jump back to Inglish_FindTheSecondNoun_SaveTheSecondRecord to save the second object record.
View the equivalent code in;
Prev: 31996 Up: Map Next: 32084