BYTESIZE	equ	0
WORDSIZE	equ	1

ACCMEM		equ	0
ACCACCUM	equ	1

;opcodes left(to be removed or written)

;BRK COP RTI MVP MVN

	;remember, 29 opcodes check the EX instead of EM, make
	;custom code for them!

	*** CPU Opcodes ***

	;please note that some instructions have been written
	;inline, to make the macro-support simpler. These
	;functions need manual update.

	* opcode arguments: addressing-type,mem/accum

OPCODE_ADC	MACRO

	IFNE	\1

	MCR_GetWord
	move.w	a5,d1
	and.w	#$0001,d1
	add.w	d1,d0
	add.w	d0,d7
	SCCR	%11000011,0,0

	ELSE

	MCR_GetByte
	move.w	a5,d1
	and.w	#$0001,d1
	add.b	d1,d0
	add.b	d0,d7
	SCCR	%11000011,0,0

	ENDIF

		ENDM

OPCODE_AND	MACRO

	IFNE	\1

	MCR_GetWord
	and.w	d0,d7
	SCCR	%10000010,0,0

	ELSE

	MCR_GetByte
	and.b	d0,d7
	SCCR	%10000010,0,0

	ENDIF

		ENDM

OPCODE_ASL	MACRO

	IFNE	\2

		IFNE	\1

		asl.w	#1,d7
		SCCR	%10000011,0,0

		ELSE

		asl.b	#1,d7
		SCCR	%10000011,0,0

		ENDIF

	ELSE

		IFNE	\1

		move.l	d0,d3
		MCR_GetWord
		asl.w	#1,d0
		SCCR	%10000011,0,0
		move.w	d0,d1
		move.l	d3,d0
		MCR_SetWord

		ELSE

		move.l	d0,d3
		MCR_GetByte
		asl.b	#1,d0
		SCCR	%10000011,0,0
		move.b	d0,d1
		move.l	d3,d0
		MCR_SetByte

		ENDIF

	ENDIF

		ENDM

OPCODE_BIT	MACRO

	IFNE	\2

		IFNE	\1

		GETARGW
		move.w	d0,d1

		and.w	#$c000,d1
		lsr.w	#8,d1
		move.l	a5,d2
		and.b	#$3f,d2
		or.b	d1,d2
		move.l	d2,a5
		and.w	d7,d0
		SCCR	%00000010,0,0

		ELSE

		GETARGB	0
		move.b	d0,d1

		and.b	#$c0,d1
		move.l	a5,d2
		and.b	#$3f,d2
		or.b	d1,d2
		move.l	d2,a5
		and.b	d7,d0
		SCCR	%00000010,0,0

		ENDIF

	ELSE

		IFNE	\1

		MCR_GetWord
		move.w	d0,d1

		and.w	#$c000,d1
		lsr.w	#8,d1
		move.l	a5,d2
		and.b	#$3f,d2
		or.b	d1,d2
		move.l	d2,a5
		and.w	d7,d0
		SCCR	%00000010,0,0

		ELSE

		MCR_GetByte
		move.b	d0,d1

		and.b	#$c0,d1
		move.l	a5,d2
		and.b	#$3f,d2
		or.b	d1,d2
		move.l	d2,a5
		and.b	d7,d0
		SCCR	%00000010,0,0

		ENDIF

	ENDIF

		ENDM

OPCODE_CMP	MACRO

	IFNE	\1

	MCR_GetWord
	cmp.w	d0,d7
	SCCR	%10000011,0,0

	ELSE

	MCR_GetByte
	cmp.b	d0,d7
	SCCR	%10000011,0,0

	ENDIF

		ENDM

OPCODE_DEC	MACRO

	IFNE	\2

		IFNE	\1

		sub.w	#1,d7
		SCCR	%10000010,0,0

		ELSE

		sub.b	#1,d7
		SCCR	%10000010,0,0

		ENDIF

	ELSE

		IFNE	\1

		move.l	d0,d3
		MCR_GetWord
		sub.w	#1,d0
		SCCR	%10000010,0,0
		move.w	d0,d1
		move.l	d3,d0
		MCR_SetWord

		ELSE

		move.l	d0,d3
		MCR_GetByte
		sub.b	#1,d0
		SCCR	%10000010,0,0
		move.b	d0,d1
		move.l	d3,d0
		MCR_SetByte

		ENDIF

	ENDIF

		ENDM

OPCODE_EOR	MACRO

	IFNE	\1

	MCR_GetWord
	eor.w	d0,d7
	SCCR	%10000010,0,0

	ELSE

	MCR_GetByte
	eor.b	d0,d7
	SCCR	%10000010,0,0

	ENDIF

		ENDM

OPCODE_INC	MACRO

	IFNE	\2

		IFNE	\1

		add.w	#1,d7
		SCCR	%10000010,0,0

		ELSE

		add.b	#1,d7
		SCCR	%10000010,0,0

		ENDIF


	ELSE

		IFNE	\1

		move.l	d0,d3
		MCR_GetWord
		add.w	#1,d0
		SCCR	%10000010,0,0
		move.w	d0,d1
		move.l	d3,d0
		MCR_SetWord

		ELSE

		move.l	d0,d3
		MCR_GetByte
		add.b	#1,d0
		SCCR	%10000010,0,0
		move.b	d0,d1
		move.l	d3,d0
		MCR_SetByte

		ENDIF

	ENDIF

		ENDM

OPCODE_JSL	MACRO

	move.l	d0,d3

	move.l	a4,d3
	swap	d3
	PUSHB	d3
	swap	d3
	PUSHW	d3

	move.l	a4,d0

	and.l	#$ff000000,d0
	and.l	#$00ffffff,d3
	or.l	d3,d0
	move.l	d0,a4

	CACHET	0

		ENDM

OPCODE_LDA	MACRO

	IFNE	\1

	MCR_GetWord
	move.w	d0,d7
	SCCR	%10000010,0,0

	ELSE

	MCR_GetByte
	move.b	d0,d7
	SCCR	%10000010,0,0

	ENDIF

		ENDM

OPCODE_LDX	MACRO

	IFNE	\1

	MCR_GetWord
	move.w	d0,d6
	SCCR	%10000010,0,0

	ELSE

	MCR_GetByte
	move.b	d0,d6
	SCCR	%10000010,0,0

	ENDIF

		ENDM

OPCODE_LDY	MACRO

	IFNE	\1

	MCR_GetWord
	swap	d6
	move.w	d0,d6
	SCCR	%10000010,0,0
	swap	d6

	ELSE

	MCR_GetByte
	swap	d6
	move.b	d0,d6
	SCCR	%10000010,0,0
	swap	d6

	ENDIF

		ENDM

OPCODE_LSR	MACRO

	IFNE	\2

		IFNE	\1

		lsr.w	#1,d7
		SCCR	%00000011,%10000000,0

		ELSE

		lsr.b	#1,d7
		SCCR	%00000011,%10000000,0

		ENDIF

	ELSE

		IFNE	\1

		move.l	d0,d3
		MCR_GetWord
		lsr.w	#1,d0
		SCCR	%00000011,%10000000,0
		move.l	d0,d1
		move.l	d3,d0
		MCR_SetWord

		ELSE

		move.l	d0,d3
		MCR_GetByte
		lsr.b	#1,d0
		SCCR	%00000011,%10000000,0
		move.l	d0,d1
		move.l	d3,d0
		MCR_SetByte

		ENDIF

	ENDIF

		ENDM

OPCODE_ORA	MACRO

	IFNE	\1

	MCR_GetWord
	or.w	d0,d7
	SCCR	%10000010,0,0

	ELSE

	MCR_GetByte
	or.b	d0,d7
	SCCR	%10000010,0,0

	ENDIF

		ENDM

OPCODE_ROL	MACRO

	IFNE	\1

	move.l	d0,d3
	MCR_GetWord
	rol.w	#1,d0
	SCCR	%10000011,0,0
	move.l	d0,d1
	move.l	d3,d0
	MCR_SetWord

	ELSE

	move.l	d0,d3
	MCR_GetByte
	rol.b	#1,d0
	SCCR	%10000011,0,0
	move.l	d0,d1
	move.l	d3,d0
	MCR_SetByte

	ENDIF

		ENDM

OPCODE_ROR	MACRO

	IFNE	\1

	move.l	d0,d3
	MCR_GetWord
	rol.w	#1,d0
	SCCR	%10000011,0,0
	move.l	d0,d1
	move.l	d3,d0
	MCR_SetWord

	ELSE

	move.l	d0,d3
	MCR_GetByte
	rol.b	#1,d0
	SCCR	%10000011,0,0
	move.l	d0,d1
	move.l	d3,d0
	MCR_SetByte

	ENDIF

		ENDM

OPCODE_SBC	MACRO

	IFNE	\1

	MCR_GetWord
	move.w	a5,d1
	and.w	#$0001,d1
	eor.w	#$0001,d1
	add.w	d1,d0
	sub.w	d0,d7
	SCCR	%11000011,0,0

	ELSE

	MCR_GetByte
	move.w	a5,d1
	and.w	#$0001,d1
	eor.w	#$0001,d1
	add.b	d1,d0
	sub.b	d0,d7
	SCCR	%11000011,0,0

	ENDIF

		ENDM

OPCODE_STA	MACRO

	IFNE	\1

	move.w	d7,d1
	MCR_SetWord

	ELSE

	move.b	d7,d1
	MCR_SetByte

	ENDIF

		ENDM

OPCODE_STZ	MACRO

	IFNE	\1

	move.w	#0,d1
	MCR_SetWord

	ELSE

	move.b	#0,d1
	MCR_SetByte

	ENDIF

		ENDM

OPCODE_TRB	MACRO

	IFNE	\1

		move.l	d0,d4
		MCR_GetWord
		move.w	d0,d3
		move.w	d7,d1
		not.w	d1
		and.w	d3,d1
		move.l	d4,d0
		MCR_SetWord
		and.w	d7,d3
		SCCR	%00000010,0,0

	ELSE

		move.l	d0,d4
		MCR_GetByte
		move.b	d0,d3
		move.b	d7,d1
		not.b	d1
		and.b	d3,d1
		move.l	d4,d0
		MCR_SetByte
		and.b	d7,d3
		SCCR	%00000010,0,0

	ENDIF

		ENDM

OPCODE_TSB	MACRO

	IFNE	\1

		move.l	d0,d4
		MCR_GetWord
		move.w	d0,d3
		or.w	d7,d0
		move.w	d0,d1
		move.l	d4,d0
		MCR_SetWord
		and.w	d7,d3
		SCCR	%00000010,0,0

	ELSE

		move.l	d0,d4
		MCR_GetByte
		move.b	d0,d3
		or.b	d7,d0
		move.b	d0,d1
		move.l	d4,d0
		MCR_SetByte
		and.b	d7,d3
		SCCR	%00000010,0,0

	ENDIF

		ENDM

	*** CPU Addressing Modes ***

ADDRMD_ACCUMULATOR	MACRO

	;Hehehe.. finished. :)

	CheckEM	instruction_ACCUMULATOR\1

	OPCODE_\1	WORDSIZE,ACCACCUM

	RETURNOP	\4,\5

.bs_instruction_ACCUMULATOR\1

	OPCODE_\1	BYTESIZE,ACCACCUM

	RETURNOP	\2,\3

		ENDM

ADDRMD_DIRECT	MACRO

	;finished

	CheckEM	instruction_DIRECT\1

	GETARGB	0
	move.l	d7,d1
	swap	d1
	add.w	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_DIRECT\1

	GETARGB	0
	move.l	d7,d1
	swap	d1
	add.w	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_DIRECTINDEX_X	MACRO

	;finished?

	CheckEM	instruction_DIRECTINDEX_X\1

	GETARGB	0
	move.l	d7,d1
	swap	d1
	add.w	d1,d0
	add.w	d6,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_DIRECTINDEX_X\1

	GETARGB	0
	move.l	d7,d1
	swap	d1
	add.w	d1,d0
	add.w	d6,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_DIRECTINDEX_Y	MACRO

	;finished?

	CheckEM	instruction_DIRECTINDEX_Y\1

	GETARGB	0
	move.l	d7,d1
	swap	d1
	add.w	d1,d0
	swap	d6
	add.w	d6,d0
	swap	d6

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_DIRECTINDEX_Y\1

	GETARGB	0
	move.l	d7,d1
	swap	d1
	add.w	d1,d0
	swap	d6
	add.w	d6,d0
	swap	d6

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_DIRECTINDIRECT	MACRO

	;finished?

	CheckEM	instruction_DIRECTINDIRECT\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	MCR_GetWord
	move.l	a4,d1
	ror.l	#8,d1
	and.l	#$00ff0000,d1
	or.l	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_DIRECTINDIRECT\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	MCR_GetWord
	move.l	a4,d1
	ror.l	#8,d1
	and.l	#$00ff0000,d1
	or.l	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_DIRECTINDEXINDIRECT	MACRO

	CheckEM	instruction_DIRECTINDEXINDIRECT\@\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	add.w	d6,d0
	MCR_GetWord
	swap	d0
	move.l	a5,d1
	swap	d1
	move.w	d1,d0
	lsr.w	#8,d0
	and.w	#$00ff,d0
	swap	d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_DIRECTINDEXINDIRECT\@\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	add.w	d6,d0
	MCR_GetWord
	swap	d0
	move.l	a5,d1
	swap	d1
	move.w	d1,d0
	lsr.w	#8,d0
	and.w	#$00ff,d0
	swap	d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_DIRECTINDIRECTINDEX	MACRO

	;finished?

	CheckEM	instruction_DIRECTINDIRECTINDEX\@\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	MCR_GetWord
	swap	d0
	clr.w	d0
	move.l	a4,d1
	swap	d1
	and.l	#$000000ff,d1
	move.w	d1,d0
	swap	d0
	move.l	d6,d1
	swap	d1
	and.l	#$ffff,d1
	add.l	d1,d0
	and.l	#$00ffffff,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_DIRECTINDIRECTINDEX\@\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	MCR_GetWord
	swap	d0
	clr.w	d0
	move.l	a4,d1
	swap	d1
	and.l	#$000000ff,d1
	move.w	d1,d0
	swap	d0
	move.l	d6,d1
	swap	d1
	and.l	#$ffff,d1
	add.l	d1,d0
	and.l	#$00ffffff,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_DIRECTINDIRECTLONG	MACRO

	;finished?

	CheckEM	instruction_DIRECTINDIRECTLONG\@\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	move.l	d0,d3
	MCR_GetWord
	move.l	d0,d1
	move.l	d3,d0
	add.l	#2,d0
	MCR_GetByte
	rol.l	#8,d0
	rol.l	#8,d0
	move.w	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_DIRECTINDIRECTLONG\@\1

	GETARGB	0
	clr.l	d1
	swap	d7
	add.w	d7,d0
	swap	d7
	move.l	d0,d3
	MCR_GetWord
	move.l	d0,d1
	move.l	d3,d0
	add.l	#2,d0
	MCR_GetByte
	ror.l	#8,d0
	ror.l	#8,d0
	move.w	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_DIRECTINDIRECTINDEXLONG	MACRO

	CheckEM	instruction_DIRECTINDIRECTINDEXLONG\@\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	move.l	d0,d4
	MCR_GetWord
	move.l	d0,d3
	move.l	d4,d0
	add.l	#2,d0
	MCR_GetByte
	swap	d0
	move.w	d3,d0
	move.l	d6,d1
	swap	d1
	and.l	#$0000ffff,d1
	add.l	d1,d0
	and.l	#$00ffffff,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_DIRECTINDIRECTINDEXLONG\@\1

	GETARGB	0
	swap	d7
	add.w	d7,d0
	swap	d7
	move.l	d0,d4
	MCR_GetWord
	move.l	d0,d3
	move.l	d4,d0
	add.l	#2,d0
	MCR_GetByte
	swap	d0
	move.w	d3,d0
	move.l	d6,d1
	swap	d1
	and.l	#$0000ffff,d1
	add.l	d1,d0
	and.l	#$00ffffff,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_ABSOLUTE	MACRO

	;finished

	CheckEM	instruction_ABSOLUTE\1

	GETARGW	0

	move.l	a4,d1
	lsr.l	#8,d1
	move.w	d0,d1
	move.l	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_ABSOLUTE\1

	GETARGW	0

	move.l	a4,d1
	lsr.l	#8,d1
	move.w	d0,d1
	move.l	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_ABSOLUTEINDEX_X	MACRO

	CheckEM	instruction_ABSOLUTEINDEX_X\1

	GETARGW	0
	move.l	a4,d1
	lsr.l	#8,d1
	and.l	#$00ff0000,d1
	or.l	d1,d0
	move.w	d6,d1
	and.l	#$ffff,d1
	add.l	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_ABSOLUTEINDEX_X\1

	GETARGW	0
	move.l	a4,d1
	lsr.l	#8,d1
	and.l	#$00ff0000,d1
	or.l	d1,d0
	move.w	d6,d1
	and.l	#$ffff,d1
	add.l	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_ABSOLUTEINDEX_Y	MACRO

	CheckEM	instruction_ABSOLUTEINDEX_Y\1

	GETARGW	0
	move.l	a4,d1
	lsr.l	#8,d1
	and.l	#$00ff0000,d1
	or.l	d1,d0
	swap	d6
	move.w	d6,d1
	and.l	#$ffff,d1
	add.l	d1,d0
	swap	d6

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_ABSOLUTEINDEX_Y\1

	GETARGW	0
	move.l	a4,d1
	lsr.l	#8,d1
	and.l	#$00ff0000,d1
	or.l	d1,d0
	swap	d6
	move.w	d6,d1
	and.l	#$ffff,d1
	add.l	d1,d0
	swap	d6

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_ABSOLUTELONG	MACRO

	CheckEM	instruction_ABSOLUTELONG\1

	GETARGW	0
	move.l	d0,d1
	GETARGB	2
	rol.l	#8,d0
	rol.l	#8,d0
	move.w	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_ABSOLUTELONG\1

	GETARGW	0
	move.l	d0,d1
	GETARGB	2
	rol.l	#8,d0
	rol.l	#8,d0
	move.w	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_ABSOLUTEINDEXLONG	MACRO

	CheckEM	instruction_ABSOLUTEINDEXLONG\1

	GETARGW	0
	move.l	d0,d1
	GETARGB	2
	rol.l	#8,d0
	rol.l	#8,d0
	move.w	d1,d0
	move.w	d6,d1
	add.l	d1,d0

	RETURNOP	\4,\5

	OPCODE_\1	WORDSIZE,ACCMEM

.bs_instruction_ABSOLUTEINDEXLONG\1

	GETARGW	0
	move.l	d0,d1
	GETARGB	2
	rol.l	#8,d0
	rol.l	#8,d0
	move.w	d1,d0
	move.w	d6,d1
	add.l	d1,d0

	RETURNOP	\2,\3

	OPCODE_\1	BYTESIZE,ACCMEM

		ENDM

ADDRMD_STACKRELATIVE	MACRO

	CheckEM	instruction_STACKRELATIVE\@\1

	GETARGB	0
	move.l	a5,d1
	swap	d1
	add.w	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_STACKRELATIVE\@\1

	GETARGB	0
	move.l	a5,d1
	swap	d1
	add.w	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_STACKRELATIVEINDIRECTINDEX	MACRO

	CheckEM	instruction_STACKRELATIVEINDIRECTINDEX\@\1

	GETARGB	0
	move.l	a5,d1
	swap	d1
	add.w	d1,d0
	MCR_GetWord
	move.l	a4,d1
	ror.l	#8,d1
	and.l	#$00ff0000,d1
	or.l	d1,d0
	clr.l	d1
	swap	d6
	move.w	d6,d1
	swap	d6
	add.l	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_STACKRELATIVEINDIRECTINDEX\@\1

	GETARGB	0
	move.l	a5,d1
	swap	d1
	add.w	d1,d0
	MCR_GetWord
	move.l	a4,d1
	ror.l	#8,d1
	and.l	#$00ff0000,d1
	or.l	d1,d0
	clr.l	d1
	swap	d6
	move.w	d6,d1
	swap	d6
	add.l	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_ABSOLUTEINDIRECT	MACRO

	;finished.. (really tough mode ;)

	CheckEM	instruction_ABSOLUTEINDIRECT\@\1

	GETARGW

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_ABSOLUTEINDIRECT\@\1

	GETARGW	0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM

ADDRMD_ABSOLUTEINDEXEDINDIRECT	MACRO

	CheckEM	instruction_ABSOLUTEINDEXEDINDIRECT\@\1

	GETARGW
	move.l	a4,d1
	and.l	#$00ff0000,d1
	move.w	d0,d1
	add.w	d6,d1
	move.l	d1,d0

	OPCODE_\1	WORDSIZE,ACCMEM

	RETURNOP	\4,\5

.bs_instruction_ABSOLUTEINDEXEDINDIRECT\@\1

	GETARGW
	move.l	a4,d1
	and.l	#$00ff0000,d1
	move.w	d0,d1
	add.w	d6,d1
	move.l	d1,d0

	OPCODE_\1	BYTESIZE,ACCMEM

	RETURNOP	\2,\3

		ENDM
