Routines |
Prev: FDEA | Up: Map | Next: FE86 |
Used by the routine at FDEA.
|
||||||||||||
FE41 | PUSH BC | |||||||||||
FE42 | AND $07 | The bottom 3 bits contain the relevant character. | ||||||||||
FE44 | LD C,A | Remember this. | ||||||||||
FE45 | ADD A,A | Shift by 8 to get an offset in the graphics table. | ||||||||||
FE46 | ADD A,A | |||||||||||
FE47 | ADD A,A | |||||||||||
FE48 | ADD A,C | |||||||||||
FE49 | PUSH HL | Remember screen position. | ||||||||||
FE4A | LD E,A | Put the offset in DE. | ||||||||||
FE4B | LD D,$00 | |||||||||||
FE4D | LD HL,$C54E | C54E is the static character graphics table. | ||||||||||
FE50 | ADD HL,DE | Get the right offset and put it in DE. | ||||||||||
FE51 | EX DE,HL | |||||||||||
FE52 | POP HL | Restore screen position. | ||||||||||
FE53 | PUSH HL | Remember screen position. | ||||||||||
FE54 | LD C,L | Put X co-ordinate in C. | ||||||||||
FE55 | LD L,H | Double Y co-ordinate to get a word offset. | ||||||||||
FE56 | LD H,$00 | |||||||||||
FE58 | ADD HL,HL | |||||||||||
FE59 | PUSH DE | Remember address of character. | ||||||||||
FE5A | LD DE,$EA60 | EA60 is the screen offsets table. | ||||||||||
FE5D | ADD HL,DE | Put the appropriate screen position in HL. | ||||||||||
FE5E | LD A,(HL) | |||||||||||
FE5F | INC HL | |||||||||||
FE60 | LD H,(HL) | |||||||||||
FE61 | LD L,A | |||||||||||
Now copy the found graphic into the screen buffer. The first byte contains the attribute.
|
||||||||||||
FE62 | LD DE,$9260 | Add this value to convert a screen address into an offset from D260. | ||||||||||
FE65 | ADD HL,DE | |||||||||||
FE66 | LD B,$00 | Set B to 0 so BC can be used an offset. | ||||||||||
FE68 | POP DE | Restore address of character. | ||||||||||
FE69 | ADD HL,BC | Add the X offset so HL now points to the right place in the screen buffer. | ||||||||||
FE6A | LD A,(DE) | Copy the next attribute and store it. | ||||||||||
FE6B | LD (IY+$00),A | |||||||||||
FE6E | INC DE | Move onto the next byte. | ||||||||||
Now copy the pixel data.
|
||||||||||||
FE6F | LD B,$08 | 8 rows to copy. | ||||||||||
FE71 | LD A,(DE) | Copy this row. | ||||||||||
FE72 | LD (HL),A | |||||||||||
FE73 | INC H | Move to the next row. | ||||||||||
FE74 | INC DE | Move to the next graphic byte. | ||||||||||
FE75 | DJNZ $FE71 | Loop while there is more to do. | ||||||||||
FE77 | INC IY | Move to the next attribute address. | ||||||||||
FE79 | POP HL | Restore HL and BC. | ||||||||||
FE7A | POP BC | |||||||||||
FE7B | INC L | Move to the next column. | ||||||||||
FE7C | LD A,L | Have we reached the end of a column? | ||||||||||
FE7D | AND $1F | |||||||||||
FE7F | RET NZ | Return if not. Having reached the end of a column, need to point to the right place. | ||||||||||
FE80 | LD L,A | Set the column back to 0. | ||||||||||
FE81 | LD A,H | Move to the next segment on screen. | ||||||||||
FE82 | SUB $08 | |||||||||||
FE84 | LD H,A | |||||||||||
FE85 | RET | Return. |
Prev: FDEA | Up: Map | Next: FE86 |