Prev: 47193 Up: Map Next: 47491
47326: Draw a window frame
Used by the routine at 47193.
47326 LD (23695),A Store border attribute at 23695
47329 LD A,(23408) Load A with x-coordinate of left of window
47332 LD C,A Copy into C
47333 LD A,(23410) Load A with x-coordinate of right of window
47336 SUB C Get distance between left and right coordinates
47337 DEC A Subtract 1 to get width of window top-edge (not including corner pieces)
47338 LD C,A Transfer this to BC...
47339 LD B,0 ...
47341 PUSH BC Store BC (width of top edge of window, not including corner pieces)
47342 LD BC,(23408) Load B with y-coordinate of top edge and C with x-coordinate of left edge
47346 INC C Increase C by one to skip over corner piece
47347 CALL 63203 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
47350 POP HL Restore HL (width of top edge of window, not including corner pieces)
47351 PUSH HL Store HL (width of top edge of window, not including corner pieces)
47352 HALT Wait for interrupt
47353 CALL 47491 Draw upper window frame edge then increment the border character index in routine at 63302
47356 LD A,(23408) Load C with x-coordinate of left of window...
47359 LD C,A ...
47360 LD A,(23411) Load B with y-coordinate of bottom of window...
47363 LD B,A ...
47364 INC C Increase C by one to skip over corner piece
47365 CALL 63203 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
47368 POP HL Restore HL (width of bottom edge of window)...
47369 CALL 47491 Draw lower window frame edge then increment the border character index in routine at 63302
47372 LD A,(23409) Load y-coordinate of top of window into B...
47375 LD B,A ...
47376 LD A,(23411) Load y-coordinate of bottom of window into A
47379 SUB B Subtract B...
47380 DEC A ...and decrease by one to get length of left-edge (not including corner pieces)
47381 PUSH AF Store AF (A = remaining length of left / right edges)
47382 LD BC,(23408) Load B with y-coordinate of top edge and C with x-coordinate of left edge
47386 ADD A,B Add A and B to get y-coordinate of character to draw in left edge...
47387 LD B,A ...and load into B
47388 CALL 63203 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
47391 LD A,(63306) Load A with index of character (left edge) to draw
47394 CALL 63005 Print text/graphic character in A and advance bitmap virtual text cursor
47397 LD HL,(63018) Load HL with address of bitmap virtual text cursor
47400 LD A,L Load A with LSB of display file address (virtual attribute cursor location)
47401 AND 224 Decrease to nearest multiple of 32 (i.e. start of character row)...
47403 LD L,A ...and place back in L
47404 LD A,(23410) Load A with x-coordinate of right edge of window (characters)
47407 OR L Add this x-coordinate to value in HL...
47408 LD L,A ...
47409 LD (63018),HL ...and update address of bitmap virtual text cursor
47412 LD A,(63306) Load A with index of character (left edge) to draw...
47415 INC A ...and increment index to get index of right-edge character
47416 CALL 63005 Print text/graphic character in A and advance bitmap virtual text cursor
47419 POP AF Restore AF (A = remaining length of left / right edges)
47420 DEC A Decrease remaining length
47421 JP NZ,47381 If remaining length is not zero then loop back to 47381
47424 LD A,(23410) Load C with x-coordinate of right edge of window (characters)...
47427 LD C,A ...
47428 LD A,(23409) Load y-coordinate of top edge of window into B...
47431 LD B,A ...
47432 CALL 63203 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
47435 LD A,(63306) Load A with index of character (left-edge) to draw...
47438 INC A ...and increment (to get right-edge character)
47439 CALL 47497 Increment index again (to get top-right corner character) and store at 63306
47442 CALL 63005 Print text/graphic character in A and advance bitmap virtual text cursor
47445 LD BC,(23410) Load B with y-coordinate of window's bottom edge and C with x-coordinate of window's right-edge
47449 CALL 63203 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
47452 CALL 47494 Increment index of window frame character currently in use to get bottom-right corner character
47455 CALL 63005 Print text/graphic character in A and advance bitmap virtual text cursor
47458 LD A,(23408) Load C with x-coordinate of left edge of current window to draw (characters)...
47461 LD C,A ...
47462 LD A,(23411) Load B with y-coordinate of window's bottom edge...
47465 LD B,A ...
47466 CALL 63203 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
47469 CALL 47494 Increment index of window frame character currently in use to get bottom-left corner character
47472 CALL 63005 Print text/graphic character in A and advance bitmap virtual text cursor
47475 LD BC,(23408) Load B with y-coordinate of top-edge of window and C with x-coordinate of left-edge of window
47479 CALL 63203 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
47482 CALL 47494 Increment index of window frame character currently in use to get top-left corner character
47485 CALL 63005 Print text/graphic character in A and advance bitmap virtual text cursor
47488 JP 63472 Update character printing routine to use base address of text character set graphics and return
Prev: 47193 Up: Map Next: 47491