Prev: 77C9 Up: Map Next: 7809
77D1: Inglish: Run The Grammar
Used by the routine at Inglish_KeepTheUnknownWord.
Runs the grammar over the tokens and, when they match, performs the action. Reached through the jump table at JumpTable, dispatched from 75D0.
InglishRunTheGrammar 77D1 LD HL,$757F Point HL at the matcher patch at 757F.
77D4 LD (HL),C Store the saved byte in the matcher patch.
77D5 INC HL Step to the next byte of the matcher patch.
77D6 LD (HL),B Store the saved byte in the matcher patch.
This entry point is used by the routine at Inglish_KeepTheUnknownWord.
InglishRunTheGrammar_0 77D7 LD D,$50 The class being run is 50.
Test the matcher phase.
77D9 LD A,($B719) Jump to InglishRunTheGrammar_FollowTheGrammarFlag if *B719 is not 02.
77DC CP $02
77DE JR NZ,InglishRunTheGrammar_FollowTheGrammarFlag
77E0 LD HL,($757B) Jump to InglishRunTheGrammar_ClearTheMatcherPhase if the word at 757B is not zero.
77E3 LD A,H
77E4 OR L
77E5 JR NZ,InglishRunTheGrammar_ClearTheMatcherPhase
77E7 BIT 6,(IY+$19) Jump to InglishRunTheGrammar_CopyFourGrammarBytes if bit 6 of the clause byte at offset 19 is set.
77EB JR NZ,InglishRunTheGrammar_CopyFourGrammarBytes
77ED LD BC,$FFE8 Step back one parser record.
77F0 ADD IY,BC
77F2 CALL Inglish_BlankAParserSlot Call Inglish_BlankAParserSlot to blank a parser slot.
InglishRunTheGrammar_CopyFourGrammarBytes 77F5 CALL Inglish_CopyFourGrammarBytes Call Inglish_CopyFourGrammarBytes to copy four grammar bytes.
77F8 LD (IY+$01),$40 Set the clause byte at offset 1 to 40.
77FC JP InglishPrepareTheClause_3 Jump back to InglishPrepareTheClause_3 to clear the matcher scratch.
InglishRunTheGrammar_ClearTheMatcherPhase 77FF CALL Inglish_ClearTheMatcherPhase Call Inglish_ClearTheMatcherPhase to clear the matcher phase.
InglishRunTheGrammar_FollowTheGrammarFlag 7802 CALL Inglish_FollowTheGrammarFlag Call Inglish_FollowTheGrammarFlag to follow the grammar flag.
7805 JP Z,InglishPrepareTheClause_3 Jump back to InglishPrepareTheClause_3. Inglish_FollowTheGrammarFlag always returns zero, so this jump is always taken.
7808 RET Return.
Prev: 77C9 Up: Map Next: 7809