![]() |
Routines |
| Prev: E5E2 | Up: Map | Next: E63F |
|
|
|||||
|
|||||
| Draw_Cursor | E5E4 | LD A,($D82E) | B=*CurrentCursor_Y_Position-01. | ||
| E5E7 | DEC A | ||||
| E5E8 | LD B,A | ||||
| E5E9 | LD ($E5E0),A | Write B to *Cursor_AttributePosition_Y. | |||
| E5EC | LD A,($D82F) | C=*CurrentCursor_X_Position-01. | |||
| E5EF | DEC A | ||||
| E5F0 | LD C,A | ||||
| E5F1 | LD ($E5E1),A | Write C to *Cursor_AttributePosition_X. | |||
| E5F4 | CALL Calculate_ScreenBlockAddress | Call Calculate_ScreenBlockAddress. | |||
| E5F7 | CALL Calculate_AttributeAddress | Call Calculate_AttributeAddress. | |||
| E5FA | LD ($E5E2),DE | Write the calculated attribute buffer address to *Cursor_AttributePointer. | |||
| E5FE | LD B,$04 | B=04. | |||
| E600 | LD HL,$E5D0 | HL=SavedAttributesBlock. | |||
| E603 | EX DE,HL | Exchange the DE and HL registers. | |||
| Draw_Cursor_0 | E604 | PUSH BC | Stash BC on the stack. | ||
| E605 | LD BC,$0004 | Copy 0004 bytes from *HL to *DE. | |||
| E608 | LDIR | ||||
| E60A | LD BC,$001C | HL+=001C. | |||
| E60D | ADD HL,BC | ||||
| E60E | POP BC | Restore BC from the stack. | |||
| E60F | DJNZ Draw_Cursor_0 | Decrease counter by one and loop back to Draw_Cursor_0 until counter is zero. | |||
|
Paint the top section of the cursor.
|
|||||
| E611 | LD HL,$E6AF | Copy 0004 bytes from CursorAttributes to *Cursor_AttributePointer. | |||
| E614 | LD DE,($E5E2) | ||||
| E618 | LD BC,$0004 | ||||
| E61B | LDIR | ||||
|
Paint the middle section of the cursor.
|
|||||
| E61D | LD B,$02 | B=02. | |||
| Draw_Cursor_Loop | E61F | PUSH BC | Stash BC on the stack. | ||
| E620 | EX DE,HL | Exchange the DE and HL registers. | |||
| E621 | LD BC,$001C | HL+=001C. | |||
| E624 | ADD HL,BC | ||||
| E625 | EX DE,HL | Exchange the DE and HL registers. | |||
| E626 | LD A,(HL) | Write *HL to *DE. | |||
| E627 | LD (DE),A | ||||
| E628 | INC HL | Increment HL by one. | |||
| E629 | INC DE | Increment DE by three. | |||
| E62A | INC DE | ||||
| E62B | INC DE | ||||
| E62C | LD A,(HL) | Write *HL to *DE. | |||
| E62D | LD (DE),A | ||||
| E62E | INC HL | Increment HL by one. | |||
| E62F | INC DE | Increment DE by one. | |||
| E630 | POP BC | Restore BC from the stack. | |||
| E631 | DJNZ Draw_Cursor_Loop | Decrease counter by one and loop back to Draw_Cursor_Loop until counter is zero. | |||
| E633 | EX DE,HL | Exchange the DE and HL registers. | |||
| E634 | LD BC,$001C | HL+=001C. | |||
| E637 | ADD HL,BC | ||||
| E638 | EX DE,HL | Exchange the DE and HL registers. | |||
|
Paint the bottom section of the cursor.
|
|||||
| E639 | LD BC,$0004 | Copy 0004 bytes from *HL to *DE. | |||
| E63C | LDIR | ||||
| E63E | RET | Return. | |||
| Prev: E5E2 | Up: Map | Next: E63F |