![]() |
Routines |
| Prev: 58349 | Up: Map | Next: 58442 |
|
|
|||||
|
|||||
| Draw_Cursor | 58351 | LD A,(54602) | B=*54602-1. | ||
| 58354 | DEC A | ||||
| 58355 | LD B,A | ||||
| 58356 | LD (58347),A | Write B to *Cursor_AttributePosition_Y. | |||
| 58359 | LD A,(54603) | C=*54603-1. | |||
| 58362 | DEC A | ||||
| 58363 | LD C,A | ||||
| 58364 | LD (58348),A | Write C to *Cursor_AttributePosition_X. | |||
| 58367 | CALL Calculate_ScreenBlockAddress | Call Calculate_ScreenBlockAddress. | |||
| 58370 | CALL Calculate_AttributeAddress | Call Calculate_AttributeAddress. | |||
| 58373 | LD (58349),DE | Write the calculated attribute buffer address to *Cursor_AttributePointer. | |||
| 58377 | LD B,4 | B=4. | |||
| 58379 | LD HL,58331 | HL=SavedAttributesBlock. | |||
| 58382 | EX DE,HL | Exchange the DE and HL registers. | |||
| Draw_Cursor_0 | 58383 | PUSH BC | Stash BC on the stack. | ||
| 58384 | LD BC,4 | Copy 0004 bytes from *HL to *DE. | |||
| 58387 | LDIR | ||||
| 58389 | LD BC,28 | HL+=0028. | |||
| 58392 | ADD HL,BC | ||||
| 58393 | POP BC | Restore BC from the stack. | |||
| 58394 | 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.
|
|||||
| 58396 | LD HL,58554 | Copy 0004 bytes from CursorAttributes to *Cursor_AttributePointer. | |||
| 58399 | LD DE,(58349) | ||||
| 58403 | LD BC,4 | ||||
| 58406 | LDIR | ||||
|
Paint the middle section of the cursor.
|
|||||
| 58408 | LD B,2 | B=2. | |||
| Draw_Cursor_Loop | 58410 | PUSH BC | Stash BC on the stack. | ||
| 58411 | EX DE,HL | Exchange the DE and HL registers. | |||
| 58412 | LD BC,28 | HL+=0028. | |||
| 58415 | ADD HL,BC | ||||
| 58416 | EX DE,HL | Exchange the DE and HL registers. | |||
| 58417 | LD A,(HL) | Write *HL to *DE. | |||
| 58418 | LD (DE),A | ||||
| 58419 | INC HL | Increment HL by one. | |||
| 58420 | INC DE | Increment DE by three. | |||
| 58421 | INC DE | ||||
| 58422 | INC DE | ||||
| 58423 | LD A,(HL) | Write *HL to *DE. | |||
| 58424 | LD (DE),A | ||||
| 58425 | INC HL | Increment HL by one. | |||
| 58426 | INC DE | Increment DE by one. | |||
| 58427 | POP BC | Restore BC from the stack. | |||
| 58428 | DJNZ Draw_Cursor_Loop | Decrease counter by one and loop back to Draw_Cursor_Loop until counter is zero. | |||
| 58430 | EX DE,HL | Exchange the DE and HL registers. | |||
| 58431 | LD BC,28 | HL+=0028. | |||
| 58434 | ADD HL,BC | ||||
| 58435 | EX DE,HL | Exchange the DE and HL registers. | |||
|
Paint the bottom section of the cursor.
|
|||||
| 58436 | LD BC,4 | Copy 0004 bytes from *HL to *DE. | |||
| 58439 | LDIR | ||||
| 58441 | RET | Return. | |||
| Prev: 58349 | Up: Map | Next: 58442 |