Prev: B374 Up: Map Next: B3BE
B38C: Pixels Copier
Used by the routines at B591 and BCB7.
Input
HL Source pointer
DE Destination pointer
BC Width and height
Copier_Pixels B38C PUSH BC Stash BC, DE, HL and HL on the stack.
B38D PUSH DE
B38E PUSH HL
Copier_Pixels_0 B38F PUSH HL
B390 LD B,(HL) B=*HL.
B391 INC HL Increment HL by one.
B392 LD H,(HL) H=*HL.
B393 SET 7,H Set bit 7 of H.
B395 LD L,B L=B.
B396 LD B,$08 B=08.
Copier_Pixels_1 B398 LD A,(HL) A=*HL.
B399 LD (DE),A Write A to *DE.
B39A INC HL Increment HL by one.
B39B INC D Increment D by one.
B39C DJNZ Copier_Pixels_1 Decrease counter by one and loop back to Copier_Pixels_1 until counter is zero.
B39E DEC C Decrease C by one.
B39F JR Z,Copier_Pixels_3 Jump to Copier_Pixels_3 if {} is zero.
B3A1 LD A,E E+=20.
B3A2 ADD A,$20
B3A4 LD E,A
B3A5 JR C,Copier_Pixels_2 Jump to Copier_Pixels_2 if {} is lower.
B3A7 LD A,D D-=08.
B3A8 SUB $08
B3AA LD D,A
Copier_Pixels_2 B3AB POP HL Restore HL from the stack.
B3AC LD A,C A=C.
B3AD LD BC,$0040 BC=0040.
B3B0 ADD HL,BC HL+=BC.
B3B1 LD C,A C=A.
B3B2 JR Copier_Pixels_0 Jump to Copier_Pixels_0.
Copier_Pixels_3 B3B4 POP HL Restore HL, HL, DE and BC from the stack.
B3B5 POP HL
B3B6 POP DE
B3B7 POP BC
B3B8 INC E Increment E by one.
B3B9 INC L Increment L by two.
B3BA INC L
B3BB DJNZ Copier_Pixels Decrease counter by one and loop back to Copier_Pixels until counter is zero.
B3BD RET Return.
Prev: B374 Up: Map Next: B3BE