Prev: 78A5 Up: Map Next: 78FF
78B7: Inglish: Copy Two Bytes From The Other Clause
Used by the routine at InglishMatchOneWord.
Copies byte 0 and byte 1 from the other clause record into this clause. When bit 7 of the grammar flag is set, the name bytes are copied too.
Inglish_CopyTwoBytesFromTheOtherClause 78B7 EXX Switch to the saved registers for this phrase.
78B8 LD A,(IX+$01) Read byte 1 of the other clause record.
78BB AND $7F OR it, with bit 7 clear, into the clause byte at offset 1.
78BD OR (IY+$01)
78C0 LD (IY+$01),A Update the clause byte at offset 1.
78C3 LD A,(IX+$00) Read byte 0 of the other clause record.
78C6 LD (IY+$00),A Update the clause byte at offset 0.
78C9 EXX Switch to the saved registers for this phrase.
78CA LD A,(IY+$1C) Read byte +1C from IY.
78CD OR (IY+$1D) Return if bytes 1C and 1D are both zero.
78D0 RET Z
78D1 BIT 7,E Return if bit 7 of the grammar flag is clear.
78D3 RET Z
78D4 EXX Switch to the saved registers for this phrase.
78D5 PUSH IY Step the pointer on by 12 bytes.
78D7 POP HL
78D8 LD DE,$0012
78DB ADD HL,DE
78DC PUSH HL Step the copy source back 0A bytes.
78DD LD DE,$FFF6
78E0 ADD HL,DE Add FFF6 to the token pointer.
78E1 POP DE Copy the prepared bytes.
78E2 LD BC,$0006
78E5 LDIR
78E7 LD DE,$0004 The copy starts 04 bytes into the clause.
This entry point is used by the routine at InglishMatchOneWord.
Inglish_CopyTwoBytesFromTheOtherClause_0 78EA CALL Inglish_CopyWithACountOfTen Call Inglish_CopyWithACountOfTen to copy the ten grammar bytes.
78ED LD A,(IY+$02) Read the clause byte at offset 2.
78F0 OR (IY+$03) Call Inglish_CopyWithACountOfTwo to copy two clause bytes when the next clause byte is zero.
78F3 LD DE,$0002
78F6 CALL Z,Inglish_CopyWithACountOfTwo
78F9 EXX Switch to the saved registers for this phrase.
78FA RET Return.
78FB LD C,$06 Copy 06 bytes of the clause.
78FD JR Inglish_CopyWithACountOfTwo_PointAtTheClause Jump to Inglish_CopyWithACountOfTwo_PointAtTheClause to copy them.
View the equivalent code in;
Prev: 78A5 Up: Map Next: 78FF