Prev: 30885 Up: Map Next: 30975
30903: 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 30903 EXX Switch to the saved registers for this phrase.
30904 LD A,(IX+1) Read byte 1 of the other clause record.
30907 AND 127 OR it, with bit 7 clear, into the clause byte at offset 1.
30909 OR (IY+1)
30912 LD (IY+1),A Update the clause byte at offset 1.
30915 LD A,(IX+0) Read byte 0 of the other clause record.
30918 LD (IY+0),A Update the clause byte at offset 0.
30921 EXX Switch to the saved registers for this phrase.
30922 LD A,(IY+28) Read byte +28 from IY.
30925 OR (IY+29) Return if bytes 28 and 29 are both zero.
30928 RET Z
30929 BIT 7,E Return if bit 7 of the grammar flag is clear.
30931 RET Z
30932 EXX Switch to the saved registers for this phrase.
30933 PUSH IY Step the pointer on by 18 bytes.
30935 POP HL
30936 LD DE,18
30939 ADD HL,DE
30940 PUSH HL Step the copy source back 10 bytes.
30941 LD DE,65526
30944 ADD HL,DE Add 65526 to the token pointer.
30945 POP DE Copy the prepared bytes.
30946 LD BC,6
30949 LDIR
30951 LD DE,4 The copy starts 4 bytes into the clause.
This entry point is used by the routine at InglishMatchOneWord.
Inglish_CopyTwoBytesFromTheOtherClause_0 30954 CALL Inglish_CopyWithACountOfTen Call Inglish_CopyWithACountOfTen to copy the ten grammar bytes.
30957 LD A,(IY+2) Read the clause byte at offset 2.
30960 OR (IY+3) Call Inglish_CopyWithACountOfTwo to copy two clause bytes when the next clause byte is zero.
30963 LD DE,2
30966 CALL Z,Inglish_CopyWithACountOfTwo
30969 EXX Switch to the saved registers for this phrase.
30970 RET Return.
30971 LD C,6 Copy 6 bytes of the clause.
30973 JR Inglish_CopyWithACountOfTwo_PointAtTheClause Jump to Inglish_CopyWithACountOfTwo_PointAtTheClause to copy them.
View the equivalent code in;
Prev: 30885 Up: Map Next: 30975