     section   text
; xlupe.asm

x:      move.l  4(sp),a0        ;src-adr
        move.w  8(sp),d0        ;width
        move.w  10(sp),d1       ;height
        move.l  12(sp),a1       ;dest-adr
        cmp.w   #400/8,d1
        bhi.s   error
        cmp.w   #640/8,d0
        bhi.s   error
        cmp.l   #$00ffffff,a0   
        bhi.s   error
        cmp.l   #$00ffffff,a1
        bhi.s   error

l0      move.l  a1,a2
        move.w  d0,d3
l1:     move.w  (a0)+,d6
        moveq   #15,d5
l2:     moveq   #0,d7
        add.w   d6,d6
        bcc.s   l3
        moveq   #$7f,d7
l3      move.b  d7,80(a1)
        move.b  d7,160(a1)
        move.b  d7,240(a1)
        move.b  d7,320(a1)
        move.b  d7,400(a1)
        move.b  d7,480(a1)
        clr.b   560(a1)
        move.b  d7,(a1)+
        subq.w  #1,d3
        dbeq    d5,l2
        bne.s   l1       ;next word
        lea     640(a2),a1
        dbra    d1,l0
        moveq   #0,d0
        rts
error   moveq   #-1,d0
        rts


     end


