|  | Routines | 
| Prev: 47185 | Up: Map | Next: 47326 | 
| 
 | ||||||||||
| 47193 | EX AF,AF' | Switch AF and AF' | ||||||||
| 47194 | LD A,111 | Reset draw-hand-menu-cursor flag (later in this routine)... | ||||||||
| 47196 | LD (47290),A | ... | ||||||||
| 
This entry point is used by the routine at 47185.
 | ||||||||||
| 47199 | SET 1,(IY+65) | Set characters-movement-unrestricted flag / disable-in-game-glow flag | ||||||||
| 47203 | EX AF,AF' | Restore original AF (with A being index of window) | ||||||||
| 47204 | LD (63400),A | Set this index as the "current" window index | ||||||||
| 47207 | LD L,A | Load HL with A value (index of required window)... | ||||||||
| 47208 | LD H,0 | ... | ||||||||
| 47210 | ADD HL,HL | Multiply index by eight (as each window's data takes up eight bytes in table at 49034)... | ||||||||
| 47211 | ADD HL,HL | ... | ||||||||
| 47212 | ADD HL,HL | ... | ||||||||
| 47213 | LD BC,49034 | Set BC to start of window data table | ||||||||
| 47216 | ADD HL,BC | Calculate location of start of required window's data | ||||||||
| 47217 | LD E,(HL) | Load E with x-coordinate of left edge (characters) | ||||||||
| 47218 | INC HL | Load C with x-coordinate of right edge (characters)... | ||||||||
| 47219 | LD C,(HL) | ... | ||||||||
| 47220 | INC HL | Load D with y-coordinate of top edge (characters)... | ||||||||
| 47221 | LD D,(HL) | ... | ||||||||
| 47222 | INC HL | Load B with y-coordinate of bottom edge (characters)... | ||||||||
| 47223 | LD B,(HL) | ... | ||||||||
| 47224 | LD (23408),DE | Store values for later use... | ||||||||
| 47228 | LD (23410),BC | ... | ||||||||
| 47232 | INC HL | Load A with window's upper edge border style... | ||||||||
| 47233 | LD A,(HL) | ... | ||||||||
| 47234 | LD (63306),A | Store for later use in routine at 63302 | ||||||||
| 47237 | INC HL | Load A with window's border attribute... | ||||||||
| 47238 | LD A,(HL) | ... | ||||||||
| 47239 | EX AF,AF' | Exchange AF and AF' | ||||||||
| 47240 | INC HL | Load A with starting y-coordinate of hand cursor... | ||||||||
| 47241 | LD A,(HL) | ... | ||||||||
| 47242 | LD (23456),A | Store for later use | ||||||||
| 47245 | INC HL | Load A with window's content attribute... | ||||||||
| 47246 | LD A,(HL) | ... | ||||||||
| 47247 | LD (23481),A | Store for later use | ||||||||
| 47250 | EX AF,AF' | Exchange AF and AF' (restoring border attribute to A and putting background colour in A') | ||||||||
| 47251 | CALL 47326 | Draw window frame | ||||||||
| 47254 | LD HL,23408 | Point HL at previously stored values | ||||||||
| 47257 | INC (HL) | Increase top-left x-coordinate | ||||||||
| 47258 | INC HL | Increase top-left y-coordinate... | ||||||||
| 47259 | INC (HL) | ... | ||||||||
| 47260 | INC HL | Decrease bottom-right x-coordinate... | ||||||||
| 47261 | DEC (HL) | ... | ||||||||
| 47262 | INC HL | Decrease bottom-right y-coordinate... | ||||||||
| 47263 | DEC (HL) | ... | ||||||||
| 47264 | LD A,(23481) | Load window content attribute into A | ||||||||
| 47267 | LD (48035),A | Prepare to fill a region with the attribute in A | ||||||||
| 47270 | LD (23695),A | Store window content attribute at 23695 | ||||||||
| 47273 | CALL 48027 | Fill a region of attribute file with specified attribute | ||||||||
| 47276 | CALL 48081 | Blank the interior of the window (display file) | ||||||||
| 47279 | LD HL,23408 | Load x-coordinate of left of interior of window into C... | ||||||||
| 47282 | LD C,(HL) | ... | ||||||||
| 47283 | INC HL | Load y-coordinate of top of interior of window into B... | ||||||||
| 47284 | LD B,(HL) | ... | ||||||||
| 47285 | CALL 63203 | Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL | ||||||||
| 47288 | PUSH HL | Store HL (address in display file of top-left of interior of window) | ||||||||
| 47289 | LD A,0 | Load A with draw-hand-menu-cursor flag | ||||||||
| 47291 | CP 105 | If value is not 105... | ||||||||
| 47293 | JP NZ,47317 | ...then jump to 47317 (i.e. don't draw the hand cursor) | ||||||||
| 
Window is a menu (105)
 | ||||||||||
| 47296 | LD BC,(23408) | Load B with y-coordinate of top edge and C with x-coordinate of left edge | ||||||||
| 47300 | LD A,(23456) | Load A with starting y-coordinate of hand cursor | ||||||||
| 47303 | ADD A,B | Add y-coordinate of top of area to this... | ||||||||
| 47304 | LD B,A | ...and place back into B | ||||||||
| 47305 | LD A,2 | Load A with 2 (graphic lookup index of menu hand cursor graphic in table at 29272) | ||||||||
| 47307 | LD DE,514 | Load D (graphic width) with 2 and E (graphic height) with 2 | ||||||||
| 47310 | PUSH IX | Store IX | ||||||||
| 47312 | CALL 63507 | Draw a graphic with lookup index A at character coordinates (C, B) with width E and height D | ||||||||
| 47315 | POP IX | Restore IX | ||||||||
| 47317 | XOR A | Set A to zero | ||||||||
| 47318 | LD (23479),A | Set hand cursor's current y-coordinate to zero (i.e. defaults to top of its movement range within current window) | ||||||||
| 47321 | POP HL | Restore HL (address in display file of top-left of interior of window) | ||||||||
| 47322 | LD (63018),HL | Set memory location to start printing character in character printing routine | ||||||||
| 47325 | RET | Return | ||||||||
| Prev: 47185 | Up: Map | Next: 47326 |