************
* 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


