![]() |
Routines |
Prev: 27008 | Up: Map | Next: 27145 |
Used by the routine at CreateWindow.
|
||||
DrawPlayArea | 27068 | LD HL,(23606) | Stash CHARS on the stack. | |
27071 | PUSH HL | |||
27072 | LD HL,29873 | Write UDG_Tiles to CHARS. | ||
27075 | LD (23606),HL | |||
27078 | LD HL,30353 | HL=SidebarLayoutData. | ||
27081 | LD DE,30545 | DE=SidebarAttributes. | ||
27084 | EXX | Switch to the shadow registers. | ||
27085 | LD HL,16384 | HL'=16384 (screen buffer). | ||
27088 | LD DE,22528 | DE'=22528 (attributes buffer). | ||
27091 | LD C,24 | C'=24 (height of the sidebar). | ||
27093 | LD A,8 | Write 8 (width of the sidebar) to WidthCounter. | ||
27095 | LD (24108),A | |||
DrawPlayArea_Loop | 27098 | LD A,(24108) | B'=WidthCounter. | |
27101 | LD B,A | |||
27102 | PUSH HL | Stash HL and DE on the stack. | ||
27103 | PUSH DE | |||
DrawPlayArea_LineLoop | 27104 | EXX | Switch back to the normal registers. | |
27105 | LD A,(HL) | A=fetch the sidebar layout data. | ||
27106 | INC HL | Increment the sidebar layout data pointer by one. | ||
27107 | EXX | Switch to the shadow registers. | ||
Now using the screen data held by the shadow registers.
|
||||
27108 | CALL PrintScreen | Call PrintScreen. | ||
27111 | EXX | Switch back to the normal registers. | ||
27112 | LD A,(DE) | A=fetch the sidebar attribute data. | ||
27113 | INC DE | Increment the sidebar attribute data pointer by one. | ||
27114 | EXX | Switch to the shadow registers. | ||
27115 | LD (DE),A | Write the sidebar attribute data to the attribute buffer. | ||
27116 | INC DE | Increment the attribute buffer pointer by one. | ||
27117 | DJNZ DrawPlayArea_LineLoop | Decrease counter by one and loop back to DrawPlayArea_LineLoop until counter is zero. | ||
Restore the attribute buffer address for the start of this line.
|
||||
27119 | POP HL | Restore HL from the stack. | ||
27120 | CALL 26896 | Call 26896. | ||
27123 | EX DE,HL | DE=HL (ignoring the exchange as HL is instantly overwritten below). | ||
Restore the screen buffer address for the start of this line.
|
||||
27124 | POP HL | Restore HL from the stack. | ||
27125 | CALL 26896 | Call 26896. | ||
Account for the Spectrum screen layout in memory.
|
||||
27128 | LD A,L | A=L. | ||
27129 | AND %11100000 | Keep only bits 5-7. | ||
27131 | JR NZ,DrawPlayArea_Skip | Jump to DrawPlayArea_Skip if we're not crossing a screen section. | ||
27133 | LD A,H | Else H=H+7. | ||
27134 | ADD A,7 | |||
27136 | LD H,A | |||
DrawPlayArea_Skip | 27137 | DEC C | Decrease the height counter by one. | |
27138 | JR NZ,DrawPlayArea_Loop | Keep jumping back to DrawPlayArea_Loop until the height counter is zero. | ||
All done! Finish by reverting the change to CHARS and returning.
|
||||
27140 | POP HL | Restore CHARSET from the stack and write it back to CHARS. | ||
27141 | LD (23606),HL | |||
27144 | RET | Return. |
Prev: 27008 | Up: Map | Next: 27145 |