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