Prev: 56041 Up: Map Next: 56098
56066: Print Half A Double-Height Text Character
Used by the routine at PrintDoubleHeightCharacter.
Input
DE 15360 + 8 × character index [+4 for second run-through] (i.e. points to ROM graphic data for the character of interest)
HL Attribute buffer address at which to print character
PrintHalfDoubleHeightTextCharacter 56066 PUSH HL Stash HL and BC on the stack.
56067 PUSH BC
56068 LD A,(28054) Load StoredAttribute into A.
56071 LD (HL),A Write this to attribute buffer.
56072 LD A,H Multiply the most significant byte (MSB) of the attribute buffer address by 8 to put it on the same scale as the MSB of the display buffer address MSB (see notes).
56073 ADD A,A
56074 ADD A,A
56075 ADD A,A
56076 AND %01011011 Drop the most significant bit to point to the correct location in the display buffer.
56078 LD H,A Load back into HL (L is unaffected, as it should be).
56079 LD B,4 Set B to 4 (loop counter).
PrintHalfDoubleHeightTextCharacter_Loop 56081 LD A,(DE) Load a byte from the graphic data into C.
56082 LD C,A
56083 SRL C Shift bitmap data left one pixel in C.
56085 OR C Merge this into bitmap data already in A to give a "bold" typeface appearance.
56086 AND %01111111 Drop the leftmost bit to prevent one character touching the next (space between letters).
56088 LD (HL),A Load the bitmap data into two consecutive rows to provide double-height (2 chars) text.
56089 INC H
56090 LD (HL),A
56091 INC H
56092 INC DE Advance to next byte of graphic data.
56093 DJNZ PrintHalfDoubleHeightTextCharacter_Loop Loop back to PrintHalfDoubleHeightTextCharacter_Loop to repeat for next row of graphic data.
56095 POP BC Restore BC and HL from the stack.
56096 POP HL
56097 RET Return.
Prev: 56041 Up: Map Next: 56098