Prev: 34990 Up: Map Next: 35285
35123: Draw a window frame
Used by the routine at 34990.
35123 LD (23695),A Store border attribute at 23695
35126 LD A,(23493) Load A with x-coordinate of left of window
35129 LD C,A Copy into C
35130 LD A,(23495) Load A with x-coordinate of right of window
35133 SUB C Get distance between left and right coordinates
35134 DEC A Subtract 1 to get width of window top-edge (not including corner pieces)
35135 LD C,A Transfer this to BC...
35136 LD B,0 ...
35138 PUSH BC Store BC (width of top edge of window, not including corner pieces)
35139 LD BC,(23493) Load B with y-coordinate of top edge and C with x-coordinate of left edge
35143 INC C Increase C by one to skip over corner piece
35144 CALL 54132 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
35147 POP HL Restore HL (width of top edge of window, not including corner pieces)
35148 PUSH HL Store HL (width of top edge of window, not including corner pieces)
35149 HALT Wait for interrupt
35150 CALL 35285 Draw upper window frame edge then increment the border character index in routine at 54231
35153 LD A,(23493) Load C with x-coordinate of left of window...
35156 LD C,A ...
35157 LD A,(23496) Load B with y-coordinate of bottom of window...
35160 LD B,A ...
35161 INC C Increase C by one to skip over corner piece
35162 CALL 54132 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
35165 POP HL Restore HL (width of bottom edge of window)...
35166 CALL 35285 Draw lower window frame edge then increment the border character index in routine at 54231
35169 LD A,(23494) Load y-coordinate of top of window into B...
35172 LD B,A ...
35173 LD A,(23496) Load y-coordinate of bottom of window into A
35176 SUB B Subtract B...
35177 DEC A ...and decrease by one to get length of left-edge (not including corner pieces)
35178 PUSH AF Store AF (A = remaining length of left / right edges)
35179 LD BC,(23493) Load B with y-coordinate of top edge and C with x-coordinate of left edge
35183 ADD A,B Add A and B to get y-coordinate of character to draw in left edge...
35184 LD B,A ...and load into B
35185 CALL 54132 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
35188 LD A,(54235) Load A with index of character (left edge) to draw
35191 CALL 54097 Print text/graphic character in A and advance bitmap virtual text cursor
35194 LD HL,(54110) Load HL with address of bitmap virtual text cursor
35197 LD A,L Load A with LSB of display file address (virtual attribute cursor location)
35198 AND 224 Decrease to nearest multiple of 32 (i.e. start of character row)...
35200 LD L,A ...and place back in L
35201 LD A,(23495) Load A with x-coordinate of right edge of window (characters)
35204 OR L Add this x-coordinate to value in HL...
35205 LD L,A ...
35206 LD (54110),HL ...and update address of bitmap virtual text cursor
35209 LD A,(54235) Load A with index of character (left edge) to draw...
35212 INC A ...and increment index to get index of right-edge character
35213 CALL 54097 Print text/graphic character in A and advance bitmap virtual text cursor
35216 POP AF Restore AF (A = remaining length of left / right edges)
35217 DEC A Decrease remaining length
35218 JP NZ,35178 If remaining length is not zero then loop back to 35178
35221 LD A,(23495) Load C with x-coordinate of right edge of window (characters)...
35224 LD C,A ...
35225 LD A,(23494) Load y-coordinate of top edge of window into B...
35228 LD B,A ...
35229 CALL 54132 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
35232 LD A,(54235) Load A with index of character (left-edge) to draw...
35235 INC A ...and increment (to get right-edge character)
35236 CALL 35291 Increment index again (to get top-right corner character) and store at 54235
35239 CALL 54097 Print text/graphic character in A and advance bitmap virtual text cursor
35242 LD BC,(23495) Load B with y-coordinate of window's bottom edge and C with x-coordinate of window's right-edge
35246 CALL 54132 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
35249 CALL 35288 Increment index of window frame character currently in use to get bottom-right corner character
35252 CALL 54097 Print text/graphic character in A and advance bitmap virtual text cursor
35255 LD A,(23493) Load C with x-coordinate of left edge of current window to draw (characters)...
35258 LD C,A ...
35259 LD A,(23496) Load B with y-coordinate of window's bottom edge...
35262 LD B,A ...
35263 CALL 54132 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
35266 CALL 35288 Increment index of window frame character currently in use to get bottom-left corner character
35269 CALL 54097 Print text/graphic character in A and advance bitmap virtual text cursor
35272 LD BC,(23493) Load B with y-coordinate of top-edge of window and C with x-coordinate of left-edge of window
35276 CALL 54132 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
35279 CALL 35288 Increment index of window frame character currently in use to get top-left corner character
35282 JP 54097 Print text/graphic character in A and advance bitmap virtual text cursor and return
Prev: 34990 Up: Map Next: 35285