Prev: 34982 Up: Map Next: 35123
34990: Draw a window
Input
A Index of window to draw
IY 23610
34990 EX AF,AF' Switch AF and AF'
34991 LD A,111 Reset draw-hand-menu-cursor flag (later in this routine)...
34993 LD (35087),A ...
This entry point is used by the routine at 34982.
34996 SET 1,(IY+65) Set characters-free-to-move flag
35000 EX AF,AF' Restore original AF (with A being index of window)
35001 LD (54334),A Set this index as the "current" window index
35004 LD L,A Load HL with A value (index of required window)...
35005 LD H,0 ...
35007 ADD HL,HL Multiply index by eight (as each window's data takes up eight bytes in table at 37089)...
35008 ADD HL,HL ...
35009 ADD HL,HL ...
35010 LD BC,37089 Set BC to start of window data table
35013 ADD HL,BC Calculate location of start of required window's data
35014 LD E,(HL) Load E with x-coordinate of left edge (characters)
35015 INC HL Load C with x-coordinate of right edge (characters)...
35016 LD C,(HL) ...
35017 INC HL Load D with y-coordinate of top edge (characters)...
35018 LD D,(HL) ...
35019 INC HL Load B with y-coordinate of bottom edge (characters)...
35020 LD B,(HL) ...
35021 LD (23493),DE Store values for later use...
35025 LD (23495),BC ...
35029 INC HL Load A with window's upper edge border style...
35030 LD A,(HL) ...
35031 LD (54235),A Store for later use in routine at 54231
35034 INC HL Load A with window's border attribute...
35035 LD A,(HL) ...
35036 EX AF,AF' Exchange AF and AF'
35037 INC HL Load A with starting y-coordinate of hand cursor...
35038 LD A,(HL) ...
35039 LD (23456),A Store for later use
35042 INC HL Load A with window's content attribute...
35043 LD A,(HL) ...
35044 LD (23481),A Store for later use
35047 EX AF,AF' Exchange AF and AF' (restoring border attribute to A and putting background colour in A')
35048 CALL 35123 Draw window frame
35051 LD HL,23493 Point HL at previously stored values
35054 INC (HL) Increase top-left x-coordinate
35055 INC HL Increase top-left y-coordinate...
35056 INC (HL) ...
35057 INC HL Decrease bottom-right x-coordinate...
35058 DEC (HL) ...
35059 INC HL Decrease bottom-right y-coordinate...
35060 DEC (HL) ...
35061 LD A,(23481) Load window content attribute into A
35064 LD (35948),A Prepare to fill a region with the attribute in A
35067 LD (23695),A Store window content attribute at 23695
35070 CALL 35940 Fill a region of attribute file with specified attribute
35073 CALL 35994 Blank the interior of the window (display file)
35076 LD HL,23493 Load x-coordinate of left of interior of window into C...
35079 LD C,(HL) ...
35080 INC HL Load y-coordinate of top of interior of window into B...
35081 LD B,(HL) ...
35082 CALL 54132 Move virtual cursor (bitmap) to top-left of interior or window and load address into HL
35085 PUSH HL Store HL (address in display file of top-left of interior of window)
The operand of the instruction at 35086 represents the draw-hand-menu-cursor flag. This is modified by the instructions at 34985 and 34993.
35086 LD A,0 Load A with draw-hand-menu-cursor flag
35088 CP 105 If value is not 105...
35090 JP NZ,35114 ...then jump to 35114 (i.e. don't draw the hand cursor)
Window is a menu (105)
35093 LD BC,(23493) Load B with y-coordinate of top edge and C with x-coordinate of left edge
35097 LD A,(23456) Load A with starting y-coordinate of hand cursor
35100 ADD A,B Add y-coordinate of top of area to this...
35101 LD B,A ...and place back into B
35102 LD A,2 Load A with 2 (graphic lookup index of menu hand cursor graphic in table at 55950)
35104 LD DE,514 Load D (graphic width) with 2 and E (graphic height) with 2
35107 PUSH IX Store IX
35109 CALL 54414 Draw a graphic with lookup index A at character coordinates (C, B) with width E and height D
35112 POP IX Restore IX
35114 XOR A Set A to zero
35115 LD (23479),A Set hand cursor's current y-coordinate to zero (i.e. defaults to top of its movement range within current window)
35118 POP HL Restore HL (address in display file of top-left of interior of window)
35119 LD (54110),HL Set memory location to start printing character in character printing routine
35122 RET Return
Prev: 34982 Up: Map Next: 35123