; ; bcopy(p1, p2, nbytes) ; .globl _bcopy _bcopy: jsr popax ; get nbytes sta tmp1 stx tmp1+1 jsr popax ; p2 sta ptr2 stx ptr2+1 jsr popax ; p1 sta ptr1 stx ptr1+1 bc1: lda tmp1+1 ; nbytes^ beq bc3 ldy #0 ; set up to move 256 bc2: lda (ptr1),y ; get a byte sta (ptr2),y ; store it iny bne bc2 inc ptr1+1 ; bump ptrs inc ptr2+1 dec tmp1+1 jmp bc1 ; do another block bc3: ldy #0 ; set up for last section of < 256 bc4: cpy tmp1 ; done yet? beq bc5 ; yup, exit lda (ptr1),y ; get a byte sta (ptr2),y ; store it iny bne bc4 bc5: rts ; done! ;