Prev: 31945 Up: Map Next: 31996
31947: Inglish: Find The First Noun
Used by the routine at Inglish_ResolveTheFirstNoun.
Finds the first noun. When the noun-print flag at 46846 is 1 it uses the place-by-exit test at ExitsFindTheExitToANamedPlace; otherwise it uses the object test at ConditionSamePlaceAsThePlayer, which looks in the same place as the player. The record found is kept in the saved object pointer at 31054.
Inglish_FindTheFirstNoun 31947 PUSH IY Use the saved object pointer as the record being walked.
31949 LD IX,(31054)
31953 LD A,(46846) Read *46846.
31956 DEC A Jump to Inglish_FindTheFirstNoun_PointAtTheNounTest if the noun-print flag is 1.
31957 JR Z,Inglish_FindTheFirstNoun_PointAtTheNounTest
31959 LD IY,40409 Point IY at ConditionSamePlaceAsThePlayer to use as the noun test.
31963 LD A,(46878) Read *46878.
31966 RRCA Keep the low two bits of the clause marker.
31967 RRCA
31968 AND 3
31970 LD (46864),A Update *46864.
31973 CALL Inglish_RunTheFirstNounTest Call Inglish_RunTheFirstNounTest to run the first noun test.
31976 CP 255 Compare the result of the noun test with 255.
Inglish_FindTheFirstNoun_SaveTheObjectRecord 31978 LD (31054),IX Remember this record in the saved object pointer.
31982 POP IY Restore IY from the stack.
31984 RET Return.
Inglish_FindTheFirstNoun_PointAtTheNounTest 31985 LD IY,40608 Point IY at ExitsFindTheExitToANamedPlace to use as the noun test.
31989 CALL Inglish_RunTheFirstNounTest Call Inglish_RunTheFirstNounTest to run the first noun test.
31992 CP 255 Compare the clause marker with 255.
31994 JR Inglish_FindTheFirstNoun_SaveTheObjectRecord Jump back to Inglish_FindTheFirstNoun_SaveTheObjectRecord to save this object record.
View the equivalent code in;
Prev: 31945 Up: Map Next: 31996