![]() |
Routines |
| Prev: E3ED | Up: Map | Next: E44A |
|
|
|||||
|
|||||
| Draw_Cursor | E3EF | LD A,($D54A) | B=*D54A-01. | ||
| E3F2 | DEC A | ||||
| E3F3 | LD B,A | ||||
| E3F4 | LD ($E3EB),A | Write B to *Cursor_AttributePosition_Y. | |||
| E3F7 | LD A,($D54B) | C=*D54B-01. | |||
| E3FA | DEC A | ||||
| E3FB | LD C,A | ||||
| E3FC | LD ($E3EC),A | Write C to *Cursor_AttributePosition_X. | |||
| E3FF | CALL Calculate_ScreenBlockAddress | Call Calculate_ScreenBlockAddress. | |||
| E402 | CALL Calculate_AttributeAddress | Call Calculate_AttributeAddress. | |||
| E405 | LD ($E3ED),DE | Write the calculated attribute buffer address to *Cursor_AttributePointer. | |||
| E409 | LD B,$04 | B=04. | |||
| E40B | LD HL,$E3DB | HL=SavedAttributesBlock. | |||
| E40E | EX DE,HL | Exchange the DE and HL registers. | |||
| Draw_Cursor_0 | E40F | PUSH BC | Stash BC on the stack. | ||
| E410 | LD BC,$0004 | Copy 0004 bytes from *HL to *DE. | |||
| E413 | LDIR | ||||
| E415 | LD BC,$001C | HL+=001C. | |||
| E418 | ADD HL,BC | ||||
| E419 | POP BC | Restore BC from the stack. | |||
| E41A | 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.
|
|||||
| E41C | LD HL,$E4BA | Copy 0004 bytes from CursorAttributes to *Cursor_AttributePointer. | |||
| E41F | LD DE,($E3ED) | ||||
| E423 | LD BC,$0004 | ||||
| E426 | LDIR | ||||
|
Paint the middle section of the cursor.
|
|||||
| E428 | LD B,$02 | B=02. | |||
| Draw_Cursor_Loop | E42A | PUSH BC | Stash BC on the stack. | ||
| E42B | EX DE,HL | Exchange the DE and HL registers. | |||
| E42C | LD BC,$001C | HL+=001C. | |||
| E42F | ADD HL,BC | ||||
| E430 | EX DE,HL | Exchange the DE and HL registers. | |||
| E431 | LD A,(HL) | Write *HL to *DE. | |||
| E432 | LD (DE),A | ||||
| E433 | INC HL | Increment HL by one. | |||
| E434 | INC DE | Increment DE by three. | |||
| E435 | INC DE | ||||
| E436 | INC DE | ||||
| E437 | LD A,(HL) | Write *HL to *DE. | |||
| E438 | LD (DE),A | ||||
| E439 | INC HL | Increment HL by one. | |||
| E43A | INC DE | Increment DE by one. | |||
| E43B | POP BC | Restore BC from the stack. | |||
| E43C | DJNZ Draw_Cursor_Loop | Decrease counter by one and loop back to Draw_Cursor_Loop until counter is zero. | |||
| E43E | EX DE,HL | Exchange the DE and HL registers. | |||
| E43F | LD BC,$001C | HL+=001C. | |||
| E442 | ADD HL,BC | ||||
| E443 | EX DE,HL | Exchange the DE and HL registers. | |||
|
Paint the bottom section of the cursor.
|
|||||
| E444 | LD BC,$0004 | Copy 0004 bytes from *HL to *DE. | |||
| E447 | LDIR | ||||
| E449 | RET | Return. | |||
| Prev: E3ED | Up: Map | Next: E44A |