Frankenstein Cross Assemblers, Intel 8096 flavor, Part 2 of 2

Mark Zenier markz at ssc.UUCP
Wed Dec 5 17:18:10 AEST 1990


---- Cut Here and feed the following to sh ----
#!/bin/sh
# This is part 02 of Frankasm/As8096
# ============= as8096.y ==============
if test -f 'as8096.y' -a X"$1" != X"-c"; then
	echo 'x - skipping as8096.y (File already exists)'
else
echo 'x - extracting as8096.y (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'as8096.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: 	as8096.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: 	as8096.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/* 8096 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/*	0000.0000.0000.00xx	short/long index selection */
X#define	ADDR		0x3
X#define	DIRECT		0x1
X#define	EXTENDED	0x2
X/*	0000.0000.0000.x000	80196 select */
X#define	CPU196		0x8
X#define	CPU96		0
X#define ST_INH 0x1
X#define ST_DIR1 0x2
X#define ST_DIR2 0x4
X#define ST_DIR3 0x8
X#define ST_IMM1 0x10
X#define ST_IMM2 0x20
X#define ST_IMM3 0x40
X#define ST_IND1 0x80
X#define ST_INC1 0x100
X#define ST_IND2 0x200
X#define ST_INC2 0x400
X#define ST_IND3 0x800
X#define ST_INC3 0x1000
X#define ST_INX1 0x2000
X#define ST_INX2 0x4000
X#define ST_INX3 0x8000
X	
X	int	cpuselect = CPU196;
X	static char	genbdef[] = "[1=];";
X	static char	genwdef[] = "[1=]y"; /* x for normal, y for byte rev */
X	char ignosyn[] = "[Xinvalid syntax for instruction";
X	char ignosel[] = "[Xinvalid operands/illegal instruction for cpu";
X/*	constants for increment bit in indirect operand */
X#define	AUTOINC		1
X#define	NOINC		0
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}
X
X%token <intv> KOC_WDEF
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_CHSET
X%token <intv> KOC_CHDEF
X%token <intv> KOC_CHUSE
X%token <intv> KOC_AWRESM
X%token <intv> KOC_ALRESM
X%token <intv> KOC_ALDEF
X%token <intv> KOC_AWDEF
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
Xgenline :	KOC_AWRESM expr 
X			{
X				while(labelloc & 1)
X				{
X					labelloc += 1;
X				}
X
X				pevalexpr(0, $2);
X				if(evalr[0].seg == SSG_ABS)
X				{
X					locctr = labelloc + (2*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	;
Xgenline :	KOC_ALRESM expr 
X			{
X				while(labelloc & 3)
X				{
X					labelloc += 1;
X				}
X
X				pevalexpr(0, $2);
X				if(evalr[0].seg == SSG_ABS)
X				{
X					locctr = labelloc + (4*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	;
Xgenline :	KOC_ALDEF exprlist 
X			{
X				while(labelloc & 3)
X				{
X					labelloc = (locctr += 1);
X				}
X
X				genlocrec(currseg, labelloc);
X				for( satsub = 0; satsub < $2; satsub++)
X				{
X					pevalexpr(1, exprlist[satsub]);
X					locctr += geninstr(
X						"[1=]~.ffff&y!.10}y");
X				}
X			}	
X	;
Xgenline :	KOC_AWDEF exprlist 
X			{
X				if(labelloc & 1)
X				{
X					labelloc = (locctr += 1);
X				}
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	;
Xline	:	KOC_CPU STRING
X			{
X		if( ! cpumatch($2))
X		{
X			fraerror("unknown cpu type, 80196 assumed");
X			cpuselect = CPU196;
X		}
X			}
X	;
Xgenline : KOC_opcode 
X			{
X		genlocrec(currseg, labelloc);
X		locctr += geninstr(findgen($1, ST_INH, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		locctr += geninstr(findgen($1, ST_DIR1, cpuselect
X				 + ( (evalr[1].seg == SSG_ABS 
X				&& evalr[1].value >= 0
X				&& evalr[1].value <= 255 )
X				? DIRECT : EXTENDED ) ) );
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		locctr += geninstr(findgen($1, ST_DIR2, cpuselect
X				 + ( (evalr[2].seg == SSG_ABS 
X				&& evalr[2].value >= 0
X				&& evalr[2].value <= 255 )
X				? DIRECT : EXTENDED ) ) );
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr ',' expr
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		pevalexpr(3,$6);
X		locctr += geninstr(findgen($1, ST_DIR3, cpuselect
X				 + ( (evalr[3].seg == SSG_ABS 
X				&& evalr[3].value >= 0
X				&& evalr[3].value <= 255 )
X				? DIRECT : EXTENDED ) ) );
X			}
X	;
Xgenline : KOC_opcode  '#' expr
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$3);
X		locctr += geninstr(findgen($1, ST_IMM1, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr ',' '#' expr
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$5);
X		locctr += geninstr(findgen($1, ST_IMM2, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr ',' '#' expr
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		pevalexpr(3,$7);
X		locctr += geninstr(findgen($1, ST_IMM3, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  '[' expr ']'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$3);
X		evalr[2].value = NOINC;
X		locctr += geninstr(findgen($1, ST_IND1, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  '[' expr ']' '+'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$3);
X		evalr[2].value = AUTOINC;
X		locctr += geninstr(findgen($1, ST_IND1, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr ',' '[' expr ']'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$5);
X		evalr[3].value = NOINC;
X		locctr += geninstr(findgen($1, ST_IND2, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr ',' '[' expr ']' '+'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$5);
X		evalr[3].value = AUTOINC;
X		locctr += geninstr(findgen($1, ST_IND2, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr ',' '[' expr ']'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		pevalexpr(3,$7);
X		evalr[4].value = NOINC;
X		locctr += geninstr(findgen($1, ST_IND3, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr ',' '[' expr ']' '+'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		pevalexpr(3,$7);
X		evalr[4].value = AUTOINC;
X		locctr += geninstr(findgen($1, ST_IND3, cpuselect));
X			}
X	;
Xgenline : KOC_opcode  expr '[' expr ']'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		locctr += geninstr(findgen($1, ST_INX1, cpuselect
X				 + ( (evalr[1].seg == SSG_ABS 
X				&& evalr[1].value >= -128
X				&& evalr[1].value <= 127 )
X				? DIRECT : EXTENDED ) ) );
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr '[' expr ']'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		pevalexpr(3,$6);
X		locctr += geninstr(findgen($1, ST_INX2, cpuselect
X				 + ( (evalr[2].seg == SSG_ABS 
X				&& evalr[2].value >= -128
X				&& evalr[2].value <= 127 )
X				? DIRECT : EXTENDED ) ) );
X			}
X	;
Xgenline : KOC_opcode  expr ',' expr ',' expr '[' expr ']'
X			{
X		genlocrec(currseg, labelloc);
X		pevalexpr(1,$2);
X		pevalexpr(2,$4);
X		pevalexpr(3,$6);
X		pevalexpr(4,$8);
X		locctr += geninstr(findgen($1, ST_INX3, cpuselect
X				 + ( (evalr[3].seg == SSG_ABS 
X				&& evalr[3].value >= -128
X				&& evalr[3].value <= 127 )
X				? DIRECT : EXTENDED ) ) );
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
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}
Xcpumatch(str)
X	char * str;
X{
X	int msub;
X
X	static struct
X	{
X		char * mtch;
X		int   cpuv;
X	} matchtab[] =
X	{
X		{"19", CPU196 },
X		{"9", CPU96 },
X		{"", 0} 
X	};
X
X	for(msub = 0; matchtab[msub].mtch[0] != '\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 125
X#define NUMSYNBLK 239
X#define NUMDIFFOP 323
X
Xint gnumopcode = NUMOPCODE;
X
Xint ophashlnk[NUMOPCODE];
X
Xstruct opsym optab[NUMOPCODE+1]
X	= {
X	{"invalid", KOC_opcode, 2, 0 },
X	{"ADD", KOC_opcode, 8, 2 },
X	{"ADDB", KOC_opcode, 8, 10 },
X	{"ADDC", KOC_opcode, 4, 18 },
X	{"ADDCB", KOC_opcode, 4, 22 },
X	{"AND", KOC_opcode, 8, 26 },
X	{"ANDB", KOC_opcode, 8, 34 },
X	{"BMOV", KOC_opcode, 1, 42 },
X	{"BR", KOC_opcode, 1, 43 },
X	{"BYTE", KOC_BDEF, 0, 0 },
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	{"CLR", KOC_opcode, 1, 44 },
X	{"CLRB", KOC_opcode, 1, 45 },
X	{"CLRC", KOC_opcode, 1, 46 },
X	{"CLRVT", KOC_opcode, 1, 47 },
X	{"CMP", KOC_opcode, 4, 48 },
X	{"CMPB", KOC_opcode, 4, 52 },
X	{"CMPL", KOC_opcode, 1, 56 },
X	{"CPU", KOC_CPU, 0, 0 },
X	{"DCB", KOC_BDEF, 0, 0 },
X	{"DCL", KOC_ALDEF, 0, 0 },
X	{"DCW", KOC_AWDEF, 0, 0 },
X	{"DEC", KOC_opcode, 1, 57 },
X	{"DECB", KOC_opcode, 1, 58 },
X	{"DI", KOC_opcode, 1, 59 },
X	{"DIV", KOC_opcode, 4, 60 },
X	{"DIVB", KOC_opcode, 4, 64 },
X	{"DIVU", KOC_opcode, 4, 68 },
X	{"DIVUB", KOC_opcode, 4, 72 },
X	{"DJNZ", KOC_opcode, 1, 76 },
X	{"DJNZW", KOC_opcode, 1, 77 },
X	{"DSB", KOC_RESM, 0, 0 },
X	{"DSL", KOC_ALRESM, 0, 0 },
X	{"DSW", KOC_AWRESM, 0, 0 },
X	{"EI", KOC_opcode, 1, 78 },
X	{"ELSE", KOC_ELSE, 0, 0 },
X	{"END", KOC_END, 0, 0 },
X	{"ENDI", KOC_ENDI, 0, 0 },
X	{"EQU", KOC_EQU, 0, 0 },
X	{"EXT", KOC_opcode, 1, 79 },
X	{"EXTB", KOC_opcode, 1, 80 },
X	{"FCB", KOC_BDEF, 0, 0 },
X	{"FCC", KOC_SDEF, 0, 0 },
X	{"FDB", KOC_AWDEF, 0, 0 },
X	{"IDLPD", KOC_opcode, 1, 81 },
X	{"IF", KOC_IF, 0, 0 },
X	{"INC", KOC_opcode, 1, 82 },
X	{"INCB", KOC_opcode, 1, 83 },
X	{"INCL", KOC_INCLUDE, 0, 0 },
X	{"INCLUDE", KOC_INCLUDE, 0, 0 },
X	{"JBC", KOC_opcode, 1, 84 },
X	{"JBS", KOC_opcode, 1, 85 },
X	{"JC", KOC_opcode, 1, 86 },
X	{"JE", KOC_opcode, 1, 87 },
X	{"JGE", KOC_opcode, 1, 88 },
X	{"JGT", KOC_opcode, 1, 89 },
X	{"JH", KOC_opcode, 1, 90 },
X	{"JLE", KOC_opcode, 1, 91 },
X	{"JLT", KOC_opcode, 1, 92 },
X	{"JNC", KOC_opcode, 1, 93 },
X	{"JNE", KOC_opcode, 1, 94 },
X	{"JNH", KOC_opcode, 1, 95 },
X	{"JNST", KOC_opcode, 1, 96 },
X	{"JNV", KOC_opcode, 1, 97 },
X	{"JNVT", KOC_opcode, 1, 98 },
X	{"JST", KOC_opcode, 1, 99 },
X	{"JV", KOC_opcode, 1, 100 },
X	{"JVT", KOC_opcode, 1, 101 },
X	{"LCALL", KOC_opcode, 1, 102 },
X	{"LD", KOC_opcode, 4, 103 },
X	{"LDB", KOC_opcode, 4, 107 },
X	{"LDBSE", KOC_opcode, 4, 111 },
X	{"LDBZE", KOC_opcode, 4, 115 },
X	{"LJMP", KOC_opcode, 1, 119 },
X	{"LONG", KOC_ALDEF, 0, 0 },
X	{"MUL", KOC_opcode, 8, 120 },
X	{"MULB", KOC_opcode, 8, 128 },
X	{"MULU", KOC_opcode, 8, 136 },
X	{"MULUB", KOC_opcode, 8, 144 },
X	{"NEG", KOC_opcode, 1, 152 },
X	{"NEGB", KOC_opcode, 1, 153 },
X	{"NOP", KOC_opcode, 1, 154 },
X	{"NORML", KOC_opcode, 1, 155 },
X	{"NOT", KOC_opcode, 1, 156 },
X	{"NOTB", KOC_opcode, 1, 157 },
X	{"OR", KOC_opcode, 4, 158 },
X	{"ORB", KOC_opcode, 4, 162 },
X	{"ORG", KOC_ORG, 0, 0 },
X	{"POP", KOC_opcode, 3, 166 },
X	{"POPA", KOC_opcode, 1, 169 },
X	{"POPF", KOC_opcode, 1, 170 },
X	{"PUSH", KOC_opcode, 4, 171 },
X	{"PUSHA", KOC_opcode, 1, 175 },
X	{"PUSHF", KOC_opcode, 1, 176 },
X	{"RESERVE", KOC_RESM, 0, 0 },
X	{"RET", KOC_opcode, 1, 177 },
X	{"RMB", KOC_RESM, 0, 0 },
X	{"RST", KOC_opcode, 1, 178 },
X	{"SCALL", KOC_opcode, 1, 179 },
X	{"SET", KOC_SET, 0, 0 },
X	{"SETC", KOC_opcode, 1, 180 },
X	{"SHL", KOC_opcode, 2, 181 },
X	{"SHLB", KOC_opcode, 2, 183 },
X	{"SHLL", KOC_opcode, 2, 185 },
X	{"SHR", KOC_opcode, 2, 187 },
X	{"SHRA", KOC_opcode, 2, 189 },
X	{"SHRAB", KOC_opcode, 2, 191 },
X	{"SHRAL", KOC_opcode, 2, 193 },
X	{"SHRB", KOC_opcode, 2, 195 },
X	{"SHRL", KOC_opcode, 2, 197 },
X	{"SJMP", KOC_opcode, 1, 199 },
X	{"SKIP", KOC_opcode, 1, 200 },
X	{"ST", KOC_opcode, 3, 201 },
X	{"STB", KOC_opcode, 3, 204 },
X	{"STRING", KOC_SDEF, 0, 0 },
X	{"SUB", KOC_opcode, 8, 207 },
X	{"SUBB", KOC_opcode, 8, 215 },
X	{"SUBC", KOC_opcode, 4, 223 },
X	{"SUBCB", KOC_opcode, 4, 227 },
X	{"WORD", KOC_AWDEF, 0, 0 },
X	{"XOR", KOC_opcode, 4, 231 },
X	{"XORB", KOC_opcode, 4, 235 },
X	{ "", 0, 0, 0 }};
X
Xstruct opsynt ostab[NUMSYNBLK+1]
X	= {
X/* invalid 0 */ { 0, 1, 0 },
X/* invalid 1 */ { 0xffff, 1, 1 },
X/* ADD 2 */ { ST_DIR2, 2, 2 },
X/* ADD 3 */ { ST_DIR3, 2, 4 },
X/* ADD 4 */ { ST_IMM2, 1, 6 },
X/* ADD 5 */ { ST_IMM3, 1, 7 },
X/* ADD 6 */ { ST_IND2, 1, 8 },
X/* ADD 7 */ { ST_IND3, 1, 9 },
X/* ADD 8 */ { ST_INX2, 2, 10 },
X/* ADD 9 */ { ST_INX3, 2, 12 },
X/* ADDB 10 */ { ST_DIR2, 2, 14 },
X/* ADDB 11 */ { ST_DIR3, 2, 16 },
X/* ADDB 12 */ { ST_IMM2, 1, 18 },
X/* ADDB 13 */ { ST_IMM3, 1, 19 },
X/* ADDB 14 */ { ST_IND2, 1, 20 },
X/* ADDB 15 */ { ST_IND3, 1, 21 },
X/* ADDB 16 */ { ST_INX2, 2, 22 },
X/* ADDB 17 */ { ST_INX3, 2, 24 },
X/* ADDC 18 */ { ST_DIR2, 2, 26 },
X/* ADDC 19 */ { ST_IMM2, 1, 28 },
X/* ADDC 20 */ { ST_IND2, 1, 29 },
X/* ADDC 21 */ { ST_INX2, 2, 30 },
X/* ADDCB 22 */ { ST_DIR2, 2, 32 },
X/* ADDCB 23 */ { ST_IMM2, 1, 34 },
X/* ADDCB 24 */ { ST_IND2, 1, 35 },
X/* ADDCB 25 */ { ST_INX2, 2, 36 },
X/* AND 26 */ { ST_DIR2, 2, 38 },
X/* AND 27 */ { ST_DIR3, 2, 40 },
X/* AND 28 */ { ST_IMM2, 1, 42 },
X/* AND 29 */ { ST_IMM3, 1, 43 },
X/* AND 30 */ { ST_IND2, 1, 44 },
X/* AND 31 */ { ST_IND3, 1, 45 },
X/* AND 32 */ { ST_INX2, 2, 46 },
X/* AND 33 */ { ST_INX3, 2, 48 },
X/* ANDB 34 */ { ST_DIR2, 2, 50 },
X/* ANDB 35 */ { ST_DIR3, 2, 52 },
X/* ANDB 36 */ { ST_IMM2, 1, 54 },
X/* ANDB 37 */ { ST_IMM3, 1, 55 },
X/* ANDB 38 */ { ST_IND2, 1, 56 },
X/* ANDB 39 */ { ST_IND3, 1, 57 },
X/* ANDB 40 */ { ST_INX2, 2, 58 },
X/* ANDB 41 */ { ST_INX3, 2, 60 },
X/* BMOV 42 */ { ST_DIR2, 1, 62 },
X/* BR 43 */ { ST_IND1, 1, 63 },
X/* CLR 44 */ { ST_DIR1, 1, 64 },
X/* CLRB 45 */ { ST_DIR1, 1, 65 },
X/* CLRC 46 */ { ST_INH, 1, 66 },
X/* CLRVT 47 */ { ST_INH, 1, 67 },
X/* CMP 48 */ { ST_DIR2, 2, 68 },
X/* CMP 49 */ { ST_IMM2, 1, 70 },
X/* CMP 50 */ { ST_IND2, 1, 71 },
X/* CMP 51 */ { ST_INX2, 2, 72 },
X/* CMPB 52 */ { ST_DIR2, 2, 74 },
X/* CMPB 53 */ { ST_IMM2, 1, 76 },
X/* CMPB 54 */ { ST_IND2, 1, 77 },
X/* CMPB 55 */ { ST_INX2, 2, 78 },
X/* CMPL 56 */ { ST_DIR2, 1, 80 },
X/* DEC 57 */ { ST_DIR1, 1, 81 },
X/* DECB 58 */ { ST_DIR1, 1, 82 },
X/* DI 59 */ { ST_INH, 1, 83 },
X/* DIV 60 */ { ST_DIR2, 2, 84 },
X/* DIV 61 */ { ST_IMM2, 1, 86 },
X/* DIV 62 */ { ST_IND2, 1, 87 },
X/* DIV 63 */ { ST_INX2, 2, 88 },
X/* DIVB 64 */ { ST_DIR2, 2, 90 },
X/* DIVB 65 */ { ST_IMM2, 1, 92 },
X/* DIVB 66 */ { ST_IND2, 1, 93 },
X/* DIVB 67 */ { ST_INX2, 2, 94 },
X/* DIVU 68 */ { ST_DIR2, 2, 96 },
X/* DIVU 69 */ { ST_IMM2, 1, 98 },
X/* DIVU 70 */ { ST_IND2, 1, 99 },
X/* DIVU 71 */ { ST_INX2, 2, 100 },
X/* DIVUB 72 */ { ST_DIR2, 2, 102 },
X/* DIVUB 73 */ { ST_IMM2, 1, 104 },
X/* DIVUB 74 */ { ST_IND2, 1, 105 },
X/* DIVUB 75 */ { ST_INX2, 2, 106 },
X/* DJNZ 76 */ { ST_DIR2, 1, 108 },
X/* DJNZW 77 */ { ST_DIR2, 1, 109 },
X/* EI 78 */ { ST_INH, 1, 110 },
X/* EXT 79 */ { ST_DIR1, 1, 111 },
X/* EXTB 80 */ { ST_DIR1, 1, 112 },
X/* IDLPD 81 */ { ST_IMM1, 1, 113 },
X/* INC 82 */ { ST_DIR1, 1, 114 },
X/* INCB 83 */ { ST_DIR1, 1, 115 },
X/* JBC 84 */ { ST_DIR3, 1, 116 },
X/* JBS 85 */ { ST_DIR3, 1, 117 },
X/* JC 86 */ { ST_DIR1, 1, 118 },
X/* JE 87 */ { ST_DIR1, 1, 119 },
X/* JGE 88 */ { ST_DIR1, 1, 120 },
X/* JGT 89 */ { ST_DIR1, 1, 121 },
X/* JH 90 */ { ST_DIR1, 1, 122 },
X/* JLE 91 */ { ST_DIR1, 1, 123 },
X/* JLT 92 */ { ST_DIR1, 1, 124 },
X/* JNC 93 */ { ST_DIR1, 1, 125 },
X/* JNE 94 */ { ST_DIR1, 1, 126 },
X/* JNH 95 */ { ST_DIR1, 1, 127 },
X/* JNST 96 */ { ST_DIR1, 1, 128 },
X/* JNV 97 */ { ST_DIR1, 1, 129 },
X/* JNVT 98 */ { ST_DIR1, 1, 130 },
X/* JST 99 */ { ST_DIR1, 1, 131 },
X/* JV 100 */ { ST_DIR1, 1, 132 },
X/* JVT 101 */ { ST_DIR1, 1, 133 },
X/* LCALL 102 */ { ST_DIR1, 1, 134 },
X/* LD 103 */ { ST_DIR2, 2, 135 },
X/* LD 104 */ { ST_IMM2, 1, 137 },
X/* LD 105 */ { ST_IND2, 1, 138 },
X/* LD 106 */ { ST_INX2, 2, 139 },
X/* LDB 107 */ { ST_DIR2, 2, 141 },
X/* LDB 108 */ { ST_IMM2, 1, 143 },
X/* LDB 109 */ { ST_IND2, 1, 144 },
X/* LDB 110 */ { ST_INX2, 2, 145 },
X/* LDBSE 111 */ { ST_DIR2, 2, 147 },
X/* LDBSE 112 */ { ST_IMM2, 1, 149 },
X/* LDBSE 113 */ { ST_IND2, 1, 150 },
X/* LDBSE 114 */ { ST_INX2, 2, 151 },
X/* LDBZE 115 */ { ST_DIR2, 2, 153 },
X/* LDBZE 116 */ { ST_IMM2, 1, 155 },
X/* LDBZE 117 */ { ST_IND2, 1, 156 },
X/* LDBZE 118 */ { ST_INX2, 2, 157 },
X/* LJMP 119 */ { ST_DIR1, 1, 159 },
X/* MUL 120 */ { ST_DIR2, 2, 160 },
X/* MUL 121 */ { ST_DIR3, 2, 162 },
X/* MUL 122 */ { ST_IMM2, 1, 164 },
X/* MUL 123 */ { ST_IMM3, 1, 165 },
X/* MUL 124 */ { ST_IND2, 1, 166 },
X/* MUL 125 */ { ST_IND3, 1, 167 },
X/* MUL 126 */ { ST_INX2, 2, 168 },
X/* MUL 127 */ { ST_INX3, 2, 170 },
X/* MULB 128 */ { ST_DIR2, 2, 172 },
X/* MULB 129 */ { ST_DIR3, 2, 174 },
X/* MULB 130 */ { ST_IMM2, 1, 176 },
X/* MULB 131 */ { ST_IMM3, 1, 177 },
X/* MULB 132 */ { ST_IND2, 1, 178 },
X/* MULB 133 */ { ST_IND3, 1, 179 },
X/* MULB 134 */ { ST_INX2, 2, 180 },
X/* MULB 135 */ { ST_INX3, 2, 182 },
X/* MULU 136 */ { ST_DIR2, 2, 184 },
X/* MULU 137 */ { ST_DIR3, 2, 186 },
X/* MULU 138 */ { ST_IMM2, 1, 188 },
X/* MULU 139 */ { ST_IMM3, 1, 189 },
X/* MULU 140 */ { ST_IND2, 1, 190 },
X/* MULU 141 */ { ST_IND3, 1, 191 },
X/* MULU 142 */ { ST_INX2, 2, 192 },
X/* MULU 143 */ { ST_INX3, 2, 194 },
X/* MULUB 144 */ { ST_DIR2, 2, 196 },
X/* MULUB 145 */ { ST_DIR3, 2, 198 },
X/* MULUB 146 */ { ST_IMM2, 1, 200 },
X/* MULUB 147 */ { ST_IMM3, 1, 201 },
X/* MULUB 148 */ { ST_IND2, 1, 202 },
X/* MULUB 149 */ { ST_IND3, 1, 203 },
X/* MULUB 150 */ { ST_INX2, 2, 204 },
X/* MULUB 151 */ { ST_INX3, 2, 206 },
X/* NEG 152 */ { ST_DIR1, 1, 208 },
X/* NEGB 153 */ { ST_DIR1, 1, 209 },
X/* NOP 154 */ { ST_INH, 1, 210 },
X/* NORML 155 */ { ST_DIR2, 1, 211 },
X/* NOT 156 */ { ST_DIR1, 1, 212 },
X/* NOTB 157 */ { ST_DIR1, 1, 213 },
X/* OR 158 */ { ST_DIR2, 2, 214 },
X/* OR 159 */ { ST_IMM2, 1, 216 },
X/* OR 160 */ { ST_IND2, 1, 217 },
X/* OR 161 */ { ST_INX2, 2, 218 },
X/* ORB 162 */ { ST_DIR2, 2, 220 },
X/* ORB 163 */ { ST_IMM2, 1, 222 },
X/* ORB 164 */ { ST_IND2, 1, 223 },
X/* ORB 165 */ { ST_INX2, 2, 224 },
X/* POP 166 */ { ST_DIR1, 2, 226 },
X/* POP 167 */ { ST_IND1, 1, 228 },
X/* POP 168 */ { ST_INX1, 2, 229 },
X/* POPA 169 */ { ST_INH, 1, 231 },
X/* POPF 170 */ { ST_INH, 1, 232 },
X/* PUSH 171 */ { ST_DIR1, 2, 233 },
X/* PUSH 172 */ { ST_IMM1, 1, 235 },
X/* PUSH 173 */ { ST_IND1, 1, 236 },
X/* PUSH 174 */ { ST_INX1, 2, 237 },
X/* PUSHA 175 */ { ST_INH, 1, 239 },
X/* PUSHF 176 */ { ST_INH, 1, 240 },
X/* RET 177 */ { ST_INH, 1, 241 },
X/* RST 178 */ { ST_INH, 1, 242 },
X/* SCALL 179 */ { ST_DIR1, 1, 243 },
X/* SETC 180 */ { ST_INH, 1, 244 },
X/* SHL 181 */ { ST_DIR2, 1, 245 },
X/* SHL 182 */ { ST_IMM2, 1, 246 },
X/* SHLB 183 */ { ST_DIR2, 1, 247 },
X/* SHLB 184 */ { ST_IMM2, 1, 248 },
X/* SHLL 185 */ { ST_DIR2, 1, 249 },
X/* SHLL 186 */ { ST_IMM2, 1, 250 },
X/* SHR 187 */ { ST_DIR2, 1, 251 },
X/* SHR 188 */ { ST_IMM2, 1, 252 },
X/* SHRA 189 */ { ST_DIR2, 1, 253 },
X/* SHRA 190 */ { ST_IMM2, 1, 254 },
X/* SHRAB 191 */ { ST_DIR2, 1, 255 },
X/* SHRAB 192 */ { ST_IMM2, 1, 256 },
X/* SHRAL 193 */ { ST_DIR2, 1, 257 },
X/* SHRAL 194 */ { ST_IMM2, 1, 258 },
X/* SHRB 195 */ { ST_DIR2, 1, 259 },
X/* SHRB 196 */ { ST_IMM2, 1, 260 },
X/* SHRL 197 */ { ST_DIR2, 1, 261 },
X/* SHRL 198 */ { ST_IMM2, 1, 262 },
X/* SJMP 199 */ { ST_DIR1, 1, 263 },
X/* SKIP 200 */ { ST_DIR1, 1, 264 },
X/* ST 201 */ { ST_DIR2, 2, 265 },
X/* ST 202 */ { ST_IND2, 1, 267 },
X/* ST 203 */ { ST_INX2, 2, 268 },
X/* STB 204 */ { ST_DIR2, 2, 270 },
X/* STB 205 */ { ST_IND2, 1, 272 },
X/* STB 206 */ { ST_INX2, 2, 273 },
X/* SUB 207 */ { ST_DIR2, 2, 275 },
X/* SUB 208 */ { ST_DIR3, 2, 277 },
X/* SUB 209 */ { ST_IMM2, 1, 279 },
X/* SUB 210 */ { ST_IMM3, 1, 280 },
X/* SUB 211 */ { ST_IND2, 1, 281 },
X/* SUB 212 */ { ST_IND3, 1, 282 },
X/* SUB 213 */ { ST_INX2, 2, 283 },
X/* SUB 214 */ { ST_INX3, 2, 285 },
X/* SUBB 215 */ { ST_DIR2, 2, 287 },
X/* SUBB 216 */ { ST_DIR3, 2, 289 },
X/* SUBB 217 */ { ST_IMM2, 1, 291 },
X/* SUBB 218 */ { ST_IMM3, 1, 292 },
X/* SUBB 219 */ { ST_IND2, 1, 293 },
X/* SUBB 220 */ { ST_IND3, 1, 294 },
X/* SUBB 221 */ { ST_INX2, 2, 295 },
X/* SUBB 222 */ { ST_INX3, 2, 297 },
X/* SUBC 223 */ { ST_DIR2, 2, 299 },
X/* SUBC 224 */ { ST_IMM2, 1, 301 },
X/* SUBC 225 */ { ST_IND2, 1, 302 },
X/* SUBC 226 */ { ST_INX2, 2, 303 },
X/* SUBCB 227 */ { ST_DIR2, 2, 305 },
X/* SUBCB 228 */ { ST_IMM2, 1, 307 },
X/* SUBCB 229 */ { ST_IND2, 1, 308 },
X/* SUBCB 230 */ { ST_INX2, 2, 309 },
X/* XOR 231 */ { ST_DIR2, 2, 311 },
X/* XOR 232 */ { ST_IMM2, 1, 313 },
X/* XOR 233 */ { ST_IND2, 1, 314 },
X/* XOR 234 */ { ST_INX2, 2, 315 },
X/* XORB 235 */ { ST_DIR2, 2, 317 },
X/* XORB 236 */ { ST_IMM2, 1, 319 },
X/* XORB 237 */ { ST_IND2, 1, 320 },
X/* XORB 238 */ { ST_INX2, 2, 321 },
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/* ADD 2 */   { ADDR , DIRECT, 
X		"64;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ADD 3 */   { ADDR , EXTENDED, 
X		"67;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* ADD 4 */   { ADDR , DIRECT, 
X		"44;[3=]~.1&T!.8I;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ADD 5 */   { ADDR , EXTENDED, 
X		"47;01;[3=]~.1&T!y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ADD 6 */   { 0 , 0, 
X		"65;[2=]y[1=]~.1&T!.8I;" },
X/* ADD 7 */   { 0 , 0, 
X		"45;[3=]y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ADD 8 */   { 0 , 0, 
X		"66;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* ADD 9 */   { 0 , 0, 
X		"46;[3=]~.1&T!.8I.[4#]|;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ADD 10 */   { ADDR , DIRECT, 
X		"67;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* ADD 11 */   { ADDR , EXTENDED, 
X		"67;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* ADD 12 */   { ADDR , DIRECT, 
X		"47;[4=]~.1&T!.8I;[3=]r[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ADD 13 */   { ADDR , EXTENDED, 
X		"47;[4=]~.1&T!.8I.1|;[3=]y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ADDB 14 */   { ADDR , DIRECT, 
X		"74;[2=].8I;[1=].8I;" },
X/* ADDB 15 */   { ADDR , EXTENDED, 
X		"77;01;[2=]y[1=].8I;" },
X/* ADDB 16 */   { ADDR , DIRECT, 
X		"54;[3=].8I;[2=].8I;[1=].8I;" },
X/* ADDB 17 */   { ADDR , EXTENDED, 
X		"57;01;[3=]y[2=].8I;[1=].8I;" },
X/* ADDB 18 */   { 0 , 0, 
X		"75;[2=];[1=].8I;" },
X/* ADDB 19 */   { 0 , 0, 
X		"55;[3=];[2=].8I;[1=].8I;" },
X/* ADDB 20 */   { 0 , 0, 
X		"76;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* ADDB 21 */   { 0 , 0, 
X		"56;[3=]~.1&T!.8I.[4#]|;[2=].8I;[1=].8I;" },
X/* ADDB 22 */   { ADDR , DIRECT, 
X		"77;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* ADDB 23 */   { ADDR , EXTENDED, 
X		"77;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* ADDB 24 */   { ADDR , DIRECT, 
X		"57;[4=]~.1&T!.8I;[3=]r[2=].8I;[1=].8I;" },
X/* ADDB 25 */   { ADDR , EXTENDED, 
X		"57;[4=]~.1&T!.8I.1|;[3=]y[2=].8I;[1=].8I;" },
X/* ADDC 26 */   { ADDR , DIRECT, 
X		"a4;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ADDC 27 */   { ADDR , EXTENDED, 
X		"a7;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* ADDC 28 */   { 0 , 0, 
X		"a5;[2=]y[1=]~.1&T!.8I;" },
X/* ADDC 29 */   { 0 , 0, 
X		"a6;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* ADDC 30 */   { ADDR , DIRECT, 
X		"a7;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* ADDC 31 */   { ADDR , EXTENDED, 
X		"a7;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* ADDCB 32 */   { ADDR , DIRECT, 
X		"b4;[2=].8I;[1=].8I;" },
X/* ADDCB 33 */   { ADDR , EXTENDED, 
X		"b7;01;[2=]y[1=].8I;" },
X/* ADDCB 34 */   { 0 , 0, 
X		"b5;[2=];[1=].8I;" },
X/* ADDCB 35 */   { 0 , 0, 
X		"b6;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* ADDCB 36 */   { ADDR , DIRECT, 
X		"b7;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* ADDCB 37 */   { ADDR , EXTENDED, 
X		"b7;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* AND 38 */   { ADDR , DIRECT, 
X		"60;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* AND 39 */   { ADDR , EXTENDED, 
X		"63;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* AND 40 */   { ADDR , DIRECT, 
X		"40;[3=]~.1&T!.8I;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* AND 41 */   { ADDR , EXTENDED, 
X		"43;01;[3=]~.1&T!y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* AND 42 */   { 0 , 0, 
X		"61;[2=]y[1=]~.1&T!.8I;" },
X/* AND 43 */   { 0 , 0, 
X		"41;[3=]y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* AND 44 */   { 0 , 0, 
X		"62;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* AND 45 */   { 0 , 0, 
X		"42;[3=]~.1&T!.8I.[4#]|;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* AND 46 */   { ADDR , DIRECT, 
X		"63;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* AND 47 */   { ADDR , EXTENDED, 
X		"63;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* AND 48 */   { ADDR , DIRECT, 
X		"43;[4=]~.1&T!.8I;[3=]r[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* AND 49 */   { ADDR , EXTENDED, 
X		"43;[4=]~.1&T!.8I.1|;[3=]y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ANDB 50 */   { ADDR , DIRECT, 
X		"70;[2=].8I;[1=].8I;" },
X/* ANDB 51 */   { ADDR , EXTENDED, 
X		"73;01;[2=]y[1=].8I;" },
X/* ANDB 52 */   { ADDR , DIRECT, 
X		"50;[3=].8I;[2=].8I;[1=].8I;" },
X/* ANDB 53 */   { ADDR , EXTENDED, 
X		"53;01;[3=]y[2=].8I;[1=].8I;" },
X/* ANDB 54 */   { 0 , 0, 
X		"71;[2=];[1=].8I;" },
X/* ANDB 55 */   { 0 , 0, 
X		"51;[3=];[2=].8I;[1=].8I;" },
X/* ANDB 56 */   { 0 , 0, 
X		"72;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* ANDB 57 */   { 0 , 0, 
X		"52;[3=]~.1&T!.8I.[4#]|;[2=].8I;[1=].8I;" },
X/* ANDB 58 */   { ADDR , DIRECT, 
X		"73;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* ANDB 59 */   { ADDR , EXTENDED, 
X		"73;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* ANDB 60 */   { ADDR , DIRECT, 
X		"53;[4=]~.1&T!.8I;[3=]r[2=].8I;[1=].8I;" },
X/* ANDB 61 */   { ADDR , EXTENDED, 
X		"53;[4=]~.1&T!.8I.1|;[3=]y[2=].8I;[1=].8I;" },
X/* BMOV 62 */   { CPU196 , CPU196, 
X		"c1;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* BR 63 */   { 0 , 0, 
X		"e3;[1=]~.1&T!.8I;" },
X/* CLR 64 */   { 0 , 0, 
X		"01;[1=]~.1&T!.8I;" },
X/* CLRB 65 */   { 0 , 0, 
X		"11;[1=].8I;" },
X/* CLRC 66 */   { 0 , 0, 
X		"f8;" },
X/* CLRVT 67 */   { 0 , 0, 
X		"fc;" },
X/* CMP 68 */   { ADDR , DIRECT, 
X		"88;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* CMP 69 */   { ADDR , EXTENDED, 
X		"8b;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* CMP 70 */   { 0 , 0, 
X		"89;[2=]y[1=]~.1&T!.8I;" },
X/* CMP 71 */   { 0 , 0, 
X		"8a;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* CMP 72 */   { ADDR , DIRECT, 
X		"8b;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* CMP 73 */   { ADDR , EXTENDED, 
X		"8b;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* CMPB 74 */   { ADDR , DIRECT, 
X		"98;[2=].8I;[1=].8I;" },
X/* CMPB 75 */   { ADDR , EXTENDED, 
X		"9b;01;[2=]y[1=].8I;" },
X/* CMPB 76 */   { 0 , 0, 
X		"99;[2=];[1=].8I;" },
X/* CMPB 77 */   { 0 , 0, 
X		"9a;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* CMPB 78 */   { ADDR , DIRECT, 
X		"9b;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* CMPB 79 */   { ADDR , EXTENDED, 
X		"9b;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* CMPL 80 */   { CPU196 , CPU196, 
X		"c5;[2=]~.3&T!.8I;[1=]~.3&T!.8I;" },
X/* DEC 81 */   { 0 , 0, 
X		"05;[1=]~.1&T!.8I;" },
X/* DECB 82 */   { 0 , 0, 
X		"15;[1=].8I;" },
X/* DI 83 */   { 0 , 0, 
X		"fa;" },
X/* DIV 84 */   { ADDR , DIRECT, 
X		"fe;8c;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* DIV 85 */   { ADDR , EXTENDED, 
X		"fe;8f;01;[2=]~.1&T!y[1=]~.3&T!.8I;" },
X/* DIV 86 */   { 0 , 0, 
X		"fe;8d;[2=]y[1=]~.3&T!.8I;" },
X/* DIV 87 */   { 0 , 0, 
X		"fe;8e;[2=]~.1&T!.8I.[3#]|;[1=]~.3&T!.8I;" },
X/* DIV 88 */   { ADDR , DIRECT, 
X		"fe;8f;[3=]~.1&T!.8I;[2=]r[1=]~.3&T!.8I;" },
X/* DIV 89 */   { ADDR , EXTENDED, 
X		"fe;8f;[3=]~.1&T!.8I.1|;[2=]y[1=]~.3&T!.8I;" },
X/* DIVB 90 */   { ADDR , DIRECT, 
X		"fe;9c;[2=].8I;[1=]~.1&T!.8I;" },
X/* DIVB 91 */   { ADDR , EXTENDED, 
X		"fe;9f;01;[2=]y[1=]~.1&T!.8I;" },
X/* DIVB 92 */   { 0 , 0, 
X		"fe;9d;[2=];[1=]~.1&T!.8I;" },
X/* DIVB 93 */   { 0 , 0, 
X		"fe;9e;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* DIVB 94 */   { ADDR , DIRECT, 
X		"fe;9f;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* DIVB 95 */   { ADDR , EXTENDED, 
X		"fe;9f;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* DIVU 96 */   { ADDR , DIRECT, 
X		"8c;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* DIVU 97 */   { ADDR , EXTENDED, 
X		"8f;01;[2=]~.1&T!y[1=]~.3&T!.8I;" },
X/* DIVU 98 */   { 0 , 0, 
X		"8d;[2=]y[1=]~.3&T!.8I;" },
X/* DIVU 99 */   { 0 , 0, 
X		"8e;[2=]~.1&T!.8I.[3#]|;[1=]~.3&T!.8I;" },
X/* DIVU 100 */   { ADDR , DIRECT, 
X		"8f;[3=]~.1&T!.8I;[2=]r[1=]~.3&T!.8I;" },
X/* DIVU 101 */   { ADDR , EXTENDED, 
X		"8f;[3=]~.1&T!.8I.1|;[2=]y[1=]~.3&T!.8I;" },
X/* DIVUB 102 */   { ADDR , DIRECT, 
X		"9c;[2=].8I;[1=]~.1&T!.8I;" },
X/* DIVUB 103 */   { ADDR , EXTENDED, 
X		"9f;01;[2=]y[1=]~.1&T!.8I;" },
X/* DIVUB 104 */   { 0 , 0, 
X		"9d;[2=];[1=]~.1&T!.8I;" },
X/* DIVUB 105 */   { 0 , 0, 
X		"9e;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* DIVUB 106 */   { ADDR , DIRECT, 
X		"9f;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* DIVUB 107 */   { ADDR , EXTENDED, 
X		"9f;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* DJNZ 108 */   { 0 , 0, 
X		"e0;[1=].8I;[2=].Q.1+-r" },
X/* DJNZW 109 */   { CPU196 , CPU196, 
X		"e1;[1=]~.1&T!.8I;[2=].Q.1+-r" },
X/* EI 110 */   { 0 , 0, 
X		"fb;" },
X/* EXT 111 */   { 0 , 0, 
X		"06;[1=]~.3&T!.8I;" },
X/* EXTB 112 */   { 0 , 0, 
X		"16;[1=]~.1&T!.8I;" },
X/* IDLPD 113 */   { CPU196 , CPU196, 
X		"f6;[1=];" },
X/* INC 114 */   { 0 , 0, 
X		"07;[1=]~.1&T!.8I;" },
X/* INCB 115 */   { 0 , 0, 
X		"17;[1=].8I;" },
X/* JBC 116 */   { 0 , 0, 
X		"[2=].3I.30|;[1=].8I;[3=].Q.1+-r" },
X/* JBS 117 */   { 0 , 0, 
X		"[2=].3I.38|;[1=].8I;[3=].Q.1+-r" },
X/* JC 118 */   { 0 , 0, 
X		"db;[1=].Q.1+-r" },
X/* JE 119 */   { 0 , 0, 
X		"df;[1=].Q.1+-r" },
X/* JGE 120 */   { 0 , 0, 
X		"d6;[1=].Q.1+-r" },
X/* JGT 121 */   { 0 , 0, 
X		"d2;[1=].Q.1+-r" },
X/* JH 122 */   { 0 , 0, 
X		"d9;[1=].Q.1+-r" },
X/* JLE 123 */   { 0 , 0, 
X		"da;[1=].Q.1+-r" },
X/* JLT 124 */   { 0 , 0, 
X		"de;[1=].Q.1+-r" },
X/* JNC 125 */   { 0 , 0, 
X		"d3;[1=].Q.1+-r" },
X/* JNE 126 */   { 0 , 0, 
X		"d7;[1=].Q.1+-r" },
X/* JNH 127 */   { 0 , 0, 
X		"d1;[1=].Q.1+-r" },
X/* JNST 128 */   { 0 , 0, 
X		"d0;[1=].Q.1+-r" },
X/* JNV 129 */   { 0 , 0, 
X		"d5;[1=].Q.1+-r" },
X/* JNVT 130 */   { 0 , 0, 
X		"d4;[1=].Q.1+-r" },
X/* JST 131 */   { 0 , 0, 
X		"d8;[1=].Q.1+-r" },
X/* JV 132 */   { 0 , 0, 
X		"dd;[1=].Q.1+-r" },
X/* JVT 133 */   { 0 , 0, 
X		"dc;[1=].Q.1+-r" },
X/* LCALL 134 */   { 0 , 0, 
X		"ef;[1=].Q.2+-.ffff&y" },
X/* LD 135 */   { ADDR , DIRECT, 
X		"a0;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* LD 136 */   { ADDR , EXTENDED, 
X		"a3;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* LD 137 */   { 0 , 0, 
X		"a1;[2=]y[1=]~.1&T!.8I;" },
X/* LD 138 */   { 0 , 0, 
X		"a2;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* LD 139 */   { ADDR , DIRECT, 
X		"a3;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* LD 140 */   { ADDR , EXTENDED, 
X		"a3;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* LDB 141 */   { ADDR , DIRECT, 
X		"b0;[2=].8I;[1=].8I;" },
X/* LDB 142 */   { ADDR , EXTENDED, 
X		"b3;01;[2=]y[1=].8I;" },
X/* LDB 143 */   { 0 , 0, 
X		"b1;[2=];[1=].8I;" },
X/* LDB 144 */   { 0 , 0, 
X		"b2;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* LDB 145 */   { ADDR , DIRECT, 
X		"b3;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* LDB 146 */   { ADDR , EXTENDED, 
X		"b3;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* LDBSE 147 */   { ADDR , DIRECT, 
X		"bc;[2=].8I;[1=]~.1&T!.8I;" },
X/* LDBSE 148 */   { ADDR , EXTENDED, 
X		"bf;01;[2=]y[1=]~.1&T!.8I;" },
X/* LDBSE 149 */   { 0 , 0, 
X		"bd;[2=];[1=]~.1&T!.8I;" },
X/* LDBSE 150 */   { 0 , 0, 
X		"be;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* LDBSE 151 */   { ADDR , DIRECT, 
X		"bf;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* LDBSE 152 */   { ADDR , EXTENDED, 
X		"bf;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* LDBZE 153 */   { ADDR , DIRECT, 
X		"ac;[2=].8I;[1=]~.1&T!.8I;" },
X/* LDBZE 154 */   { ADDR , EXTENDED, 
X		"af;01;[2=]y[1=]~.1&T!.8I;" },
X/* LDBZE 155 */   { 0 , 0, 
X		"ad;[2=];[1=]~.1&T!.8I;" },
X/* LDBZE 156 */   { 0 , 0, 
X		"ae;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* LDBZE 157 */   { ADDR , DIRECT, 
X		"af;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* LDBZE 158 */   { ADDR , EXTENDED, 
X		"af;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* LJMP 159 */   { 0 , 0, 
X		"e7;[1=].Q.2+-.ffff&y" },
X/* MUL 160 */   { ADDR , DIRECT, 
X		"fe;6c;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MUL 161 */   { ADDR , EXTENDED, 
X		"fe;6f;01;[2=]~.1&T!y[1=]~.3&T!.8I;" },
X/* MUL 162 */   { ADDR , DIRECT, 
X		"fe;4c;[3=]~.1&T!.8I;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MUL 163 */   { ADDR , EXTENDED, 
X		"fe;4f;01;[3=]~.1&T!y[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MUL 164 */   { 0 , 0, 
X		"fe;6d;[2=]y[1=]~.3&T!.8I;" },
X/* MUL 165 */   { 0 , 0, 
X		"fe;4d;[3=]y[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MUL 166 */   { 0 , 0, 
X		"fe;6e;[2=]~.1&T!.8I.[3#]|;[1=]~.3&T!.8I;" },
X/* MUL 167 */   { 0 , 0, 
X		"fe;4e;[3=]~.1&T!.8I.[4#]|;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MUL 168 */   { ADDR , DIRECT, 
X		"fe;6f;[3=]~.1&T!.8I;[2=]r[1=]~.3&T!.8I;" },
X/* MUL 169 */   { ADDR , EXTENDED, 
X		"fe;6f;[3=]~.1&T!.8I.1|;[2=]y[1=]~.3&T!.8I;" },
X/* MUL 170 */   { ADDR , DIRECT, 
X		"fe;4f;[4=]~.1&T!.8I;[3=]r[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MUL 171 */   { ADDR , EXTENDED, 
X		"fe;4f;[4=]~.1&T!.8I.1|;[3=]y[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MULB 172 */   { ADDR , DIRECT, 
X		"fe;7c;[2=].8I;[1=]~.1&T!.8I;" },
X/* MULB 173 */   { ADDR , EXTENDED, 
X		"fe;7f;01;[2=]y[1=]~.1&T!.8I;" },
X/* MULB 174 */   { ADDR , DIRECT, 
X		"fe;5c;[3=].8I;[2=].8I;[1=]~.1&T!.8I;" },
X/* MULB 175 */   { ADDR , EXTENDED, 
X		"fe;5f;01;[3=]y[2=].8I;[1=]~.1&T!.8I;" },
X/* MULB 176 */   { 0 , 0, 
X		"fe;7d;[2=];[1=]~.1&T!.8I;" },
X/* MULB 177 */   { 0 , 0, 
X		"fe;5d;[3=];[2=].8I;[1=]~.1&T!.8I;" },
X/* MULB 178 */   { 0 , 0, 
X		"fe;7e;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* MULB 179 */   { 0 , 0, 
X		"fe;5e;[3=]~.1&T!.8I.[4#]|;[2=].8I;[1=]~.1&T!.8I;" },
X/* MULB 180 */   { ADDR , DIRECT, 
X		"fe;7f;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* MULB 181 */   { ADDR , EXTENDED, 
X		"fe;7f;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* MULB 182 */   { ADDR , DIRECT, 
X		"fe;5f;[4=]~.1&T!.8I;[3=]r[2=].8I;[1=]~.1&T!.8I;" },
X/* MULB 183 */   { ADDR , EXTENDED, 
X		"fe;5f;[4=]~.1&T!.8I.1|;[3=]y[2=].8I;[1=]~.1&T!.8I;" },
X/* MULU 184 */   { ADDR , DIRECT, 
X		"6c;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MULU 185 */   { ADDR , EXTENDED, 
X		"6f;01;[2=]~.1&T!y[1=]~.3&T!.8I;" },
X/* MULU 186 */   { ADDR , DIRECT, 
X		"4c;[3=]~.1&T!.8I;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MULU 187 */   { ADDR , EXTENDED, 
X		"4f;01;[3=]~.1&T!y[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MULU 188 */   { 0 , 0, 
X		"6d;[2=]y[1=]~.3&T!.8I;" },
X/* MULU 189 */   { 0 , 0, 
X		"4d;[3=]y[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MULU 190 */   { 0 , 0, 
X		"6e;[2=]~.1&T!.8I.[3#]|;[1=]~.3&T!.8I;" },
X/* MULU 191 */   { 0 , 0, 
X		"4e;[3=]~.1&T!.8I.[4#]|;[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MULU 192 */   { ADDR , DIRECT, 
X		"6f;[3=]~.1&T!.8I;[2=]r[1=]~.3&T!.8I;" },
X/* MULU 193 */   { ADDR , EXTENDED, 
X		"6f;[3=]~.1&T!.8I.1|;[2=]y[1=]~.3&T!.8I;" },
X/* MULU 194 */   { ADDR , DIRECT, 
X		"4f;[4=]~.1&T!.8I;[3=]r[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MULU 195 */   { ADDR , EXTENDED, 
X		"4f;[4=]~.1&T!.8I.1|;[3=]y[2=]~.1&T!.8I;[1=]~.3&T!.8I;" },
X/* MULUB 196 */   { ADDR , DIRECT, 
X		"7c;[2=].8I;[1=]~.1&T!.8I;" },
X/* MULUB 197 */   { ADDR , EXTENDED, 
X		"7f;01;[2=]y[1=]~.1&T!.8I;" },
X/* MULUB 198 */   { ADDR , DIRECT, 
X		"5c;[3=].8I;[2=].8I;[1=]~.1&T!.8I;" },
X/* MULUB 199 */   { ADDR , EXTENDED, 
X		"5f;01;[3=]y[2=].8I;[1=]~.1&T!.8I;" },
X/* MULUB 200 */   { 0 , 0, 
X		"7d;[2=];[1=]~.1&T!.8I;" },
X/* MULUB 201 */   { 0 , 0, 
X		"5d;[3=];[2=].8I;[1=]~.1&T!.8I;" },
X/* MULUB 202 */   { 0 , 0, 
X		"7e;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* MULUB 203 */   { 0 , 0, 
X		"5e;[3=]~.1&T!.8I.[4#]|;[2=].8I;[1=]~.1&T!.8I;" },
X/* MULUB 204 */   { ADDR , DIRECT, 
X		"7f;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* MULUB 205 */   { ADDR , EXTENDED, 
X		"7f;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* MULUB 206 */   { ADDR , DIRECT, 
X		"5f;[4=]~.1&T!.8I;[3=]r[2=].8I;[1=]~.1&T!.8I;" },
X/* MULUB 207 */   { ADDR , EXTENDED, 
X		"5f;[4=]~.1&T!.8I.1|;[3=]y[2=].8I;[1=]~.1&T!.8I;" },
X/* NEG 208 */   { 0 , 0, 
X		"03;[1=]~.1&T!.8I;" },
X/* NEGB 209 */   { 0 , 0, 
X		"13;[1=].8I;" },
X/* NOP 210 */   { 0 , 0, 
X		"fd;" },
X/* NORML 211 */   { 0 , 0, 
X		"0f;[2=].8I;[1=]~.3&T!.8I;" },
X/* NOT 212 */   { 0 , 0, 
X		"02;[1=]~.1&T!.8I;" },
X/* NOTB 213 */   { 0 , 0, 
X		"12;[1=].8I;" },
X/* OR 214 */   { ADDR , DIRECT, 
X		"80;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* OR 215 */   { ADDR , EXTENDED, 
X		"83;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* OR 216 */   { 0 , 0, 
X		"81;[2=]y[1=]~.1&T!.8I;" },
X/* OR 217 */   { 0 , 0, 
X		"82;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* OR 218 */   { ADDR , DIRECT, 
X		"83;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* OR 219 */   { ADDR , EXTENDED, 
X		"83;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* ORB 220 */   { ADDR , DIRECT, 
X		"90;[2=].8I;[1=].8I;" },
X/* ORB 221 */   { ADDR , EXTENDED, 
X		"93;01;[2=]y[1=].8I;" },
X/* ORB 222 */   { 0 , 0, 
X		"91;[2=];[1=].8I;" },
X/* ORB 223 */   { 0 , 0, 
X		"92;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* ORB 224 */   { ADDR , DIRECT, 
X		"93;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* ORB 225 */   { ADDR , EXTENDED, 
X		"93;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* POP 226 */   { ADDR , DIRECT, 
X		"cc;[1=]~.1&T!.8I;" },
X/* POP 227 */   { ADDR , EXTENDED, 
X		"cf;01;[1=]~.1&T!y" },
X/* POP 228 */   { 0 , 0, 
X		"ce;[1=]~.1&T!.8I.[2#]|;" },
X/* POP 229 */   { ADDR , DIRECT, 
X		"cf;[2=]~.1&T!.8I;[1=]r" },
X/* POP 230 */   { ADDR , EXTENDED, 
X		"cf;[2=]~.1&T!.8I.1|;[1=]y" },
X/* POPA 231 */   { CPU196 , CPU196, 
X		"f5;" },
X/* POPF 232 */   { 0 , 0, 
X		"f3;" },
X/* PUSH 233 */   { ADDR , DIRECT, 
X		"c8;[1=]~.1&T!.8I;" },
X/* PUSH 234 */   { ADDR , EXTENDED, 
X		"cb;01;[1=]~.1&T!y" },
X/* PUSH 235 */   { 0 , 0, 
X		"c9;[1=]y" },
X/* PUSH 236 */   { 0 , 0, 
X		"ca;[1=]~.1&T!.8I.[2#]|;" },
X/* PUSH 237 */   { ADDR , DIRECT, 
X		"cb;[2=]~.1&T!.8I;[1=]r" },
X/* PUSH 238 */   { ADDR , EXTENDED, 
X		"cb;[2=]~.1&T!.8I.1|;[1=]y" },
X/* PUSHA 239 */   { CPU196 , CPU196, 
X		"f4;" },
X/* PUSHF 240 */   { 0 , 0, 
X		"f2;" },
X/* RET 241 */   { 0 , 0, 
X		"f0;" },
X/* RST 242 */   { 0 , 0, 
X		"ff;" },
X/* SCALL 243 */   { 0 , 0, 
X		"[1=].Q.2+-.bR.2800|x" },
X/* SETC 244 */   { 0 , 0, 
X		"f9;" },
X/* SHL 245 */   { 0 , 0, 
X		"09;[2=].8I~.24<T!;[1=]~.1&T!.8I;" },
X/* SHL 246 */   { 0 , 0, 
X		"09;[2=].4I;[1=]~.1&T!.8I;" },
X/* SHLB 247 */   { 0 , 0, 
X		"19;[2=].8I~.24<T!;[1=].8I;" },
X/* SHLB 248 */   { 0 , 0, 
X		"19;[2=].4I;[1=].8I;" },
X/* SHLL 249 */   { 0 , 0, 
X		"0d;[2=].8I~.24<T!;[1=]~.3&T!.8I;" },
X/* SHLL 250 */   { 0 , 0, 
X		"0d;[2=].4I;[1=]~.3&T!.8I;" },
X/* SHR 251 */   { 0 , 0, 
X		"08;[2=].8I~.24<T!;[1=]~.1&T!.8I;" },
X/* SHR 252 */   { 0 , 0, 
X		"08;[2=].4I;[1=]~.1&T!.8I;" },
X/* SHRA 253 */   { 0 , 0, 
X		"0a;[2=].8I~.24<T!;[1=]~.1&T!.8I;" },
X/* SHRA 254 */   { 0 , 0, 
X		"0a;[2=].4I;[1=]~.1&T!.8I;" },
X/* SHRAB 255 */   { 0 , 0, 
X		"1a;[2=].8I~.24<T!;[1=].8I;" },
X/* SHRAB 256 */   { 0 , 0, 
X		"1a;[2=].4I;[1=].8I;" },
X/* SHRAL 257 */   { 0 , 0, 
X		"0e;[2=].8I~.24<T!;[1=]~.3&T!.8I;" },
X/* SHRAL 258 */   { 0 , 0, 
X		"0e;[2=].4I;[1=]~.3&T!.8I;" },
X/* SHRB 259 */   { 0 , 0, 
X		"18;[2=].8I~.24<T!;[1=].8I;" },
X/* SHRB 260 */   { 0 , 0, 
X		"18;[2=].4I;[1=].8I;" },
X/* SHRL 261 */   { 0 , 0, 
X		"0c;[2=].8I~.24<T!;[1=]~.3&T!.8I;" },
X/* SHRL 262 */   { 0 , 0, 
X		"0c;[2=].4I;[1=]~.3&T!.8I;" },
X/* SJMP 263 */   { 0 , 0, 
X		"[1=].Q.2+-.bR.2000|x" },
X/* SKIP 264 */   { 0 , 0, 
X		"00;[1=];" },
X/* ST 265 */   { ADDR , DIRECT, 
X		"c0;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* ST 266 */   { ADDR , EXTENDED, 
X		"c3;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* ST 267 */   { 0 , 0, 
X		"c2;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* ST 268 */   { ADDR , DIRECT, 
X		"c3;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* ST 269 */   { ADDR , EXTENDED, 
X		"c3;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* STB 270 */   { ADDR , DIRECT, 
X		"c4;[2=].8I;[1=].8I;" },
X/* STB 271 */   { ADDR , EXTENDED, 
X		"c7;01;[2=]y[1=].8I;" },
X/* STB 272 */   { 0 , 0, 
X		"c6;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* STB 273 */   { ADDR , DIRECT, 
X		"c7;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* STB 274 */   { ADDR , EXTENDED, 
X		"c7;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* SUB 275 */   { ADDR , DIRECT, 
X		"68;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* SUB 276 */   { ADDR , EXTENDED, 
X		"6b;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* SUB 277 */   { ADDR , DIRECT, 
X		"48;[3=]~.1&T!.8I;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* SUB 278 */   { ADDR , EXTENDED, 
X		"4b;01;[3=]~.1&T!y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* SUB 279 */   { 0 , 0, 
X		"69;[2=]y[1=]~.1&T!.8I;" },
X/* SUB 280 */   { 0 , 0, 
X		"49;[3=]y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* SUB 281 */   { 0 , 0, 
X		"6a;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* SUB 282 */   { 0 , 0, 
X		"4a;[3=]~.1&T!.8I.[4#]|;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* SUB 283 */   { ADDR , DIRECT, 
X		"6b;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* SUB 284 */   { ADDR , EXTENDED, 
X		"6b;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* SUB 285 */   { ADDR , DIRECT, 
X		"4b;[4=]~.1&T!.8I;[3=]r[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* SUB 286 */   { ADDR , EXTENDED, 
X		"4b;[4=]~.1&T!.8I.1|;[3=]y[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* SUBB 287 */   { ADDR , DIRECT, 
X		"78;[2=].8I;[1=].8I;" },
X/* SUBB 288 */   { ADDR , EXTENDED, 
X		"7b;01;[2=]y[1=].8I;" },
X/* SUBB 289 */   { ADDR , DIRECT, 
X		"58;[3=].8I;[2=].8I;[1=].8I;" },
X/* SUBB 290 */   { ADDR , EXTENDED, 
X		"5b;01;[3=]y[2=].8I;[1=].8I;" },
X/* SUBB 291 */   { 0 , 0, 
X		"79;[2=];[1=].8I;" },
X/* SUBB 292 */   { 0 , 0, 
X		"59;[3=];[2=].8I;[1=].8I;" },
X/* SUBB 293 */   { 0 , 0, 
X		"7a;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* SUBB 294 */   { 0 , 0, 
X		"5a;[3=]~.1&T!.8I.[4#]|;[2=].8I;[1=].8I;" },
X/* SUBB 295 */   { ADDR , DIRECT, 
X		"7b;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* SUBB 296 */   { ADDR , EXTENDED, 
X		"7b;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* SUBB 297 */   { ADDR , DIRECT, 
X		"5b;[4=]~.1&T!.8I;[3=]r[2=].8I;[1=].8I;" },
X/* SUBB 298 */   { ADDR , EXTENDED, 
X		"5b;[4=]~.1&T!.8I.1|;[3=]y[2=].8I;[1=].8I;" },
X/* SUBC 299 */   { ADDR , DIRECT, 
X		"a8;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* SUBC 300 */   { ADDR , EXTENDED, 
X		"ab;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* SUBC 301 */   { 0 , 0, 
X		"a9;[2=]y[1=]~.1&T!.8I;" },
X/* SUBC 302 */   { 0 , 0, 
X		"aa;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* SUBC 303 */   { ADDR , DIRECT, 
X		"ab;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* SUBC 304 */   { ADDR , EXTENDED, 
X		"ab;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* SUBCB 305 */   { ADDR , DIRECT, 
X		"b8;[2=].8I;[1=].8I;" },
X/* SUBCB 306 */   { ADDR , EXTENDED, 
X		"bb;01;[2=]y[1=].8I;" },
X/* SUBCB 307 */   { 0 , 0, 
X		"b9;[2=];[1=].8I;" },
X/* SUBCB 308 */   { 0 , 0, 
X		"ba;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* SUBCB 309 */   { ADDR , DIRECT, 
X		"bb;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* SUBCB 310 */   { ADDR , EXTENDED, 
X		"bb;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X/* XOR 311 */   { ADDR , DIRECT, 
X		"84;[2=]~.1&T!.8I;[1=]~.1&T!.8I;" },
X/* XOR 312 */   { ADDR , EXTENDED, 
X		"87;01;[2=]~.1&T!y[1=]~.1&T!.8I;" },
X/* XOR 313 */   { 0 , 0, 
X		"85;[2=]y[1=]~.1&T!.8I;" },
X/* XOR 314 */   { 0 , 0, 
X		"86;[2=]~.1&T!.8I.[3#]|;[1=]~.1&T!.8I;" },
X/* XOR 315 */   { ADDR , DIRECT, 
X		"87;[3=]~.1&T!.8I;[2=]r[1=]~.1&T!.8I;" },
X/* XOR 316 */   { ADDR , EXTENDED, 
X		"87;[3=]~.1&T!.8I.1|;[2=]y[1=]~.1&T!.8I;" },
X/* XORB 317 */   { ADDR , DIRECT, 
X		"94;[2=].8I;[1=].8I;" },
X/* XORB 318 */   { ADDR , EXTENDED, 
X		"97;01;[2=]y[1=].8I;" },
X/* XORB 319 */   { 0 , 0, 
X		"95;[2=];[1=].8I;" },
X/* XORB 320 */   { 0 , 0, 
X		"96;[2=]~.1&T!.8I.[3#]|;[1=].8I;" },
X/* XORB 321 */   { ADDR , DIRECT, 
X		"97;[3=]~.1&T!.8I;[2=]r[1=].8I;" },
X/* XORB 322 */   { ADDR , EXTENDED, 
X		"97;[3=]~.1&T!.8I.1|;[2=]y[1=].8I;" },
X	{ 0,0,""} };
X/* end fraptabdef.c */
SHAR_EOF
true || echo 'restore of as8096.y failed'
fi
exit 0



More information about the Alt.sources mailing list