Routines |
Prev: 57706 | Up: Map | Next: 57817 |
Used by the routine at 57817.
|
||||
57761 | CALL CalculateScreenAddress | Call CalculateScreenAddress. | ||
57764 | PUSH DE | Stash DE on the stack. | ||
57765 | LD A,D | A=D. | ||
57766 | RRCA | RRCA. | ||
57767 | RRCA | |||
57768 | RRCA | |||
57769 | AND %00000011 | Keep only bits 0-1. | ||
57771 | OR %01011000 | Set bits 3-4, 6. | ||
57773 | LD D,A | D=A. | ||
57774 | LD BC,(57758) | BC=*57758. | ||
57778 | LD A,(DE) | A=*DE. | ||
57779 | XOR C | Flip the bits according to C. | ||
57780 | AND B | Merge the bits from B. | ||
57781 | XOR C | Flip the bits according to C. | ||
57782 | LD (DE),A | Write A to *DE. | ||
57783 | POP DE | Restore DE from the stack. | ||
57784 | LD A,H | A=H. | ||
57785 | AND %00000111 | Keep only bits 0-2. | ||
57787 | LD B,A | B=A. | ||
57788 | INC B | Increment B by one. | ||
57789 | LD A,254 | A=254. | ||
57791 | RRCA | RRCA. | ||
57792 | DJNZ 57791 | Decrease counter by one and loop back to 57791 until counter is zero. | ||
57794 | LD B,A | B=A. | ||
57795 | LD A,(57760) | C=*57760. | ||
57798 | LD C,A | |||
57799 | LD A,(DE) | A=*DE. | ||
57800 | BIT 1,C | Jump to 57805 if bit 1 of C is set. | ||
57802 | JR NZ,57805 | |||
57804 | AND B | Merge the bits from B. | ||
57805 | BIT 3,C | Jump to 57811 if bit 3 of C is set. | ||
57807 | JR NZ,57811 | |||
57809 | XOR B | Flip the bits according to B. | ||
57810 | CPL | Invert the bits in A. | ||
57811 | LD (DE),A | Write A to *DE. | ||
57812 | RET | Return. | ||
57813 | DEFW 1 | |||
57815 | DEFW 1 |
Prev: 57706 | Up: Map | Next: 57817 |