Prev: ED00 Up: Map Next: EDA1
ED06: Print a set of UDGs
Used by the routines at CA5B, CDD3, D378, DCF6, DD8D and ED00.
Input
HL Pointer of UDGs to print, terminated with FF
ED06 LD A,(HL) Get the width.
ED07 CP $FF Return if this is a terminator symbol instead.
ED09 RET Z
ED0A LD E,A Get the height and put the sizes in DE.
ED0B INC HL
ED0C LD D,(HL)
ED0D INC HL Move to the next position and remember it.
ED0E PUSH HL
ED0F LD L,(HL) Get the offset to the graphic buffer in HL.
ED10 LD H,$00
ED12 ADD HL,HL Double it to get an appropriate word offset.
ED13 LD BC,$6C46 Add the base offset address at 6C46.
ED16 ADD HL,BC
ED17 LD C,(HL) Put the actual address of the graphic in BC.
ED18 INC HL
ED19 LD B,(HL)
ED1A POP HL Restore the graphic buffer position.
ED1B INC HL Move to the byte after it.
ED1C LD A,(HL) Get the next command.
ED1D CP $FE Jump forward if this is "draw right".
ED1F JR Z,$ED36
ED21 CP $FD Jump forward if this is "draw up".
ED23 JR Z,$ED50
ED25 CP $FC Jump forward if this is "draw right and down".
ED27 JR Z,$ED6A
ED29 CP $FB Jump forward if this is "draw right and up".
ED2B JR Z,$ED85
No special command here, so print the graphic.
ED2D PUSH HL Remember the current position.
ED2E LD L,C Put the graphic address in HL.
ED2F LD H,B
ED30 CALL $E84E Print the graphic.
ED33 POP HL Restore HL and print another character.
ED34 JR $ED06
Draw a string of UDGs to the right.
ED36 INC HL Move to the next position.
ED37 PUSH HL Remember HL and BC.
ED38 PUSH BC
ED39 LD C,(HL) Put the increment amount in C.
ED3A INC HL Put the length in B.
ED3B LD B,(HL)
ED3C POP HL Restore HL.
ED3D PUSH BC Remember the main registers used.
ED3E PUSH DE
ED3F PUSH HL
ED40 CALL $E84E Print the graphic.
ED43 POP HL Restore the registers.
ED44 POP DE
ED45 POP BC
ED46 LD A,D Move the X position right.
ED47 ADD A,C
ED48 LD D,A
ED49 DJNZ $ED3D Loop while there is more to draw.
ED4B POP HL Restore HL.
ED4C INC HL Move to the next UDG definition.
ED4D INC HL
ED4E JR $ED06
Draw a string of UDGs up.
ED50 INC HL Move to the next position.
ED51 PUSH HL Remember HL and BC.
ED52 PUSH BC
ED53 LD C,(HL) Put the increment amount in C.
ED54 INC HL Put the length in B.
ED55 LD B,(HL)
ED56 POP HL
ED57 PUSH BC Remember the main registers used.
ED58 PUSH DE
ED59 PUSH HL
ED5A CALL $E84E Print the graphic.
ED5D POP HL Restore the registers.
ED5E POP DE
ED5F POP BC
ED60 LD A,E Move the Y position up.
ED61 SUB C
ED62 LD E,A
ED63 DJNZ $ED57 Loop while there is more to draw.
ED65 POP HL Restore HL.
ED66 INC HL Move to the next UDG definition.
ED67 INC HL
ED68 JR $ED06
Draw a string of UDGS right and down.
ED6A INC HL Move to the next position.
ED6B PUSH HL Remember HL and BC.
ED6C PUSH BC
ED6D LD C,(HL) Put the increment amount in C.
ED6E INC HL
ED6F LD B,(HL) Put the length in B.
ED70 POP HL
ED71 PUSH BC Remember the main registers used.
ED72 PUSH DE
ED73 PUSH HL
ED74 CALL $E84E Print the graphic.
ED77 POP HL Restore the registers.
ED78 POP DE
ED79 POP BC
ED7A LD A,D Move the X position right.
ED7B ADD A,C
ED7C LD D,A
ED7D INC E Increase the Y position.
ED7E DJNZ $ED71 Loop while there is more to draw.
ED80 POP HL Restore HL.
ED81 INC HL Move to the next UDG definition.
ED82 INC HL
ED83 JR $ED06
Draw a string of UDGS right and up.
ED85 INC HL Move to the next position.
ED86 PUSH HL Remember HL and BC.
ED87 PUSH BC
ED88 LD C,(HL) Put the increment amount in C.
ED89 INC HL Put the length in B.
ED8A LD B,(HL)
ED8B POP HL Remember the main registers used.
ED8C PUSH BC
ED8D PUSH DE
ED8E PUSH HL
ED8F CALL $E84E Print the graphic.
ED92 POP HL Restore the registers.
ED93 POP DE
ED94 POP BC
ED95 LD A,D Move the X position to the right.
ED96 ADD A,C
ED97 LD D,A
ED98 DEC E Decrease the Y position.
ED99 DJNZ $ED8C Loop while there is more to draw.
ED9B POP HL
ED9C INC HL
ED9D INC HL
ED9E JP $ED06
Prev: ED00 Up: Map Next: EDA1