Prev: FDD5 Up: Map Next: FE41
FDEA: Print a line of characters in a room
Used by the routine at FDD5.
Input
IX pointer to the character data
The characters are a series of 3-bit numbers (0-7) packed contiguously into bytes. To extract the relevant character, the appropriate bits need to be taken from every 3 byte sequence, which contains 8 characters.
Bytes Bits Character number
0 5 - 7 0
0 2 - 4 1
0 - 1 0 - 1, 7 2
1 4 - 6 3
1 1 - 3 4
1 - 2 0, 6 - 7 5
2 3 - 5 6
2 0 - 2 7
FDEA LD B,$04 Four sets of 3-byte sequences for each line.
FDEC LD A,(IX+$00) Get the first byte.
FDEF RLCA Put the top three bits in the bottom.
FDF0 RLCA
FDF1 RLCA
FDF2 CALL $FE41 Print the character.
FDF5 LD A,(IX+$00) Get the first byte.
FDF8 RRCA Put bits 2-4 in the bottom.
FDF9 RRCA
FDFA CALL $FE41 Print the character.
FDFD LD A,(IX+$00) Put the first byte in A and the second in C.
FE00 LD C,(IX+$01)
FE03 RL C Get the top bit of the second byte and the bottom two bits of the first.
FE05 RLA
FE06 CALL $FE41 Print the character.
FE09 LD A,(IX+$01) Get the second byte.
FE0C RRCA Put bits 4-6 in the bottom.
FE0D RRCA
FE0E RRCA
FE0F RRCA
FE10 CALL $FE41 Print the character.
FE13 LD A,(IX+$01) Get the second byte.
FE16 RRCA Put bits 1-3 in the bottom.
FE17 CALL $FE41 Print the character.
FE1A LD A,(IX+$01) Put the first byte in A and the second in C.
FE1D LD C,(IX+$02)
FE20 RL C Get the top two bit of the third byte and the bottom bit of the second.
FE22 RLA
FE23 RL C
FE25 RLA
FE26 CALL $FE41 Print the character.
FE29 LD A,(IX+$02) Get the third byte.
FE2C RRCA Put bits 3-5 in the bottom.
FE2D RRCA
FE2E RRCA
FE2F CALL $FE41 Print the character.
FE32 LD A,(IX+$02) Get the byte byte; the bottom 3 bits will have the last character.
FE35 CALL $FE41 Print the character.
FE38 INC IX Move to the next block.
FE3A INC IX
FE3C INC IX
FE3E DJNZ $FDEC Repeat until all characters in the line are printed.
FE40 RET
Prev: FDD5 Up: Map Next: FE41