File:  [UNIX Amiga Emulator] / uae / CPU Sources / cpuE.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:37:54 2018 UTC (8 years, 3 months ago) by root
Branches: MAIN, BSchmidt
CVS tags: uae004, HEAD
uae-0.4

#include "config.h"
#include "amiga.h"
#include "options.h"
#include <stdlib.h>
#include "memory.h"
#include "custom.h"
#include "newcpu.h"
#include "cputbl.h"
void op_e000(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e008(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e010(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e018(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e020(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	BYTE cnt = regs.d[srcreg];
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e028(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	BYTE cnt = regs.d[srcreg];
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e030(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	BYTE cnt = regs.d[srcreg];
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e038(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	BYTE cnt = regs.d[srcreg];
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e040(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e048(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e050(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e058(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e060(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	WORD cnt = regs.d[srcreg];
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e068(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	WORD cnt = regs.d[srcreg];
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e070(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	WORD cnt = regs.d[srcreg];
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e078(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	WORD cnt = regs.d[srcreg];
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e080(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e088(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e090(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e098(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e0a0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	LONG cnt = regs.d[srcreg];
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e0a8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	LONG cnt = regs.d[srcreg];
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e0b0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	LONG cnt = regs.d[srcreg];
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e0b8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	LONG cnt = regs.d[srcreg];
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e0d0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=val&1; val = (val >> 1) | sign;
	regs.n = sign != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}
void op_e0d8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	regs.a[srcreg] += 2;
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=val&1; val = (val >> 1) | sign;
	regs.n = sign != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}}
void op_e0e0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	regs.a[srcreg] -= 2;
{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=val&1; val = (val >> 1) | sign;
	regs.n = sign != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}}
void op_e0e8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=val&1; val = (val >> 1) | sign;
	regs.n = sign != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}
void op_e0f0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	UWORD datadp = nextiword();
	dataa += (LONG)(BYTE)(datadp & 0xFF);
{	ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
	if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
	dataa += datadpr;
{	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=val&1; val = (val >> 1) | sign;
	regs.n = sign != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}}}
void op_e0f8(UWORD opcode)
{
{{	CPTR dataa = (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=val&1; val = (val >> 1) | sign;
	regs.n = sign != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}
void op_e0f9(UWORD opcode)
{
{{	CPTR dataa = nextilong();
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=val&1; val = (val >> 1) | sign;
	regs.n = sign != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}
void op_e100(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e108(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e110(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e118(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e120(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	BYTE cnt = regs.d[srcreg];
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e128(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	BYTE cnt = regs.d[srcreg];
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e130(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	BYTE cnt = regs.d[srcreg];
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e138(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	BYTE cnt = regs.d[srcreg];
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e140(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e148(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e150(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e158(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e160(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	WORD cnt = regs.d[srcreg];
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e168(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	WORD cnt = regs.d[srcreg];
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e170(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	WORD cnt = regs.d[srcreg];
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e178(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	WORD cnt = regs.d[srcreg];
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e180(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e188(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e190(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e198(UWORD opcode)
{
	ULONG srcreg = 8;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e1a0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	LONG cnt = regs.d[srcreg];
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e1a8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	LONG cnt = regs.d[srcreg];
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e1b0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	LONG cnt = regs.d[srcreg];
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e1b8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
	ULONG dstreg = (opcode & 7) >> 0;
{{	LONG cnt = regs.d[srcreg];
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e1d0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}
void op_e1d8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	regs.a[srcreg] += 2;
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}}
void op_e1e0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	regs.a[srcreg] -= 2;
{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}}
void op_e1e8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}
void op_e1f0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	UWORD datadp = nextiword();
	dataa += (LONG)(BYTE)(datadp & 0xFF);
{	ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
	if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
	dataa += datadpr;
{	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}}}
void op_e1f8(UWORD opcode)
{
{{	CPTR dataa = (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}
void op_e1f9(UWORD opcode)
{
{{	CPTR dataa = nextilong();
	WORD data = get_word(dataa);
	regs.v = 0;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	put_word(dataa,val);
}}}}
void op_e200(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e208(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e210(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e218(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e240(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e248(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e250(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e258(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e280(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e288(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e290(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e298(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e2d0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	carry=val&1; val >>= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}
void op_e2d8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	regs.a[srcreg] += 2;
{	UWORD val = data;
	int carry = val&1;
	carry=val&1; val >>= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e2e0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	regs.a[srcreg] -= 2;
{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	carry=val&1; val >>= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e2e8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	carry=val&1; val >>= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}
void op_e2f0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	UWORD datadp = nextiword();
	dataa += (LONG)(BYTE)(datadp & 0xFF);
{	ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
	if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
	dataa += datadpr;
{	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	carry=val&1; val >>= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}}}
void op_e2f8(UWORD opcode)
{
{{	CPTR dataa = (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	carry=val&1; val >>= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}
void op_e2f9(UWORD opcode)
{
{{	CPTR dataa = nextilong();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	carry=val&1; val >>= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}
void op_e300(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e308(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e310(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e318(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e340(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e348(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e350(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e358(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e380(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e388(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e390(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e398(UWORD opcode)
{
	ULONG srcreg = 1;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e3d0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}
void op_e3d8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	regs.a[srcreg] += 2;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e3e0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	regs.a[srcreg] -= 2;
{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e3e8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}
void op_e3f0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	UWORD datadp = nextiword();
	dataa += (LONG)(BYTE)(datadp & 0xFF);
{	ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
	if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
	dataa += datadpr;
{	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}}}
void op_e3f8(UWORD opcode)
{
{{	CPTR dataa = (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}
void op_e3f9(UWORD opcode)
{
{{	CPTR dataa = nextilong();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	put_word(dataa,val);
}}}}
void op_e400(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e408(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e410(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e418(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e440(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e448(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e450(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e458(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e480(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e488(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e490(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e498(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e4d0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e4d8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	regs.a[srcreg] += 2;
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e4e0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	regs.a[srcreg] -= 2;
{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e4e8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e4f0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	UWORD datadp = nextiword();
	dataa += (LONG)(BYTE)(datadp & 0xFF);
{	ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
	if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
	dataa += datadpr;
{	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}}}
void op_e4f8(UWORD opcode)
{
{{	CPTR dataa = (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e4f9(UWORD opcode)
{
{{	CPTR dataa = nextilong();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e500(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e508(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e510(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e518(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e540(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e548(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e550(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e558(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e580(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e588(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e590(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e598(UWORD opcode)
{
	ULONG srcreg = 2;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e5d0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e5d8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	regs.a[srcreg] += 2;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e5e0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	regs.a[srcreg] -= 2;
{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e5e8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e5f0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	UWORD datadp = nextiword();
	dataa += (LONG)(BYTE)(datadp & 0xFF);
{	ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
	if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
	dataa += datadpr;
{	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}}}
void op_e5f8(UWORD opcode)
{
{{	CPTR dataa = (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e5f9(UWORD opcode)
{
{{	CPTR dataa = nextilong();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e600(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e608(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e610(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e618(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e640(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e648(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e650(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e658(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e680(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e688(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e690(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e698(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e6d0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(carry) val |= cmask;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e6d8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	regs.a[srcreg] += 2;
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(carry) val |= cmask;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e6e0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	regs.a[srcreg] -= 2;
{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(carry) val |= cmask;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e6e8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(carry) val |= cmask;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e6f0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	UWORD datadp = nextiword();
	dataa += (LONG)(BYTE)(datadp & 0xFF);
{	ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
	if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
	dataa += datadpr;
{	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(carry) val |= cmask;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}}}
void op_e6f8(UWORD opcode)
{
{{	CPTR dataa = (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(carry) val |= cmask;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e6f9(UWORD opcode)
{
{{	CPTR dataa = nextilong();
	WORD data = get_word(dataa);
{	UWORD val = data;
	int carry = val&1;
	ULONG cmask = 0x8000;
	val >>= 1;
	if(carry) val |= cmask;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e700(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e708(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e710(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e718(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e740(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e748(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e750(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e758(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e780(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e788(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e790(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e798(UWORD opcode)
{
	ULONG srcreg = 3;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e7d0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(carry)  val |= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e7d8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	regs.a[srcreg] += 2;
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(carry)  val |= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e7e0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	regs.a[srcreg] -= 2;
{	CPTR dataa = regs.a[srcreg];
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(carry)  val |= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}}
void op_e7e8(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(carry)  val |= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e7f0(UWORD opcode)
{
	ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{	CPTR dataa = regs.a[srcreg];
	UWORD datadp = nextiword();
	dataa += (LONG)(BYTE)(datadp & 0xFF);
{	ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
	if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
	dataa += datadpr;
{	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(carry)  val |= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}}}
void op_e7f8(UWORD opcode)
{
{{	CPTR dataa = (LONG)(WORD)nextiword();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(carry)  val |= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e7f9(UWORD opcode)
{
{{	CPTR dataa = nextilong();
	WORD data = get_word(dataa);
{	UWORD val = data;
	ULONG cmask = 0x8000;
	int carry = val&cmask;
	val <<= 1;
	if(carry)  val |= 1;
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	put_word(dataa,val);
}}}}
void op_e800(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e808(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e810(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e818(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e840(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e848(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e850(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e858(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e880(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e888(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e890(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e898(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e900(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e908(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e910(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e918(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e940(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e948(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e950(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e958(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e980(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e988(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e990(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_e998(UWORD opcode)
{
	ULONG srcreg = 4;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ea00(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ea08(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ea10(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ea18(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ea40(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ea48(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ea50(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ea58(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ea80(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ea88(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ea90(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ea98(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_eb00(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_eb08(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_eb10(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_eb18(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_eb40(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_eb48(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_eb50(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_eb58(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_eb80(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_eb88(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_eb90(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_eb98(UWORD opcode)
{
	ULONG srcreg = 5;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ec00(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ec08(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ec10(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ec18(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ec40(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ec48(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ec50(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ec58(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ec80(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ec88(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ec90(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ec98(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ed00(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ed08(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ed10(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ed18(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ed40(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ed48(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ed50(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ed58(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ed80(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ed88(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ed90(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ed98(UWORD opcode)
{
	ULONG srcreg = 6;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ee00(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ee08(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ee10(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ee18(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ee40(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ee48(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ee50(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ee58(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ee80(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
	}
	regs.n = sign != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ee88(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ee90(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val >>= 1;
	if(regs.x) val |= cmask;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ee98(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&1; val = (ULONG)val >> 1;
	if(carry) val |= cmask;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ef00(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ef08(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ef10(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ef18(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	BYTE data = regs.d[dstreg];
{	UBYTE val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((BYTE)(val)) == 0;
	regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ef40(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x8000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ef48(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ef50(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ef58(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	WORD data = regs.d[dstreg];
{	UWORD val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x8000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((WORD)(val)) == 0;
	regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ef80(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
	regs.v = 0;
{	ULONG cmask = 0x80000000;
	ULONG sign = cmask & val;
	for(;cnt;--cnt){
	regs.c=regs.x=(val&cmask)!=0; val <<= 1;
	if ((val&cmask)!=sign)regs.v=1;
	}
	regs.n = (val&cmask) != 0;
	regs.z = val == 0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ef88(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ef90(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(regs.x) val |= 1;
	regs.x = carry != 0;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
	regs.x = regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}
void op_ef98(UWORD opcode)
{
	ULONG srcreg = 7;
	ULONG dstreg = (opcode & 7) >> 0;
{{	ULONG cnt = srcreg;
{	LONG data = regs.d[dstreg];
{	ULONG val = data;
	cnt &= 63;
{	int carry = 0;
	ULONG cmask = 0x80000000;
	for(;cnt;--cnt){
	carry=val&cmask; val <<= 1;
	if(carry)  val |= 1;
	}
	regs.v = regs.c = 0;
	regs.z = ((LONG)(val)) == 0;
	regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
	regs.d[dstreg] = (val);
}}}}}}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.