;layers.library  LVO $ff82 -126  swapbitsrastportcliprect()
;SwapBitsRastPortClipRect(rp,cr)(a0/a1)
;graphics.library  LVO $ffe2 -30  bltbitmap()
;BltBitMap(srcBitMap,xSrc,ySrc,destBitMap,xDest,yDest,xSize,ySize,minterm,mask,tempA)(a0,d0/d1/a1,d2/d3/d4/d5/d6/d7/a2)

SwapBitsRastPortClipRect:       movem.l    d2-d7/A2-A4/A6,-(A7)
           movea.l    A0,A3
           movea.l    A1,A4
           movea.l    lb_GfxBase(A6),A6
;routine1
           move.w     cr_MinX(A4),D0
           ext.l      D0           ;xsrc=MinX
           move.w     cr_MinY(A4),D1
           ext.l      D1           ;ysrc=MinY
           move.l     d0,d2
           and.l      #$f,D2       ;xdest=(MinX & 0xf)
           move.l     d0,d3
           move.w     cr_MaxX(A4),D4
           ext.l      D4
           sub.l      D3,D4
           addq.l     #1,D4        ;xsize=MaxX-(MinX & 0xf)+1
           move.l     d1,d3
           move.w     cr_MaxY(A4),D5
           ext.l      D5
           sub.l      D3,D5
           addq.l     #1,D5       ;ysize=MaxY-MinY+1
           moveq.l    #$6a,D6
           movea.l    rp_BitMap(A3),A0 ;src=rastport
           movea.l    cr_BitMap(A4),A1 ;dest=cliprect
           moveq.l    #0,D3            ;ydest=0
           moveq.l    #-1,D7           ;mask=0xffff
           suba.l     A2,A2
            jsr        _LVOBltBitMap(A6)
;fine routine1
;routine2
           move.w     cr_MinX(A4),D0
           ext.l      D0
           move.l     d0,d1
           and.l      #$f,D0
           move.w     cr_MinY(A4),D2
           ext.l      D2
           move.l     d1,d3     ;
           move.w     cr_MaxX(A4),D4
           ext.l      D4
           sub.l      D3,D4
           addq.l     #1,D4
           move.l     d2,d3     ;MinY
           move.w     cr_MaxY(A4),D5
           ext.l      D5
           sub.l      D3,D5
           addq.l     #1,D5
           movea.l    cr_BitMap(A4),A0
           movea.l    rp_BitMap(A3),A1
           move.l     D1,D2
           moveq.l     #$6a,D6
           moveq.l    #0,D1
           moveq.l    #-1,D7
           suba.l     A2,A2
            jsr        _LVOBltBitMap(A6)
;fine routine2
;routine1
           move.w     cr_MinX(A4),D0
           ext.l      D0
           move.w     cr_MinY(A4),D1
           ext.l      D1
           move.l     d0,d2
           and.l      #$f,D2
           move.l     d0,d3
           move.w     cr_MaxX(A4),D4
           ext.l      D4
           sub.l      D3,D4
           addq.l     #1,D4
           move.l     d1,d3
           move.w     cr_MaxY(A4),D5
           ext.l      D5
           sub.l      D3,D5
           addq.l     #1,D5
           moveq.l    #$6a,D6
           movea.l    rp_BitMap(A3),A0
           movea.l    cr_BitMap(A4),A1
           moveq.l    #0,D3
           moveq.l    #-1,D7
           suba.l     A2,A2
            jsr        _LVOBltBitMap(A6)
;fine routine1
           movem.l    (A7)+,d2-d7/A2-A4/A6
          rtS

