Prev: 31037 Up: Map Next: 31145
31072: Inglish: Apply A Match
Used by the routine at TurnReadAndTokeniseTheCommand.
Starts matching the current clause. Clears the phrase scratch byte and uses the parser workspace at 47560. A different replay path skips ahead to InglishApplyAMatch_UpdateTheReplayPath.
InglishApplyAMatch 31072 XOR A Clear *46876.
31073 LD (46876),A
31076 LD IY,47560 Jump to InglishApplyAMatch_UpdateTheReplayPath if the matcher path flag is not zero.
31080 LD HL,46874
31083 CP (HL)
31084 LD (HL),A
31085 JP NZ,InglishApplyAMatch_UpdateTheReplayPath
InglishApplyAMatch_ScoreTheCurrentAction 31088 CALL Inglish_ScoreTheCurrentAction Call Inglish_ScoreTheCurrentAction to score the current action.
31091 JR NZ,InglishApplyAMatch_RunTheAction Jump to InglishApplyAMatch_RunTheAction if Inglish_ScoreTheCurrentAction returned with the zero flag clear (an action was scored).
31093 XOR A Clear *46853.
31094 LD (46853),A
31097 RET Return.
InglishApplyAMatch_RunTheAction 31098 CALL Inglish_AskWhetherToSuppress Call Inglish_AskWhetherToSuppress to run the action and see whether its message was held back.
31101 JP Z,Inglish_CopyTheParserSlot_DispatchTheAction Jump to Inglish_CopyTheParserSlot_DispatchTheAction if Inglish_AskWhetherToSuppress did not hold the message back.
31104 LD A,1 Write 1 (the gate shut) to *46842.
31106 LD (46842),A
31109 CALL Inglish_DescribeTheAction Call Inglish_DescribeTheAction to describe the action.
31112 CALL Turn_RunTheHandlerIfPresent Call Turn_RunTheHandlerIfPresent to run the handler when one is present.
This entry point is used by the routine at Inglish_SaveTheClauseWindow.
InglishApplyAMatch_GiveEveryOtherCharacterATurn 31115 CALL TurnAdvanceTheOtherCharacters Call TurnAdvanceTheOtherCharacters to give every other character a turn.
This entry point is used by the routine at Inglish_CopyTheParserSlot.
Test the phrase scratch byte.
InglishApplyAMatch_TestThePhraseScratchByte 31118 LD A,(46876) Jump to InglishApplyAMatch_ScoreTheCurrentAction if *46876 is not zero.
31121 AND A
31122 JR NZ,InglishApplyAMatch_ScoreTheCurrentAction
This entry point is used by the routine at Inglish_CopyTheParserSlot.
InglishApplyAMatch_UpdateTheReplayPath 31124 LD A,(46854) Read *46854.
31127 DEC A Step the replay path down by one.
31128 LD (46854),A Update *46854.
31131 RET Z Return if the replay path reached zero.
31132 LD BC,65512 Step back one clause record. Each record is 24 bytes.
InglishApplyAMatch_SkipMarkedClause 31135 ADD IY,BC Jump back to InglishApplyAMatch_SkipMarkedClause if bit 6 of the clause byte at offset 1 is set.
31137 BIT 6,(IY+1)
31141 JR NZ,InglishApplyAMatch_SkipMarkedClause
31143 JR InglishApplyAMatch_ScoreTheCurrentAction Jump back to InglishApplyAMatch_ScoreTheCurrentAction to run the grammar.
Prev: 31037 Up: Map Next: 31145