Path: utzoo!utgpu!cs.utexas.edu!samsung!uunet!pilchuck!ssc!markz From: markz@ssc.UUCP (Mark Zenier) Newsgroups: alt.sources Subject: Frankenstein Cross Assemblers, Intel 8096 flavor, Part 2 of 2 Message-ID: <607@ssc.UUCP> Date: 5 Dec 90 06:18:10 GMT Organization: SSC, Inc., Seattle, WA Lines: 2155 Archive-name: Frankasm/As809602 Submitted-by: markz@ssc.uucp ---- 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 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 KOC_WDEF X%token KOC_BDEF X%token KOC_ELSE X%token KOC_END X%token KOC_ENDI X%token KOC_EQU X%token KOC_IF X%token KOC_INCLUDE X%token KOC_ORG X%token KOC_RESM X%token KOC_SDEF X%token KOC_SET X%token KOC_CHSET X%token KOC_CHDEF X%token KOC_CHUSE X%token KOC_AWRESM X%token KOC_ALRESM X%token KOC_ALDEF X%token KOC_AWDEF X%token KOC_CPU X%token KOC_opcode X X%token 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 LABEL X%token STRING X%token 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 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