Prev: A28A Up: Map Next: A368
A2DF: Print the text content of the windows
Used by the routines at A13E and A1A5.
Input
B Number of lines of text to print
IX Address of the text definition data
A2DF PUSH BC Save BC
A2E0 CALL $A307 Print a line of text
A2E3 INC IX Point IX to the address of the first byte of the next line
A2E5 POP BC Save BC
A2E6 DJNZ $A2DF Jump back while there are lines left to print
A2E8 RET
Compute the address at the lookup table of the display file and the address of the graphic data for the character to display
A2E9 LD A,($A097) Set HL to the vertical position of the text
A2EC LD L,A
A2ED LD H,$00
A2EF ADD HL,HL Vertical position is in bit 7-3 so it's only necessari multiply by two
A2F0 LD DE,$ABDD Point HL to the display file lookup table
A2F3 ADD HL,DE
A2F4 PUSH HL Save HL
A2F5 LD L,(IX+$00) Set HL to the character to display
A2F8 LD H,$00
A2FA ADD HL,HL Computes the address of the graphic data of the character into the charset data tabla at $5FE0
A2FB ADD HL,HL
A2FC ADD HL,HL
A2FD LD DE,$5FE0
A300 ADD HL,DE
A301 EX DE,HL Exchange DE and HL
A302 POP IY Restore IY
A304 LD B,$08 Set B=8
A306 RET
Prints a line of text
A307 LD A,(IX+$00) Save color attribute of text at A093
A30A LD ($A093),A
A30D LD A,(IX+$01) Save horizontal position of text at A095
A310 LD ($A095),A
A313 LD A,(IX+$02) Save vertical position of text at A097
A316 LD ($A097),A
A319 LD DE,$0003 Point IX to the first character
A31C ADD IX,DE
A31E CALL $A2E9 Computes addres into lookup table and address of the graphics data for the character
Prints a character
A321 LD L,(IY+$00) Point at HL the address into the display file from the lookup table
A324 LD H,(IY+$01)
A327 PUSH DE Save DE
A328 LD A,($A095) Save the horizontal position of text at DE
A32B LD E,A
A32C LD D,$00
A32E ADD HL,DE Adds the horizontal position to the address into the display file
A32F POP DE Restore DE
A330 LD A,(DE) Read the next byte of the graphic data for the character
A331 LD (HL),A Puts the byte in to the display file
A332 INC DE Points to the next byte of the graphic data for the character
A333 INC IY Points to the next address of the display file lookup table
A335 INC IY
A337 DJNZ $A321 Jump back until displayed all of the eight bytes of the character
A339 LD A,(IX+$00) The character is an space ($20)?
A33C CP $20
A33E JR Z,$A359 Jump if so
Set the color attribute for the character if is not an SPACE ($20)
A340 LD A,($A097) Set HL to the vertical position of the text (only bits 7-3)
A343 AND $F8
A345 LD L,A
A346 LD H,$00
A348 ADD HL,HL And computes the patial offset to the attribute file
A349 ADD HL,HL
A34A LD A,($A095) Set DE to the horizontal position
A34D LD E,A
A34E LD D,$00
A350 ADD HL,DE And computes the offset to the attribute file
A351 LD DE,$5800 Add the offset to the base address of the attribute file
A354 ADD HL,DE
A355 LD A,($A093) Pick up the color attribute for the text
A358 LD (HL),A And put this color attribute into the attribute file
Prepares to print the next character until the end of marker (character $00)
A359 INC IX Point IX to the next character
A35B LD HL,$A095 Increment the horizontal position for the next character
A35E INC (HL)
A35F LD A,(IX+$00) Pick up the next character
A362 OR A is an end of marker ($00)?
A363 JR Z,$A367 Jump if so
A365 JR $A31E Jump back and repeat for the next character
A367 RET
Prev: A28A Up: Map Next: A368