//-------------------------------------------------------------------
// move
//-------------------------------------------------------------------
.extern		ewf

.text
ii_move_lset:.macro
//-------------------------------------------------------------------------
// 0x1000 move.b
//-------------------------------------------------------------------------
// move.x	d16(ax),xxx.w 1=size 2=adress register 
	ii_lset_opeau	11,e
// move.x   d16(ax),xxx.l
	ii_lset_opeau	13,e
// move.x	d16(pc),xxx.w
	ii_lset	0x11fa
// move.x	d16(pc),xxx.l
	ii_lset	0x13fa
// move.x	xxx.w,d16(ax)
	ii_lset_dxu	1,78
// move.x	xxx.l,d16(ax)
	ii_lset_dxu	1,79
// move.x	#xx,d16(ax)
	ii_lset_dxu	1,7c
// move.x	xxx.w,xxx.w; 1=size 2=size source adr 3=size dest adr 4=code
	ii_lset	0x11f8
// move.x	xxx.l,xxx.w
	ii_lset	0x11f9
// move.x	xxx.w,xxx.l
	ii_lset	0x13f8
// move.x	xxx.l,xxx.l
	ii_lset	0x13f9
// move.x	#xx,xxx.w 	//1=size 2=size dest adr 3=code
	ii_lset	0x11fc
// move.x	#xx,xxx.l 	//1=size 2=size dest adr 3=code
	ii_lset	0x13fc
//---------------------------------------------------------------------
// move.x	ea,d8(ax,dy) -------------------------------------------
//---------------------------------------------------------------------
// move.x	dx,d8(a0-a7,dy)
	ii_lset_opeag	11,8
	ii_lset_opeag	13,8
	ii_lset_opeag	15,8
	ii_lset_opeag	17,8
	ii_lset_opeag	19,8
	ii_lset_opeag	1b,8
	ii_lset_opeag	1d,8
	ii_lset_opeag	1f,8
// move.x	(ax),d8(a0-a7,dy)
// move.x	(ax)+,d8(a0-a7,dy)
	ii_lset_opea	11,9
	ii_lset_opea	13,9
	ii_lset_opea	15,9
	ii_lset_opea	17,9
	ii_lset_opea	19,9
	ii_lset_opea	1b,9
	ii_lset_opea	1d,9
	ii_lset_opea	1f,9
// move.x	-(ax),d8(a0-a7,dy)
	ii_lset_opeag	11,a
	ii_lset_opeag	13,a
	ii_lset_opeag	15,a
	ii_lset_opeag	17,a
	ii_lset_opeag	19,a
	ii_lset_opeag	1b,a
	ii_lset_opeag	1d,a
	ii_lset_opeag	1f,a
//---------------------------------------------------------------------
// move.x	ea,d8(pc,dy) -------------------------------------------
//---------------------------------------------------------------------
// move.x	dx,d8(pc,dy)
	ii_lset_opeag	17,c
// move.x	(ax),d8(pc,dy)
// move.x	(ax)+,d8(pc,dy)
	ii_lset_opea	17,d
// move.x	-(ax),d8(pc,dy)
	ii_lset_opeag	17,e
//---------------------------------------------------------------------
// move.x	d8(ax,dy),ea --------------------------------------------
//---------------------------------------------------------------------
// move.x	d8(ax,dy),d0-d7
	ii_lset_opeag	10,3
	ii_lset_opeag	12,3
	ii_lset_opeag	14,3
	ii_lset_opeag	16,3
	ii_lset_opeag	18,3
	ii_lset_opeag	1a,3
	ii_lset_opeag	1c,3
	ii_lset_opeag	1e,3
// move.x	d8(ax,dy),a0-a7
	ii_lset_opeag	10,7
	ii_lset_opeag	12,7
	ii_lset_opeag	14,7
	ii_lset_opeag	16,7
	ii_lset_opeag	18,7
	ii_lset_opeag	1a,7
	ii_lset_opeag	1c,7
	ii_lset_opeag	1e,7
// move.x	d8(ax,dy),(a0)-(a7)
	ii_lset_opeag	10,b
	ii_lset_opeag	12,b
	ii_lset_opeag	14,b
	ii_lset_opeag	16,b
	ii_lset_opeag	18,b
	ii_lset_opeag	1a,b
	ii_lset_opeag	1c,b
	ii_lset_opeag	1e,b
// move.x	d8(ax,dy),(a0)+-(a7)+
	ii_lset_opeag	10,f
	ii_lset_opeag	12,f
	ii_lset_opeag	14,f
	ii_lset_opeag	16,f
	ii_lset_opeag	18,f
	ii_lset_opeag	1a,f
	ii_lset_opeag	1c,f
	ii_lset_opeag	1e,f
// move.x	d8(ax,dy),-(a0) bis -(a7)
	ii_lset_opeag	11,3
	ii_lset_opeag	13,3
	ii_lset_opeag	15,3
	ii_lset_opeag	17,3
	ii_lset_opeag	19,3
	ii_lset_opeag	1b,3
	ii_lset_opeag	1d,3
	ii_lset_opeag	1f,3
//---------------------------------------------------------------------
// move.x	d8(pc,dy),ea --------------------------------------------
//---------------------------------------------------------------------
// move.x	d8(pc,dy),d0-d7
	ii_lset_dxg		1,3b
// move.x	d8(pc,dy),a0-a7
	ii_lset_dxg		1,7b
// move.x	d8(pc,dy),(a0-a7)
	ii_lset_dxg		1,bb
// move.x	d8(pc,dy),(a0-a7)+
	ii_lset_dxg		1,fb
// move.x	d8(pc,dy),(a0-a7)+
	ii_lset_dxu		1,3b
//-------------------------------------------------------------------------
// 0x2000 move.l
//-------------------------------------------------------------------------
// move.x	d16(ax),xxx.w 1=size 2=adress register 
	ii_lset_opeau	21,e
// move.x   d16(ax),xxx.l
	ii_lset_opeau	23,e
// move.x	d16(pc),xxx.w
	ii_lset	0x21fa
// move.x	d16(pc),xxx.l
	ii_lset	0x23fa
// move.x	xxx.w,d16(ax)
	ii_lset_dxu	2,78
// move.x	xxx.l,d16(ax)
	ii_lset_dxu	2,79
// move.x	#xx,d16(ax)
	ii_lset_dxu	2,7c
// move.x	xxx.w,xxx.w; 1=size 2=size source adr 3=size dest adr 4=code
	ii_lset	0x21f8
// move.x	xxx.l,xxx.w
	ii_lset	0x21f9
// move.x	xxx.w,xxx.l
	ii_lset	0x23f8
// move.x	xxx.l,xxx.l
	ii_lset	0x23f9
// move.x	#xx,xxx.w 	//1=size 2=size dest adr 3=code
	ii_lset	0x21fc
// move.x	#xx,xxx.l 	//1=size 2=size dest adr 3=code
	ii_lset	0x23fc
// move.x	ea,d8(ax,dy) -------------------------------------------
// move.x	dx,d8(a0-a7,dy)
	ii_lset_opeag	21,8
	ii_lset_opeag	23,8
	ii_lset_opeag	25,8
	ii_lset_opeag	27,8
	ii_lset_opeag	29,8
	ii_lset_opeag	2b,8
	ii_lset_opeag	2d,8
	ii_lset_opeag	2f,8
// move.x	(ax),d8(a0-a7,dy)
// move.x	(ax)+,d8(a0-a7,dy)
	ii_lset_opea	21,9
	ii_lset_opea	23,9
	ii_lset_opea	25,9
	ii_lset_opea	27,9
	ii_lset_opea	29,9
	ii_lset_opea	2b,9
	ii_lset_opea	2d,9
	ii_lset_opea	2f,9
// move.x	-(ax),d8(a0-a7,dy)
	ii_lset_opeag	21,a
	ii_lset_opeag	23,a
	ii_lset_opeag	25,a
	ii_lset_opeag	27,a
	ii_lset_opeag	29,a
	ii_lset_opeag	2b,a
	ii_lset_opeag	2d,a
	ii_lset_opeag	2f,a
//---------------------------------------------------------------------
// move.x	ea,d8(pc,dy) -------------------------------------------
//---------------------------------------------------------------------
// move.x	dx,d8(pc,dy)
// move.x	ax,d8(pc,dy)
	ii_lset_opea	27,c
// move.x	(ax),d8(pc,dy)
// move.x	(ax)+,d8(pc,dy)
	ii_lset_opea	27,d
// move.x	-(ax),d8(pc,dy)
	ii_lset_opeag	27,e
//---------------------------------------------------------------------
// move.x	d8(ax,dy),ea --------------------------------------------
//---------------------------------------------------------------------
// move.x	d8(ax,dy),d0-d7
	ii_lset_opeag	20,3
	ii_lset_opeag	22,3
	ii_lset_opeag	24,3
	ii_lset_opeag	26,3
	ii_lset_opeag	28,3
	ii_lset_opeag	2a,3
	ii_lset_opeag	2c,3
	ii_lset_opeag	2e,3
// move.x	d8(ax,dy),a0-a7
	ii_lset_opeag	20,7
	ii_lset_opeag	22,7
	ii_lset_opeag	24,7
	ii_lset_opeag	26,7
	ii_lset_opeag	28,7
	ii_lset_opeag	2a,7
	ii_lset_opeag	2c,7
	ii_lset_opeag	2e,7
// move.x	d8(ax,dy),(a0)-(a7)
	ii_lset_opeag	20,b
	ii_lset_opeag	22,b
	ii_lset_opeag	24,b
	ii_lset_opeag	26,b
	ii_lset_opeag	28,b
	ii_lset_opeag	2a,b
	ii_lset_opeag	2c,b
	ii_lset_opeag	2e,b
// move.x	d8(ax,dy),(a0)+-(a7)+
	ii_lset_opeag	20,f
	ii_lset_opeag	22,f
	ii_lset_opeag	24,f
	ii_lset_opeag	26,f
	ii_lset_opeag	28,f
	ii_lset_opeag	2a,f
	ii_lset_opeag	2c,f
	ii_lset_opeag	2e,f
// move.x	d8(ax,dy),-(a0) bis -(a7)
	ii_lset_opeag	21,3
	ii_lset_opeag	23,3
	ii_lset_opeag	25,3
	ii_lset_opeag	27,3
	ii_lset_opeag	29,3
	ii_lset_opeag	2b,3
	ii_lset_opeag	2d,3
	ii_lset_opeag	2f,3
//---------------------------------------------------------------------
// move.x	d8(pc,dy),ea --------------------------------------------
//---------------------------------------------------------------------
// move.x	d8(pc,dy),d0-d7
	ii_lset_dxg		2,3b
// move.x	d8(pc,dy),a0-a7
	ii_lset_dxg		2,7b
// move.x	d8(pc,dy),(a0-a7)
	ii_lset_dxg		2,bb
// move.x	d8(pc,dy),(a0-a7)+
	ii_lset_dxg		2,fb
// move.x	d8(pc,dy),(a0-a7)+
	ii_lset_dxu		2,3b
//-------------------------------------------------------------------------
// 0x3000 move.w
///-------------------------------------------------------------------------
// move.x	d16(ax),xxx.w 1=size 2=adress register 
	ii_lset_opeau	31,e
// move.x   d16(ax),xxx.l
	ii_lset_opeau	33,e
// move.x	d16(pc),xxx.w
	ii_lset	0x31fa
// move.x	d16(pc),xxx.l
	ii_lset	0x33fa
// move.x	xxx.w,d16(ax)
	ii_lset_dxu	3,78
// move.x	xxx.l,d16(ax)
	ii_lset_dxu	3,79
// move.x	#xx,d16(ax)
	ii_lset_dxu	3,7c
// move.x	xxx.w,xxx.w; 1=size 2=size source adr 3=size dest adr 4=code
	ii_lset	0x31f8
// move.x	xxx.l,xxx.w
	ii_lset	0x31f9
// move.x	xxx.w,xxx.l
	ii_lset	0x33f8
// move.x	xxx.l,xxx.l
	ii_lset	0x33f9
// move.x	#xx,xxx.w 	//1=size 2=size dest adr 3=code
	ii_lset	0x31fc
// move.x	#xx,xxx.l 	//1=size 2=size dest adr 3=code
	ii_lset	0x33fc
// move.x	ea,d8(ax,dy) -------------------------------------------
// move.x	dx,d8(a0-a7,dy)
	ii_lset_opeag	31,8
	ii_lset_opeag	33,8
	ii_lset_opeag	35,8
	ii_lset_opeag	37,8
	ii_lset_opeag	39,8
	ii_lset_opeag	3b,8
	ii_lset_opeag	3d,8
	ii_lset_opeag	3f,8
// move.x	(ax),d8(a0-a7,dy)
// move.x	(ax)+,d8(a0-a7,dy)
	ii_lset_opea	31,9
	ii_lset_opea	33,9
	ii_lset_opea	35,9
	ii_lset_opea	37,9
	ii_lset_opea	39,9
	ii_lset_opea	3b,9
	ii_lset_opea	3d,9
	ii_lset_opea	3f,9
// move.x	-(ax),d8(a0-a7,dy)
	ii_lset_opeag	31,a
	ii_lset_opeag	33,a
	ii_lset_opeag	35,a
	ii_lset_opeag	37,a
	ii_lset_opeag	39,a
	ii_lset_opeag	3b,a
	ii_lset_opeag	3d,a
	ii_lset_opeag	3f,a
//---------------------------------------------------------------------
// move.x	ea,d8(pc,dy) -------------------------------------------
//---------------------------------------------------------------------
// move.x	dx,d8(pc,dy)
// move.x	ax,d8(pc,dy)
	ii_lset_opea	37,c
// move.x	(ax),d8(pc,dy)
// move.x	(ax)+,d8(pc,dy)
	ii_lset_opea	37,d
// move.x	-(ax),d8(pc,dy)
	ii_lset_opeag	37,e
//---------------------------------------------------------------------
// move.x	d8(ax,dy),ea --------------------------------------------
//---------------------------------------------------------------------
// move.x	d8(ax,dy),d0-d7
	ii_lset_opeag	30,3
	ii_lset_opeag	32,3
	ii_lset_opeag	34,3
	ii_lset_opeag	36,3
	ii_lset_opeag	38,3
	ii_lset_opeag	3a,3
	ii_lset_opeag	3c,3
	ii_lset_opeag	3e,3
// move.x	d8(ax,dy),a0-a7
	ii_lset_opeag	30,7
	ii_lset_opeag	32,7
	ii_lset_opeag	34,7
	ii_lset_opeag	36,7
	ii_lset_opeag	38,7
	ii_lset_opeag	3a,7
	ii_lset_opeag	3c,7
	ii_lset_opeag	3e,7
// move.x	d8(ax,dy),(a0)-(a7)
	ii_lset_opeag	30,b
	ii_lset_opeag	32,b
	ii_lset_opeag	34,b
	ii_lset_opeag	36,b
	ii_lset_opeag	38,b
	ii_lset_opeag	3a,b
	ii_lset_opeag	3c,b
	ii_lset_opeag	3e,b
// move.x	d8(ax,dy),(a0)+-(a7)+
	ii_lset_opeag	30,f
	ii_lset_opeag	32,f
	ii_lset_opeag	34,f
	ii_lset_opeag	36,f
	ii_lset_opeag	38,f
	ii_lset_opeag	3a,f
	ii_lset_opeag	3c,f
	ii_lset_opeag	3e,f
// move.x	d8(ax,dy),-(a0) bis -(a7)
	ii_lset_opeag	31,3
	ii_lset_opeag	33,3
	ii_lset_opeag	35,3
	ii_lset_opeag	37,3
	ii_lset_opeag	39,3
	ii_lset_opeag	3b,3
	ii_lset_opeag	3d,3
	ii_lset_opeag	3f,3
//---------------------------------------------------------------------
// move.x	d8(pc,dy),ea --------------------------------------------
//---------------------------------------------------------------------
// move.x	d8(pc,dy),d0-d7
	ii_lset_dxg		3,3b
// move.x	d8(pc,dy),a0-a7
	ii_lset_dxg		3,7b
// move.x	d8(pc,dy),(a0-a7)
	ii_lset_dxg		3,bb
// move.x	d8(pc,dy),(a0-a7)+
	ii_lset_dxg		3,fb
// move.x	d8(pc,dy),(a0-a7)+
	ii_lset_dxu		3,3b
.endm
//---------------------------------------------------------------------------------------------
// function
//---------------------------------------------------------------------------------------------
ii_move_op:.macro
// move.x	d16(ax),xxx.w 1=size 2=adress register 
	ii_move_d16ax_xxx	1e8,a0_off(a7),w
	ii_move_d16ax_xxx	1e9,a1_off(a7),w
	ii_move_d16ax_xxx	1ea,a2,w
	ii_move_d16ax_xxx	1eb,a3,w
	ii_move_d16ax_xxx	1ec,a4,w
	ii_move_d16ax_xxx	1ed,a5,w
	ii_move_d16ax_xxx	1ee,a6,w
	ii_move_d16ax_xxx	1ef,usp,w
// move.x   d16(ax),xxx.l
	ii_move_d16ax_xxx	3e8,a0_off(a7),l
	ii_move_d16ax_xxx	3e9,a1_off(a7),l
	ii_move_d16ax_xxx	3ea,a2,l
	ii_move_d16ax_xxx	3eb,a3,l
	ii_move_d16ax_xxx	3ec,a4,l
	ii_move_d16ax_xxx	3ed,a5,l
	ii_move_d16ax_xxx	3ee,a6,l
	ii_move_d16ax_xxx	3ef,usp,l
// move.x	d16(pc),xxx.w
	ii_move_d16ax_xxx	1fa,a0,w
// move.x	d16(pc),xxx.l
	ii_move_d16ax_xxx	3fa,a0,l
// move.x	xxx.w,d16(ax)
// move.x	xxx.l,d16(ax)
// move.x	#xx,d16(ax)
	ii_move_xxx_d16ax	1,a0_off(a7)
	ii_move_xxx_d16ax	3,a1_off(a7)
	ii_move_xxx_d16ax	5,a2
	ii_move_xxx_d16ax	7,a3
	ii_move_xxx_d16ax	9,a4
	ii_move_xxx_d16ax	b,a5
	ii_move_xxx_d16ax	d,a6
	ii_move_xxx_d16ax	f,usp
// move.x	xxx.w,xxx.w; 1=size 2=size source adr 3=size dest adr 4=code
	ii_move_xxx_xxx		b,w,w,11f8
	ii_move_xxx_xxx		l,w,w,21f8
	ii_move_xxx_xxx		w,w,w,31f8
// move.x	xxx.l,xxx.w
	ii_move_xxx_xxx		b,l,w,11f9
	ii_move_xxx_xxx		l,l,w,21f9
	ii_move_xxx_xxx		w,l,w,31f9
// move.x	xxx.w,xxx.l
	ii_move_xxx_xxx		b,w,l,13f8
	ii_move_xxx_xxx		l,w,l,23f8
	ii_move_xxx_xxx		w,w,l,33f8
// move.x	xxx.l,xxx.l
	ii_move_xxx_xxx		b,l,l,13f9
	ii_move_xxx_xxx		l,l,l,23f9
	ii_move_xxx_xxx		w,l,l,33f9
// move.x	#xx,xxx.w 	//1=size 2=size dest adr 3=code
	ii_move_im_xxx		b,w,11fc
	ii_move_im_xxx		l,w,21fc
	ii_move_im_xxx		w,w,31fc
// move.x	#xx,xxx.l 	//1=size 2=size dest adr 3=code
	ii_move_im_xxx		b,l,13fc
	ii_move_im_xxx		l,l,23fc
	ii_move_im_xxx		w,l,33fc
//---------------------------------------------------------------------
// move.x	ea,d8(ax,dy) -------------------------------------------
//---------------------------------------------------------------------
// move.x	dx,d8(ax/pc,dy)
	ii_move_dxxia	d0_off(a7),80,id,d,c0
	ii_move_dxxia	d1_off(a7),81,id,d,c1
	ii_move_dxxia	d2,82,d,d,c2
	ii_move_dxxia	d3,83,d,d,c3
	ii_move_dxxia	d4,84,d,d,c4
	ii_move_dxxia	d5,85,d,d,c5
	ii_move_dxxia	d6,86,d,d,c6
	ii_move_dxxia	d7,87,d,d,c7
// move.x	ax,d8(ax/pc,dy)
	ii_move_dxxia	a0_off(a7),88,id,d,c8
	ii_move_dxxia	a1_off(a7),89,id,d,c9
	ii_move_dxxia	a2,8a,d,da,ca
	ii_move_dxxia	a3,8b,d,da,cb
	ii_move_dxxia	a4,8c,d,da,cc
	ii_move_dxxia	a5,8d,d,da,cd
	ii_move_dxxia	a6,8e,d,da,ce
	ii_move_dxxia	a7,8f,a7,da,cf
// move.x	(ax),d8(ax/pc,dy)
	ii_move_dxxia	a0_off(a7),90,ia,d,d0
	ii_move_dxxia	a1_off(a7),91,ia,d,d1
	ii_move_dxxia	(a2),92,d,d,d2
	ii_move_dxxia	(a3),93,d,d,d3
	ii_move_dxxia	(a4),94,d,d,d4
	ii_move_dxxia	(a5),95,d,d,d5
	ii_move_dxxia	(a6),96,d,d,d6
	ii_move_dxxia	(a7),97,a7,d,d7
// move.x	(ax)+,d8(ax/pc,dy)
	ii_move_dxxia	a0_off(a7),98,iap,d,d8
	ii_move_dxxia	a1_off(a7),99,iap,d,d9
	ii_move_dxxia	(a2)+,9a,d,d,da
	ii_move_dxxia	(a3)+,9b,d,d,db
	ii_move_dxxia	(a4)+,9c,d,d,dc
	ii_move_dxxia	(a5)+,9d,d,d,dd
	ii_move_dxxia	(a6)+,9e,d,d,de
	ii_move_dxxia	(a7)+,9f,a7,d,df
// move.x	-(ax),d8(ax/pc,dy)
	ii_move_dxxia	a0_off(a7),a0,iam,d,e0
	ii_move_dxxia	a1_off(a7),a1,iam,d,e1
	ii_move_dxxia	-(a2),a2,d,d,e2
	ii_move_dxxia	-(a3),a3,d,d,e3
	ii_move_dxxia	-(a4),a4,d,d,e4
	ii_move_dxxia	-(a5),a5,d,d,e5
	ii_move_dxxia	-(a6),a6,d,d,e6
	ii_move_dxxia	-(a7),a7,a7,d,e7
//---------------------------------------------------------------------
// move.x	d8(ax/pc,dy),ea --------------------------------------------
//---------------------------------------------------------------------
// move.x	d8(ax/pc,dy),dz
	ii_move_d8_dest	d0,id,03,dx	
	ii_move_d8_dest	d1,id,23,dx	
	ii_move_d8_dest	d2,d,43,dx	
	ii_move_d8_dest	d3,d,63,dx	
	ii_move_d8_dest	d4,d,83,dx	
	ii_move_d8_dest	d5,d,a3,dx
	ii_move_d8_dest	d6,d,c3,dx
	ii_move_d8_dest	d7,d,e3,dx
// move.x	d8(ax/pc,dy),az
	ii_move_d8_dest	a0,id,07,ax	
	ii_move_d8_dest	a1,id,27,ax	
	ii_move_d8_dest	a2,d,47,ax	
	ii_move_d8_dest	a3,d,67,ax	
	ii_move_d8_dest	a4,d,87,ax	
	ii_move_d8_dest	a5,d,a7,ax	
	ii_move_d8_dest	a6,d,c7,ax	
	ii_move_d8_dest	usp,id,e7,ax	
// move.x	d8(ax/pc,dy),(az)
	ii_move_d8_dest	a0_off(a7),id,0b,ia	
	ii_move_d8_dest	a1_off(a7),id,2b,ia	
	ii_move_d8_dest	(a2),d,4b,ia	
	ii_move_d8_dest	(a3),d,6b,ia	
	ii_move_d8_dest	(a4),d,8b,ia	
	ii_move_d8_dest	(a5),d,ab,ia	
	ii_move_d8_dest	(a6),d,cb,ia	
	ii_move_d8_dest	usp,id,eb,ia	
// move.x	d8(ax/pc,dy),(az)+
	ii_move_d8_dest	a0_off(a7),id,0f,iap	
	ii_move_d8_dest	a1_off(a7),id,2f,iap	
	ii_move_d8_dest	(a2)+,d,4f,iap	
	ii_move_d8_dest	(a3)+,d,6f,iap	
	ii_move_d8_dest	(a4)+,d,8f,iap	
	ii_move_d8_dest	(a5)+,d,af,iap	
	ii_move_d8_dest	(a6)+,d,cf,iap	
	ii_move_d8_dest	usp,id,ef,iap	
// move.x	d8(ax/pc,dy),-(az)
	ii_move_d8_dest	a0_off(a7),id,13,iam	
	ii_move_d8_dest	a1_off(a7),id,33,iam	
	ii_move_d8_dest	-(a2),d,53,iam	
	ii_move_d8_dest	-(a3),d,73,iam	
	ii_move_d8_dest	-(a4),d,93,iam	
	ii_move_d8_dest	-(a5),d,b3,iam	
	ii_move_d8_dest	-(a6),d,d3,iam	
	ii_move_d8_dest	usp,id,f3,iam	
.endm //end function
//====================================================================
// subs ----------------------------------------------------------
//====================================================================
// move.x	d16(ax),xxx.w/l 1=code 2=adress register 3=dest adr size
ii_move_d16ax_xxx:.macro
ii_0x1\1:			//byt:
#ifdef	halten_move
	halt
#endif
	mvs.w	(a0)+,d0
	move.l	\2,a1
	add.l	d0,a1
	move.b	(a1),d0
	move.\3	(a0)+,a1
	move.b	d0,(a1)
	set_cc0
	ii_end
ii_0x2\1:			//long:
#ifdef	halten_move
	halt
#endif
	mvs.w	(a0)+,d0
	move.l	\2,a1
	add.l	d0,a1
	move.l	(a1),d0
	move.\3	(a0)+,a1
	move.l	d0,(a1)
	set_cc0
	ii_end
ii_0x3\1:			//word:
#ifdef	halten_move
	halt
#endif
	mvs.w	(a0)+,d0
	move.l	\2,a1
	add.l	d0,a1
	move.w	(a1),d0
	move.\3	(a0)+,a1
	move.w	d0,(a1)
	set_cc0
	ii_end
.endm
//----------------------------------------
// move.x	xxx.w,d16(ax)
// move.x	xxx.l,d16(ax)
// move.x	#xx,d16(ax)
ii_move_xxx_d16ax:.macro	//1=code 2=adress register
ii_0x1\178:			//byt xxx.w
#ifdef	halten_move
	halt
#endif
	move.w	(a0)+,a1
	move.b	(a1),d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.b	d0,(a1)
	set_cc0
	ii_end
ii_0x1\179:			//byt xxx.l
#ifdef	halten_move
	halt
#endif
	move.l	(a0)+,a1
	move.b	(a1),d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.b	d0,(a1)
	set_cc0
	ii_end
ii_0x1\17c:			//byt #x
#ifdef	halten_move
	halt
#endif
	mvs.b	(a0)+,d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.b	d0,(a1)
	set_cc0
	ii_end
ii_0x2\178:			//long xxx.w
#ifdef	halten_move
	halt
#endif
	move.w	(a0)+,a1
	move.l	(a1),d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.l	d0,(a1)
	set_cc0
	ii_end
ii_0x2\179:			//long xxx.l
#ifdef	halten_move
	halt
#endif
	move.l	(a0)+,a1
	move.l	(a1),d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.l	d0,(a1)
	set_cc0
	ii_end
ii_0x2\17c:			//long #x
#ifdef	halten_move
	halt
#endif
	move.l	(a0)+,d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.l	d0,(a1)
	set_cc0
	ii_end
	ii_end
ii_0x3\178:			//word xxx.w
#ifdef	halten_move
	halt
#endif
	move.w	(a0)+,a1
	move.w	(a1),d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.w	d0,(a1)
	set_cc0
	ii_end
ii_0x3\179:			//word xxx.l
#ifdef	halten_move
	halt
#endif
	move.l	(a0)+,a1
	move.w	(a1),d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.w	d0,(a1)
	set_cc0
	ii_end
ii_0x3\17c:			//word #x
#ifdef	halten_move
	halt
#endif
	move.w	(a0)+,d0
	move.l	\2,a1
	mvs.w	(a0)+,d1
	add.l	d1,a1
	move.w	d0,(a1)
	set_cc0
	ii_end
.endm
// move.x	xxx,xxx
ii_move_xxx_xxx:.macro	//1=size 2=size source adr 3=size dest adr 4=code
ii_0x\4:	
#ifdef	halten_move
	halt
#endif
	move.\2	(a0)+,a1
	move.\1	(a1),d0
	move.\3	(a0)+,d1
	move.\1	d0,(a1)
	set_cc0
	ii_end
.endm
// move.x	im,xxx
ii_move_im_xxx:.macro	//1=size 2=size dest adr 3=code
ii_0x\3:	
#ifdef	halten_move
	halt
#endif
.ifc	1,b
	move.w	(a0)+,d0
.else
	move.\1	(a0)+,d0
.endif
	move.\2	(a0)+,a1
	move.\1	d0,(a1)
	set_cc0
	ii_end
.endm
//---------------------------------------------------------------------
// move.x	ea,d8(ax,dy) -------------------------------------------
//---------------------------------------------------------------------
// ea=dx,ax,(ax),(ax)+,-(ax) 
//---------------------------------------------------------------------
ii_move_dxxia:.macro  //1=source 2=code 1.stelle 3=code 2 letzte Stellen 4=art 5=code d8(pc,dy)	
.ifc	\3,id 
	ii_move_dxxi	b,\1+3,1,\2,\3,\5
	ii_move_dxxi	w,\1+2,2,\2,\3,\5
	ii_move_dxxi	l,\1,3,\2,\3,\5
.else
	.ifc	\4,da 
		ii_move_dxxi	w,\1,2,\2,\3,\5
		ii_move_dxxi	l,\1,3,\2,\3,\5
	.else
 		ii_move_dxxi	b,\1,1,\2,\3,\5
		ii_move_dxxi	w,\1,2,\2,\3,\5
		ii_move_dxxi	l,\1,3,\2,\3,\5
	.endif
.endif
.endm 

ii_move_dxxi:.macro
ii_0x\31\4:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	a0_off(a7),a1
	move_end	\1,\2,\5
ii_0x\33\4:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	a1_off(a7),a1
	move_end	\1,\2,\5
ii_0x\35\4:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	a2,a1
	move_end	\1,\2,\5
ii_0x\37\4:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	a3,a1
	move_end	\1,\2,\5
ii_0x\39\4:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	a4,a1
	move_end	\1,\2,\5
ii_0x\3b\4:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	a5,a1
	move_end	\1,\2,\5
ii_0x\3d\4:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	a6,a1
	move_end	\1,\2,\5
ii_0x\3f\4:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	usp,a1
	move_end	\1,\2,\5
ii_0x\37\6:	//1=size 2=source 3=code 1.stelle 4=code 2 letzte Stellen
#ifdef	halten_move
	halt
#endif
	move.l	a0,a1
	move_end	\1,\2,\5
.endm
//------------------------------------
move_end:.macro
	jsr		ewf
.ifc	3,a7
	move.l	a7,d1		// a7 sichern
	move.l 	usp,a7		// a7 holen
.endif
.ifc	3,ia
	move.l	a2,d1		// a2 sichern
	move.l	\2,a2
	move.\2	(a2),(a1)
	move.l	d1,a2		// a2 zurück
.else
	.ifc	3,iap
		move.l	a2,d1		// a2 sichern
		move.l	\2,a2
		move.\2	(a2)+,(a1)
	.else
		.ifc	3,iam
			move.l	a2,d1		// a2 sichern
			move.l	\2,a2
			move.\2	-(a2),(a1)
		.else
			move.\1	\2,(a1)
		.endif
	.endif
.endif
.ifc	3,a7
	movea.l	a7,usp		// a7 zurück
	movea.l d1,a7		// a7 setzen
.endif
	set_cc0
.ifc	3,iap
	move.l	d1,a2		// a2 zurück
.endif
.ifc	3,iam
	move.l	d1,a2		// a2 zurück
.endif
	ii_end
.endm
//---------------------------------------------------------------------
// move.x 	ea,d8(pc,dy)
//---------------------------------------------------------------------

//---------------------------------------------------------------------
// move.x	d8(ax,dy),ea ---------------------------------------------
//---------------------------------------------------------------------
ii_move_d8_dest:.macro	//1=dest 2=art 3=code 2.+3.stelle 4=art adresse
//byt
ii_0x1\30:	
#ifdef	halten_move
	halt
#endif
			move.l	a0_off(a7),a1
			moveb_a1_src\4	\1,\2
ii_0x1\31:	
#ifdef	halten_move
	halt
#endif
			move.l	a1_off(a7),a1
			moveb_a1_src\4	\1,\2
ii_0x1\32:	
#ifdef	halten_move
	halt
#endif
			move.l	a2,a1
			moveb_a1_src\4	\1,\2
ii_0x1\33:	
#ifdef	halten_move
	halt
#endif
			move.l	a3,a1
			moveb_a1_src\4	\1,\2
ii_0x1\34:	
#ifdef	halten_move
	halt
#endif
			move.l	a4,a1
			moveb_a1_src\4	\1,\2
ii_0x1\35:	
#ifdef	halten_move
	halt
#endif
			move.l	a5,a1
			moveb_a1_src\4	\1,\2
ii_0x1\36:	
#ifdef	halten_move
	halt
#endif
			move.l	a6,a1
			moveb_a1_src\4	\1,\2
ii_0x1\37:	
#ifdef	halten_move
	halt
#endif
			move.l	usp,a1
			moveb_a1_src\4	\1,\2
ii_0x1\3b:	
#ifdef	halten_move
	halt
#endif
			move.l	a0,a1
			moveb_a1_src\4	\1,\2
//long
ii_0x2\30:	
#ifdef	halten_move
	halt
#endif
			move.l	a0_off(a7),a1
			movel_a1_src\4	\1,\2
ii_0x2\31:	
#ifdef	halten_move
	halt
#endif
			move.l	a1_off(a7),a1
			movel_a1_src\4	\1,\2
ii_0x2\32:	
#ifdef	halten_move
	halt
#endif
			move.l	a2,a1
			movel_a1_src\4	\1,\2
ii_0x2\33:	
#ifdef	halten_move
	halt
#endif
			move.l	a3,a1
			movel_a1_src\4	\1,\2
ii_0x2\34:	
#ifdef	halten_move
	halt
#endif
			move.l	a4,a1
			movel_a1_src\4	\1,\2
ii_0x2\35:	
#ifdef	halten_move
	halt
#endif
			move.l	a5,a1
			movel_a1_src\4	\1,\2
ii_0x2\36:	
#ifdef	halten_move
	halt
#endif
			move.l	a6,a1
			movel_a1_src\4	\1,\2
ii_0x2\37:	
#ifdef	halten_move
	halt
#endif
			move.l	usp,a1
			movel_a1_src\4	\1,\2
ii_0x2\3b:	
#ifdef	halten_move
	halt
#endif
			move.l	a0,a1
			moveb_a1_src\4	\1,\2
//word
ii_0x3\30:	
#ifdef	halten_move
	halt
#endif
			move.l	a0_off(a7),a1
			movew_a1_src\4	\1,\2
ii_0x3\31:	
#ifdef	halten_move
	halt
#endif
			move.l	a1_off(a7),a1
			movew_a1_src\4	\1,\2
ii_0x3\32:	
#ifdef	halten_move
	halt
#endif
			move.l	a2,a1
			movew_a1_src\4	\1,\2
ii_0x3\33:	
#ifdef	halten_move
	halt
#endif
			move.l	a3,a1
			movew_a1_src\4	\1,\2
ii_0x3\34:	
#ifdef	halten_move
	halt
#endif
			move.l	a4,a1
			movew_a1_src\4	\1,\2
ii_0x3\35:	
#ifdef	halten_move
	halt
#endif
			move.l	a5,a1
			movew_a1_src\4	\1,\2
ii_0x3\36:	
#ifdef	halten_move
	halt
#endif
			move.l	a6,a1
			movew_a1_src\4	\1,\2
ii_0x3\37:	
#ifdef	halten_move
	halt
#endif
			move.l	usp,a1
			movew_a1_src\4	\1,\2
ii_0x3\3b:	
#ifdef	halten_move
	halt
#endif
			move.l	a0,a1
			moveb_a1_src\4	\1,\2
.endm
//---------------------------------------------------------------------
//dx
moveb_a1_srcdx:.macro
			jsr		ewf
.ifc	\2,id
			move.b	(a1),\1_off+3(a7)
.else
			move.b	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movel_a1_srcdx:.macro
			jsr		ewf
.ifc	\2,id
			move.l	(a1),\1_off(a7)
.else
			move.l	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movew_a1_srcdx:.macro
			jsr		ewf
.ifc	\2,id
			move.w	(a1),\1_off+2(a7)
.else
			move.w	(a1),\1
.endif
			set_cc0
			ii_end
.endm
// ax
moveb_a1_srcax:.macro
			jsr		ewf
.ifc	\2,id
	.ifc	\1,usp
			move.w	(a1),a1
			move.l	a1,usp
	.else
			move.w	(a1),\1_off+2(a7)
	.endif
.else
			move.w	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movel_a1_srcax:.macro
			jsr		ewf
.ifc	\2,id
	.ifc	\1,usp
			move.l	(a1),a1
			move.l	a1,usp
	.else
			move.l	(a1),\1_off(a7)
	.endif
.else
			move.l	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movew_a1_srcax:.macro
			jsr		ewf
.ifc	\2,id
	.ifc	\1,usp
			move.w	(a1),a1
			move.l	a1,usp
	.else
			move.w	(a1),\1_off+2(a7)
	.endif
.else
			move.w	(a1),\1
.endif
			set_cc0
			ii_end
.endm
// (ax)
moveb_a1_srcia:.macro
			jsr		ewf
.ifc	\2,id
			move.b	(a1),d0
			move.l	\1,a1
			move.b	d0,(a1)
.else
			move.b	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movel_a1_srcia:.macro
			jsr		ewf
.ifc	\2,id
			move.l	(a1),d0
			move.l	\1,a1
			move.l	d0,(a1)
.else
			move.l	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movew_a1_srcia:.macro
			jsr		ewf
.ifc	\2,id
			move.w	(a1),d0
			move.l	\1,a1
			move.w	d0,(a1)
.else
			move.w	(a1),\1
.endif
			set_cc0
			ii_end
.endm
// (ax)+
moveb_a1_srciap:.macro
			jsr		ewf
.ifc	\2,id
			move.b	(a1),d0
			move.l	\1,a1
			move.b	d0,(a1)+
			move.l	a1,\1
.else
			move.b	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movel_a1_srciap:.macro
			jsr		ewf
.ifc	\2,id
			move.l	(a1),d0
			move.l	\1,a1
			move.l	d0,(a1)+
			move.l	a1,\1
.else
			move.l	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movew_a1_srciap:.macro
			jsr		ewf
.ifc	\2,id
			move.w	(a1),d0
			move.l	\1,a1
			move.w	d0,(a1)+
			move.l	a1,\1
.else
			move.w	(a1),\1
.endif
			set_cc0
			ii_end
.endm
// -(ax)
moveb_a1_srciam:.macro
			jsr		ewf
.ifc	\2,id
			move.b	(a1),d0
			move.l	\1,a1
			move.b	d0,-(a1)
			move.l	a1,\1
.else
			move.b	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movel_a1_srciam:.macro
			jsr		ewf
.ifc	\2,id
			move.l	(a1),d0
			move.l	\1,a1
			move.l	d0,-(a1)
			move.l	a1,\1
.else
			move.l	(a1),\1
.endif
			set_cc0
			ii_end
.endm
movew_a1_srciam:.macro
			jsr		ewf
.ifc	\2,id
			move.w	(a1),d0
			move.l	\1,a1
			move.w	d0,-(a1)
			move.l	a1,\1
.else
			move.w	(a1),\1
.endif
			set_cc0
			ii_end
.endm

//---------------------------------------------------------------------
// move.x	d8(pc,dy),ea
//---------------------------------------------------------------------


 
/*============================================================
// move.w dx,(a0,dx.w*SF)
	ii_lset		0x3180
	ii_lset		0x3181
	ii_lset		0x3182
	ii_lset		0x3183
	ii_lset		0x3184
	ii_lset		0x3185
	ii_lset		0x3186
	ii_lset		0x3187 

//--------------------------------------------------------------------
// // move.w	dx,d(ay,dz.w*sf)
//--------------------------------------------------------------------
movew_ewfw:.macro
	move.l		\2,a1
	jsr			ewf
	move.w		\1,(a1)
	set_cc0
	ii_end
	.endm
ii_0x3180:
	movew_ewfw 	d0_off+2(a7),a0_off(a7)
ii_0x3181:
	movew_ewfw 	d0_off+2(a7),a0_off(a7)
ii_0x3182:
	movew_ewfw 	d2,a0_off(a7)
ii_0x3183:
	movew_ewfw 	d3,a0_off(a7)
ii_0x3184:
	movew_ewfw 	d4,a0_off(a7)
ii_0x3185:
	movew_ewfw 	d5,a0_off(a7)
ii_0x3186:
	movew_ewfw 	d6,a0_off(a7)
ii_0x3187:
	movew_ewfw 	d7,a0_off(a7)
