************ * Program COPY (6811) * * Copies NUMBYTES from location starting at SOURCE to * location starting at DEST. * * In this example, 0080H bytes from addresses C000 - C07F * are copied to locations C080 - CFFF. * * Peter H. Anderson, MSU, 16 Jan 90, Checked 16 Jan 90, 9 Oct 90; 15 Jan 93 ************ PSCT EQU $C000 IDSCT EQU $D000 DSCT EQU $D300 STACKTP EQU $0045 REG_BASE EQU $1000 ORG PSCT LDS #STACKTP LDX SOURCE * pointer to source LDY DEST * pointer to dest LDD NUMBYTES STD BYTESLEFT TEST_0: TST BYTESLEFT+1 * is low byte == 0 BNE NONZERO TST BYTESLEFT * is hi byte also zero BEQ DONE * both bytes must be zero NONZERO: LDAA 00,X * get from source STAA 00,Y * save in dest LDD BYTESLEFT * decrement bytes left XGDX * done using x reg DEX XGDX STD BYTESLEFT AROUND: INX * next source INY * next dest BRA TEST_0 DONE: SWI ORG IDSCT SOURCE FDB $C000 DEST FDB $C800 NUMBYTES FDB $0080 ORG DSCT BYTESLEFT RMB 2