[alt.sources] Frankenstein Cross Assemblers, Motorola 6811 "Flavor", part 2 of 2

markz@ssc.UUCP (Mark Zenier) (12/05/90)

---- Cut Here and feed the following to sh ----
#!/bin/sh
# This is part 02 of Frankasm/As6811
# ============= as6811.y ==============
if test -f 'as6811.y' -a X"$1" != X"-c"; then
	echo 'x - skipping as6811.y (File already exists)'
else
echo 'x - extracting as6811.y (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'as6811.y' &&
X%{
X
X/*
XHEADER: 	;
XTITLE: 		Frankenstein Cross Assemblers;
XVERSION: 	2.0;
XDESCRIPTION: "	Reconfigurable Cross-assembler producing Intel (TM)
X		Hex format object records.  ";
XKEYWORDS: 	cross-assemblers, 1805, 2650, 6301, 6502, 6805, 6809, 
X		6811, tms7000, 8048, 8051, 8096, z8, z80;
XSYSTEM: 	UNIX, MS-Dos ;
XFILENAME: 	as6811.y;
XWARNINGS: 	"This software is in the public domain.  
X		Any prior copyright claims are relinquished.  
X
X		This software is distributed with no warranty whatever.  
X		The author takes no responsibility for the consequences 
X		of its use.
X
X		Yacc (or Bison) required to compile."  ;
XSEE-ALSO: 	as6811.doc,frasmain.c;	
XAUTHORS: 	Mark Zenier;
XCOMPILERS: 	Microport Sys V/AT, ATT Yacc, Turbo C V1.5, Bison (CUG disk 285)
X		(previous versions Xenix, Unisoft 68000 Version 7, Sun 3);
X*/
X/* 6811 instruction generation file */
X/* November 17, 1990 */
X
X/*
X	description	frame work parser description for framework cross
X			assemblers
X	history		February 2, 1988
X			September 11, 1990 - merge table definition
X			September 12, 1990 - short file names
X			September 14, 1990 - short variable names
X			September 17, 1990 - use yylex as external
X*/
X#include <stdio.h>
X#include "frasmdat.h"
X#include "fragcon.h"
X
X#define yylex lexintercept
X
X/*
X	file		fraselcrit.h
X	author		Mark Zenier
X	description	Selection criteria and token values for 6811
X			framework assembler
X	usage		framework cross assembler
X	history		September 19, 1987
X*/
X
X		/* 000000xxxx */
X#define CPUMASK		0xf
X#define CPU6800		0x1	/* cpuselect value in parser */
X#define CPU6801		0x3
X#define CPU6811		0x7
X#define TS6800PLUS	0x1	/* mask and match values in table */
X#define TS6801PLUS	0x2	/* if select value & mask == mask */
X#define TS6811		0x4
X
X		/* 0000xx0000 */
X#define ACCREG		0x30
X#define REGA		0x10
X#define REGB		0x20
X
X		/* 00xx000000 */
X#define INDREG		0xc0
X#define REGX		0x40
X#define REGY		0x80
X
X		/* xx00000000 */
X#define ADDR		0x300
X#define DIRECT		0x100
X#define EXTENDED	0x200
X
X
X#define ST_ACC 0x1
X#define ST_AEXP 0x2
X#define ST_AIMM 0x4
X#define ST_AIND 0x8
X#define ST_BRSET 0x10
X#define ST_BSET 0x20
X#define ST_EXP 0x40
X#define ST_IBRSET 0x80
X#define ST_IBSET 0x100
X#define ST_IMM 0x200
X#define ST_IND 0x400
X#define ST_INDREG 0x800
X#define ST_INH 0x1000
X	
X	
X	int	cpuselect = CPU6811;
X	static char	genbdef[] = "[1=];";
X	static char	genwdef[] = "[1=]x";
X	char ignosyn[] = "[Xinvalid syntax for instruction";
X	char ignosel[] = "[Xinvalid operands/illegal instruction for cpu";
X
X
X	long	labelloc;
X	static int satsub;
X	int	ifstkpt = 0;
X	int	fraifskip = FALSE;
X
X	struct symel * endsymbol = SYMNULL;
X
X%}
X%union {
X	int	intv;
X	long 	longv;
X	char	*strng;
X	struct symel *symb;
X	struct {int indexv, ex; } inetre;
X}
X
X%token <intv> ACCUM
X%token <intv> INDEX
X%type <inetre> indexed
X
X%token <intv> KOC_BDEF
X%token <intv> KOC_ELSE
X%token <intv> KOC_END
X%token <intv> KOC_ENDI
X%token <intv> KOC_EQU
X%token <intv> KOC_IF
X%token <intv> KOC_INCLUDE
X%token <intv> KOC_ORG
X%token <intv> KOC_RESM
X%token <intv> KOC_SDEF
X%token <intv> KOC_SET
X%token <intv> KOC_WDEF
X%token <intv> KOC_CHSET
X%token <intv> KOC_CHDEF
X%token <intv> KOC_CHUSE
X%token <intv> KOC_CPU
X%token <intv> KOC_opcode
X
X%token <longv> CONSTANT
X%token EOL
X%token KEOP_AND
X%token KEOP_DEFINED
X%token KEOP_EQ
X%token KEOP_GE
X%token KEOP_GT
X%token KEOP_HIGH
X%token KEOP_LE
X%token KEOP_LOW
X%token KEOP_LT
X%token KEOP_MOD
X%token KEOP_MUN
X%token KEOP_NE
X%token KEOP_NOT
X%token KEOP_OR
X%token KEOP_SHL
X%token KEOP_SHR
X%token KEOP_XOR
X%token KEOP_locctr
X%token <symb> LABEL
X%token <strng> STRING
X%token <symb> SYMBOL
X
X%token KTK_invalid
X
X%right	KEOP_HIGH KEOP_LOW
X%left	KEOP_OR KEOP_XOR
X%left	KEOP_AND
X%right	KEOP_NOT
X%nonassoc	KEOP_GT KEOP_GE KEOP_LE KEOP_LT KEOP_NE KEOP_EQ
X%left	'+' '-'
X%left	'*' '/' KEOP_MOD KEOP_SHL KEOP_SHR
X%right	KEOP_MUN
X
X
X%type <intv> expr exprlist stringlist
X
X%start file
X
X%%
X
Xfile	:	file allline
X	|	allline
X	;
X
Xallline	: 	line EOL
X			{
X				clrexpr();
X			}
X	|	EOL
X	|	error EOL
X			{
X				clrexpr();
X				yyerrok;
X			}
X	;
X
Xline	:	LABEL KOC_END 
X			{
X				endsymbol = $1;
X				nextreadact = Nra_end;
X			}
X	|	      KOC_END 
X			{
X				nextreadact = Nra_end;
X			}
X	|	KOC_INCLUDE STRING
X			{
X		if(nextfstk >= FILESTKDPTH)
X		{
X			fraerror("include file nesting limit exceeded");
X		}
X		else
X		{
X			infilestk[nextfstk].fnm = savestring($2,strlen($2));
X			if( (infilestk[nextfstk].fpt = fopen($2,"r"))
X				==(FILE *)NULL )
X			{
X				fraerror("cannot open include file");
X			}
X			else
X			{
X				nextreadact = Nra_new;
X			}
X		}
X			}
X	|	LABEL KOC_EQU expr 
X			{
X				if($1 -> seg == SSG_UNDEF)
X				{
X					pevalexpr(0, $3);
X					if(evalr[0].seg == SSG_ABS)
X					{
X						$1 -> seg = SSG_EQU;
X						$1 -> value = evalr[0].value;
X						prtequvalue("C: 0x%lx\n",
X							evalr[0].value);
X					}
X					else
X					{
X						fraerror(
X					"noncomputable expression for EQU");
X					}
X				}
X				else
X				{
X					fraerror(
X				"cannot change symbol value with EQU");
X				}
X			}
X	|	LABEL KOC_SET expr 
X			{
X				if($1 -> seg == SSG_UNDEF
X				   || $1 -> seg == SSG_SET)
X				{
X					pevalexpr(0, $3);
X					if(evalr[0].seg == SSG_ABS)
X					{
X						$1 -> seg = SSG_SET;
X						$1 -> value = evalr[0].value;
X						prtequvalue("C: 0x%lx\n",
X							evalr[0].value);
X					}
X					else
X					{
X						fraerror(
X					"noncomputable expression for SET");
X					}
X				}
X				else
X				{
X					fraerror(
X				"cannot change symbol value with SET");
X				}
X			}
X	|	KOC_IF expr 
X			{
X		if((++ifstkpt) < IFSTKDEPTH)
X		{
X			pevalexpr(0, $2);
X			if(evalr[0].seg == SSG_ABS)
X			{
X				if(evalr[0].value != 0)
X				{
X					elseifstk[ifstkpt] = If_Skip;
X					endifstk[ifstkpt] = If_Active;
X				}
X				else
X				{
X					fraifskip = TRUE;
X					elseifstk[ifstkpt] = If_Active;
X					endifstk[ifstkpt] = If_Active;
X				}
X			}
X			else
X			{
X				fraifskip = TRUE;
X				elseifstk[ifstkpt] = If_Active;
X				endifstk[ifstkpt] = If_Active;
X			}
X		}
X		else
X		{
X			fraerror("IF stack overflow");
X		}
X			}
X						
X	|	KOC_IF 
X			{
X		if(fraifskip) 
X		{
X			if((++ifstkpt) < IFSTKDEPTH)
X			{
X					elseifstk[ifstkpt] = If_Skip;
X					endifstk[ifstkpt] = If_Skip;
X			}
X			else
X			{
X				fraerror("IF stack overflow");
X			}
X		}
X		else
X		{
X			yyerror("syntax error");
X			YYERROR;
X		}
X				}
X						
X	|	KOC_ELSE 
X			{
X				switch(elseifstk[ifstkpt])
X				{
X				case If_Active:
X					fraifskip = FALSE;
X					break;
X				
X				case If_Skip:
X					fraifskip = TRUE;
X					break;
X				
X				case If_Err:
X					fraerror("ELSE with no matching if");
X					break;
X				}
X			}
X
X	|	KOC_ENDI 
X			{
X				switch(endifstk[ifstkpt])
X				{
X				case If_Active:
X					fraifskip = FALSE;
X					ifstkpt--;
X					break;
X				
X				case If_Skip:
X					fraifskip = TRUE;
X					ifstkpt--;
X					break;
X				
X				case If_Err:
X					fraerror("ENDI with no matching if");
X					break;
X				}
X			}
X	|	LABEL KOC_ORG expr 
X			{
X				pevalexpr(0, $3);
X				if(evalr[0].seg == SSG_ABS)
X				{
X					locctr = labelloc = evalr[0].value;
X					if($1 -> seg == SSG_UNDEF)
X					{
X						$1 -> seg = SSG_ABS;
X						$1 -> value = labelloc;
X					}
X					else
X						fraerror(
X						"multiple definition of label");
X					prtequvalue("C: 0x%lx\n",
X						evalr[0].value);
X				}
X				else
X				{
X					fraerror(
X					 "noncomputable expression for ORG");
X				}
X			}
X	|	      KOC_ORG expr 
X			{
X				pevalexpr(0, $2);
X				if(evalr[0].seg == SSG_ABS)
X				{
X					locctr = labelloc = evalr[0].value;
X					prtequvalue("C: 0x%lx\n",
X						evalr[0].value);
X				}
X				else
X				{
X					fraerror(
X					 "noncomputable expression for ORG");
X				}
X			}
X	|	LABEL KOC_CHSET
X			{
X				if($1 -> seg == SSG_UNDEF)
X				{
X					$1 -> seg = SSG_EQU;
X					if( ($1->value = chtcreate()) <= 0)
X					{
X		fraerror( "cannot create character translation table");
X					}
X					prtequvalue("C: 0x%lx\n", $1 -> value);
X				}
X				else
X				{
X			fraerror( "multiple definition of label");
X				}
X			}
X	|		KOC_CHUSE
X			{
X				chtcpoint = (int *) NULL;
X				prtequvalue("C: 0x%lx\n", 0L);
X			}
X	|		KOC_CHUSE expr
X			{
X				pevalexpr(0, $2);
X				if( evalr[0].seg == SSG_ABS)
X				{
X					if( evalr[0].value == 0)
X					{
X						chtcpoint = (int *)NULL;
X						prtequvalue("C: 0x%lx\n", 0L);
X					}
X					else if(evalr[0].value < chtnxalph)
X					{
X				chtcpoint = chtatab[evalr[0].value];
X				prtequvalue("C: 0x%lx\n", evalr[0].value);
X					}
X					else
X					{
X			fraerror("nonexistent character translation table");
X					}
X				}
X				else
X				{
X					fraerror("noncomputable expression");
X				}
X			}
X	|		KOC_CHDEF STRING ',' exprlist
X			{
X		int findrv, numret, *charaddr;
X		char *sourcestr = $2, *before;
X
X		if(chtnpoint != (int *)NULL)
X		{
X			for(satsub = 0; satsub < $4; satsub++)
X			{
X				before = sourcestr;
X
X				pevalexpr(0, exprlist[satsub]);
X				findrv = chtcfind(chtnpoint, &sourcestr,
X						&charaddr, &numret);
X				if(findrv == CF_END)
X				{
X			fraerror("more expressions than characters");
X					break;
X				}
X
X				if(evalr[0].seg == SSG_ABS)
X				{
X					switch(findrv)
X					{
X					case CF_UNDEF:
X						{
X				if(evalr[0].value < 0 ||
X					evalr[0].value > 255)
X				{
X			frawarn("character translation value truncated");
X				}
X				*charaddr = evalr[0].value & 0xff;
X				prtequvalue("C: 0x%lx\n", evalr[0].value);
X						}
X						break;
X
X					case CF_INVALID:
X					case CF_NUMBER:
X				fracherror("invalid character to define", 
X					before, sourcestr);
X						break;
X
X					case CF_CHAR:
X				fracherror("character already defined", 
X					before, sourcestr);
X						break;
X					}
X				}
X				else
X				{
X					fraerror("noncomputable expression");
X				}
X			}
X
X			if( *sourcestr != '\0')
X			{
X				fraerror("more characters than expressions");
X			}
X		}
X		else
X		{
X			fraerror("no CHARSET statement active");
X		}
X			
X			}
X	|	LABEL 
X			{
X			if($1 -> seg == SSG_UNDEF)
X			{
X				$1 -> seg = SSG_ABS;
X				$1 -> value = labelloc;
X				prtequvalue("C: 0x%lx\n", labelloc);
X
X			}
X			else
X				fraerror(
X				"multiple definition of label");
X			}
X	|	labeledline
X	;
X
Xlabeledline :	LABEL genline
X			{
X			if($1 -> seg == SSG_UNDEF)
X			{
X				$1 -> seg = SSG_ABS;
X				$1 -> value = labelloc;
X			}
X			else
X				fraerror(
X				"multiple definition of label");
X			labelloc = locctr;
X			}
X				
X	|	genline
X			{
X				labelloc = locctr;
X			}
X	;
X
Xgenline	:	KOC_BDEF	exprlist 
X			{
X				genlocrec(currseg, labelloc);
X				for( satsub = 0; satsub < $2; satsub++)
X				{
X					pevalexpr(1, exprlist[satsub]);
X					locctr += geninstr(genbdef);
X				}
X			}
X	|	KOC_SDEF stringlist 
X			{
X				genlocrec(currseg, labelloc);
X				for(satsub = 0; satsub < $2; satsub++)
X				{
X					locctr += genstring(stringlist[satsub]);
X				}
X			}
X	|	KOC_WDEF exprlist 
X			{
X				genlocrec(currseg, labelloc);
X				for( satsub = 0; satsub < $2; satsub++)
X				{
X					pevalexpr(1, exprlist[satsub]);
X					locctr += geninstr(genwdef);
X				}
X			}	
X	|	KOC_RESM expr 
X			{
X				pevalexpr(0, $2);
X				if(evalr[0].seg == SSG_ABS)
X				{
X					locctr = labelloc + evalr[0].value;
X					prtequvalue("C: 0x%lx\n", labelloc);
X				}
X				else
X				{
X					fraerror(
X				 "noncomputable result for RMB expression");
X				}
X			}
X	;
X
Xexprlist :	exprlist ',' expr
X			{
X				exprlist[nextexprs ++ ] = $3;
X				$$ = nextexprs;
X			}
X	|	expr
X			{
X				nextexprs = 0;
X				exprlist[nextexprs ++ ] = $1;
X				$$ = nextexprs;
X			}
X	;
X
Xstringlist :	stringlist ',' STRING
X			{
X				stringlist[nextstrs ++ ] = $3;
X				$$ = nextstrs;
X			}
X	|	STRING
X			{
X				nextstrs = 0;
X				stringlist[nextstrs ++ ] = $1;
X				$$ = nextstrs;
X			}
X	;
X
X
Xline	:	KOC_CPU STRING
X			{
X		if( ! cpumatch($2))
X		{
X			fraerror("unknown cpu type, 68hc11 assumed");
X			cpuselect = CPU6811;
X		}
X			}
X	;
Xgenline : KOC_opcode  ACCUM
X			{
X		genlocrec(currseg, labelloc);
X		locctr += geninstr(findgen($1, ST_ACC, $2 + cpuselect));
X			}
X	;
Xgenline : KOC_opcode  ACCUM expr
X			{
X		pevalexpr(1, $3);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr(findgen( $1, ST_AEXP, cpuselect + $2
X				 + ( (evalr[1].seg == SSG_ABS 
X				&& evalr[1].value >= 0
X				&& evalr[1].value <= 255 )
X				? DIRECT : EXTENDED ) ) );
X			}
X	;
Xgenline : KOC_opcode  ACCUM '#' expr
X			{
X		pevalexpr(1,$4);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen($1, ST_AIMM, $2 + cpuselect));
X			}
X	;
Xgenline : KOC_opcode  ACCUM indexed
X			{
X		pevalexpr(1, $3.ex);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen($1, ST_AIND, cpuselect
X					+ $2 + $3.indexv));
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr ',' expr
X			{
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		pevalexpr(3,$6);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen($1, ST_BRSET, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr
X			{
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen( $1, ST_BSET, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr
X			{
X		pevalexpr(1, $2);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen( $1, ST_EXP, cpuselect 
X				 + ( (evalr[1].seg == SSG_ABS 
X				&& evalr[1].value >= 0
X				&& evalr[1].value <= 255 )
X				? DIRECT : EXTENDED ) )
X				);
X			}
X	;
Xgenline : KOC_opcode  indexed ',' expr ',' expr
X			{
X		pevalexpr(1,$2.ex);
X		pevalexpr(2,$4);
X		pevalexpr(3,$6);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen($1, ST_IBRSET, cpuselect
X					+ $2.indexv));
X			}
X	;
Xgenline : KOC_opcode  indexed ',' expr
X			{
X		pevalexpr(1,$2.ex);
X		pevalexpr(2,$4);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen($1, ST_IBSET, cpuselect
X					+ $2.indexv));
X			}
X	;
Xgenline : KOC_opcode  '#' expr
X			{
X		pevalexpr(1, $3);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen($1, ST_IMM, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  indexed
X			{
X		pevalexpr(1, $2.ex);
X		genlocrec(currseg, labelloc);
X		locctr += geninstr( findgen($1, ST_IND, cpuselect 
X					+ ($2.indexv)));
X			}
X	;
Xgenline : KOC_opcode  INDEX
X			{
X		genlocrec(currseg, labelloc);
X		locctr += geninstr(findgen($1, ST_INDREG, $2 + cpuselect));
X			}
X	;
Xgenline : KOC_opcode 
X			{
X		genlocrec(currseg, labelloc);
X		locctr += geninstr(findgen($1, ST_INH, cpuselect));
X			}
X	;
Xexpr	:	'+' expr %prec KEOP_MUN
X			{
X				$$ = $2;
X			}
X	|	'-' expr %prec KEOP_MUN
X			{
X				$$ = exprnode(PCCASE_UN,$2,IFC_NEG,0,0L,
X					SYMNULL);
X			}
X	|	KEOP_NOT expr
X			{
X				$$ = exprnode(PCCASE_UN,$2,IFC_NOT,0,0L,
X					SYMNULL);
X			}
X	|	KEOP_HIGH expr
X			{
X				$$ = exprnode(PCCASE_UN,$2,IFC_HIGH,0,0L,
X					SYMNULL);
X			}
X	|	KEOP_LOW expr
X			{
X				$$ = exprnode(PCCASE_UN,$2,IFC_LOW,0,0L,
X					SYMNULL);
X			}
X	|	expr '*' expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_MUL,$3,0L,
X					SYMNULL);
X			}
X	|	expr '/' expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_DIV,$3,0L,
X					SYMNULL);
X			}
X	|	expr '+' expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_ADD,$3,0L,
X					SYMNULL);
X			}
X	|	expr '-' expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_SUB,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_MOD expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_MOD,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_SHL expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_SHL,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_SHR expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_SHR,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_GT expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_GT,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_GE expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_GE,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_LT expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_LT,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_LE expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_LE,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_NE expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_NE,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_EQ expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_EQ,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_AND expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_AND,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_OR expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_OR,$3,0L,
X					SYMNULL);
X			}
X	|	expr KEOP_XOR expr
X			{
X				$$ = exprnode(PCCASE_BIN,$1,IFC_XOR,$3,0L,
X					SYMNULL);
X			}
X	|	KEOP_DEFINED SYMBOL
X			{
X				$$ = exprnode(PCCASE_DEF,0,IGP_DEFINED,0,0L,$2);
X			}
X	|	SYMBOL
X			{
X				$$ = exprnode(PCCASE_SYMB,0,IFC_SYMB,0,0L,$1);
X			}
X	|	'*'
X			{
X				$$ = exprnode(PCCASE_PROGC,0,IFC_PROGCTR,0,
X					labelloc, SYMNULL);
X			}
X	|	CONSTANT
X			{
X				$$ = exprnode(PCCASE_CONS,0,IGP_CONSTANT,0,$1,
X					SYMNULL);
X			}
X	|	STRING
X			{
X				char *sourcestr = $1;
X				long accval = 0;
X
X				if(strlen($1) > 0)
X				{
X					accval = chtran(&sourcestr);
X					if(*sourcestr != '\0')
X					{
X						accval = (accval << 8) +
X							chtran(&sourcestr);
X					}
X
X					if( *sourcestr != '\0')
X					{
X	frawarn("string constant in expression more than 2 characters long");
X					}
X				}
X				$$ = exprnode(PCCASE_CONS, 0, IGP_CONSTANT, 0,
X					accval, SYMNULL);
X			}
X	|	'(' expr ')'
X			{
X				$$ = $2;
X			}
X	;
X
X
Xindexed	:	INDEX ',' expr
X			{
X				$$.ex = $3;
X				$$.indexv = $1;
X			}
X	|	expr ',' INDEX
X			{
X				$$.ex = $1;
X				$$.indexv = $3;
X			}
X	;
X
X%%
X
Xlexintercept()
X/*
X	description	intercept the call to yylex (the lexical analyzer)
X			and filter out all unnecessary tokens when skipping
X			the input between a failed IF and its matching ENDI or
X			ELSE
X	globals 	fraifskip	the enable flag
X*/
X{
X#undef yylex
X
X	int rv;
X
X	if(fraifskip)
X	{
X		for(;;)
X		{
X
X			switch(rv = yylex())
X
X			{
X			case 0:
X			case KOC_END:
X			case KOC_IF:
X			case KOC_ELSE:
X			case KOC_ENDI:
X			case EOL:
X				return rv;
X			default:
X				break;
X			}
X		}
X	}
X	else
X		return yylex();
X#define yylex lexintercept
X}
X
X
X
Xsetreserved()
X{
X
X	reservedsym("and", KEOP_AND, 0);
X	reservedsym("defined", KEOP_DEFINED,0);
X	reservedsym("eq", KEOP_EQ, 0);
X	reservedsym("ge", KEOP_GE, 0);
X	reservedsym("gt", KEOP_GT, 0);
X	reservedsym("high", KEOP_HIGH, 0);
X	reservedsym("le", KEOP_LE, 0);
X	reservedsym("low", KEOP_LOW, 0);
X	reservedsym("lt", KEOP_LT, 0);
X	reservedsym("mod", KEOP_MOD, 0);
X	reservedsym("ne", KEOP_NE, 0);
X	reservedsym("not", KEOP_NOT, 0);
X	reservedsym("or", KEOP_OR, 0);
X	reservedsym("shl", KEOP_SHL, 0);
X	reservedsym("shr", KEOP_SHR, 0);
X	reservedsym("xor", KEOP_XOR, 0);
X	reservedsym("AND", KEOP_AND, 0);
X	reservedsym("DEFINED", KEOP_DEFINED,0);
X	reservedsym("EQ", KEOP_EQ, 0);
X	reservedsym("GE", KEOP_GE, 0);
X	reservedsym("GT", KEOP_GT, 0);
X	reservedsym("HIGH", KEOP_HIGH, 0);
X	reservedsym("LE", KEOP_LE, 0);
X	reservedsym("LOW", KEOP_LOW, 0);
X	reservedsym("LT", KEOP_LT, 0);
X	reservedsym("MOD", KEOP_MOD, 0);
X	reservedsym("NE", KEOP_NE, 0);
X	reservedsym("NOT", KEOP_NOT, 0);
X	reservedsym("OR", KEOP_OR, 0);
X	reservedsym("SHL", KEOP_SHL, 0);
X	reservedsym("SHR", KEOP_SHR, 0);
X	reservedsym("XOR", KEOP_XOR, 0);
X
X
X	reservedsym("a", ACCUM, REGA);
X	reservedsym("b", ACCUM, REGB);
X	reservedsym("x", INDEX, REGX);
X	reservedsym("y", INDEX, REGY);
X	reservedsym("A", ACCUM, REGA);
X	reservedsym("B", ACCUM, REGB);
X	reservedsym("X", INDEX, REGX);
X	reservedsym("Y", INDEX, REGY);
X
X}
X
Xcpumatch(str)
X	char * str;
X{
X	int msub;
X
X	static struct
X	{
X		char * mtch;
X		int   cpuv;
X	} matchtab[] =
X	{
X		{"11", CPU6811},
X		{"01", CPU6801},
X		{"00", CPU6800},
X		{"03", CPU6801},
X		{"02", CPU6800},
X		{"08", CPU6800},
X		{"", 0} 
X	};
X
X	for(msub = 0; matchtab[msub].cpuv != 0; msub++)
X	{
X		if(strcontains(str, matchtab[msub].mtch))
X		{
X			cpuselect = matchtab[msub].cpuv;
X			return TRUE;
X		}
X	}
X
X	return FALSE;
X}
X
X
Xstrcontains(s1, sm)
X	char * s1, *sm;
X{
X	int l1 = strlen(s1), lm = strlen(sm);
X
X	for(; l1 >= lm; l1--, s1++)
X	{
X		if(strncmp(s1, sm, lm) == 0)
X		{
X			return TRUE;
X		}
X	}
X	return FALSE;
X}
X
X/*
X	description	Opcode and Instruction generation tables
X	usage		Unix, framework crossassembler
X	history		September 25, 1987
X*/
X
X#define NUMOPCODE 183
X#define NUMSYNBLK 277
X#define NUMDIFFOP 459
X
Xint gnumopcode = NUMOPCODE;
X
Xint ophashlnk[NUMOPCODE];
X
Xstruct opsym optab[NUMOPCODE+1]
X	= {
X	{"invalid", KOC_opcode, 2, 0 },
X	{"ABA", KOC_opcode, 1, 2 },
X	{"ABX", KOC_opcode, 1, 3 },
X	{"ABY", KOC_opcode, 1, 4 },
X	{"ADC", KOC_opcode, 3, 5 },
X	{"ADCA", KOC_opcode, 3, 8 },
X	{"ADCB", KOC_opcode, 3, 11 },
X	{"ADD", KOC_opcode, 3, 14 },
X	{"ADDA", KOC_opcode, 3, 17 },
X	{"ADDB", KOC_opcode, 3, 20 },
X	{"ADDD", KOC_opcode, 3, 23 },
X	{"AND", KOC_opcode, 3, 26 },
X	{"ANDA", KOC_opcode, 3, 29 },
X	{"ANDB", KOC_opcode, 3, 32 },
X	{"ASL", KOC_opcode, 3, 35 },
X	{"ASLA", KOC_opcode, 1, 38 },
X	{"ASLB", KOC_opcode, 1, 39 },
X	{"ASLD", KOC_opcode, 1, 40 },
X	{"ASR", KOC_opcode, 3, 41 },
X	{"ASRA", KOC_opcode, 1, 44 },
X	{"ASRB", KOC_opcode, 1, 45 },
X	{"BCC", KOC_opcode, 1, 46 },
X	{"BCLR", KOC_opcode, 2, 47 },
X	{"BCS", KOC_opcode, 1, 49 },
X	{"BEQ", KOC_opcode, 1, 50 },
X	{"BGE", KOC_opcode, 1, 51 },
X	{"BGT", KOC_opcode, 1, 52 },
X	{"BHI", KOC_opcode, 1, 53 },
X	{"BHS", KOC_opcode, 1, 54 },
X	{"BIT", KOC_opcode, 3, 55 },
X	{"BITA", KOC_opcode, 3, 58 },
X	{"BITB", KOC_opcode, 3, 61 },
X	{"BLE", KOC_opcode, 1, 64 },
X	{"BLO", KOC_opcode, 1, 65 },
X	{"BLS", KOC_opcode, 1, 66 },
X	{"BLT", KOC_opcode, 1, 67 },
X	{"BMI", KOC_opcode, 1, 68 },
X	{"BNE", KOC_opcode, 1, 69 },
X	{"BPL", KOC_opcode, 1, 70 },
X	{"BRA", KOC_opcode, 1, 71 },
X	{"BRCLR", KOC_opcode, 2, 72 },
X	{"BRN", KOC_opcode, 1, 74 },
X	{"BRSET", KOC_opcode, 2, 75 },
X	{"BSET", KOC_opcode, 2, 77 },
X	{"BSR", KOC_opcode, 1, 79 },
X	{"BVC", KOC_opcode, 1, 80 },
X	{"BVS", KOC_opcode, 1, 81 },
X	{"BYTE", KOC_BDEF, 0, 0 },
X	{"CBA", KOC_opcode, 1, 82 },
X	{"CHARDEF", KOC_CHDEF, 0, 0 },
X	{"CHARSET", KOC_CHSET, 0, 0 },
X	{"CHARUSE", KOC_CHUSE, 0, 0 },
X	{"CHD", KOC_CHDEF, 0, 0 },
X	{"CLC", KOC_opcode, 1, 83 },
X	{"CLI", KOC_opcode, 1, 84 },
X	{"CLR", KOC_opcode, 3, 85 },
X	{"CLRA", KOC_opcode, 1, 88 },
X	{"CLRB", KOC_opcode, 1, 89 },
X	{"CLV", KOC_opcode, 1, 90 },
X	{"CMP", KOC_opcode, 3, 91 },
X	{"CMPA", KOC_opcode, 3, 94 },
X	{"CMPB", KOC_opcode, 3, 97 },
X	{"COM", KOC_opcode, 3, 100 },
X	{"COMA", KOC_opcode, 1, 103 },
X	{"COMB", KOC_opcode, 1, 104 },
X	{"CPD", KOC_opcode, 3, 105 },
X	{"CPU", KOC_CPU, 0, 0 },
X	{"CPX", KOC_opcode, 3, 108 },
X	{"CPY", KOC_opcode, 3, 111 },
X	{"DAA", KOC_opcode, 1, 114 },
X	{"DB", KOC_BDEF, 0, 0 },
X	{"DEC", KOC_opcode, 3, 115 },
X	{"DECA", KOC_opcode, 1, 118 },
X	{"DECB", KOC_opcode, 1, 119 },
X	{"DES", KOC_opcode, 1, 120 },
X	{"DEX", KOC_opcode, 1, 121 },
X	{"DEY", KOC_opcode, 1, 122 },
X	{"DW", KOC_WDEF, 0, 0 },
X	{"ELSE", KOC_ELSE, 0, 0 },
X	{"END", KOC_END, 0, 0 },
X	{"ENDI", KOC_ENDI, 0, 0 },
X	{"EOR", KOC_opcode, 3, 123 },
X	{"EORA", KOC_opcode, 3, 126 },
X	{"EORB", KOC_opcode, 3, 129 },
X	{"EQU", KOC_EQU, 0, 0 },
X	{"FCB", KOC_BDEF, 0, 0 },
X	{"FCC", KOC_SDEF, 0, 0 },
X	{"FDB", KOC_WDEF, 0, 0 },
X	{"FDIV", KOC_opcode, 1, 132 },
X	{"IDIV", KOC_opcode, 1, 133 },
X	{"IF", KOC_IF, 0, 0 },
X	{"INC", KOC_opcode, 3, 134 },
X	{"INCA", KOC_opcode, 1, 137 },
X	{"INCB", KOC_opcode, 1, 138 },
X	{"INCL", KOC_INCLUDE, 0, 0 },
X	{"INCLUDE", KOC_INCLUDE, 0, 0 },
X	{"INS", KOC_opcode, 1, 139 },
X	{"INX", KOC_opcode, 1, 140 },
X	{"INY", KOC_opcode, 1, 141 },
X	{"JMP", KOC_opcode, 2, 142 },
X	{"JSR", KOC_opcode, 2, 144 },
X	{"LDA", KOC_opcode, 3, 146 },
X	{"LDAA", KOC_opcode, 3, 149 },
X	{"LDAB", KOC_opcode, 3, 152 },
X	{"LDD", KOC_opcode, 3, 155 },
X	{"LDS", KOC_opcode, 3, 158 },
X	{"LDX", KOC_opcode, 3, 161 },
X	{"LDY", KOC_opcode, 3, 164 },
X	{"LSL", KOC_opcode, 3, 167 },
X	{"LSLA", KOC_opcode, 1, 170 },
X	{"LSLB", KOC_opcode, 1, 171 },
X	{"LSLD", KOC_opcode, 1, 172 },
X	{"LSR", KOC_opcode, 3, 173 },
X	{"LSRA", KOC_opcode, 1, 176 },
X	{"LSRB", KOC_opcode, 1, 177 },
X	{"LSRD", KOC_opcode, 1, 178 },
X	{"MUL", KOC_opcode, 1, 179 },
X	{"NEG", KOC_opcode, 3, 180 },
X	{"NEGA", KOC_opcode, 1, 183 },
X	{"NEGB", KOC_opcode, 1, 184 },
X	{"NOP", KOC_opcode, 1, 185 },
X	{"ORA", KOC_opcode, 3, 186 },
X	{"ORAA", KOC_opcode, 3, 189 },
X	{"ORAB", KOC_opcode, 3, 192 },
X	{"ORG", KOC_ORG, 0, 0 },
X	{"PSH", KOC_opcode, 2, 195 },
X	{"PSHA", KOC_opcode, 1, 197 },
X	{"PSHB", KOC_opcode, 1, 198 },
X	{"PSHX", KOC_opcode, 1, 199 },
X	{"PSHY", KOC_opcode, 1, 200 },
X	{"PUL", KOC_opcode, 2, 201 },
X	{"PULA", KOC_opcode, 1, 203 },
X	{"PULB", KOC_opcode, 1, 204 },
X	{"PULX", KOC_opcode, 1, 205 },
X	{"PULY", KOC_opcode, 1, 206 },
X	{"RESERVE", KOC_RESM, 0, 0 },
X	{"RMB", KOC_RESM, 0, 0 },
X	{"ROL", KOC_opcode, 3, 207 },
X	{"ROLA", KOC_opcode, 1, 210 },
X	{"ROLB", KOC_opcode, 1, 211 },
X	{"ROR", KOC_opcode, 3, 212 },
X	{"RORA", KOC_opcode, 1, 215 },
X	{"RORB", KOC_opcode, 1, 216 },
X	{"RTI", KOC_opcode, 1, 217 },
X	{"RTS", KOC_opcode, 1, 218 },
X	{"SBA", KOC_opcode, 1, 219 },
X	{"SBC", KOC_opcode, 3, 220 },
X	{"SBCA", KOC_opcode, 3, 223 },
X	{"SBCB", KOC_opcode, 3, 226 },
X	{"SEC", KOC_opcode, 1, 229 },
X	{"SEI", KOC_opcode, 1, 230 },
X	{"SET", KOC_SET, 0, 0 },
X	{"SEV", KOC_opcode, 1, 231 },
X	{"STA", KOC_opcode, 2, 232 },
X	{"STAA", KOC_opcode, 2, 234 },
X	{"STAB", KOC_opcode, 2, 236 },
X	{"STD", KOC_opcode, 2, 238 },
X	{"STOP", KOC_opcode, 1, 240 },
X	{"STRING", KOC_SDEF, 0, 0 },
X	{"STS", KOC_opcode, 2, 241 },
X	{"STX", KOC_opcode, 2, 243 },
X	{"STY", KOC_opcode, 2, 245 },
X	{"SUB", KOC_opcode, 3, 247 },
X	{"SUBA", KOC_opcode, 3, 250 },
X	{"SUBB", KOC_opcode, 3, 253 },
X	{"SUBD", KOC_opcode, 3, 256 },
X	{"SWI", KOC_opcode, 1, 259 },
X	{"TAB", KOC_opcode, 1, 260 },
X	{"TAP", KOC_opcode, 1, 261 },
X	{"TBA", KOC_opcode, 1, 262 },
X	{"TEST", KOC_opcode, 1, 263 },
X	{"TPA", KOC_opcode, 1, 264 },
X	{"TST", KOC_opcode, 3, 265 },
X	{"TSTA", KOC_opcode, 1, 268 },
X	{"TSTB", KOC_opcode, 1, 269 },
X	{"TSX", KOC_opcode, 1, 270 },
X	{"TSY", KOC_opcode, 1, 271 },
X	{"TXS", KOC_opcode, 1, 272 },
X	{"TYS", KOC_opcode, 1, 273 },
X	{"WAI", KOC_opcode, 1, 274 },
X	{"WORD", KOC_WDEF, 0, 0 },
X	{"XGDX", KOC_opcode, 1, 275 },
X	{"XGDY", KOC_opcode, 1, 276 },
X	{ "", 0, 0, 0 }};
X
Xstruct opsynt ostab[NUMSYNBLK+1]
X	= {
X/* invalid 0 */ { 0, 1, 0 },
X/* invalid 1 */ { 0xffff, 1, 1 },
X/* ABA 2 */ { ST_INH, 1, 2 },
X/* ABX 3 */ { ST_INH, 1, 3 },
X/* ABY 4 */ { ST_INH, 1, 4 },
X/* ADC 5 */ { ST_AEXP, 4, 5 },
X/* ADC 6 */ { ST_AIMM, 2, 9 },
X/* ADC 7 */ { ST_AIND, 4, 11 },
X/* ADCA 8 */ { ST_EXP, 2, 15 },
X/* ADCA 9 */ { ST_IMM, 1, 17 },
X/* ADCA 10 */ { ST_IND, 2, 18 },
X/* ADCB 11 */ { ST_EXP, 2, 20 },
X/* ADCB 12 */ { ST_IMM, 1, 22 },
X/* ADCB 13 */ { ST_IND, 2, 23 },
X/* ADD 14 */ { ST_AEXP, 4, 25 },
X/* ADD 15 */ { ST_AIMM, 2, 29 },
X/* ADD 16 */ { ST_AIND, 4, 31 },
X/* ADDA 17 */ { ST_EXP, 2, 35 },
X/* ADDA 18 */ { ST_IMM, 1, 37 },
X/* ADDA 19 */ { ST_IND, 2, 38 },
X/* ADDB 20 */ { ST_EXP, 2, 40 },
X/* ADDB 21 */ { ST_IMM, 1, 42 },
X/* ADDB 22 */ { ST_IND, 2, 43 },
X/* ADDD 23 */ { ST_EXP, 2, 45 },
X/* ADDD 24 */ { ST_IMM, 1, 47 },
X/* ADDD 25 */ { ST_IND, 2, 48 },
X/* AND 26 */ { ST_AEXP, 4, 50 },
X/* AND 27 */ { ST_AIMM, 2, 54 },
X/* AND 28 */ { ST_AIND, 4, 56 },
X/* ANDA 29 */ { ST_EXP, 2, 60 },
X/* ANDA 30 */ { ST_IMM, 1, 62 },
X/* ANDA 31 */ { ST_IND, 2, 63 },
X/* ANDB 32 */ { ST_EXP, 2, 65 },
X/* ANDB 33 */ { ST_IMM, 1, 67 },
X/* ANDB 34 */ { ST_IND, 2, 68 },
X/* ASL 35 */ { ST_ACC, 2, 70 },
X/* ASL 36 */ { ST_EXP, 1, 72 },
X/* ASL 37 */ { ST_IND, 2, 73 },
X/* ASLA 38 */ { ST_INH, 1, 75 },
X/* ASLB 39 */ { ST_INH, 1, 76 },
X/* ASLD 40 */ { ST_INH, 1, 77 },
X/* ASR 41 */ { ST_ACC, 2, 78 },
X/* ASR 42 */ { ST_EXP, 1, 80 },
X/* ASR 43 */ { ST_IND, 2, 81 },
X/* ASRA 44 */ { ST_INH, 1, 83 },
X/* ASRB 45 */ { ST_INH, 1, 84 },
X/* BCC 46 */ { ST_EXP, 1, 85 },
X/* BCLR 47 */ { ST_BSET, 1, 86 },
X/* BCLR 48 */ { ST_IBSET, 2, 87 },
X/* BCS 49 */ { ST_EXP, 1, 89 },
X/* BEQ 50 */ { ST_EXP, 1, 90 },
X/* BGE 51 */ { ST_EXP, 1, 91 },
X/* BGT 52 */ { ST_EXP, 1, 92 },
X/* BHI 53 */ { ST_EXP, 1, 93 },
X/* BHS 54 */ { ST_EXP, 1, 94 },
X/* BIT 55 */ { ST_AEXP, 4, 95 },
X/* BIT 56 */ { ST_AIMM, 2, 99 },
X/* BIT 57 */ { ST_AIND, 4, 101 },
X/* BITA 58 */ { ST_EXP, 2, 105 },
X/* BITA 59 */ { ST_IMM, 1, 107 },
X/* BITA 60 */ { ST_IND, 2, 108 },
X/* BITB 61 */ { ST_EXP, 2, 110 },
X/* BITB 62 */ { ST_IMM, 1, 112 },
X/* BITB 63 */ { ST_IND, 2, 113 },
X/* BLE 64 */ { ST_EXP, 1, 115 },
X/* BLO 65 */ { ST_EXP, 1, 116 },
X/* BLS 66 */ { ST_EXP, 1, 117 },
X/* BLT 67 */ { ST_EXP, 1, 118 },
X/* BMI 68 */ { ST_EXP, 1, 119 },
X/* BNE 69 */ { ST_EXP, 1, 120 },
X/* BPL 70 */ { ST_EXP, 1, 121 },
X/* BRA 71 */ { ST_EXP, 1, 122 },
X/* BRCLR 72 */ { ST_BRSET, 1, 123 },
X/* BRCLR 73 */ { ST_IBRSET, 2, 124 },
X/* BRN 74 */ { ST_EXP, 1, 126 },
X/* BRSET 75 */ { ST_BRSET, 1, 127 },
X/* BRSET 76 */ { ST_IBRSET, 2, 128 },
X/* BSET 77 */ { ST_BSET, 1, 130 },
X/* BSET 78 */ { ST_IBSET, 2, 131 },
X/* BSR 79 */ { ST_EXP, 1, 133 },
X/* BVC 80 */ { ST_EXP, 1, 134 },
X/* BVS 81 */ { ST_EXP, 1, 135 },
X/* CBA 82 */ { ST_INH, 1, 136 },
X/* CLC 83 */ { ST_INH, 1, 137 },
X/* CLI 84 */ { ST_INH, 1, 138 },
X/* CLR 85 */ { ST_ACC, 2, 139 },
X/* CLR 86 */ { ST_EXP, 1, 141 },
X/* CLR 87 */ { ST_IND, 2, 142 },
X/* CLRA 88 */ { ST_INH, 1, 144 },
X/* CLRB 89 */ { ST_INH, 1, 145 },
X/* CLV 90 */ { ST_INH, 1, 146 },
X/* CMP 91 */ { ST_AEXP, 4, 147 },
X/* CMP 92 */ { ST_AIMM, 2, 151 },
X/* CMP 93 */ { ST_AIND, 4, 153 },
X/* CMPA 94 */ { ST_EXP, 2, 157 },
X/* CMPA 95 */ { ST_IMM, 1, 159 },
X/* CMPA 96 */ { ST_IND, 2, 160 },
X/* CMPB 97 */ { ST_EXP, 2, 162 },
X/* CMPB 98 */ { ST_IMM, 1, 164 },
X/* CMPB 99 */ { ST_IND, 2, 165 },
X/* COM 100 */ { ST_ACC, 2, 167 },
X/* COM 101 */ { ST_EXP, 1, 169 },
X/* COM 102 */ { ST_IND, 2, 170 },
X/* COMA 103 */ { ST_INH, 1, 172 },
X/* COMB 104 */ { ST_INH, 1, 173 },
X/* CPD 105 */ { ST_EXP, 2, 174 },
X/* CPD 106 */ { ST_IMM, 1, 176 },
X/* CPD 107 */ { ST_IND, 2, 177 },
X/* CPX 108 */ { ST_EXP, 2, 179 },
X/* CPX 109 */ { ST_IMM, 1, 181 },
X/* CPX 110 */ { ST_IND, 2, 182 },
X/* CPY 111 */ { ST_EXP, 2, 184 },
X/* CPY 112 */ { ST_IMM, 1, 186 },
X/* CPY 113 */ { ST_IND, 2, 187 },
X/* DAA 114 */ { ST_INH, 1, 189 },
X/* DEC 115 */ { ST_ACC, 2, 190 },
X/* DEC 116 */ { ST_EXP, 1, 192 },
X/* DEC 117 */ { ST_IND, 2, 193 },
X/* DECA 118 */ { ST_INH, 1, 195 },
X/* DECB 119 */ { ST_INH, 1, 196 },
X/* DES 120 */ { ST_INH, 1, 197 },
X/* DEX 121 */ { ST_INH, 1, 198 },
X/* DEY 122 */ { ST_INH, 1, 199 },
X/* EOR 123 */ { ST_AEXP, 4, 200 },
X/* EOR 124 */ { ST_AIMM, 2, 204 },
X/* EOR 125 */ { ST_AIND, 4, 206 },
X/* EORA 126 */ { ST_EXP, 2, 210 },
X/* EORA 127 */ { ST_IMM, 1, 212 },
X/* EORA 128 */ { ST_IND, 2, 213 },
X/* EORB 129 */ { ST_EXP, 2, 215 },
X/* EORB 130 */ { ST_IMM, 1, 217 },
X/* EORB 131 */ { ST_IND, 2, 218 },
X/* FDIV 132 */ { ST_INH, 1, 220 },
X/* IDIV 133 */ { ST_INH, 1, 221 },
X/* INC 134 */ { ST_ACC, 2, 222 },
X/* INC 135 */ { ST_EXP, 1, 224 },
X/* INC 136 */ { ST_IND, 2, 225 },
X/* INCA 137 */ { ST_INH, 1, 227 },
X/* INCB 138 */ { ST_INH, 1, 228 },
X/* INS 139 */ { ST_INH, 1, 229 },
X/* INX 140 */ { ST_INH, 1, 230 },
X/* INY 141 */ { ST_INH, 1, 231 },
X/* JMP 142 */ { ST_EXP, 1, 232 },
X/* JMP 143 */ { ST_IND, 2, 233 },
X/* JSR 144 */ { ST_EXP, 3, 235 },
X/* JSR 145 */ { ST_IND, 2, 238 },
X/* LDA 146 */ { ST_AEXP, 4, 240 },
X/* LDA 147 */ { ST_AIMM, 2, 244 },
X/* LDA 148 */ { ST_AIND, 4, 246 },
X/* LDAA 149 */ { ST_EXP, 2, 250 },
X/* LDAA 150 */ { ST_IMM, 1, 252 },
X/* LDAA 151 */ { ST_IND, 2, 253 },
X/* LDAB 152 */ { ST_EXP, 2, 255 },
X/* LDAB 153 */ { ST_IMM, 1, 257 },
X/* LDAB 154 */ { ST_IND, 2, 258 },
X/* LDD 155 */ { ST_EXP, 2, 260 },
X/* LDD 156 */ { ST_IMM, 1, 262 },
X/* LDD 157 */ { ST_IND, 2, 263 },
X/* LDS 158 */ { ST_EXP, 2, 265 },
X/* LDS 159 */ { ST_IMM, 1, 267 },
X/* LDS 160 */ { ST_IND, 2, 268 },
X/* LDX 161 */ { ST_EXP, 2, 270 },
X/* LDX 162 */ { ST_IMM, 1, 272 },
X/* LDX 163 */ { ST_IND, 2, 273 },
X/* LDY 164 */ { ST_EXP, 2, 275 },
X/* LDY 165 */ { ST_IMM, 1, 277 },
X/* LDY 166 */ { ST_IND, 2, 278 },
X/* LSL 167 */ { ST_ACC, 2, 280 },
X/* LSL 168 */ { ST_EXP, 1, 282 },
X/* LSL 169 */ { ST_IND, 2, 283 },
X/* LSLA 170 */ { ST_INH, 1, 285 },
X/* LSLB 171 */ { ST_INH, 1, 286 },
X/* LSLD 172 */ { ST_INH, 1, 287 },
X/* LSR 173 */ { ST_ACC, 2, 288 },
X/* LSR 174 */ { ST_EXP, 1, 290 },
X/* LSR 175 */ { ST_IND, 2, 291 },
X/* LSRA 176 */ { ST_INH, 1, 293 },
X/* LSRB 177 */ { ST_INH, 1, 294 },
X/* LSRD 178 */ { ST_INH, 1, 295 },
X/* MUL 179 */ { ST_INH, 1, 296 },
X/* NEG 180 */ { ST_ACC, 2, 297 },
X/* NEG 181 */ { ST_EXP, 1, 299 },
X/* NEG 182 */ { ST_IND, 2, 300 },
X/* NEGA 183 */ { ST_INH, 1, 302 },
X/* NEGB 184 */ { ST_INH, 1, 303 },
X/* NOP 185 */ { ST_INH, 1, 304 },
X/* ORA 186 */ { ST_AEXP, 4, 305 },
X/* ORA 187 */ { ST_AIMM, 2, 309 },
X/* ORA 188 */ { ST_AIND, 4, 311 },
X/* ORAA 189 */ { ST_EXP, 2, 315 },
X/* ORAA 190 */ { ST_IMM, 1, 317 },
X/* ORAA 191 */ { ST_IND, 2, 318 },
X/* ORAB 192 */ { ST_EXP, 2, 320 },
X/* ORAB 193 */ { ST_IMM, 1, 322 },
X/* ORAB 194 */ { ST_IND, 2, 323 },
X/* PSH 195 */ { ST_ACC, 2, 325 },
X/* PSH 196 */ { ST_INDREG, 2, 327 },
X/* PSHA 197 */ { ST_INH, 1, 329 },
X/* PSHB 198 */ { ST_INH, 1, 330 },
X/* PSHX 199 */ { ST_INH, 1, 331 },
X/* PSHY 200 */ { ST_INH, 1, 332 },
X/* PUL 201 */ { ST_ACC, 2, 333 },
X/* PUL 202 */ { ST_INDREG, 2, 335 },
X/* PULA 203 */ { ST_INH, 1, 337 },
X/* PULB 204 */ { ST_INH, 1, 338 },
X/* PULX 205 */ { ST_INH, 1, 339 },
X/* PULY 206 */ { ST_INH, 1, 340 },
X/* ROL 207 */ { ST_ACC, 2, 341 },
X/* ROL 208 */ { ST_EXP, 1, 343 },
X/* ROL 209 */ { ST_IND, 2, 344 },
X/* ROLA 210 */ { ST_INH, 1, 346 },
X/* ROLB 211 */ { ST_INH, 1, 347 },
X/* ROR 212 */ { ST_ACC, 2, 348 },
X/* ROR 213 */ { ST_EXP, 1, 350 },
X/* ROR 214 */ { ST_IND, 2, 351 },
X/* RORA 215 */ { ST_INH, 1, 353 },
X/* RORB 216 */ { ST_INH, 1, 354 },
X/* RTI 217 */ { ST_INH, 1, 355 },
X/* RTS 218 */ { ST_INH, 1, 356 },
X/* SBA 219 */ { ST_INH, 1, 357 },
X/* SBC 220 */ { ST_AEXP, 4, 358 },
X/* SBC 221 */ { ST_AIMM, 2, 362 },
X/* SBC 222 */ { ST_AIND, 4, 364 },
X/* SBCA 223 */ { ST_EXP, 2, 368 },
X/* SBCA 224 */ { ST_IMM, 1, 370 },
X/* SBCA 225 */ { ST_IND, 2, 371 },
X/* SBCB 226 */ { ST_EXP, 2, 373 },
X/* SBCB 227 */ { ST_IMM, 1, 375 },
X/* SBCB 228 */ { ST_IND, 2, 376 },
X/* SEC 229 */ { ST_INH, 1, 378 },
X/* SEI 230 */ { ST_INH, 1, 379 },
X/* SEV 231 */ { ST_INH, 1, 380 },
X/* STA 232 */ { ST_AEXP, 4, 381 },
X/* STA 233 */ { ST_AIND, 4, 385 },
X/* STAA 234 */ { ST_EXP, 2, 389 },
X/* STAA 235 */ { ST_IND, 2, 391 },
X/* STAB 236 */ { ST_EXP, 2, 393 },
X/* STAB 237 */ { ST_IND, 2, 395 },
X/* STD 238 */ { ST_EXP, 2, 397 },
X/* STD 239 */ { ST_IND, 2, 399 },
X/* STOP 240 */ { ST_INH, 1, 401 },
X/* STS 241 */ { ST_EXP, 2, 402 },
X/* STS 242 */ { ST_IND, 2, 404 },
X/* STX 243 */ { ST_EXP, 2, 406 },
X/* STX 244 */ { ST_IND, 2, 408 },
X/* STY 245 */ { ST_EXP, 2, 410 },
X/* STY 246 */ { ST_IND, 2, 412 },
X/* SUB 247 */ { ST_AEXP, 4, 414 },
X/* SUB 248 */ { ST_AIMM, 2, 418 },
X/* SUB 249 */ { ST_AIND, 4, 420 },
X/* SUBA 250 */ { ST_EXP, 2, 424 },
X/* SUBA 251 */ { ST_IMM, 1, 426 },
X/* SUBA 252 */ { ST_IND, 2, 427 },
X/* SUBB 253 */ { ST_EXP, 2, 429 },
X/* SUBB 254 */ { ST_IMM, 1, 431 },
X/* SUBB 255 */ { ST_IND, 2, 432 },
X/* SUBD 256 */ { ST_EXP, 2, 434 },
X/* SUBD 257 */ { ST_IMM, 1, 436 },
X/* SUBD 258 */ { ST_IND, 2, 437 },
X/* SWI 259 */ { ST_INH, 1, 439 },
X/* TAB 260 */ { ST_INH, 1, 440 },
X/* TAP 261 */ { ST_INH, 1, 441 },
X/* TBA 262 */ { ST_INH, 1, 442 },
X/* TEST 263 */ { ST_INH, 1, 443 },
X/* TPA 264 */ { ST_INH, 1, 444 },
X/* TST 265 */ { ST_ACC, 2, 445 },
X/* TST 266 */ { ST_EXP, 1, 447 },
X/* TST 267 */ { ST_IND, 2, 448 },
X/* TSTA 268 */ { ST_INH, 1, 450 },
X/* TSTB 269 */ { ST_INH, 1, 451 },
X/* TSX 270 */ { ST_INH, 1, 452 },
X/* TSY 271 */ { ST_INH, 1, 453 },
X/* TXS 272 */ { ST_INH, 1, 454 },
X/* TYS 273 */ { ST_INH, 1, 455 },
X/* WAI 274 */ { ST_INH, 1, 456 },
X/* XGDX 275 */ { ST_INH, 1, 457 },
X/* XGDY 276 */ { ST_INH, 1, 458 },
X	{ 0, 0, 0 } };
X
Xstruct igel igtab[NUMDIFFOP+1]
X	= {
X/* invalid 0 */   { 0 , 0, 
X		"[Xnullentry" },
X/* invalid 1 */   { 0 , 0, 
X		"[Xinvalid opcode" },
X/* ABA 2 */   { 0 , 0, 
X		"1b;" },
X/* ABX 3 */   { TS6801PLUS , TS6801PLUS, 
X		"3a;" },
X/* ABY 4 */   { TS6811 , TS6811, 
X		"18;3a;" },
X/* ADC 5 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"99;[1=];" },
X/* ADC 6 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b9;[1=]x" },
X/* ADC 7 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d9;[1=];" },
X/* ADC 8 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f9;[1=]x" },
X/* ADC 9 */   { ACCREG , REGA, 
X		"89;[1=];" },
X/* ADC 10 */   { ACCREG , REGB, 
X		"c9;[1=];" },
X/* ADC 11 */   { ACCREG+INDREG , REGA+REGX, 
X		"a9;[1=];" },
X/* ADC 12 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a9;[1=];" },
X/* ADC 13 */   { ACCREG+INDREG , REGB+REGX, 
X		"e9;[1=];" },
X/* ADC 14 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e9;[1=];" },
X/* ADCA 15 */   { ADDR , DIRECT, 
X		"99;[1=];" },
X/* ADCA 16 */   { ADDR , EXTENDED, 
X		"b9;[1=]x" },
X/* ADCA 17 */   { 0 , 0, 
X		"89;[1=];" },
X/* ADCA 18 */   { INDREG , REGX, 
X		"a9;[1=];" },
X/* ADCA 19 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a9;[1=];" },
X/* ADCB 20 */   { ADDR , DIRECT, 
X		"d9;[1=];" },
X/* ADCB 21 */   { ADDR , EXTENDED, 
X		"f9;[1=]x" },
X/* ADCB 22 */   { 0 , 0, 
X		"c9;[1=];" },
X/* ADCB 23 */   { INDREG , REGX, 
X		"e9;[1=];" },
X/* ADCB 24 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e9;[1=];" },
X/* ADD 25 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"9b;[1=];" },
X/* ADD 26 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"bb;[1=]x" },
X/* ADD 27 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"db;[1=];" },
X/* ADD 28 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"fb;[1=]x" },
X/* ADD 29 */   { ACCREG , REGA, 
X		"8b;[1=];" },
X/* ADD 30 */   { ACCREG , REGB, 
X		"cb;[1=];" },
X/* ADD 31 */   { ACCREG+INDREG , REGA+REGX, 
X		"ab;[1=];" },
X/* ADD 32 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;ab;[1=];" },
X/* ADD 33 */   { ACCREG+INDREG , REGB+REGX, 
X		"eb;[1=];" },
X/* ADD 34 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;eb;[1=];" },
X/* ADDA 35 */   { ADDR , DIRECT, 
X		"9b;[1=];" },
X/* ADDA 36 */   { ADDR , EXTENDED, 
X		"bb;[1=]x" },
X/* ADDA 37 */   { 0 , 0, 
X		"8b;[1=];" },
X/* ADDA 38 */   { INDREG , REGX, 
X		"ab;[1=];" },
X/* ADDA 39 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ab;[1=];" },
X/* ADDB 40 */   { ADDR , DIRECT, 
X		"db;[1=];" },
X/* ADDB 41 */   { ADDR , EXTENDED, 
X		"fb;[1=]x" },
X/* ADDB 42 */   { 0 , 0, 
X		"cb;[1=];" },
X/* ADDB 43 */   { INDREG , REGX, 
X		"eb;[1=];" },
X/* ADDB 44 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;eb;[1=];" },
X/* ADDD 45 */   { ADDR+TS6801PLUS , DIRECT+TS6801PLUS, 
X		"d3;[1=];" },
X/* ADDD 46 */   { ADDR+TS6801PLUS , EXTENDED+TS6801PLUS, 
X		"f3;[1=]x" },
X/* ADDD 47 */   { TS6801PLUS , 0+TS6801PLUS, 
X		"c3;[1=]x" },
X/* ADDD 48 */   { INDREG+TS6801PLUS , REGX+TS6801PLUS, 
X		"e3;[1=];" },
X/* ADDD 49 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e3;[1=];" },
X/* AND 50 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"94;[1=];" },
X/* AND 51 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b4;[1=]x" },
X/* AND 52 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d4;[1=];" },
X/* AND 53 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f4;[1=]x" },
X/* AND 54 */   { ACCREG , REGA, 
X		"84;[1=];" },
X/* AND 55 */   { ACCREG , REGB, 
X		"c4;[1=];" },
X/* AND 56 */   { ACCREG+INDREG , REGA+REGX, 
X		"a4;[1=];" },
X/* AND 57 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a4;[1=];" },
X/* AND 58 */   { ACCREG+INDREG , REGB+REGX, 
X		"e4;[1=];" },
X/* AND 59 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e4;[1=];" },
X/* ANDA 60 */   { ADDR , DIRECT, 
X		"94;[1=];" },
X/* ANDA 61 */   { ADDR , EXTENDED, 
X		"b4;[1=]x" },
X/* ANDA 62 */   { 0 , 0, 
X		"84;[1=];" },
X/* ANDA 63 */   { INDREG , REGX, 
X		"a4;[1=];" },
X/* ANDA 64 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a4;[1=];" },
X/* ANDB 65 */   { ADDR , DIRECT, 
X		"d4;[1=];" },
X/* ANDB 66 */   { ADDR , EXTENDED, 
X		"f4;[1=]x" },
X/* ANDB 67 */   { 0 , 0, 
X		"c4;[1=];" },
X/* ANDB 68 */   { INDREG , REGX, 
X		"e4;[1=];" },
X/* ANDB 69 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e4;[1=];" },
X/* ASL 70 */   { ACCREG , REGA, 
X		"48;" },
X/* ASL 71 */   { ACCREG , REGB, 
X		"58;" },
X/* ASL 72 */   { 0 , 0, 
X		"78;[1=]x" },
X/* ASL 73 */   { INDREG , REGX, 
X		"68;[1=];" },
X/* ASL 74 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;68;[1=];" },
X/* ASLA 75 */   { 0 , 0, 
X		"48;" },
X/* ASLB 76 */   { 0 , 0, 
X		"58;" },
X/* ASLD 77 */   { TS6801PLUS , TS6801PLUS, 
X		"05;" },
X/* ASR 78 */   { ACCREG , REGA, 
X		"47;" },
X/* ASR 79 */   { ACCREG , REGB, 
X		"57;" },
X/* ASR 80 */   { 0 , 0, 
X		"77;[1=]x" },
X/* ASR 81 */   { INDREG , REGX, 
X		"67;[1=];" },
X/* ASR 82 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;67;[1=];" },
X/* ASRA 83 */   { 0 , 0, 
X		"47;" },
X/* ASRB 84 */   { 0 , 0, 
X		"57;" },
X/* BCC 85 */   { 0 , 0, 
X		"24;[1=].P.2+-r" },
X/* BCLR 86 */   { TS6811 , TS6811, 
X		"15;[1=];[2=];" },
X/* BCLR 87 */   { INDREG+TS6811 , REGX+TS6811, 
X		"1d;[1=];[2=];" },
X/* BCLR 88 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;1d;[1=];[2=];" },
X/* BCS 89 */   { 0 , 0, 
X		"25;[1=].P.2+-r" },
X/* BEQ 90 */   { 0 , 0, 
X		"27;[1=].P.2+-r" },
X/* BGE 91 */   { 0 , 0, 
X		"2c;[1=].P.2+-r" },
X/* BGT 92 */   { 0 , 0, 
X		"2e;[1=].P.2+-r" },
X/* BHI 93 */   { 0 , 0, 
X		"22;[1=].P.2+-r" },
X/* BHS 94 */   { 0 , 0, 
X		"24;[1=].P.2+-r" },
X/* BIT 95 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"95;[1=];" },
X/* BIT 96 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b5;[1=]x" },
X/* BIT 97 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d5;[1=];" },
X/* BIT 98 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f5;[1=]x" },
X/* BIT 99 */   { ACCREG , REGA, 
X		"85;[1=];" },
X/* BIT 100 */   { ACCREG , REGB, 
X		"c5;[1=];" },
X/* BIT 101 */   { ACCREG+INDREG , REGA+REGX, 
X		"a5;[1=];" },
X/* BIT 102 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a5;[1=];" },
X/* BIT 103 */   { ACCREG+INDREG , REGB+REGX, 
X		"e5;[1=];" },
X/* BIT 104 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e5;[1=];" },
X/* BITA 105 */   { ADDR , DIRECT, 
X		"95;[1=];" },
X/* BITA 106 */   { ADDR , EXTENDED, 
X		"b5;[1=]x" },
X/* BITA 107 */   { 0 , 0, 
X		"85;[1=];" },
X/* BITA 108 */   { INDREG , REGX, 
X		"a5;[1=];" },
X/* BITA 109 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a5;[1=];" },
X/* BITB 110 */   { ADDR , DIRECT, 
X		"d5;[1=];" },
X/* BITB 111 */   { ADDR , EXTENDED, 
X		"f5;[1=]x" },
X/* BITB 112 */   { 0 , 0, 
X		"c5;[1=];" },
X/* BITB 113 */   { INDREG , REGX, 
X		"e5;[1=];" },
X/* BITB 114 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e5;[1=];" },
X/* BLE 115 */   { 0 , 0, 
X		"2f;[1=].P.2+-r" },
X/* BLO 116 */   { 0 , 0, 
X		"25;[1=].P.2+-r" },
X/* BLS 117 */   { 0 , 0, 
X		"23;[1=].P.2+-r" },
X/* BLT 118 */   { 0 , 0, 
X		"2d;[1=].P.2+-r" },
X/* BMI 119 */   { 0 , 0, 
X		"2b;[1=].P.2+-r" },
X/* BNE 120 */   { 0 , 0, 
X		"26;[1=].P.2+-r" },
X/* BPL 121 */   { 0 , 0, 
X		"2a;[1=].P.2+-r" },
X/* BRA 122 */   { 0 , 0, 
X		"20;[1=].P.2+-r" },
X/* BRCLR 123 */   { TS6811 , TS6811, 
X		"13;[1=];[2=];[3=].P.4+-r" },
X/* BRCLR 124 */   { INDREG+TS6811 , REGX+TS6811, 
X		"1f;[1=];[2=];[3=].P.4+-r" },
X/* BRCLR 125 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;1f;[1=];[2=];[3=].P.5+-r" },
X/* BRN 126 */   { TS6801PLUS , TS6801PLUS, 
X		"21;[1=].P.2+-r" },
X/* BRSET 127 */   { TS6811 , TS6811, 
X		"12;[1=];[2=];[3=].P.4+-r" },
X/* BRSET 128 */   { INDREG+TS6811 , REGX+TS6811, 
X		"1e;[1=];[2=];[3=].P.4+-r" },
X/* BRSET 129 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;1e;[1=];[2=];[3=].P.5+-r" },
X/* BSET 130 */   { TS6811 , TS6811, 
X		"14;[1=];[2=];" },
X/* BSET 131 */   { INDREG+TS6811 , REGX+TS6811, 
X		"1c;[1=];[2=];" },
X/* BSET 132 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;1c;[1=];[2=];" },
X/* BSR 133 */   { 0 , 0, 
X		"8d;[1=].P.2+-r" },
X/* BVC 134 */   { 0 , 0, 
X		"28;[1=].P.2+-r" },
X/* BVS 135 */   { 0 , 0, 
X		"29;[1=].P.2+-r" },
X/* CBA 136 */   { 0 , 0, 
X		"11;" },
X/* CLC 137 */   { 0 , 0, 
X		"0c;" },
X/* CLI 138 */   { 0 , 0, 
X		"0e;" },
X/* CLR 139 */   { ACCREG , REGA, 
X		"4f;" },
X/* CLR 140 */   { ACCREG , REGB, 
X		"5f;" },
X/* CLR 141 */   { 0 , 0, 
X		"7f;[1=]x" },
X/* CLR 142 */   { INDREG , REGX, 
X		"6f;[1=];" },
X/* CLR 143 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;6f;[1=];" },
X/* CLRA 144 */   { 0 , 0, 
X		"4f;" },
X/* CLRB 145 */   { 0 , 0, 
X		"5f;" },
X/* CLV 146 */   { 0 , 0, 
X		"0a;" },
X/* CMP 147 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"91;[1=];" },
X/* CMP 148 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b1;[1=]x" },
X/* CMP 149 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d1;[1=];" },
X/* CMP 150 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f1;[1=]x" },
X/* CMP 151 */   { ACCREG , REGA, 
X		"81;[1=];" },
X/* CMP 152 */   { ACCREG , REGB, 
X		"c1;[1=];" },
X/* CMP 153 */   { ACCREG+INDREG , REGA+REGX, 
X		"a1;[1=];" },
X/* CMP 154 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a1;[1=];" },
X/* CMP 155 */   { ACCREG+INDREG , REGB+REGX, 
X		"e1;[1=];" },
X/* CMP 156 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e1;[1=];" },
X/* CMPA 157 */   { ADDR , DIRECT, 
X		"91;[1=];" },
X/* CMPA 158 */   { ADDR , EXTENDED, 
X		"b1;[1=]x" },
X/* CMPA 159 */   { 0 , 0, 
X		"81;[1=];" },
X/* CMPA 160 */   { INDREG , REGX, 
X		"a1;[1=];" },
X/* CMPA 161 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a1;[1=];" },
X/* CMPB 162 */   { ADDR , DIRECT, 
X		"d1;[1=];" },
X/* CMPB 163 */   { ADDR , EXTENDED, 
X		"f1;[1=]x" },
X/* CMPB 164 */   { 0 , 0, 
X		"c1;[1=];" },
X/* CMPB 165 */   { INDREG , REGX, 
X		"e1;[1=];" },
X/* CMPB 166 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e1;[1=];" },
X/* COM 167 */   { ACCREG , REGA, 
X		"43;" },
X/* COM 168 */   { ACCREG , REGB, 
X		"53;" },
X/* COM 169 */   { 0 , 0, 
X		"73;[1=]x" },
X/* COM 170 */   { INDREG , REGX, 
X		"63;[1=];" },
X/* COM 171 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;63;[1=];" },
X/* COMA 172 */   { 0 , 0, 
X		"43;" },
X/* COMB 173 */   { 0 , 0, 
X		"53;" },
X/* CPD 174 */   { ADDR+TS6811 , DIRECT+TS6811, 
X		"1a;93;[1=];" },
X/* CPD 175 */   { ADDR+TS6811 , EXTENDED+TS6811, 
X		"1a;b3;[1=]x" },
X/* CPD 176 */   { TS6811 , TS6811, 
X		"1a;83;[1=]x" },
X/* CPD 177 */   { INDREG+TS6811 , REGX+TS6811, 
X		"1a;a3;[1=];" },
X/* CPD 178 */   { INDREG+TS6811 , REGY+TS6811, 
X		"cd;a3;[1=];" },
X/* CPX 179 */   { ADDR , DIRECT, 
X		"9c;[1=];" },
X/* CPX 180 */   { ADDR , EXTENDED, 
X		"bc;[1=]x" },
X/* CPX 181 */   { 0 , 0, 
X		"8c;[1=]x" },
X/* CPX 182 */   { INDREG , REGX, 
X		"ac;[1=];" },
X/* CPX 183 */   { INDREG+TS6811 , REGY+TS6811, 
X		"cd;ac;[1=];" },
X/* CPY 184 */   { ADDR+TS6811 , DIRECT+TS6811, 
X		"18;9c;[1=];" },
X/* CPY 185 */   { ADDR+TS6811 , EXTENDED+TS6811, 
X		"18;bc;[1=]x" },
X/* CPY 186 */   { TS6811 , TS6811, 
X		"18;8c;[1=]x" },
X/* CPY 187 */   { INDREG+TS6811 , REGX+TS6811, 
X		"1a;ac;[1=];" },
X/* CPY 188 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ac;[1=];" },
X/* DAA 189 */   { 0 , 0, 
X		"19;" },
X/* DEC 190 */   { ACCREG , REGA, 
X		"4a;" },
X/* DEC 191 */   { ACCREG , REGB, 
X		"5a;" },
X/* DEC 192 */   { 0 , 0, 
X		"7a;[1=]x" },
X/* DEC 193 */   { INDREG , REGX, 
X		"6a;[1=];" },
X/* DEC 194 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;6a;[1=];" },
X/* DECA 195 */   { 0 , 0, 
X		"4a;" },
X/* DECB 196 */   { 0 , 0, 
X		"5a;" },
X/* DES 197 */   { 0 , 0, 
X		"34;" },
X/* DEX 198 */   { 0 , 0, 
X		"09;" },
X/* DEY 199 */   { TS6811 , TS6811, 
X		"18;09;" },
X/* EOR 200 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"98;[1=];" },
X/* EOR 201 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b8;[1=]x" },
X/* EOR 202 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d8;[1=];" },
X/* EOR 203 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f8;[1=]x" },
X/* EOR 204 */   { ACCREG , REGA, 
X		"88;[1=];" },
X/* EOR 205 */   { ACCREG , REGB, 
X		"c8;[1=];" },
X/* EOR 206 */   { ACCREG+INDREG , REGA+REGX, 
X		"a8;[1=];" },
X/* EOR 207 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a8;[1=];" },
X/* EOR 208 */   { ACCREG+INDREG , REGB+REGX, 
X		"e8;[1=];" },
X/* EOR 209 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e8;[1=];" },
X/* EORA 210 */   { ADDR , DIRECT, 
X		"98;[1=];" },
X/* EORA 211 */   { ADDR , EXTENDED, 
X		"b8;[1=]x" },
X/* EORA 212 */   { 0 , 0, 
X		"88;[1=];" },
X/* EORA 213 */   { INDREG , REGX, 
X		"a8;[1=];" },
X/* EORA 214 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a8;[1=];" },
X/* EORB 215 */   { ADDR , DIRECT, 
X		"d8;[1=];" },
X/* EORB 216 */   { ADDR , EXTENDED, 
X		"f8;[1=]x" },
X/* EORB 217 */   { 0 , 0, 
X		"c8;[1=];" },
X/* EORB 218 */   { INDREG , REGX, 
X		"e8;[1=];" },
X/* EORB 219 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e8;[1=];" },
X/* FDIV 220 */   { TS6811 , TS6811, 
X		"03;" },
X/* IDIV 221 */   { TS6811 , TS6811, 
X		"02;" },
X/* INC 222 */   { ACCREG , REGA, 
X		"4c;" },
X/* INC 223 */   { ACCREG , REGB, 
X		"5c;" },
X/* INC 224 */   { 0 , 0, 
X		"7c;[1=]x" },
X/* INC 225 */   { INDREG , REGX, 
X		"6c;[1=];" },
X/* INC 226 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;6c;[1=];" },
X/* INCA 227 */   { 0 , 0, 
X		"4c;" },
X/* INCB 228 */   { 0 , 0, 
X		"5c;" },
X/* INS 229 */   { 0 , 0, 
X		"31;" },
X/* INX 230 */   { 0 , 0, 
X		"08;" },
X/* INY 231 */   { TS6811 , TS6811, 
X		"18;08;" },
X/* JMP 232 */   { 0 , 0, 
X		"7e;[1=]x" },
X/* JMP 233 */   { INDREG , REGX, 
X		"6e;[1=];" },
X/* JMP 234 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;6e;[1=];" },
X/* JSR 235 */   { ADDR+CPUMASK , DIRECT+CPU6800, 
X		"bd;[1=]x" },
X/* JSR 236 */   { ADDR+TS6801PLUS , DIRECT+TS6801PLUS, 
X		"9d;[1=];" },
X/* JSR 237 */   { ADDR , EXTENDED, 
X		"bd;[1=]x" },
X/* JSR 238 */   { INDREG , REGX, 
X		"ad;[1=];" },
X/* JSR 239 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ad;[1=];" },
X/* LDA 240 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"96;[1=];" },
X/* LDA 241 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b6;[1=]x" },
X/* LDA 242 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d6;[1=];" },
X/* LDA 243 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f6;[1=]x" },
X/* LDA 244 */   { ACCREG , REGA, 
X		"86;[1=];" },
X/* LDA 245 */   { ACCREG , REGB, 
X		"c6;[1=];" },
X/* LDA 246 */   { ACCREG+INDREG , REGA+REGX, 
X		"a6;[1=];" },
X/* LDA 247 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a6;[1=];" },
X/* LDA 248 */   { ACCREG+INDREG , REGB+REGX, 
X		"e6;[1=];" },
X/* LDA 249 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e6;[1=];" },
X/* LDAA 250 */   { ADDR , DIRECT, 
X		"96;[1=];" },
X/* LDAA 251 */   { ADDR , EXTENDED, 
X		"b6;[1=]x" },
X/* LDAA 252 */   { 0 , 0, 
X		"86;[1=];" },
X/* LDAA 253 */   { INDREG , REGX, 
X		"a6;[1=];" },
X/* LDAA 254 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a6;[1=];" },
X/* LDAB 255 */   { ADDR , DIRECT, 
X		"d6;[1=];" },
X/* LDAB 256 */   { ADDR , EXTENDED, 
X		"f6;[1=]x" },
X/* LDAB 257 */   { 0 , 0, 
X		"c6;[1=];" },
X/* LDAB 258 */   { INDREG , REGX, 
X		"e6;[1=];" },
X/* LDAB 259 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e6;[1=];" },
X/* LDD 260 */   { ADDR+TS6801PLUS , DIRECT+TS6801PLUS, 
X		"dc;[1=];" },
X/* LDD 261 */   { ADDR+TS6801PLUS , EXTENDED+TS6801PLUS, 
X		"fc;[1=]x" },
X/* LDD 262 */   { TS6801PLUS , TS6801PLUS, 
X		"cc;[1=]x" },
X/* LDD 263 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
X		"ec;[1=];" },
X/* LDD 264 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ec;[1=];" },
X/* LDS 265 */   { ADDR , DIRECT, 
X		"9e;[1=];" },
X/* LDS 266 */   { ADDR , EXTENDED, 
X		"be;[1=]x" },
X/* LDS 267 */   { 0 , 0, 
X		"8e;[1=]x" },
X/* LDS 268 */   { INDREG , REGX, 
X		"ae;[1=];" },
X/* LDS 269 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ae;[1=];" },
X/* LDX 270 */   { ADDR , DIRECT, 
X		"de;[1=];" },
X/* LDX 271 */   { ADDR , EXTENDED, 
X		"fe;[1=]x" },
X/* LDX 272 */   { 0 , 0, 
X		"ce;[1=]x" },
X/* LDX 273 */   { INDREG , REGX, 
X		"ee;[1=];" },
X/* LDX 274 */   { INDREG+TS6811 , REGY+TS6811, 
X		"cd;ee;[1=];" },
X/* LDY 275 */   { TS6811+ADDR , DIRECT+TS6811, 
X		"18;de;[1=];" },
X/* LDY 276 */   { TS6811+ADDR , EXTENDED+TS6811, 
X		"18;fe;[1=]x" },
X/* LDY 277 */   { TS6811 , TS6811, 
X		"18;ce;[1=]x" },
X/* LDY 278 */   { TS6811+INDREG , REGX+TS6811, 
X		"1a;ee;[1=];" },
X/* LDY 279 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ee;[1=];" },
X/* LSL 280 */   { ACCREG , REGA, 
X		"48;" },
X/* LSL 281 */   { ACCREG , REGB, 
X		"58;" },
X/* LSL 282 */   { 0 , 0, 
X		"78;[1=]x" },
X/* LSL 283 */   { INDREG , REGX, 
X		"68;[1=];" },
X/* LSL 284 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;68;[1=];" },
X/* LSLA 285 */   { 0 , 0, 
X		"48;" },
X/* LSLB 286 */   { 0 , 0, 
X		"58;" },
X/* LSLD 287 */   { TS6801PLUS , TS6801PLUS, 
X		"05;" },
X/* LSR 288 */   { ACCREG , REGA, 
X		"44;" },
X/* LSR 289 */   { ACCREG , REGB, 
X		"54;" },
X/* LSR 290 */   { 0 , 0, 
X		"74;[1=]x" },
X/* LSR 291 */   { INDREG , REGX, 
X		"64;[1=];" },
X/* LSR 292 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;64;[1=];" },
X/* LSRA 293 */   { 0 , 0, 
X		"44;" },
X/* LSRB 294 */   { 0 , 0, 
X		"54;" },
X/* LSRD 295 */   { TS6801PLUS , TS6801PLUS, 
X		"04;" },
X/* MUL 296 */   { TS6801PLUS , TS6801PLUS, 
X		"3d;" },
X/* NEG 297 */   { ACCREG , REGA, 
X		"40;" },
X/* NEG 298 */   { ACCREG , REGB, 
X		"50;" },
X/* NEG 299 */   { 0 , 0, 
X		"70;[1=]x" },
X/* NEG 300 */   { INDREG , REGX, 
X		"60;[1=];" },
X/* NEG 301 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;60;[1=];" },
X/* NEGA 302 */   { 0 , 0, 
X		"40;" },
X/* NEGB 303 */   { 0 , 0, 
X		"50;" },
X/* NOP 304 */   { 0 , 0, 
X		"01;" },
X/* ORA 305 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"9a;[1=];" },
X/* ORA 306 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"ba;[1=]x" },
X/* ORA 307 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"da;[1=];" },
X/* ORA 308 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"fa;[1=]x" },
X/* ORA 309 */   { ACCREG , REGA, 
X		"8a;[1=];" },
X/* ORA 310 */   { ACCREG , REGB, 
X		"ca;[1=];" },
X/* ORA 311 */   { ACCREG+INDREG , REGA+REGX, 
X		"aa;[1=];" },
X/* ORA 312 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;aa;[1=];" },
X/* ORA 313 */   { ACCREG+INDREG , REGB+REGX, 
X		"ea;[1=];" },
X/* ORA 314 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;ea;[1=];" },
X/* ORAA 315 */   { ADDR , DIRECT, 
X		"9a;[1=];" },
X/* ORAA 316 */   { ADDR , EXTENDED, 
X		"ba;[1=]x" },
X/* ORAA 317 */   { 0 , 0, 
X		"8a;[1=];" },
X/* ORAA 318 */   { INDREG , REGX, 
X		"aa;[1=];" },
X/* ORAA 319 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;aa;[1=];" },
X/* ORAB 320 */   { ADDR , DIRECT, 
X		"da;[1=];" },
X/* ORAB 321 */   { ADDR , EXTENDED, 
X		"fa;[1=]x" },
X/* ORAB 322 */   { 0 , 0, 
X		"ca;[1=];" },
X/* ORAB 323 */   { INDREG , REGX, 
X		"ea;[1=];" },
X/* ORAB 324 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ea;[1=];" },
X/* PSH 325 */   { ACCREG , REGA, 
X		"36;" },
X/* PSH 326 */   { ACCREG , REGB, 
X		"37;" },
X/* PSH 327 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
X		"3c;" },
X/* PSH 328 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;3c;" },
X/* PSHA 329 */   { 0 , 0, 
X		"36;" },
X/* PSHB 330 */   { 0 , 0, 
X		"37;" },
X/* PSHX 331 */   { TS6801PLUS , TS6801PLUS, 
X		"3c;" },
X/* PSHY 332 */   { TS6811 , TS6811, 
X		"18;3c;" },
X/* PUL 333 */   { ACCREG , REGA, 
X		"32;" },
X/* PUL 334 */   { ACCREG , REGB, 
X		"33;" },
X/* PUL 335 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
X		"38;" },
X/* PUL 336 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;38;" },
X/* PULA 337 */   { 0 , 0, 
X		"32;" },
X/* PULB 338 */   { 0 , 0, 
X		"33;" },
X/* PULX 339 */   { TS6801PLUS , TS6801PLUS, 
X		"38;" },
X/* PULY 340 */   { TS6811 , TS6811, 
X		"18;38;" },
X/* ROL 341 */   { ACCREG , REGA, 
X		"49;" },
X/* ROL 342 */   { ACCREG , REGB, 
X		"59;" },
X/* ROL 343 */   { 0 , 0, 
X		"79;[1=]x" },
X/* ROL 344 */   { INDREG , REGX, 
X		"69;[1=];" },
X/* ROL 345 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;69;[1=];" },
X/* ROLA 346 */   { 0 , 0, 
X		"49;" },
X/* ROLB 347 */   { 0 , 0, 
X		"59;" },
X/* ROR 348 */   { ACCREG , REGA, 
X		"46;" },
X/* ROR 349 */   { ACCREG , REGB, 
X		"56;" },
X/* ROR 350 */   { 0 , 0, 
X		"76;[1=]x" },
X/* ROR 351 */   { INDREG , REGX, 
X		"66;[1=];" },
X/* ROR 352 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;66;[1=];" },
X/* RORA 353 */   { 0 , 0, 
X		"46;" },
X/* RORB 354 */   { 0 , 0, 
X		"56;" },
X/* RTI 355 */   { 0 , 0, 
X		"3b;" },
X/* RTS 356 */   { 0 , 0, 
X		"39;" },
X/* SBA 357 */   { 0 , 0, 
X		"10;" },
X/* SBC 358 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"92;[1=];" },
X/* SBC 359 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b2;[1=]x" },
X/* SBC 360 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d2;[1=];" },
X/* SBC 361 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f2;[1=]x" },
X/* SBC 362 */   { ACCREG , REGA, 
X		"82;[1=];" },
X/* SBC 363 */   { ACCREG , REGB, 
X		"c2;[1=];" },
X/* SBC 364 */   { ACCREG+INDREG , REGA+REGX, 
X		"a2;[1=];" },
X/* SBC 365 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a2;[1=];" },
X/* SBC 366 */   { ACCREG+INDREG , REGB+REGX, 
X		"e2;[1=];" },
X/* SBC 367 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e2;[1=];" },
X/* SBCA 368 */   { ADDR , DIRECT, 
X		"92;[1=];" },
X/* SBCA 369 */   { ADDR , EXTENDED, 
X		"b2;[1=]x" },
X/* SBCA 370 */   { 0 , 0, 
X		"82;[1=];" },
X/* SBCA 371 */   { INDREG , REGX, 
X		"a2;[1=];" },
X/* SBCA 372 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a2;[1=];" },
X/* SBCB 373 */   { ADDR , DIRECT, 
X		"d2;[1=];" },
X/* SBCB 374 */   { ADDR , EXTENDED, 
X		"f2;[1=]x" },
X/* SBCB 375 */   { 0 , 0, 
X		"c2;[1=];" },
X/* SBCB 376 */   { INDREG , REGX, 
X		"e2;[1=];" },
X/* SBCB 377 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e2;[1=];" },
X/* SEC 378 */   { 0 , 0, 
X		"0d;" },
X/* SEI 379 */   { 0 , 0, 
X		"0f;" },
X/* SEV 380 */   { 0 , 0, 
X		"0b;" },
X/* STA 381 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"97;[1=];" },
X/* STA 382 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b7;[1=]x" },
X/* STA 383 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d7;[1=];" },
X/* STA 384 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f7;[1=]x" },
X/* STA 385 */   { ACCREG+INDREG , REGA+REGX, 
X		"a7;[1=];" },
X/* STA 386 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a7;[1=];" },
X/* STA 387 */   { ACCREG+INDREG , REGB+REGX, 
X		"e7;[1=];" },
X/* STA 388 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e7;[1=];" },
X/* STAA 389 */   { ADDR , DIRECT, 
X		"97;[1=];" },
X/* STAA 390 */   { ADDR , EXTENDED, 
X		"b7;[1=]x" },
X/* STAA 391 */   { INDREG , REGX, 
X		"a7;[1=];" },
X/* STAA 392 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a7;[1=];" },
X/* STAB 393 */   { ADDR , DIRECT, 
X		"d7;[1=];" },
X/* STAB 394 */   { ADDR , EXTENDED, 
X		"f7;[1=]x" },
X/* STAB 395 */   { INDREG , REGX, 
X		"e7;[1=];" },
X/* STAB 396 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e7;[1=];" },
X/* STD 397 */   { TS6801PLUS+ADDR , DIRECT+TS6801PLUS, 
X		"dd;[1=];" },
X/* STD 398 */   { TS6801PLUS+ADDR , EXTENDED+TS6801PLUS, 
X		"fd;[1=]x" },
X/* STD 399 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
X		"ed;[1=];" },
X/* STD 400 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ed;[1=];" },
X/* STOP 401 */   { TS6811 , TS6811, 
X		"cf;" },
X/* STS 402 */   { ADDR , DIRECT, 
X		"9f;[1=];" },
X/* STS 403 */   { ADDR , EXTENDED, 
X		"bf;[1=]x" },
X/* STS 404 */   { INDREG , REGX, 
X		"af;[1=];" },
X/* STS 405 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;af;[1=];" },
X/* STX 406 */   { ADDR , DIRECT, 
X		"df;[1=];" },
X/* STX 407 */   { ADDR , EXTENDED, 
X		"ff;[1=]x" },
X/* STX 408 */   { INDREG , REGX, 
X		"ef;[1=];" },
X/* STX 409 */   { INDREG+TS6811 , REGY+TS6811, 
X		"cd;ef;[1=];" },
X/* STY 410 */   { TS6811+ADDR , DIRECT+TS6811, 
X		"18;df;[1=];" },
X/* STY 411 */   { TS6811+ADDR , EXTENDED+TS6811, 
X		"18;ff;[1=]x" },
X/* STY 412 */   { TS6811+INDREG , REGX+TS6811, 
X		"1a;ef;[1=];" },
X/* STY 413 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;ef;[1=];" },
X/* SUB 414 */   { ACCREG+ADDR , REGA+DIRECT, 
X		"90;[1=];" },
X/* SUB 415 */   { ACCREG+ADDR , REGA+EXTENDED, 
X		"b0;[1=]x" },
X/* SUB 416 */   { ACCREG+ADDR , REGB+DIRECT, 
X		"d0;[1=];" },
X/* SUB 417 */   { ACCREG+ADDR , REGB+EXTENDED, 
X		"f0;[1=]x" },
X/* SUB 418 */   { ACCREG , REGA, 
X		"80;[1=];" },
X/* SUB 419 */   { ACCREG , REGB, 
X		"c0;[1=];" },
X/* SUB 420 */   { ACCREG+INDREG , REGA+REGX, 
X		"a0;[1=];" },
X/* SUB 421 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
X		"18;a0;[1=];" },
X/* SUB 422 */   { ACCREG+INDREG , REGB+REGX, 
X		"e0;[1=];" },
X/* SUB 423 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
X		"18;e0;[1=];" },
X/* SUBA 424 */   { ADDR , DIRECT, 
X		"90;[1=];" },
X/* SUBA 425 */   { ADDR , EXTENDED, 
X		"b0;[1=]x" },
X/* SUBA 426 */   { 0 , 0, 
X		"80;[1=];" },
X/* SUBA 427 */   { INDREG , REGX, 
X		"a0;[1=];" },
X/* SUBA 428 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a0;[1=];" },
X/* SUBB 429 */   { ADDR , DIRECT, 
X		"d0;[1=];" },
X/* SUBB 430 */   { ADDR , EXTENDED, 
X		"f0;[1=]x" },
X/* SUBB 431 */   { 0 , 0, 
X		"c0;[1=];" },
X/* SUBB 432 */   { INDREG , REGX, 
X		"e0;[1=];" },
X/* SUBB 433 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;e0;[1=];" },
X/* SUBD 434 */   { TS6801PLUS+ADDR , DIRECT+TS6801PLUS, 
X		"93;[1=];" },
X/* SUBD 435 */   { TS6801PLUS+ADDR , EXTENDED+TS6801PLUS, 
X		"b3;[1=]x" },
X/* SUBD 436 */   { TS6801PLUS , TS6801PLUS, 
X		"83;[1=]x" },
X/* SUBD 437 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
X		"a3;[1=];" },
X/* SUBD 438 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;a3;[1=];" },
X/* SWI 439 */   { 0 , 0, 
X		"3f;" },
X/* TAB 440 */   { 0 , 0, 
X		"16;" },
X/* TAP 441 */   { 0 , 0, 
X		"06;" },
X/* TBA 442 */   { 0 , 0, 
X		"17;" },
X/* TEST 443 */   { TS6811 , TS6811, 
X		"00;" },
X/* TPA 444 */   { 0 , 0, 
X		"07;" },
X/* TST 445 */   { ACCREG , REGA, 
X		"4d;" },
X/* TST 446 */   { ACCREG , REGB, 
X		"5d;" },
X/* TST 447 */   { 0 , 0, 
X		"7d;[1=]x" },
X/* TST 448 */   { INDREG , REGX, 
X		"6d;[1=];" },
X/* TST 449 */   { INDREG+TS6811 , REGY+TS6811, 
X		"18;6d;[1=];" },
X/* TSTA 450 */   { 0 , 0, 
X		"4d;" },
X/* TSTB 451 */   { 0 , 0, 
X		"5d;" },
X/* TSX 452 */   { 0 , 0, 
X		"30;" },
X/* TSY 453 */   { TS6811 , TS6811, 
X		"18;30;" },
X/* TXS 454 */   { 0 , 0, 
X		"35;" },
X/* TYS 455 */   { TS6811 , TS6811, 
X		"18;35;" },
X/* WAI 456 */   { 0 , 0, 
X		"3e;" },
X/* XGDX 457 */   { TS6811 , TS6811, 
X		"8f;" },
X/* XGDY 458 */   { TS6811 , TS6811, 
X		"18;8f;" },
X	{ 0,0,""} };
X/* end fraptabdef.c */
SHAR_EOF
true || echo 'restore of as6811.y failed'
fi
exit 0