Prev: 7E78 Up: Map Next: 7EBA
7E7C: Inglish: Plant JR NZ
Used by the routine at Inglish_CopyTheParserSlot.
Plants the JR NZ opcode at 7E92 and 7EA1, then reads two words from the action entry. Each word is kept when its bit is set.
Inglish_PlantJumpRelativeIfNonZero 7E7C LD A,$20 Take the JR NZ opcode.
This entry point is used by the routine at Inglish_PlantJumpRelativeIfZero.
Inglish_PlantJumpRelativeIfNonZero_PlantTheOpcode 7E7E LD ($7E92),A Plant the opcode at 7E92.
7E81 LD ($7EA1),A Plant the same opcode at 7EA1.
7E84 LD IX,($795E) Point IX at the action entry saved at 795E.
7E88 LD L,(IX+$04) Read the low byte of the word at offset 4 of this action.
7E8B LD H,(IX+$05) Read the high byte of the word at offset 4 of this action.
7E8E BIT 7,(IX+$07) Test bit 7 of byte 7 of this action; the jump planted at 7E92 by Inglish_PlantJumpRelativeIfZero as JR Z or Inglish_PlantJumpRelativeIfNonZero as JR NZ goes to Inglish_PlantJumpRelativeIfNonZero_ReadActionWord.
7E92 JR NZ,Inglish_PlantJumpRelativeIfNonZero_ReadActionWord
7E94 LD HL,$0000 Start from a clear pointer.
Inglish_PlantJumpRelativeIfNonZero_ReadActionWord 7E97 EX (SP),HL Swap HL with the address on the stack.
7E98 PUSH HL Save the word just read, and read the low byte at offset 2 of this action.
7E99 LD L,(IX+$02)
7E9C LD H,(IX+$03) Read the high byte at offset 2 of this action.
7E9F BIT 5,H Test bit 5 of that high byte; the jump planted at 7EA1 by Inglish_PlantJumpRelativeIfZero as JR Z or Inglish_PlantJumpRelativeIfNonZero as JR NZ goes to Inglish_PlantJumpRelativeIfNonZero_CallTheHandler.
7EA1 JR NZ,Inglish_PlantJumpRelativeIfNonZero_CallTheHandler
7EA3 LD HL,$0000 Start from a clear pointer.
Inglish_PlantJumpRelativeIfNonZero_CallTheHandler 7EA6 EX (SP),HL Swap HL with the address on the stack.
7EA7 JP (HL) Jump to the action handler the caller addressed.
This entry point is used by the routine at Inglish_SaveTheClauseWindow.
Inglish_PlantJumpRelativeIfNonZero_ReadThePointers 7EA8 LD HL,($795C) Read the pointer stored in the other swapped pointer.
7EAB PUSH HL Read the pointer stored in the swapped text pointer.
7EAC LD HL,($795A)
7EAF PUSH HL Read the pointer stored in the saved text pointer.
7EB0 LD HL,($7958)
7EB3 PUSH HL Point HL at "i do not know the verb".
7EB4 LD HL,$ADB0
7EB7 JP Inglish_CopyTheParserSlot_OpenTheMessageGate Jump to Inglish_CopyTheParserSlot_OpenTheMessageGate to open the message gate and print the prompt.
View the equivalent code in;
Prev: 7E78 Up: Map Next: 7EBA