.define Blm, Blmnp .sect .text .sect .rom .sect .data .sect .bss .sect .text ! This subroutine copies bytes from one place in memory to ! another. The source address is in registerpair AX and is stored ! in zeropage locations ADDR and ADDR+1. ! The destination address is popped from the stack and stored in ! zeropage locations ADDR+2 and ADDR+3. ! The number of bytes to be copied is in register Y (lowbyte) and ! zeropage location NBYTES+1 (highbyte). ! The subroutine Blmnp is used when the source and destination ! addresses are already in zeropage. Blm: stx ADDR+2 ! source address (lowbyte) sta ADDR+3 ! source address (highbyte) jsr Pop stx ADDR ! destination address (lowbyte) sta ADDR+1 ! destination address (highbyte) Blmnp: ldx NBYTES+1 1: dey lda (ADDR),y ! get source byte sta (ADDR+2),y ! copy to destination tya bne 1b dec ADDR+1 ! 256 bytes copied dec ADDR+3 ! decrement source and destination address ldy #0 dex bne 1b ! do it n times rts