Prev: 948D Up: Map Next: 950F
94D6: Turn: Run The Action Handler
Used by the routine at Inglish_RunTheFirstNounTest.
Runs the action handler for the current object and the current action, and stores the result in the message-suppressed flag.
Turn_RunTheActionHandler 94D6 PUSH IX Save IX and HL and call Turn_AcceptTheNamedObject to accept the named object.
94D8 PUSH HL
94D9 CALL Turn_AcceptTheNamedObject
94DC LD A,$00 Take zero and jump to Turn_RunTheActionHandler_Examine_RecordTheResult if Turn_AcceptTheNamedObject returned with the zero flag set.
94DE JR Z,Turn_RunTheActionHandler_Examine_RecordTheResult
94E0 LD A,($B6E7) Read *CurrentAction.
94E3 LD IX,$C730 Point IX at the action: "".
Find this id in the table at IX.
94E7 CALL IndexIdTable Call IndexIdTable to look this id up in the table.
94EA CP $FF Take 01, and jump to Turn_RunTheActionHandler_Examine_RecordTheResult if IndexIdTable found the action in the table.
94EC LD A,$01
94EE JR NZ,Turn_RunTheActionHandler_Examine_RecordTheResult
94F0 CALL Action_MatchAVerbInTheTable Call Action_MatchAVerbInTheTable to match the action against the five verb bytes.
94F3 LD A,$01 Take 01, and jump to Turn_RunTheActionHandler_Examine_RecordTheResult if Action_MatchAVerbInTheTable found the action in the verb list.
94F5 JR Z,Turn_RunTheActionHandler_Examine_RecordTheResult
94F7 LD A,($B6E8) Read *CurrentObject.
Find the object's record.
94FA CALL LocateObject Call LocateObject to locate object.
94FD LD A,($B6E7) Read *CurrentAction.
9500 CALL TableFindAnActionRecord Call TableFindAnActionRecord to find an action record.
9503 LD A,$01 Take 01, and jump to Turn_RunTheActionHandler_Examine_RecordTheResult if TableFindAnActionRecord found the action record.
9505 JR C,Turn_RunTheActionHandler_Examine_RecordTheResult
9507 SUB A Take zero.
Turn_RunTheActionHandler_Examine_RecordTheResult 9508 LD ($B6FB),A Record in the message-suppressed flag whether this action ran.
950B POP HL Restore HL and IX from the stack.
950C POP IX
950E RET Return.
Prev: 948D Up: Map Next: 950F