Prev: B591 Up: Map Next: B6BB
B64C: Routine at B64C
Used by the routines at B4B8 and B591.
B64C PUSH IX Stash IX on the stack.
B64E LD IX,($C277) IX=*C277.
B652 RES 1,(IX+$21) Reset bit 1 of *IX+21.
B656 RES 1,(IX+$2D) Reset bit 1 of *IX+2D.
B65A SET 3,(IX+$21) Set bit 3 of *IX+21.
B65E SET 3,(IX+$2D) Set bit 3 of *IX+2D.
B662 ADD IX,DE IX+=DE.
B664 LD ($C277),IX Write IX to *C277.
B668 BIT 5,(IX+$21) Test bit 5 of *IX+21.
B66C LD L,$28 L=28.
B66E JR NZ,$B677 Jump to B677 if bit 5 is set.
B670 LD DE,$000C DE=000C.
B673 ADD IX,DE IX+=DE.
B675 LD L,$D8 L=D8.
B677 LD A,(IX+$20) A=*IX+20.
B67A LD C,A C=A.
B67B RRCA RRCA.
B67C RR L Rotate L right.
B67E RRCA RRCA.
B67F RR L Rotate L right.
B681 RRCA RRCA.
B682 RR L Rotate L right.
B684 OR %01100000 Set bits 5-6.
B686 LD IX,$C356 IX=C356.
B68A LD (IX+$10),L Write L to *IX+10.
B68D LD (IX+$11),A Write A to *IX+11.
B690 LD (IX+$13),$00 Write 13 to *IX+13.
B694 LD A,$1F A=1F.
B696 AND C Merge the bits from C.
B697 NEG NEG.
B699 ADD A,$15 A+=15.
B69B LD (IX+$07),A Write A to *IX+07.
B69E LD ($B918),A Write A to *B918.
B6A1 LD C,$22 C=22.
B6A3 LD A,$05 A=05.
B6A5 BIT 4,L Jump to B6AD if bit 4 of L is not set.
B6A7 JR Z,$B6AD
B6A9 LD C,$02 C=02.
B6AB LD A,$1A A=1A.
B6AD LD (IX+$17),C Write C to *IX+17.
B6B0 LD ($B917),A Write A to *B917.
B6B3 POP IX Restore IX from the stack.
B6B5 LD HL,$C389 HL=C389.
B6B8 RES 0,(HL) Reset bit 0 of *HL.
B6BA RET Return.
Prev: B591 Up: Map Next: B6BB