bm_Depth equ $5 _LVOWaitBlit equ -$E4 _LVOClipBlit equ -$228 bm_Planes equ $8 rp_BitMap equ $4 ************************************************************************ movem.l d0-d7/a0-a5,-(sp) move.l rp_BitMap(a1),a3 moveq #0,d1 move.b bm_Depth(a3),d1 lsl.w #2,d1 lea bm_Planes(a3),a0 ext.l d2 ;width add.w #15,d2 and.w #$FFF0,d2 move.l d2,d4 next_16_bytes move.l d4,d3 sub.l d2,d3 lea $10(a2,d3.l),a3 lsr.l #3,d3 move.l (a3),d6 ; what do you think move.l 4(a3),d7 ; these are for? :-) move.l 8(a3),a4 ; they were meant to backup move.l 12(a3),a5 ; the data... moveq #0,d0 next_plane move.l 0(a0,d0.w),a1 lea 0(a1,d3.l),a1 moveq #0,d5 move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) move.b -(a3),d5 ror.l #1,d5 move.b d5,(a3) lea $10(a3),a3 swap d5 move.w d5,(a1)+ addq.b #4,d0 cmp.b d0,d1 bgt.s next_plane move.l d6,(a3) ; ...and these to restore move.l d7,4(a3) ; them. Unfortunately, move.l a4,8(a3) ; someone made a mistake. move.l a5,12(a3) subq.l #8,d2 subq.l #8,d2 bgt next_16_bytes moveq #0,d0 moveq #0,d1 movem.l (sp),d2-d4 moveq #1,d5 moveq #3,d6 rol.l #6,d6 movem.l $20(sp),a0/a1 exg a0,a1 jsr _LVOClipBlit(a6) jsr _LVOWaitBlit(a6) movem.l (sp)+,d0-d7/a0-a5 move.l d2,d0 rts end