home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / fasbin21 / fas_src / as6811 / as6811.y < prev   
Text File  |  1990-12-11  |  62KB  |  2,438 lines

  1. %{
  2.  
  3. /*
  4. HEADER:     ;
  5. TITLE:         Frankenstein Cross Assemblers;
  6. VERSION:     2.0;
  7. DESCRIPTION: "    Reconfigurable Cross-assembler producing Intel (TM)
  8.         Hex format object records.  ";
  9. KEYWORDS:     cross-assemblers, 1805, 2650, 6301, 6502, 6805, 6809, 
  10.         6811, tms7000, 8048, 8051, 8096, z8, z80;
  11. SYSTEM:     UNIX, MS-Dos ;
  12. FILENAME:     as6811.y;
  13. WARNINGS:     "This software is in the public domain.  
  14.         Any prior copyright claims are relinquished.  
  15.  
  16.         This software is distributed with no warranty whatever.  
  17.         The author takes no responsibility for the consequences 
  18.         of its use.
  19.  
  20.         Yacc (or Bison) required to compile."  ;
  21. SEE-ALSO:     as6811.doc,frasmain.c;    
  22. AUTHORS:     Mark Zenier;
  23. COMPILERS:     Microport Sys V/AT, ATT Yacc, Turbo C V1.5, Bison (CUG disk 285)
  24.         (previous versions Xenix, Unisoft 68000 Version 7, Sun 3);
  25. */
  26. /* 6811 instruction generation file */
  27. /* November 17, 1990 */
  28.  
  29. /*
  30.     description    frame work parser description for framework cross
  31.             assemblers
  32.     history        February 2, 1988
  33.             September 11, 1990 - merge table definition
  34.             September 12, 1990 - short file names
  35.             September 14, 1990 - short variable names
  36.             September 17, 1990 - use yylex as external
  37. */
  38. #include <stdio.h>
  39. #include "frasmdat.h"
  40. #include "fragcon.h"
  41.  
  42. #define yylex lexintercept
  43.  
  44. /*
  45.     file        fraselcrit.h
  46.     author        Mark Zenier
  47.     description    Selection criteria and token values for 6811
  48.             framework assembler
  49.     usage        framework cross assembler
  50.     history        September 19, 1987
  51. */
  52.  
  53.         /* 000000xxxx */
  54. #define CPUMASK        0xf
  55. #define CPU6800        0x1    /* cpuselect value in parser */
  56. #define CPU6801        0x3
  57. #define CPU6811        0x7
  58. #define TS6800PLUS    0x1    /* mask and match values in table */
  59. #define TS6801PLUS    0x2    /* if select value & mask == mask */
  60. #define TS6811        0x4
  61.  
  62.         /* 0000xx0000 */
  63. #define ACCREG        0x30
  64. #define REGA        0x10
  65. #define REGB        0x20
  66.  
  67.         /* 00xx000000 */
  68. #define INDREG        0xc0
  69. #define REGX        0x40
  70. #define REGY        0x80
  71.  
  72.         /* xx00000000 */
  73. #define ADDR        0x300
  74. #define DIRECT        0x100
  75. #define EXTENDED    0x200
  76.  
  77.  
  78. #define ST_ACC 0x1
  79. #define ST_AEXP 0x2
  80. #define ST_AIMM 0x4
  81. #define ST_AIND 0x8
  82. #define ST_BRSET 0x10
  83. #define ST_BSET 0x20
  84. #define ST_EXP 0x40
  85. #define ST_IBRSET 0x80
  86. #define ST_IBSET 0x100
  87. #define ST_IMM 0x200
  88. #define ST_IND 0x400
  89. #define ST_INDREG 0x800
  90. #define ST_INH 0x1000
  91.     
  92.     
  93.     int    cpuselect = CPU6811;
  94.     static char    genbdef[] = "[1=];";
  95.     static char    genwdef[] = "[1=]x";
  96.     char ignosyn[] = "[Xinvalid syntax for instruction";
  97.     char ignosel[] = "[Xinvalid operands/illegal instruction for cpu";
  98.  
  99.  
  100.     long    labelloc;
  101.     static int satsub;
  102.     int    ifstkpt = 0;
  103.     int    fraifskip = FALSE;
  104.  
  105.     struct symel * endsymbol = SYMNULL;
  106.  
  107. %}
  108. %union {
  109.     int    intv;
  110.     long     longv;
  111.     char    *strng;
  112.     struct symel *symb;
  113.     struct {int indexv, ex; } inetre;
  114. }
  115.  
  116. %token <intv> ACCUM
  117. %token <intv> INDEX
  118. %type <inetre> indexed
  119.  
  120. %token <intv> KOC_BDEF
  121. %token <intv> KOC_ELSE
  122. %token <intv> KOC_END
  123. %token <intv> KOC_ENDI
  124. %token <intv> KOC_EQU
  125. %token <intv> KOC_IF
  126. %token <intv> KOC_INCLUDE
  127. %token <intv> KOC_ORG
  128. %token <intv> KOC_RESM
  129. %token <intv> KOC_SDEF
  130. %token <intv> KOC_SET
  131. %token <intv> KOC_WDEF
  132. %token <intv> KOC_CHSET
  133. %token <intv> KOC_CHDEF
  134. %token <intv> KOC_CHUSE
  135. %token <intv> KOC_CPU
  136. %token <intv> KOC_opcode
  137.  
  138. %token <longv> CONSTANT
  139. %token EOL
  140. %token KEOP_AND
  141. %token KEOP_DEFINED
  142. %token KEOP_EQ
  143. %token KEOP_GE
  144. %token KEOP_GT
  145. %token KEOP_HIGH
  146. %token KEOP_LE
  147. %token KEOP_LOW
  148. %token KEOP_LT
  149. %token KEOP_MOD
  150. %token KEOP_MUN
  151. %token KEOP_NE
  152. %token KEOP_NOT
  153. %token KEOP_OR
  154. %token KEOP_SHL
  155. %token KEOP_SHR
  156. %token KEOP_XOR
  157. %token KEOP_locctr
  158. %token <symb> LABEL
  159. %token <strng> STRING
  160. %token <symb> SYMBOL
  161.  
  162. %token KTK_invalid
  163.  
  164. %right    KEOP_HIGH KEOP_LOW
  165. %left    KEOP_OR KEOP_XOR
  166. %left    KEOP_AND
  167. %right    KEOP_NOT
  168. %nonassoc    KEOP_GT KEOP_GE KEOP_LE KEOP_LT KEOP_NE KEOP_EQ
  169. %left    '+' '-'
  170. %left    '*' '/' KEOP_MOD KEOP_SHL KEOP_SHR
  171. %right    KEOP_MUN
  172.  
  173.  
  174. %type <intv> expr exprlist stringlist
  175.  
  176. %start file
  177.  
  178. %%
  179.  
  180. file    :    file allline
  181.     |    allline
  182.     ;
  183.  
  184. allline    :     line EOL
  185.             {
  186.                 clrexpr();
  187.             }
  188.     |    EOL
  189.     |    error EOL
  190.             {
  191.                 clrexpr();
  192.                 yyerrok;
  193.             }
  194.     ;
  195.  
  196. line    :    LABEL KOC_END 
  197.             {
  198.                 endsymbol = $1;
  199.                 nextreadact = Nra_end;
  200.             }
  201.     |          KOC_END 
  202.             {
  203.                 nextreadact = Nra_end;
  204.             }
  205.     |    KOC_INCLUDE STRING
  206.             {
  207.         if(nextfstk >= FILESTKDPTH)
  208.         {
  209.             fraerror("include file nesting limit exceeded");
  210.         }
  211.         else
  212.         {
  213.             infilestk[nextfstk].fnm = savestring($2,strlen($2));
  214.             if( (infilestk[nextfstk].fpt = fopen($2,"r"))
  215.                 ==(FILE *)NULL )
  216.             {
  217.                 fraerror("cannot open include file");
  218.             }
  219.             else
  220.             {
  221.                 nextreadact = Nra_new;
  222.             }
  223.         }
  224.             }
  225.     |    LABEL KOC_EQU expr 
  226.             {
  227.                 if($1 -> seg == SSG_UNDEF)
  228.                 {
  229.                     pevalexpr(0, $3);
  230.                     if(evalr[0].seg == SSG_ABS)
  231.                     {
  232.                         $1 -> seg = SSG_EQU;
  233.                         $1 -> value = evalr[0].value;
  234.                         prtequvalue("C: 0x%lx\n",
  235.                             evalr[0].value);
  236.                     }
  237.                     else
  238.                     {
  239.                         fraerror(
  240.                     "noncomputable expression for EQU");
  241.                     }
  242.                 }
  243.                 else
  244.                 {
  245.                     fraerror(
  246.                 "cannot change symbol value with EQU");
  247.                 }
  248.             }
  249.     |    LABEL KOC_SET expr 
  250.             {
  251.                 if($1 -> seg == SSG_UNDEF
  252.                    || $1 -> seg == SSG_SET)
  253.                 {
  254.                     pevalexpr(0, $3);
  255.                     if(evalr[0].seg == SSG_ABS)
  256.                     {
  257.                         $1 -> seg = SSG_SET;
  258.                         $1 -> value = evalr[0].value;
  259.                         prtequvalue("C: 0x%lx\n",
  260.                             evalr[0].value);
  261.                     }
  262.                     else
  263.                     {
  264.                         fraerror(
  265.                     "noncomputable expression for SET");
  266.                     }
  267.                 }
  268.                 else
  269.                 {
  270.                     fraerror(
  271.                 "cannot change symbol value with SET");
  272.                 }
  273.             }
  274.     |    KOC_IF expr 
  275.             {
  276.         if((++ifstkpt) < IFSTKDEPTH)
  277.         {
  278.             pevalexpr(0, $2);
  279.             if(evalr[0].seg == SSG_ABS)
  280.             {
  281.                 if(evalr[0].value != 0)
  282.                 {
  283.                     elseifstk[ifstkpt] = If_Skip;
  284.                     endifstk[ifstkpt] = If_Active;
  285.                 }
  286.                 else
  287.                 {
  288.                     fraifskip = TRUE;
  289.                     elseifstk[ifstkpt] = If_Active;
  290.                     endifstk[ifstkpt] = If_Active;
  291.                 }
  292.             }
  293.             else
  294.             {
  295.                 fraifskip = TRUE;
  296.                 elseifstk[ifstkpt] = If_Active;
  297.                 endifstk[ifstkpt] = If_Active;
  298.             }
  299.         }
  300.         else
  301.         {
  302.             fraerror("IF stack overflow");
  303.         }
  304.             }
  305.                         
  306.     |    KOC_IF 
  307.             {
  308.         if(fraifskip) 
  309.         {
  310.             if((++ifstkpt) < IFSTKDEPTH)
  311.             {
  312.                     elseifstk[ifstkpt] = If_Skip;
  313.                     endifstk[ifstkpt] = If_Skip;
  314.             }
  315.             else
  316.             {
  317.                 fraerror("IF stack overflow");
  318.             }
  319.         }
  320.         else
  321.         {
  322.             yyerror("syntax error");
  323.             YYERROR;
  324.         }
  325.                 }
  326.                         
  327.     |    KOC_ELSE 
  328.             {
  329.                 switch(elseifstk[ifstkpt])
  330.                 {
  331.                 case If_Active:
  332.                     fraifskip = FALSE;
  333.                     break;
  334.                 
  335.                 case If_Skip:
  336.                     fraifskip = TRUE;
  337.                     break;
  338.                 
  339.                 case If_Err:
  340.                     fraerror("ELSE with no matching if");
  341.                     break;
  342.                 }
  343.             }
  344.  
  345.     |    KOC_ENDI 
  346.             {
  347.                 switch(endifstk[ifstkpt])
  348.                 {
  349.                 case If_Active:
  350.                     fraifskip = FALSE;
  351.                     ifstkpt--;
  352.                     break;
  353.                 
  354.                 case If_Skip:
  355.                     fraifskip = TRUE;
  356.                     ifstkpt--;
  357.                     break;
  358.                 
  359.                 case If_Err:
  360.                     fraerror("ENDI with no matching if");
  361.                     break;
  362.                 }
  363.             }
  364.     |    LABEL KOC_ORG expr 
  365.             {
  366.                 pevalexpr(0, $3);
  367.                 if(evalr[0].seg == SSG_ABS)
  368.                 {
  369.                     locctr = labelloc = evalr[0].value;
  370.                     if($1 -> seg == SSG_UNDEF)
  371.                     {
  372.                         $1 -> seg = SSG_ABS;
  373.                         $1 -> value = labelloc;
  374.                     }
  375.                     else
  376.                         fraerror(
  377.                         "multiple definition of label");
  378.                     prtequvalue("C: 0x%lx\n",
  379.                         evalr[0].value);
  380.                 }
  381.                 else
  382.                 {
  383.                     fraerror(
  384.                      "noncomputable expression for ORG");
  385.                 }
  386.             }
  387.     |          KOC_ORG expr 
  388.             {
  389.                 pevalexpr(0, $2);
  390.                 if(evalr[0].seg == SSG_ABS)
  391.                 {
  392.                     locctr = labelloc = evalr[0].value;
  393.                     prtequvalue("C: 0x%lx\n",
  394.                         evalr[0].value);
  395.                 }
  396.                 else
  397.                 {
  398.                     fraerror(
  399.                      "noncomputable expression for ORG");
  400.                 }
  401.             }
  402.     |    LABEL KOC_CHSET
  403.             {
  404.                 if($1 -> seg == SSG_UNDEF)
  405.                 {
  406.                     $1 -> seg = SSG_EQU;
  407.                     if( ($1->value = chtcreate()) <= 0)
  408.                     {
  409.         fraerror( "cannot create character translation table");
  410.                     }
  411.                     prtequvalue("C: 0x%lx\n", $1 -> value);
  412.                 }
  413.                 else
  414.                 {
  415.             fraerror( "multiple definition of label");
  416.                 }
  417.             }
  418.     |        KOC_CHUSE
  419.             {
  420.                 chtcpoint = (int *) NULL;
  421.                 prtequvalue("C: 0x%lx\n", 0L);
  422.             }
  423.     |        KOC_CHUSE expr
  424.             {
  425.                 pevalexpr(0, $2);
  426.                 if( evalr[0].seg == SSG_ABS)
  427.                 {
  428.                     if( evalr[0].value == 0)
  429.                     {
  430.                         chtcpoint = (int *)NULL;
  431.                         prtequvalue("C: 0x%lx\n", 0L);
  432.                     }
  433.                     else if(evalr[0].value < chtnxalph)
  434.                     {
  435.                 chtcpoint = chtatab[evalr[0].value];
  436.                 prtequvalue("C: 0x%lx\n", evalr[0].value);
  437.                     }
  438.                     else
  439.                     {
  440.             fraerror("nonexistent character translation table");
  441.                     }
  442.                 }
  443.                 else
  444.                 {
  445.                     fraerror("noncomputable expression");
  446.                 }
  447.             }
  448.     |        KOC_CHDEF STRING ',' exprlist
  449.             {
  450.         int findrv, numret, *charaddr;
  451.         char *sourcestr = $2, *before;
  452.  
  453.         if(chtnpoint != (int *)NULL)
  454.         {
  455.             for(satsub = 0; satsub < $4; satsub++)
  456.             {
  457.                 before = sourcestr;
  458.  
  459.                 pevalexpr(0, exprlist[satsub]);
  460.                 findrv = chtcfind(chtnpoint, &sourcestr,
  461.                         &charaddr, &numret);
  462.                 if(findrv == CF_END)
  463.                 {
  464.             fraerror("more expressions than characters");
  465.                     break;
  466.                 }
  467.  
  468.                 if(evalr[0].seg == SSG_ABS)
  469.                 {
  470.                     switch(findrv)
  471.                     {
  472.                     case CF_UNDEF:
  473.                         {
  474.                 if(evalr[0].value < 0 ||
  475.                     evalr[0].value > 255)
  476.                 {
  477.             frawarn("character translation value truncated");
  478.                 }
  479.                 *charaddr = evalr[0].value & 0xff;
  480.                 prtequvalue("C: 0x%lx\n", evalr[0].value);
  481.                         }
  482.                         break;
  483.  
  484.                     case CF_INVALID:
  485.                     case CF_NUMBER:
  486.                 fracherror("invalid character to define", 
  487.                     before, sourcestr);
  488.                         break;
  489.  
  490.                     case CF_CHAR:
  491.                 fracherror("character already defined", 
  492.                     before, sourcestr);
  493.                         break;
  494.                     }
  495.                 }
  496.                 else
  497.                 {
  498.                     fraerror("noncomputable expression");
  499.                 }
  500.             }
  501.  
  502.             if( *sourcestr != '\0')
  503.             {
  504.                 fraerror("more characters than expressions");
  505.             }
  506.         }
  507.         else
  508.         {
  509.             fraerror("no CHARSET statement active");
  510.         }
  511.             
  512.             }
  513.     |    LABEL 
  514.             {
  515.             if($1 -> seg == SSG_UNDEF)
  516.             {
  517.                 $1 -> seg = SSG_ABS;
  518.                 $1 -> value = labelloc;
  519.                 prtequvalue("C: 0x%lx\n", labelloc);
  520.  
  521.             }
  522.             else
  523.                 fraerror(
  524.                 "multiple definition of label");
  525.             }
  526.     |    labeledline
  527.     ;
  528.  
  529. labeledline :    LABEL genline
  530.             {
  531.             if($1 -> seg == SSG_UNDEF)
  532.             {
  533.                 $1 -> seg = SSG_ABS;
  534.                 $1 -> value = labelloc;
  535.             }
  536.             else
  537.                 fraerror(
  538.                 "multiple definition of label");
  539.             labelloc = locctr;
  540.             }
  541.                 
  542.     |    genline
  543.             {
  544.                 labelloc = locctr;
  545.             }
  546.     ;
  547.  
  548. genline    :    KOC_BDEF    exprlist 
  549.             {
  550.                 genlocrec(currseg, labelloc);
  551.                 for( satsub = 0; satsub < $2; satsub++)
  552.                 {
  553.                     pevalexpr(1, exprlist[satsub]);
  554.                     locctr += geninstr(genbdef);
  555.                 }
  556.             }
  557.     |    KOC_SDEF stringlist 
  558.             {
  559.                 genlocrec(currseg, labelloc);
  560.                 for(satsub = 0; satsub < $2; satsub++)
  561.                 {
  562.                     locctr += genstring(stringlist[satsub]);
  563.                 }
  564.             }
  565.     |    KOC_WDEF exprlist 
  566.             {
  567.                 genlocrec(currseg, labelloc);
  568.                 for( satsub = 0; satsub < $2; satsub++)
  569.                 {
  570.                     pevalexpr(1, exprlist[satsub]);
  571.                     locctr += geninstr(genwdef);
  572.                 }
  573.             }    
  574.     |    KOC_RESM expr 
  575.             {
  576.                 pevalexpr(0, $2);
  577.                 if(evalr[0].seg == SSG_ABS)
  578.                 {
  579.                     locctr = labelloc + evalr[0].value;
  580.                     prtequvalue("C: 0x%lx\n", labelloc);
  581.                 }
  582.                 else
  583.                 {
  584.                     fraerror(
  585.                  "noncomputable result for RMB expression");
  586.                 }
  587.             }
  588.     ;
  589.  
  590. exprlist :    exprlist ',' expr
  591.             {
  592.                 exprlist[nextexprs ++ ] = $3;
  593.                 $$ = nextexprs;
  594.             }
  595.     |    expr
  596.             {
  597.                 nextexprs = 0;
  598.                 exprlist[nextexprs ++ ] = $1;
  599.                 $$ = nextexprs;
  600.             }
  601.     ;
  602.  
  603. stringlist :    stringlist ',' STRING
  604.             {
  605.                 stringlist[nextstrs ++ ] = $3;
  606.                 $$ = nextstrs;
  607.             }
  608.     |    STRING
  609.             {
  610.                 nextstrs = 0;
  611.                 stringlist[nextstrs ++ ] = $1;
  612.                 $$ = nextstrs;
  613.             }
  614.     ;
  615.  
  616.  
  617. line    :    KOC_CPU STRING
  618.             {
  619.         if( ! cpumatch($2))
  620.         {
  621.             fraerror("unknown cpu type, 68hc11 assumed");
  622.             cpuselect = CPU6811;
  623.         }
  624.             }
  625.     ;
  626. genline : KOC_opcode  ACCUM
  627.             {
  628.         genlocrec(currseg, labelloc);
  629.         locctr += geninstr(findgen($1, ST_ACC, $2 + cpuselect));
  630.             }
  631.     ;
  632. genline : KOC_opcode  ACCUM expr
  633.             {
  634.         pevalexpr(1, $3);
  635.         genlocrec(currseg, labelloc);
  636.         locctr += geninstr(findgen( $1, ST_AEXP, cpuselect + $2
  637.                  + ( (evalr[1].seg == SSG_ABS 
  638.                 && evalr[1].value >= 0
  639.                 && evalr[1].value <= 255 )
  640.                 ? DIRECT : EXTENDED ) ) );
  641.             }
  642.     ;
  643. genline : KOC_opcode  ACCUM '#' expr
  644.             {
  645.         pevalexpr(1,$4);
  646.         genlocrec(currseg, labelloc);
  647.         locctr += geninstr( findgen($1, ST_AIMM, $2 + cpuselect));
  648.             }
  649.     ;
  650. genline : KOC_opcode  ACCUM indexed
  651.             {
  652.         pevalexpr(1, $3.ex);
  653.         genlocrec(currseg, labelloc);
  654.         locctr += geninstr( findgen($1, ST_AIND, cpuselect
  655.                     + $2 + $3.indexv));
  656.             }
  657.     ;
  658. genline : KOC_opcode  expr ',' expr ',' expr
  659.             {
  660.         pevalexpr(1,$2);
  661.         pevalexpr(2,$4);
  662.         pevalexpr(3,$6);
  663.         genlocrec(currseg, labelloc);
  664.         locctr += geninstr( findgen($1, ST_BRSET, cpuselect));
  665.             }
  666.     ;
  667. genline : KOC_opcode  expr ',' expr
  668.             {
  669.         pevalexpr(1,$2);
  670.         pevalexpr(2,$4);
  671.         genlocrec(currseg, labelloc);
  672.         locctr += geninstr( findgen( $1, ST_BSET, cpuselect));
  673.             }
  674.     ;
  675. genline : KOC_opcode  expr
  676.             {
  677.         pevalexpr(1, $2);
  678.         genlocrec(currseg, labelloc);
  679.         locctr += geninstr( findgen( $1, ST_EXP, cpuselect 
  680.                  + ( (evalr[1].seg == SSG_ABS 
  681.                 && evalr[1].value >= 0
  682.                 && evalr[1].value <= 255 )
  683.                 ? DIRECT : EXTENDED ) )
  684.                 );
  685.             }
  686.     ;
  687. genline : KOC_opcode  indexed ',' expr ',' expr
  688.             {
  689.         pevalexpr(1,$2.ex);
  690.         pevalexpr(2,$4);
  691.         pevalexpr(3,$6);
  692.         genlocrec(currseg, labelloc);
  693.         locctr += geninstr( findgen($1, ST_IBRSET, cpuselect
  694.                     + $2.indexv));
  695.             }
  696.     ;
  697. genline : KOC_opcode  indexed ',' expr
  698.             {
  699.         pevalexpr(1,$2.ex);
  700.         pevalexpr(2,$4);
  701.         genlocrec(currseg, labelloc);
  702.         locctr += geninstr( findgen($1, ST_IBSET, cpuselect
  703.                     + $2.indexv));
  704.             }
  705.     ;
  706. genline : KOC_opcode  '#' expr
  707.             {
  708.         pevalexpr(1, $3);
  709.         genlocrec(currseg, labelloc);
  710.         locctr += geninstr( findgen($1, ST_IMM, cpuselect));
  711.             }
  712.     ;
  713. genline : KOC_opcode  indexed
  714.             {
  715.         pevalexpr(1, $2.ex);
  716.         genlocrec(currseg, labelloc);
  717.         locctr += geninstr( findgen($1, ST_IND, cpuselect 
  718.                     + ($2.indexv)));
  719.             }
  720.     ;
  721. genline : KOC_opcode  INDEX
  722.             {
  723.         genlocrec(currseg, labelloc);
  724.         locctr += geninstr(findgen($1, ST_INDREG, $2 + cpuselect));
  725.             }
  726.     ;
  727. genline : KOC_opcode 
  728.             {
  729.         genlocrec(currseg, labelloc);
  730.         locctr += geninstr(findgen($1, ST_INH, cpuselect));
  731.             }
  732.     ;
  733. expr    :    '+' expr %prec KEOP_MUN
  734.             {
  735.                 $$ = $2;
  736.             }
  737.     |    '-' expr %prec KEOP_MUN
  738.             {
  739.                 $$ = exprnode(PCCASE_UN,$2,IFC_NEG,0,0L,
  740.                     SYMNULL);
  741.             }
  742.     |    KEOP_NOT expr
  743.             {
  744.                 $$ = exprnode(PCCASE_UN,$2,IFC_NOT,0,0L,
  745.                     SYMNULL);
  746.             }
  747.     |    KEOP_HIGH expr
  748.             {
  749.                 $$ = exprnode(PCCASE_UN,$2,IFC_HIGH,0,0L,
  750.                     SYMNULL);
  751.             }
  752.     |    KEOP_LOW expr
  753.             {
  754.                 $$ = exprnode(PCCASE_UN,$2,IFC_LOW,0,0L,
  755.                     SYMNULL);
  756.             }
  757.     |    expr '*' expr
  758.             {
  759.                 $$ = exprnode(PCCASE_BIN,$1,IFC_MUL,$3,0L,
  760.                     SYMNULL);
  761.             }
  762.     |    expr '/' expr
  763.             {
  764.                 $$ = exprnode(PCCASE_BIN,$1,IFC_DIV,$3,0L,
  765.                     SYMNULL);
  766.             }
  767.     |    expr '+' expr
  768.             {
  769.                 $$ = exprnode(PCCASE_BIN,$1,IFC_ADD,$3,0L,
  770.                     SYMNULL);
  771.             }
  772.     |    expr '-' expr
  773.             {
  774.                 $$ = exprnode(PCCASE_BIN,$1,IFC_SUB,$3,0L,
  775.                     SYMNULL);
  776.             }
  777.     |    expr KEOP_MOD expr
  778.             {
  779.                 $$ = exprnode(PCCASE_BIN,$1,IFC_MOD,$3,0L,
  780.                     SYMNULL);
  781.             }
  782.     |    expr KEOP_SHL expr
  783.             {
  784.                 $$ = exprnode(PCCASE_BIN,$1,IFC_SHL,$3,0L,
  785.                     SYMNULL);
  786.             }
  787.     |    expr KEOP_SHR expr
  788.             {
  789.                 $$ = exprnode(PCCASE_BIN,$1,IFC_SHR,$3,0L,
  790.                     SYMNULL);
  791.             }
  792.     |    expr KEOP_GT expr
  793.             {
  794.                 $$ = exprnode(PCCASE_BIN,$1,IFC_GT,$3,0L,
  795.                     SYMNULL);
  796.             }
  797.     |    expr KEOP_GE expr
  798.             {
  799.                 $$ = exprnode(PCCASE_BIN,$1,IFC_GE,$3,0L,
  800.                     SYMNULL);
  801.             }
  802.     |    expr KEOP_LT expr
  803.             {
  804.                 $$ = exprnode(PCCASE_BIN,$1,IFC_LT,$3,0L,
  805.                     SYMNULL);
  806.             }
  807.     |    expr KEOP_LE expr
  808.             {
  809.                 $$ = exprnode(PCCASE_BIN,$1,IFC_LE,$3,0L,
  810.                     SYMNULL);
  811.             }
  812.     |    expr KEOP_NE expr
  813.             {
  814.                 $$ = exprnode(PCCASE_BIN,$1,IFC_NE,$3,0L,
  815.                     SYMNULL);
  816.             }
  817.     |    expr KEOP_EQ expr
  818.             {
  819.                 $$ = exprnode(PCCASE_BIN,$1,IFC_EQ,$3,0L,
  820.                     SYMNULL);
  821.             }
  822.     |    expr KEOP_AND expr
  823.             {
  824.                 $$ = exprnode(PCCASE_BIN,$1,IFC_AND,$3,0L,
  825.                     SYMNULL);
  826.             }
  827.     |    expr KEOP_OR expr
  828.             {
  829.                 $$ = exprnode(PCCASE_BIN,$1,IFC_OR,$3,0L,
  830.                     SYMNULL);
  831.             }
  832.     |    expr KEOP_XOR expr
  833.             {
  834.                 $$ = exprnode(PCCASE_BIN,$1,IFC_XOR,$3,0L,
  835.                     SYMNULL);
  836.             }
  837.     |    KEOP_DEFINED SYMBOL
  838.             {
  839.                 $$ = exprnode(PCCASE_DEF,0,IGP_DEFINED,0,0L,$2);
  840.             }
  841.     |    SYMBOL
  842.             {
  843.                 $$ = exprnode(PCCASE_SYMB,0,IFC_SYMB,0,0L,$1);
  844.             }
  845.     |    '*'
  846.             {
  847.                 $$ = exprnode(PCCASE_PROGC,0,IFC_PROGCTR,0,
  848.                     labelloc, SYMNULL);
  849.             }
  850.     |    CONSTANT
  851.             {
  852.                 $$ = exprnode(PCCASE_CONS,0,IGP_CONSTANT,0,$1,
  853.                     SYMNULL);
  854.             }
  855.     |    STRING
  856.             {
  857.                 char *sourcestr = $1;
  858.                 long accval = 0;
  859.  
  860.                 if(strlen($1) > 0)
  861.                 {
  862.                     accval = chtran(&sourcestr);
  863.                     if(*sourcestr != '\0')
  864.                     {
  865.                         accval = (accval << 8) +
  866.                             chtran(&sourcestr);
  867.                     }
  868.  
  869.                     if( *sourcestr != '\0')
  870.                     {
  871.     frawarn("string constant in expression more than 2 characters long");
  872.                     }
  873.                 }
  874.                 $$ = exprnode(PCCASE_CONS, 0, IGP_CONSTANT, 0,
  875.                     accval, SYMNULL);
  876.             }
  877.     |    '(' expr ')'
  878.             {
  879.                 $$ = $2;
  880.             }
  881.     ;
  882.  
  883.  
  884. indexed    :    INDEX ',' expr
  885.             {
  886.                 $$.ex = $3;
  887.                 $$.indexv = $1;
  888.             }
  889.     |    expr ',' INDEX
  890.             {
  891.                 $$.ex = $1;
  892.                 $$.indexv = $3;
  893.             }
  894.     ;
  895.  
  896. %%
  897.  
  898. lexintercept()
  899. /*
  900.     description    intercept the call to yylex (the lexical analyzer)
  901.             and filter out all unnecessary tokens when skipping
  902.             the input between a failed IF and its matching ENDI or
  903.             ELSE
  904.     globals     fraifskip    the enable flag
  905. */
  906. {
  907. #undef yylex
  908.  
  909.     int rv;
  910.  
  911.     if(fraifskip)
  912.     {
  913.         for(;;)
  914.         {
  915.  
  916.             switch(rv = yylex())
  917.  
  918.             {
  919.             case 0:
  920.             case KOC_END:
  921.             case KOC_IF:
  922.             case KOC_ELSE:
  923.             case KOC_ENDI:
  924.             case EOL:
  925.                 return rv;
  926.             default:
  927.                 break;
  928.             }
  929.         }
  930.     }
  931.     else
  932.         return yylex();
  933. #define yylex lexintercept
  934. }
  935.  
  936.  
  937.  
  938. setreserved()
  939. {
  940.  
  941.     reservedsym("and", KEOP_AND, 0);
  942.     reservedsym("defined", KEOP_DEFINED,0);
  943.     reservedsym("eq", KEOP_EQ, 0);
  944.     reservedsym("ge", KEOP_GE, 0);
  945.     reservedsym("gt", KEOP_GT, 0);
  946.     reservedsym("high", KEOP_HIGH, 0);
  947.     reservedsym("le", KEOP_LE, 0);
  948.     reservedsym("low", KEOP_LOW, 0);
  949.     reservedsym("lt", KEOP_LT, 0);
  950.     reservedsym("mod", KEOP_MOD, 0);
  951.     reservedsym("ne", KEOP_NE, 0);
  952.     reservedsym("not", KEOP_NOT, 0);
  953.     reservedsym("or", KEOP_OR, 0);
  954.     reservedsym("shl", KEOP_SHL, 0);
  955.     reservedsym("shr", KEOP_SHR, 0);
  956.     reservedsym("xor", KEOP_XOR, 0);
  957.     reservedsym("AND", KEOP_AND, 0);
  958.     reservedsym("DEFINED", KEOP_DEFINED,0);
  959.     reservedsym("EQ", KEOP_EQ, 0);
  960.     reservedsym("GE", KEOP_GE, 0);
  961.     reservedsym("GT", KEOP_GT, 0);
  962.     reservedsym("HIGH", KEOP_HIGH, 0);
  963.     reservedsym("LE", KEOP_LE, 0);
  964.     reservedsym("LOW", KEOP_LOW, 0);
  965.     reservedsym("LT", KEOP_LT, 0);
  966.     reservedsym("MOD", KEOP_MOD, 0);
  967.     reservedsym("NE", KEOP_NE, 0);
  968.     reservedsym("NOT", KEOP_NOT, 0);
  969.     reservedsym("OR", KEOP_OR, 0);
  970.     reservedsym("SHL", KEOP_SHL, 0);
  971.     reservedsym("SHR", KEOP_SHR, 0);
  972.     reservedsym("XOR", KEOP_XOR, 0);
  973.  
  974.  
  975.     reservedsym("a", ACCUM, REGA);
  976.     reservedsym("b", ACCUM, REGB);
  977.     reservedsym("x", INDEX, REGX);
  978.     reservedsym("y", INDEX, REGY);
  979.     reservedsym("A", ACCUM, REGA);
  980.     reservedsym("B", ACCUM, REGB);
  981.     reservedsym("X", INDEX, REGX);
  982.     reservedsym("Y", INDEX, REGY);
  983.  
  984. }
  985.  
  986. cpumatch(str)
  987.     char * str;
  988. {
  989.     int msub;
  990.  
  991.     static struct
  992.     {
  993.         char * mtch;
  994.         int   cpuv;
  995.     } matchtab[] =
  996.     {
  997.         {"11", CPU6811},
  998.         {"01", CPU6801},
  999.         {"00", CPU6800},
  1000.         {"03", CPU6801},
  1001.         {"02", CPU6800},
  1002.         {"08", CPU6800},
  1003.         {"", 0} 
  1004.     };
  1005.  
  1006.     for(msub = 0; matchtab[msub].cpuv != 0; msub++)
  1007.     {
  1008.         if(strcontains(str, matchtab[msub].mtch))
  1009.         {
  1010.             cpuselect = matchtab[msub].cpuv;
  1011.             return TRUE;
  1012.         }
  1013.     }
  1014.  
  1015.     return FALSE;
  1016. }
  1017.  
  1018.  
  1019. strcontains(s1, sm)
  1020.     char * s1, *sm;
  1021. {
  1022.     int l1 = strlen(s1), lm = strlen(sm);
  1023.  
  1024.     for(; l1 >= lm; l1--, s1++)
  1025.     {
  1026.         if(strncmp(s1, sm, lm) == 0)
  1027.         {
  1028.             return TRUE;
  1029.         }
  1030.     }
  1031.     return FALSE;
  1032. }
  1033.  
  1034. /*
  1035.     description    Opcode and Instruction generation tables
  1036.     usage        Unix, framework crossassembler
  1037.     history        September 25, 1987
  1038. */
  1039.  
  1040. #define NUMOPCODE 183
  1041. #define NUMSYNBLK 277
  1042. #define NUMDIFFOP 459
  1043.  
  1044. int gnumopcode = NUMOPCODE;
  1045.  
  1046. int ophashlnk[NUMOPCODE];
  1047.  
  1048. struct opsym optab[NUMOPCODE+1]
  1049.     = {
  1050.     {"invalid", KOC_opcode, 2, 0 },
  1051.     {"ABA", KOC_opcode, 1, 2 },
  1052.     {"ABX", KOC_opcode, 1, 3 },
  1053.     {"ABY", KOC_opcode, 1, 4 },
  1054.     {"ADC", KOC_opcode, 3, 5 },
  1055.     {"ADCA", KOC_opcode, 3, 8 },
  1056.     {"ADCB", KOC_opcode, 3, 11 },
  1057.     {"ADD", KOC_opcode, 3, 14 },
  1058.     {"ADDA", KOC_opcode, 3, 17 },
  1059.     {"ADDB", KOC_opcode, 3, 20 },
  1060.     {"ADDD", KOC_opcode, 3, 23 },
  1061.     {"AND", KOC_opcode, 3, 26 },
  1062.     {"ANDA", KOC_opcode, 3, 29 },
  1063.     {"ANDB", KOC_opcode, 3, 32 },
  1064.     {"ASL", KOC_opcode, 3, 35 },
  1065.     {"ASLA", KOC_opcode, 1, 38 },
  1066.     {"ASLB", KOC_opcode, 1, 39 },
  1067.     {"ASLD", KOC_opcode, 1, 40 },
  1068.     {"ASR", KOC_opcode, 3, 41 },
  1069.     {"ASRA", KOC_opcode, 1, 44 },
  1070.     {"ASRB", KOC_opcode, 1, 45 },
  1071.     {"BCC", KOC_opcode, 1, 46 },
  1072.     {"BCLR", KOC_opcode, 2, 47 },
  1073.     {"BCS", KOC_opcode, 1, 49 },
  1074.     {"BEQ", KOC_opcode, 1, 50 },
  1075.     {"BGE", KOC_opcode, 1, 51 },
  1076.     {"BGT", KOC_opcode, 1, 52 },
  1077.     {"BHI", KOC_opcode, 1, 53 },
  1078.     {"BHS", KOC_opcode, 1, 54 },
  1079.     {"BIT", KOC_opcode, 3, 55 },
  1080.     {"BITA", KOC_opcode, 3, 58 },
  1081.     {"BITB", KOC_opcode, 3, 61 },
  1082.     {"BLE", KOC_opcode, 1, 64 },
  1083.     {"BLO", KOC_opcode, 1, 65 },
  1084.     {"BLS", KOC_opcode, 1, 66 },
  1085.     {"BLT", KOC_opcode, 1, 67 },
  1086.     {"BMI", KOC_opcode, 1, 68 },
  1087.     {"BNE", KOC_opcode, 1, 69 },
  1088.     {"BPL", KOC_opcode, 1, 70 },
  1089.     {"BRA", KOC_opcode, 1, 71 },
  1090.     {"BRCLR", KOC_opcode, 2, 72 },
  1091.     {"BRN", KOC_opcode, 1, 74 },
  1092.     {"BRSET", KOC_opcode, 2, 75 },
  1093.     {"BSET", KOC_opcode, 2, 77 },
  1094.     {"BSR", KOC_opcode, 1, 79 },
  1095.     {"BVC", KOC_opcode, 1, 80 },
  1096.     {"BVS", KOC_opcode, 1, 81 },
  1097.     {"BYTE", KOC_BDEF, 0, 0 },
  1098.     {"CBA", KOC_opcode, 1, 82 },
  1099.     {"CHARDEF", KOC_CHDEF, 0, 0 },
  1100.     {"CHARSET", KOC_CHSET, 0, 0 },
  1101.     {"CHARUSE", KOC_CHUSE, 0, 0 },
  1102.     {"CHD", KOC_CHDEF, 0, 0 },
  1103.     {"CLC", KOC_opcode, 1, 83 },
  1104.     {"CLI", KOC_opcode, 1, 84 },
  1105.     {"CLR", KOC_opcode, 3, 85 },
  1106.     {"CLRA", KOC_opcode, 1, 88 },
  1107.     {"CLRB", KOC_opcode, 1, 89 },
  1108.     {"CLV", KOC_opcode, 1, 90 },
  1109.     {"CMP", KOC_opcode, 3, 91 },
  1110.     {"CMPA", KOC_opcode, 3, 94 },
  1111.     {"CMPB", KOC_opcode, 3, 97 },
  1112.     {"COM", KOC_opcode, 3, 100 },
  1113.     {"COMA", KOC_opcode, 1, 103 },
  1114.     {"COMB", KOC_opcode, 1, 104 },
  1115.     {"CPD", KOC_opcode, 3, 105 },
  1116.     {"CPU", KOC_CPU, 0, 0 },
  1117.     {"CPX", KOC_opcode, 3, 108 },
  1118.     {"CPY", KOC_opcode, 3, 111 },
  1119.     {"DAA", KOC_opcode, 1, 114 },
  1120.     {"DB", KOC_BDEF, 0, 0 },
  1121.     {"DEC", KOC_opcode, 3, 115 },
  1122.     {"DECA", KOC_opcode, 1, 118 },
  1123.     {"DECB", KOC_opcode, 1, 119 },
  1124.     {"DES", KOC_opcode, 1, 120 },
  1125.     {"DEX", KOC_opcode, 1, 121 },
  1126.     {"DEY", KOC_opcode, 1, 122 },
  1127.     {"DW", KOC_WDEF, 0, 0 },
  1128.     {"ELSE", KOC_ELSE, 0, 0 },
  1129.     {"END", KOC_END, 0, 0 },
  1130.     {"ENDI", KOC_ENDI, 0, 0 },
  1131.     {"EOR", KOC_opcode, 3, 123 },
  1132.     {"EORA", KOC_opcode, 3, 126 },
  1133.     {"EORB", KOC_opcode, 3, 129 },
  1134.     {"EQU", KOC_EQU, 0, 0 },
  1135.     {"FCB", KOC_BDEF, 0, 0 },
  1136.     {"FCC", KOC_SDEF, 0, 0 },
  1137.     {"FDB", KOC_WDEF, 0, 0 },
  1138.     {"FDIV", KOC_opcode, 1, 132 },
  1139.     {"IDIV", KOC_opcode, 1, 133 },
  1140.     {"IF", KOC_IF, 0, 0 },
  1141.     {"INC", KOC_opcode, 3, 134 },
  1142.     {"INCA", KOC_opcode, 1, 137 },
  1143.     {"INCB", KOC_opcode, 1, 138 },
  1144.     {"INCL", KOC_INCLUDE, 0, 0 },
  1145.     {"INCLUDE", KOC_INCLUDE, 0, 0 },
  1146.     {"INS", KOC_opcode, 1, 139 },
  1147.     {"INX", KOC_opcode, 1, 140 },
  1148.     {"INY", KOC_opcode, 1, 141 },
  1149.     {"JMP", KOC_opcode, 2, 142 },
  1150.     {"JSR", KOC_opcode, 2, 144 },
  1151.     {"LDA", KOC_opcode, 3, 146 },
  1152.     {"LDAA", KOC_opcode, 3, 149 },
  1153.     {"LDAB", KOC_opcode, 3, 152 },
  1154.     {"LDD", KOC_opcode, 3, 155 },
  1155.     {"LDS", KOC_opcode, 3, 158 },
  1156.     {"LDX", KOC_opcode, 3, 161 },
  1157.     {"LDY", KOC_opcode, 3, 164 },
  1158.     {"LSL", KOC_opcode, 3, 167 },
  1159.     {"LSLA", KOC_opcode, 1, 170 },
  1160.     {"LSLB", KOC_opcode, 1, 171 },
  1161.     {"LSLD", KOC_opcode, 1, 172 },
  1162.     {"LSR", KOC_opcode, 3, 173 },
  1163.     {"LSRA", KOC_opcode, 1, 176 },
  1164.     {"LSRB", KOC_opcode, 1, 177 },
  1165.     {"LSRD", KOC_opcode, 1, 178 },
  1166.     {"MUL", KOC_opcode, 1, 179 },
  1167.     {"NEG", KOC_opcode, 3, 180 },
  1168.     {"NEGA", KOC_opcode, 1, 183 },
  1169.     {"NEGB", KOC_opcode, 1, 184 },
  1170.     {"NOP", KOC_opcode, 1, 185 },
  1171.     {"ORA", KOC_opcode, 3, 186 },
  1172.     {"ORAA", KOC_opcode, 3, 189 },
  1173.     {"ORAB", KOC_opcode, 3, 192 },
  1174.     {"ORG", KOC_ORG, 0, 0 },
  1175.     {"PSH", KOC_opcode, 2, 195 },
  1176.     {"PSHA", KOC_opcode, 1, 197 },
  1177.     {"PSHB", KOC_opcode, 1, 198 },
  1178.     {"PSHX", KOC_opcode, 1, 199 },
  1179.     {"PSHY", KOC_opcode, 1, 200 },
  1180.     {"PUL", KOC_opcode, 2, 201 },
  1181.     {"PULA", KOC_opcode, 1, 203 },
  1182.     {"PULB", KOC_opcode, 1, 204 },
  1183.     {"PULX", KOC_opcode, 1, 205 },
  1184.     {"PULY", KOC_opcode, 1, 206 },
  1185.     {"RESERVE", KOC_RESM, 0, 0 },
  1186.     {"RMB", KOC_RESM, 0, 0 },
  1187.     {"ROL", KOC_opcode, 3, 207 },
  1188.     {"ROLA", KOC_opcode, 1, 210 },
  1189.     {"ROLB", KOC_opcode, 1, 211 },
  1190.     {"ROR", KOC_opcode, 3, 212 },
  1191.     {"RORA", KOC_opcode, 1, 215 },
  1192.     {"RORB", KOC_opcode, 1, 216 },
  1193.     {"RTI", KOC_opcode, 1, 217 },
  1194.     {"RTS", KOC_opcode, 1, 218 },
  1195.     {"SBA", KOC_opcode, 1, 219 },
  1196.     {"SBC", KOC_opcode, 3, 220 },
  1197.     {"SBCA", KOC_opcode, 3, 223 },
  1198.     {"SBCB", KOC_opcode, 3, 226 },
  1199.     {"SEC", KOC_opcode, 1, 229 },
  1200.     {"SEI", KOC_opcode, 1, 230 },
  1201.     {"SET", KOC_SET, 0, 0 },
  1202.     {"SEV", KOC_opcode, 1, 231 },
  1203.     {"STA", KOC_opcode, 2, 232 },
  1204.     {"STAA", KOC_opcode, 2, 234 },
  1205.     {"STAB", KOC_opcode, 2, 236 },
  1206.     {"STD", KOC_opcode, 2, 238 },
  1207.     {"STOP", KOC_opcode, 1, 240 },
  1208.     {"STRING", KOC_SDEF, 0, 0 },
  1209.     {"STS", KOC_opcode, 2, 241 },
  1210.     {"STX", KOC_opcode, 2, 243 },
  1211.     {"STY", KOC_opcode, 2, 245 },
  1212.     {"SUB", KOC_opcode, 3, 247 },
  1213.     {"SUBA", KOC_opcode, 3, 250 },
  1214.     {"SUBB", KOC_opcode, 3, 253 },
  1215.     {"SUBD", KOC_opcode, 3, 256 },
  1216.     {"SWI", KOC_opcode, 1, 259 },
  1217.     {"TAB", KOC_opcode, 1, 260 },
  1218.     {"TAP", KOC_opcode, 1, 261 },
  1219.     {"TBA", KOC_opcode, 1, 262 },
  1220.     {"TEST", KOC_opcode, 1, 263 },
  1221.     {"TPA", KOC_opcode, 1, 264 },
  1222.     {"TST", KOC_opcode, 3, 265 },
  1223.     {"TSTA", KOC_opcode, 1, 268 },
  1224.     {"TSTB", KOC_opcode, 1, 269 },
  1225.     {"TSX", KOC_opcode, 1, 270 },
  1226.     {"TSY", KOC_opcode, 1, 271 },
  1227.     {"TXS", KOC_opcode, 1, 272 },
  1228.     {"TYS", KOC_opcode, 1, 273 },
  1229.     {"WAI", KOC_opcode, 1, 274 },
  1230.     {"WORD", KOC_WDEF, 0, 0 },
  1231.     {"XGDX", KOC_opcode, 1, 275 },
  1232.     {"XGDY", KOC_opcode, 1, 276 },
  1233.     { "", 0, 0, 0 }};
  1234.  
  1235. struct opsynt ostab[NUMSYNBLK+1]
  1236.     = {
  1237. /* invalid 0 */ { 0, 1, 0 },
  1238. /* invalid 1 */ { 0xffff, 1, 1 },
  1239. /* ABA 2 */ { ST_INH, 1, 2 },
  1240. /* ABX 3 */ { ST_INH, 1, 3 },
  1241. /* ABY 4 */ { ST_INH, 1, 4 },
  1242. /* ADC 5 */ { ST_AEXP, 4, 5 },
  1243. /* ADC 6 */ { ST_AIMM, 2, 9 },
  1244. /* ADC 7 */ { ST_AIND, 4, 11 },
  1245. /* ADCA 8 */ { ST_EXP, 2, 15 },
  1246. /* ADCA 9 */ { ST_IMM, 1, 17 },
  1247. /* ADCA 10 */ { ST_IND, 2, 18 },
  1248. /* ADCB 11 */ { ST_EXP, 2, 20 },
  1249. /* ADCB 12 */ { ST_IMM, 1, 22 },
  1250. /* ADCB 13 */ { ST_IND, 2, 23 },
  1251. /* ADD 14 */ { ST_AEXP, 4, 25 },
  1252. /* ADD 15 */ { ST_AIMM, 2, 29 },
  1253. /* ADD 16 */ { ST_AIND, 4, 31 },
  1254. /* ADDA 17 */ { ST_EXP, 2, 35 },
  1255. /* ADDA 18 */ { ST_IMM, 1, 37 },
  1256. /* ADDA 19 */ { ST_IND, 2, 38 },
  1257. /* ADDB 20 */ { ST_EXP, 2, 40 },
  1258. /* ADDB 21 */ { ST_IMM, 1, 42 },
  1259. /* ADDB 22 */ { ST_IND, 2, 43 },
  1260. /* ADDD 23 */ { ST_EXP, 2, 45 },
  1261. /* ADDD 24 */ { ST_IMM, 1, 47 },
  1262. /* ADDD 25 */ { ST_IND, 2, 48 },
  1263. /* AND 26 */ { ST_AEXP, 4, 50 },
  1264. /* AND 27 */ { ST_AIMM, 2, 54 },
  1265. /* AND 28 */ { ST_AIND, 4, 56 },
  1266. /* ANDA 29 */ { ST_EXP, 2, 60 },
  1267. /* ANDA 30 */ { ST_IMM, 1, 62 },
  1268. /* ANDA 31 */ { ST_IND, 2, 63 },
  1269. /* ANDB 32 */ { ST_EXP, 2, 65 },
  1270. /* ANDB 33 */ { ST_IMM, 1, 67 },
  1271. /* ANDB 34 */ { ST_IND, 2, 68 },
  1272. /* ASL 35 */ { ST_ACC, 2, 70 },
  1273. /* ASL 36 */ { ST_EXP, 1, 72 },
  1274. /* ASL 37 */ { ST_IND, 2, 73 },
  1275. /* ASLA 38 */ { ST_INH, 1, 75 },
  1276. /* ASLB 39 */ { ST_INH, 1, 76 },
  1277. /* ASLD 40 */ { ST_INH, 1, 77 },
  1278. /* ASR 41 */ { ST_ACC, 2, 78 },
  1279. /* ASR 42 */ { ST_EXP, 1, 80 },
  1280. /* ASR 43 */ { ST_IND, 2, 81 },
  1281. /* ASRA 44 */ { ST_INH, 1, 83 },
  1282. /* ASRB 45 */ { ST_INH, 1, 84 },
  1283. /* BCC 46 */ { ST_EXP, 1, 85 },
  1284. /* BCLR 47 */ { ST_BSET, 1, 86 },
  1285. /* BCLR 48 */ { ST_IBSET, 2, 87 },
  1286. /* BCS 49 */ { ST_EXP, 1, 89 },
  1287. /* BEQ 50 */ { ST_EXP, 1, 90 },
  1288. /* BGE 51 */ { ST_EXP, 1, 91 },
  1289. /* BGT 52 */ { ST_EXP, 1, 92 },
  1290. /* BHI 53 */ { ST_EXP, 1, 93 },
  1291. /* BHS 54 */ { ST_EXP, 1, 94 },
  1292. /* BIT 55 */ { ST_AEXP, 4, 95 },
  1293. /* BIT 56 */ { ST_AIMM, 2, 99 },
  1294. /* BIT 57 */ { ST_AIND, 4, 101 },
  1295. /* BITA 58 */ { ST_EXP, 2, 105 },
  1296. /* BITA 59 */ { ST_IMM, 1, 107 },
  1297. /* BITA 60 */ { ST_IND, 2, 108 },
  1298. /* BITB 61 */ { ST_EXP, 2, 110 },
  1299. /* BITB 62 */ { ST_IMM, 1, 112 },
  1300. /* BITB 63 */ { ST_IND, 2, 113 },
  1301. /* BLE 64 */ { ST_EXP, 1, 115 },
  1302. /* BLO 65 */ { ST_EXP, 1, 116 },
  1303. /* BLS 66 */ { ST_EXP, 1, 117 },
  1304. /* BLT 67 */ { ST_EXP, 1, 118 },
  1305. /* BMI 68 */ { ST_EXP, 1, 119 },
  1306. /* BNE 69 */ { ST_EXP, 1, 120 },
  1307. /* BPL 70 */ { ST_EXP, 1, 121 },
  1308. /* BRA 71 */ { ST_EXP, 1, 122 },
  1309. /* BRCLR 72 */ { ST_BRSET, 1, 123 },
  1310. /* BRCLR 73 */ { ST_IBRSET, 2, 124 },
  1311. /* BRN 74 */ { ST_EXP, 1, 126 },
  1312. /* BRSET 75 */ { ST_BRSET, 1, 127 },
  1313. /* BRSET 76 */ { ST_IBRSET, 2, 128 },
  1314. /* BSET 77 */ { ST_BSET, 1, 130 },
  1315. /* BSET 78 */ { ST_IBSET, 2, 131 },
  1316. /* BSR 79 */ { ST_EXP, 1, 133 },
  1317. /* BVC 80 */ { ST_EXP, 1, 134 },
  1318. /* BVS 81 */ { ST_EXP, 1, 135 },
  1319. /* CBA 82 */ { ST_INH, 1, 136 },
  1320. /* CLC 83 */ { ST_INH, 1, 137 },
  1321. /* CLI 84 */ { ST_INH, 1, 138 },
  1322. /* CLR 85 */ { ST_ACC, 2, 139 },
  1323. /* CLR 86 */ { ST_EXP, 1, 141 },
  1324. /* CLR 87 */ { ST_IND, 2, 142 },
  1325. /* CLRA 88 */ { ST_INH, 1, 144 },
  1326. /* CLRB 89 */ { ST_INH, 1, 145 },
  1327. /* CLV 90 */ { ST_INH, 1, 146 },
  1328. /* CMP 91 */ { ST_AEXP, 4, 147 },
  1329. /* CMP 92 */ { ST_AIMM, 2, 151 },
  1330. /* CMP 93 */ { ST_AIND, 4, 153 },
  1331. /* CMPA 94 */ { ST_EXP, 2, 157 },
  1332. /* CMPA 95 */ { ST_IMM, 1, 159 },
  1333. /* CMPA 96 */ { ST_IND, 2, 160 },
  1334. /* CMPB 97 */ { ST_EXP, 2, 162 },
  1335. /* CMPB 98 */ { ST_IMM, 1, 164 },
  1336. /* CMPB 99 */ { ST_IND, 2, 165 },
  1337. /* COM 100 */ { ST_ACC, 2, 167 },
  1338. /* COM 101 */ { ST_EXP, 1, 169 },
  1339. /* COM 102 */ { ST_IND, 2, 170 },
  1340. /* COMA 103 */ { ST_INH, 1, 172 },
  1341. /* COMB 104 */ { ST_INH, 1, 173 },
  1342. /* CPD 105 */ { ST_EXP, 2, 174 },
  1343. /* CPD 106 */ { ST_IMM, 1, 176 },
  1344. /* CPD 107 */ { ST_IND, 2, 177 },
  1345. /* CPX 108 */ { ST_EXP, 2, 179 },
  1346. /* CPX 109 */ { ST_IMM, 1, 181 },
  1347. /* CPX 110 */ { ST_IND, 2, 182 },
  1348. /* CPY 111 */ { ST_EXP, 2, 184 },
  1349. /* CPY 112 */ { ST_IMM, 1, 186 },
  1350. /* CPY 113 */ { ST_IND, 2, 187 },
  1351. /* DAA 114 */ { ST_INH, 1, 189 },
  1352. /* DEC 115 */ { ST_ACC, 2, 190 },
  1353. /* DEC 116 */ { ST_EXP, 1, 192 },
  1354. /* DEC 117 */ { ST_IND, 2, 193 },
  1355. /* DECA 118 */ { ST_INH, 1, 195 },
  1356. /* DECB 119 */ { ST_INH, 1, 196 },
  1357. /* DES 120 */ { ST_INH, 1, 197 },
  1358. /* DEX 121 */ { ST_INH, 1, 198 },
  1359. /* DEY 122 */ { ST_INH, 1, 199 },
  1360. /* EOR 123 */ { ST_AEXP, 4, 200 },
  1361. /* EOR 124 */ { ST_AIMM, 2, 204 },
  1362. /* EOR 125 */ { ST_AIND, 4, 206 },
  1363. /* EORA 126 */ { ST_EXP, 2, 210 },
  1364. /* EORA 127 */ { ST_IMM, 1, 212 },
  1365. /* EORA 128 */ { ST_IND, 2, 213 },
  1366. /* EORB 129 */ { ST_EXP, 2, 215 },
  1367. /* EORB 130 */ { ST_IMM, 1, 217 },
  1368. /* EORB 131 */ { ST_IND, 2, 218 },
  1369. /* FDIV 132 */ { ST_INH, 1, 220 },
  1370. /* IDIV 133 */ { ST_INH, 1, 221 },
  1371. /* INC 134 */ { ST_ACC, 2, 222 },
  1372. /* INC 135 */ { ST_EXP, 1, 224 },
  1373. /* INC 136 */ { ST_IND, 2, 225 },
  1374. /* INCA 137 */ { ST_INH, 1, 227 },
  1375. /* INCB 138 */ { ST_INH, 1, 228 },
  1376. /* INS 139 */ { ST_INH, 1, 229 },
  1377. /* INX 140 */ { ST_INH, 1, 230 },
  1378. /* INY 141 */ { ST_INH, 1, 231 },
  1379. /* JMP 142 */ { ST_EXP, 1, 232 },
  1380. /* JMP 143 */ { ST_IND, 2, 233 },
  1381. /* JSR 144 */ { ST_EXP, 3, 235 },
  1382. /* JSR 145 */ { ST_IND, 2, 238 },
  1383. /* LDA 146 */ { ST_AEXP, 4, 240 },
  1384. /* LDA 147 */ { ST_AIMM, 2, 244 },
  1385. /* LDA 148 */ { ST_AIND, 4, 246 },
  1386. /* LDAA 149 */ { ST_EXP, 2, 250 },
  1387. /* LDAA 150 */ { ST_IMM, 1, 252 },
  1388. /* LDAA 151 */ { ST_IND, 2, 253 },
  1389. /* LDAB 152 */ { ST_EXP, 2, 255 },
  1390. /* LDAB 153 */ { ST_IMM, 1, 257 },
  1391. /* LDAB 154 */ { ST_IND, 2, 258 },
  1392. /* LDD 155 */ { ST_EXP, 2, 260 },
  1393. /* LDD 156 */ { ST_IMM, 1, 262 },
  1394. /* LDD 157 */ { ST_IND, 2, 263 },
  1395. /* LDS 158 */ { ST_EXP, 2, 265 },
  1396. /* LDS 159 */ { ST_IMM, 1, 267 },
  1397. /* LDS 160 */ { ST_IND, 2, 268 },
  1398. /* LDX 161 */ { ST_EXP, 2, 270 },
  1399. /* LDX 162 */ { ST_IMM, 1, 272 },
  1400. /* LDX 163 */ { ST_IND, 2, 273 },
  1401. /* LDY 164 */ { ST_EXP, 2, 275 },
  1402. /* LDY 165 */ { ST_IMM, 1, 277 },
  1403. /* LDY 166 */ { ST_IND, 2, 278 },
  1404. /* LSL 167 */ { ST_ACC, 2, 280 },
  1405. /* LSL 168 */ { ST_EXP, 1, 282 },
  1406. /* LSL 169 */ { ST_IND, 2, 283 },
  1407. /* LSLA 170 */ { ST_INH, 1, 285 },
  1408. /* LSLB 171 */ { ST_INH, 1, 286 },
  1409. /* LSLD 172 */ { ST_INH, 1, 287 },
  1410. /* LSR 173 */ { ST_ACC, 2, 288 },
  1411. /* LSR 174 */ { ST_EXP, 1, 290 },
  1412. /* LSR 175 */ { ST_IND, 2, 291 },
  1413. /* LSRA 176 */ { ST_INH, 1, 293 },
  1414. /* LSRB 177 */ { ST_INH, 1, 294 },
  1415. /* LSRD 178 */ { ST_INH, 1, 295 },
  1416. /* MUL 179 */ { ST_INH, 1, 296 },
  1417. /* NEG 180 */ { ST_ACC, 2, 297 },
  1418. /* NEG 181 */ { ST_EXP, 1, 299 },
  1419. /* NEG 182 */ { ST_IND, 2, 300 },
  1420. /* NEGA 183 */ { ST_INH, 1, 302 },
  1421. /* NEGB 184 */ { ST_INH, 1, 303 },
  1422. /* NOP 185 */ { ST_INH, 1, 304 },
  1423. /* ORA 186 */ { ST_AEXP, 4, 305 },
  1424. /* ORA 187 */ { ST_AIMM, 2, 309 },
  1425. /* ORA 188 */ { ST_AIND, 4, 311 },
  1426. /* ORAA 189 */ { ST_EXP, 2, 315 },
  1427. /* ORAA 190 */ { ST_IMM, 1, 317 },
  1428. /* ORAA 191 */ { ST_IND, 2, 318 },
  1429. /* ORAB 192 */ { ST_EXP, 2, 320 },
  1430. /* ORAB 193 */ { ST_IMM, 1, 322 },
  1431. /* ORAB 194 */ { ST_IND, 2, 323 },
  1432. /* PSH 195 */ { ST_ACC, 2, 325 },
  1433. /* PSH 196 */ { ST_INDREG, 2, 327 },
  1434. /* PSHA 197 */ { ST_INH, 1, 329 },
  1435. /* PSHB 198 */ { ST_INH, 1, 330 },
  1436. /* PSHX 199 */ { ST_INH, 1, 331 },
  1437. /* PSHY 200 */ { ST_INH, 1, 332 },
  1438. /* PUL 201 */ { ST_ACC, 2, 333 },
  1439. /* PUL 202 */ { ST_INDREG, 2, 335 },
  1440. /* PULA 203 */ { ST_INH, 1, 337 },
  1441. /* PULB 204 */ { ST_INH, 1, 338 },
  1442. /* PULX 205 */ { ST_INH, 1, 339 },
  1443. /* PULY 206 */ { ST_INH, 1, 340 },
  1444. /* ROL 207 */ { ST_ACC, 2, 341 },
  1445. /* ROL 208 */ { ST_EXP, 1, 343 },
  1446. /* ROL 209 */ { ST_IND, 2, 344 },
  1447. /* ROLA 210 */ { ST_INH, 1, 346 },
  1448. /* ROLB 211 */ { ST_INH, 1, 347 },
  1449. /* ROR 212 */ { ST_ACC, 2, 348 },
  1450. /* ROR 213 */ { ST_EXP, 1, 350 },
  1451. /* ROR 214 */ { ST_IND, 2, 351 },
  1452. /* RORA 215 */ { ST_INH, 1, 353 },
  1453. /* RORB 216 */ { ST_INH, 1, 354 },
  1454. /* RTI 217 */ { ST_INH, 1, 355 },
  1455. /* RTS 218 */ { ST_INH, 1, 356 },
  1456. /* SBA 219 */ { ST_INH, 1, 357 },
  1457. /* SBC 220 */ { ST_AEXP, 4, 358 },
  1458. /* SBC 221 */ { ST_AIMM, 2, 362 },
  1459. /* SBC 222 */ { ST_AIND, 4, 364 },
  1460. /* SBCA 223 */ { ST_EXP, 2, 368 },
  1461. /* SBCA 224 */ { ST_IMM, 1, 370 },
  1462. /* SBCA 225 */ { ST_IND, 2, 371 },
  1463. /* SBCB 226 */ { ST_EXP, 2, 373 },
  1464. /* SBCB 227 */ { ST_IMM, 1, 375 },
  1465. /* SBCB 228 */ { ST_IND, 2, 376 },
  1466. /* SEC 229 */ { ST_INH, 1, 378 },
  1467. /* SEI 230 */ { ST_INH, 1, 379 },
  1468. /* SEV 231 */ { ST_INH, 1, 380 },
  1469. /* STA 232 */ { ST_AEXP, 4, 381 },
  1470. /* STA 233 */ { ST_AIND, 4, 385 },
  1471. /* STAA 234 */ { ST_EXP, 2, 389 },
  1472. /* STAA 235 */ { ST_IND, 2, 391 },
  1473. /* STAB 236 */ { ST_EXP, 2, 393 },
  1474. /* STAB 237 */ { ST_IND, 2, 395 },
  1475. /* STD 238 */ { ST_EXP, 2, 397 },
  1476. /* STD 239 */ { ST_IND, 2, 399 },
  1477. /* STOP 240 */ { ST_INH, 1, 401 },
  1478. /* STS 241 */ { ST_EXP, 2, 402 },
  1479. /* STS 242 */ { ST_IND, 2, 404 },
  1480. /* STX 243 */ { ST_EXP, 2, 406 },
  1481. /* STX 244 */ { ST_IND, 2, 408 },
  1482. /* STY 245 */ { ST_EXP, 2, 410 },
  1483. /* STY 246 */ { ST_IND, 2, 412 },
  1484. /* SUB 247 */ { ST_AEXP, 4, 414 },
  1485. /* SUB 248 */ { ST_AIMM, 2, 418 },
  1486. /* SUB 249 */ { ST_AIND, 4, 420 },
  1487. /* SUBA 250 */ { ST_EXP, 2, 424 },
  1488. /* SUBA 251 */ { ST_IMM, 1, 426 },
  1489. /* SUBA 252 */ { ST_IND, 2, 427 },
  1490. /* SUBB 253 */ { ST_EXP, 2, 429 },
  1491. /* SUBB 254 */ { ST_IMM, 1, 431 },
  1492. /* SUBB 255 */ { ST_IND, 2, 432 },
  1493. /* SUBD 256 */ { ST_EXP, 2, 434 },
  1494. /* SUBD 257 */ { ST_IMM, 1, 436 },
  1495. /* SUBD 258 */ { ST_IND, 2, 437 },
  1496. /* SWI 259 */ { ST_INH, 1, 439 },
  1497. /* TAB 260 */ { ST_INH, 1, 440 },
  1498. /* TAP 261 */ { ST_INH, 1, 441 },
  1499. /* TBA 262 */ { ST_INH, 1, 442 },
  1500. /* TEST 263 */ { ST_INH, 1, 443 },
  1501. /* TPA 264 */ { ST_INH, 1, 444 },
  1502. /* TST 265 */ { ST_ACC, 2, 445 },
  1503. /* TST 266 */ { ST_EXP, 1, 447 },
  1504. /* TST 267 */ { ST_IND, 2, 448 },
  1505. /* TSTA 268 */ { ST_INH, 1, 450 },
  1506. /* TSTB 269 */ { ST_INH, 1, 451 },
  1507. /* TSX 270 */ { ST_INH, 1, 452 },
  1508. /* TSY 271 */ { ST_INH, 1, 453 },
  1509. /* TXS 272 */ { ST_INH, 1, 454 },
  1510. /* TYS 273 */ { ST_INH, 1, 455 },
  1511. /* WAI 274 */ { ST_INH, 1, 456 },
  1512. /* XGDX 275 */ { ST_INH, 1, 457 },
  1513. /* XGDY 276 */ { ST_INH, 1, 458 },
  1514.     { 0, 0, 0 } };
  1515.  
  1516. struct igel igtab[NUMDIFFOP+1]
  1517.     = {
  1518. /* invalid 0 */   { 0 , 0, 
  1519.         "[Xnullentry" },
  1520. /* invalid 1 */   { 0 , 0, 
  1521.         "[Xinvalid opcode" },
  1522. /* ABA 2 */   { 0 , 0, 
  1523.         "1b;" },
  1524. /* ABX 3 */   { TS6801PLUS , TS6801PLUS, 
  1525.         "3a;" },
  1526. /* ABY 4 */   { TS6811 , TS6811, 
  1527.         "18;3a;" },
  1528. /* ADC 5 */   { ACCREG+ADDR , REGA+DIRECT, 
  1529.         "99;[1=];" },
  1530. /* ADC 6 */   { ACCREG+ADDR , REGA+EXTENDED, 
  1531.         "b9;[1=]x" },
  1532. /* ADC 7 */   { ACCREG+ADDR , REGB+DIRECT, 
  1533.         "d9;[1=];" },
  1534. /* ADC 8 */   { ACCREG+ADDR , REGB+EXTENDED, 
  1535.         "f9;[1=]x" },
  1536. /* ADC 9 */   { ACCREG , REGA, 
  1537.         "89;[1=];" },
  1538. /* ADC 10 */   { ACCREG , REGB, 
  1539.         "c9;[1=];" },
  1540. /* ADC 11 */   { ACCREG+INDREG , REGA+REGX, 
  1541.         "a9;[1=];" },
  1542. /* ADC 12 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  1543.         "18;a9;[1=];" },
  1544. /* ADC 13 */   { ACCREG+INDREG , REGB+REGX, 
  1545.         "e9;[1=];" },
  1546. /* ADC 14 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  1547.         "18;e9;[1=];" },
  1548. /* ADCA 15 */   { ADDR , DIRECT, 
  1549.         "99;[1=];" },
  1550. /* ADCA 16 */   { ADDR , EXTENDED, 
  1551.         "b9;[1=]x" },
  1552. /* ADCA 17 */   { 0 , 0, 
  1553.         "89;[1=];" },
  1554. /* ADCA 18 */   { INDREG , REGX, 
  1555.         "a9;[1=];" },
  1556. /* ADCA 19 */   { INDREG+TS6811 , REGY+TS6811, 
  1557.         "18;a9;[1=];" },
  1558. /* ADCB 20 */   { ADDR , DIRECT, 
  1559.         "d9;[1=];" },
  1560. /* ADCB 21 */   { ADDR , EXTENDED, 
  1561.         "f9;[1=]x" },
  1562. /* ADCB 22 */   { 0 , 0, 
  1563.         "c9;[1=];" },
  1564. /* ADCB 23 */   { INDREG , REGX, 
  1565.         "e9;[1=];" },
  1566. /* ADCB 24 */   { INDREG+TS6811 , REGY+TS6811, 
  1567.         "18;e9;[1=];" },
  1568. /* ADD 25 */   { ACCREG+ADDR , REGA+DIRECT, 
  1569.         "9b;[1=];" },
  1570. /* ADD 26 */   { ACCREG+ADDR , REGA+EXTENDED, 
  1571.         "bb;[1=]x" },
  1572. /* ADD 27 */   { ACCREG+ADDR , REGB+DIRECT, 
  1573.         "db;[1=];" },
  1574. /* ADD 28 */   { ACCREG+ADDR , REGB+EXTENDED, 
  1575.         "fb;[1=]x" },
  1576. /* ADD 29 */   { ACCREG , REGA, 
  1577.         "8b;[1=];" },
  1578. /* ADD 30 */   { ACCREG , REGB, 
  1579.         "cb;[1=];" },
  1580. /* ADD 31 */   { ACCREG+INDREG , REGA+REGX, 
  1581.         "ab;[1=];" },
  1582. /* ADD 32 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  1583.         "18;ab;[1=];" },
  1584. /* ADD 33 */   { ACCREG+INDREG , REGB+REGX, 
  1585.         "eb;[1=];" },
  1586. /* ADD 34 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  1587.         "18;eb;[1=];" },
  1588. /* ADDA 35 */   { ADDR , DIRECT, 
  1589.         "9b;[1=];" },
  1590. /* ADDA 36 */   { ADDR , EXTENDED, 
  1591.         "bb;[1=]x" },
  1592. /* ADDA 37 */   { 0 , 0, 
  1593.         "8b;[1=];" },
  1594. /* ADDA 38 */   { INDREG , REGX, 
  1595.         "ab;[1=];" },
  1596. /* ADDA 39 */   { INDREG+TS6811 , REGY+TS6811, 
  1597.         "18;ab;[1=];" },
  1598. /* ADDB 40 */   { ADDR , DIRECT, 
  1599.         "db;[1=];" },
  1600. /* ADDB 41 */   { ADDR , EXTENDED, 
  1601.         "fb;[1=]x" },
  1602. /* ADDB 42 */   { 0 , 0, 
  1603.         "cb;[1=];" },
  1604. /* ADDB 43 */   { INDREG , REGX, 
  1605.         "eb;[1=];" },
  1606. /* ADDB 44 */   { INDREG+TS6811 , REGY+TS6811, 
  1607.         "18;eb;[1=];" },
  1608. /* ADDD 45 */   { ADDR+TS6801PLUS , DIRECT+TS6801PLUS, 
  1609.         "d3;[1=];" },
  1610. /* ADDD 46 */   { ADDR+TS6801PLUS , EXTENDED+TS6801PLUS, 
  1611.         "f3;[1=]x" },
  1612. /* ADDD 47 */   { TS6801PLUS , 0+TS6801PLUS, 
  1613.         "c3;[1=]x" },
  1614. /* ADDD 48 */   { INDREG+TS6801PLUS , REGX+TS6801PLUS, 
  1615.         "e3;[1=];" },
  1616. /* ADDD 49 */   { INDREG+TS6811 , REGY+TS6811, 
  1617.         "18;e3;[1=];" },
  1618. /* AND 50 */   { ACCREG+ADDR , REGA+DIRECT, 
  1619.         "94;[1=];" },
  1620. /* AND 51 */   { ACCREG+ADDR , REGA+EXTENDED, 
  1621.         "b4;[1=]x" },
  1622. /* AND 52 */   { ACCREG+ADDR , REGB+DIRECT, 
  1623.         "d4;[1=];" },
  1624. /* AND 53 */   { ACCREG+ADDR , REGB+EXTENDED, 
  1625.         "f4;[1=]x" },
  1626. /* AND 54 */   { ACCREG , REGA, 
  1627.         "84;[1=];" },
  1628. /* AND 55 */   { ACCREG , REGB, 
  1629.         "c4;[1=];" },
  1630. /* AND 56 */   { ACCREG+INDREG , REGA+REGX, 
  1631.         "a4;[1=];" },
  1632. /* AND 57 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  1633.         "18;a4;[1=];" },
  1634. /* AND 58 */   { ACCREG+INDREG , REGB+REGX, 
  1635.         "e4;[1=];" },
  1636. /* AND 59 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  1637.         "18;e4;[1=];" },
  1638. /* ANDA 60 */   { ADDR , DIRECT, 
  1639.         "94;[1=];" },
  1640. /* ANDA 61 */   { ADDR , EXTENDED, 
  1641.         "b4;[1=]x" },
  1642. /* ANDA 62 */   { 0 , 0, 
  1643.         "84;[1=];" },
  1644. /* ANDA 63 */   { INDREG , REGX, 
  1645.         "a4;[1=];" },
  1646. /* ANDA 64 */   { INDREG+TS6811 , REGY+TS6811, 
  1647.         "18;a4;[1=];" },
  1648. /* ANDB 65 */   { ADDR , DIRECT, 
  1649.         "d4;[1=];" },
  1650. /* ANDB 66 */   { ADDR , EXTENDED, 
  1651.         "f4;[1=]x" },
  1652. /* ANDB 67 */   { 0 , 0, 
  1653.         "c4;[1=];" },
  1654. /* ANDB 68 */   { INDREG , REGX, 
  1655.         "e4;[1=];" },
  1656. /* ANDB 69 */   { INDREG+TS6811 , REGY+TS6811, 
  1657.         "18;e4;[1=];" },
  1658. /* ASL 70 */   { ACCREG , REGA, 
  1659.         "48;" },
  1660. /* ASL 71 */   { ACCREG , REGB, 
  1661.         "58;" },
  1662. /* ASL 72 */   { 0 , 0, 
  1663.         "78;[1=]x" },
  1664. /* ASL 73 */   { INDREG , REGX, 
  1665.         "68;[1=];" },
  1666. /* ASL 74 */   { INDREG+TS6811 , REGY+TS6811, 
  1667.         "18;68;[1=];" },
  1668. /* ASLA 75 */   { 0 , 0, 
  1669.         "48;" },
  1670. /* ASLB 76 */   { 0 , 0, 
  1671.         "58;" },
  1672. /* ASLD 77 */   { TS6801PLUS , TS6801PLUS, 
  1673.         "05;" },
  1674. /* ASR 78 */   { ACCREG , REGA, 
  1675.         "47;" },
  1676. /* ASR 79 */   { ACCREG , REGB, 
  1677.         "57;" },
  1678. /* ASR 80 */   { 0 , 0, 
  1679.         "77;[1=]x" },
  1680. /* ASR 81 */   { INDREG , REGX, 
  1681.         "67;[1=];" },
  1682. /* ASR 82 */   { INDREG+TS6811 , REGY+TS6811, 
  1683.         "18;67;[1=];" },
  1684. /* ASRA 83 */   { 0 , 0, 
  1685.         "47;" },
  1686. /* ASRB 84 */   { 0 , 0, 
  1687.         "57;" },
  1688. /* BCC 85 */   { 0 , 0, 
  1689.         "24;[1=].P.2+-r" },
  1690. /* BCLR 86 */   { TS6811 , TS6811, 
  1691.         "15;[1=];[2=];" },
  1692. /* BCLR 87 */   { INDREG+TS6811 , REGX+TS6811, 
  1693.         "1d;[1=];[2=];" },
  1694. /* BCLR 88 */   { INDREG+TS6811 , REGY+TS6811, 
  1695.         "18;1d;[1=];[2=];" },
  1696. /* BCS 89 */   { 0 , 0, 
  1697.         "25;[1=].P.2+-r" },
  1698. /* BEQ 90 */   { 0 , 0, 
  1699.         "27;[1=].P.2+-r" },
  1700. /* BGE 91 */   { 0 , 0, 
  1701.         "2c;[1=].P.2+-r" },
  1702. /* BGT 92 */   { 0 , 0, 
  1703.         "2e;[1=].P.2+-r" },
  1704. /* BHI 93 */   { 0 , 0, 
  1705.         "22;[1=].P.2+-r" },
  1706. /* BHS 94 */   { 0 , 0, 
  1707.         "24;[1=].P.2+-r" },
  1708. /* BIT 95 */   { ACCREG+ADDR , REGA+DIRECT, 
  1709.         "95;[1=];" },
  1710. /* BIT 96 */   { ACCREG+ADDR , REGA+EXTENDED, 
  1711.         "b5;[1=]x" },
  1712. /* BIT 97 */   { ACCREG+ADDR , REGB+DIRECT, 
  1713.         "d5;[1=];" },
  1714. /* BIT 98 */   { ACCREG+ADDR , REGB+EXTENDED, 
  1715.         "f5;[1=]x" },
  1716. /* BIT 99 */   { ACCREG , REGA, 
  1717.         "85;[1=];" },
  1718. /* BIT 100 */   { ACCREG , REGB, 
  1719.         "c5;[1=];" },
  1720. /* BIT 101 */   { ACCREG+INDREG , REGA+REGX, 
  1721.         "a5;[1=];" },
  1722. /* BIT 102 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  1723.         "18;a5;[1=];" },
  1724. /* BIT 103 */   { ACCREG+INDREG , REGB+REGX, 
  1725.         "e5;[1=];" },
  1726. /* BIT 104 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  1727.         "18;e5;[1=];" },
  1728. /* BITA 105 */   { ADDR , DIRECT, 
  1729.         "95;[1=];" },
  1730. /* BITA 106 */   { ADDR , EXTENDED, 
  1731.         "b5;[1=]x" },
  1732. /* BITA 107 */   { 0 , 0, 
  1733.         "85;[1=];" },
  1734. /* BITA 108 */   { INDREG , REGX, 
  1735.         "a5;[1=];" },
  1736. /* BITA 109 */   { INDREG+TS6811 , REGY+TS6811, 
  1737.         "18;a5;[1=];" },
  1738. /* BITB 110 */   { ADDR , DIRECT, 
  1739.         "d5;[1=];" },
  1740. /* BITB 111 */   { ADDR , EXTENDED, 
  1741.         "f5;[1=]x" },
  1742. /* BITB 112 */   { 0 , 0, 
  1743.         "c5;[1=];" },
  1744. /* BITB 113 */   { INDREG , REGX, 
  1745.         "e5;[1=];" },
  1746. /* BITB 114 */   { INDREG+TS6811 , REGY+TS6811, 
  1747.         "18;e5;[1=];" },
  1748. /* BLE 115 */   { 0 , 0, 
  1749.         "2f;[1=].P.2+-r" },
  1750. /* BLO 116 */   { 0 , 0, 
  1751.         "25;[1=].P.2+-r" },
  1752. /* BLS 117 */   { 0 , 0, 
  1753.         "23;[1=].P.2+-r" },
  1754. /* BLT 118 */   { 0 , 0, 
  1755.         "2d;[1=].P.2+-r" },
  1756. /* BMI 119 */   { 0 , 0, 
  1757.         "2b;[1=].P.2+-r" },
  1758. /* BNE 120 */   { 0 , 0, 
  1759.         "26;[1=].P.2+-r" },
  1760. /* BPL 121 */   { 0 , 0, 
  1761.         "2a;[1=].P.2+-r" },
  1762. /* BRA 122 */   { 0 , 0, 
  1763.         "20;[1=].P.2+-r" },
  1764. /* BRCLR 123 */   { TS6811 , TS6811, 
  1765.         "13;[1=];[2=];[3=].P.4+-r" },
  1766. /* BRCLR 124 */   { INDREG+TS6811 , REGX+TS6811, 
  1767.         "1f;[1=];[2=];[3=].P.4+-r" },
  1768. /* BRCLR 125 */   { INDREG+TS6811 , REGY+TS6811, 
  1769.         "18;1f;[1=];[2=];[3=].P.5+-r" },
  1770. /* BRN 126 */   { TS6801PLUS , TS6801PLUS, 
  1771.         "21;[1=].P.2+-r" },
  1772. /* BRSET 127 */   { TS6811 , TS6811, 
  1773.         "12;[1=];[2=];[3=].P.4+-r" },
  1774. /* BRSET 128 */   { INDREG+TS6811 , REGX+TS6811, 
  1775.         "1e;[1=];[2=];[3=].P.4+-r" },
  1776. /* BRSET 129 */   { INDREG+TS6811 , REGY+TS6811, 
  1777.         "18;1e;[1=];[2=];[3=].P.5+-r" },
  1778. /* BSET 130 */   { TS6811 , TS6811, 
  1779.         "14;[1=];[2=];" },
  1780. /* BSET 131 */   { INDREG+TS6811 , REGX+TS6811, 
  1781.         "1c;[1=];[2=];" },
  1782. /* BSET 132 */   { INDREG+TS6811 , REGY+TS6811, 
  1783.         "18;1c;[1=];[2=];" },
  1784. /* BSR 133 */   { 0 , 0, 
  1785.         "8d;[1=].P.2+-r" },
  1786. /* BVC 134 */   { 0 , 0, 
  1787.         "28;[1=].P.2+-r" },
  1788. /* BVS 135 */   { 0 , 0, 
  1789.         "29;[1=].P.2+-r" },
  1790. /* CBA 136 */   { 0 , 0, 
  1791.         "11;" },
  1792. /* CLC 137 */   { 0 , 0, 
  1793.         "0c;" },
  1794. /* CLI 138 */   { 0 , 0, 
  1795.         "0e;" },
  1796. /* CLR 139 */   { ACCREG , REGA, 
  1797.         "4f;" },
  1798. /* CLR 140 */   { ACCREG , REGB, 
  1799.         "5f;" },
  1800. /* CLR 141 */   { 0 , 0, 
  1801.         "7f;[1=]x" },
  1802. /* CLR 142 */   { INDREG , REGX, 
  1803.         "6f;[1=];" },
  1804. /* CLR 143 */   { INDREG+TS6811 , REGY+TS6811, 
  1805.         "18;6f;[1=];" },
  1806. /* CLRA 144 */   { 0 , 0, 
  1807.         "4f;" },
  1808. /* CLRB 145 */   { 0 , 0, 
  1809.         "5f;" },
  1810. /* CLV 146 */   { 0 , 0, 
  1811.         "0a;" },
  1812. /* CMP 147 */   { ACCREG+ADDR , REGA+DIRECT, 
  1813.         "91;[1=];" },
  1814. /* CMP 148 */   { ACCREG+ADDR , REGA+EXTENDED, 
  1815.         "b1;[1=]x" },
  1816. /* CMP 149 */   { ACCREG+ADDR , REGB+DIRECT, 
  1817.         "d1;[1=];" },
  1818. /* CMP 150 */   { ACCREG+ADDR , REGB+EXTENDED, 
  1819.         "f1;[1=]x" },
  1820. /* CMP 151 */   { ACCREG , REGA, 
  1821.         "81;[1=];" },
  1822. /* CMP 152 */   { ACCREG , REGB, 
  1823.         "c1;[1=];" },
  1824. /* CMP 153 */   { ACCREG+INDREG , REGA+REGX, 
  1825.         "a1;[1=];" },
  1826. /* CMP 154 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  1827.         "18;a1;[1=];" },
  1828. /* CMP 155 */   { ACCREG+INDREG , REGB+REGX, 
  1829.         "e1;[1=];" },
  1830. /* CMP 156 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  1831.         "18;e1;[1=];" },
  1832. /* CMPA 157 */   { ADDR , DIRECT, 
  1833.         "91;[1=];" },
  1834. /* CMPA 158 */   { ADDR , EXTENDED, 
  1835.         "b1;[1=]x" },
  1836. /* CMPA 159 */   { 0 , 0, 
  1837.         "81;[1=];" },
  1838. /* CMPA 160 */   { INDREG , REGX, 
  1839.         "a1;[1=];" },
  1840. /* CMPA 161 */   { INDREG+TS6811 , REGY+TS6811, 
  1841.         "18;a1;[1=];" },
  1842. /* CMPB 162 */   { ADDR , DIRECT, 
  1843.         "d1;[1=];" },
  1844. /* CMPB 163 */   { ADDR , EXTENDED, 
  1845.         "f1;[1=]x" },
  1846. /* CMPB 164 */   { 0 , 0, 
  1847.         "c1;[1=];" },
  1848. /* CMPB 165 */   { INDREG , REGX, 
  1849.         "e1;[1=];" },
  1850. /* CMPB 166 */   { INDREG+TS6811 , REGY+TS6811, 
  1851.         "18;e1;[1=];" },
  1852. /* COM 167 */   { ACCREG , REGA, 
  1853.         "43;" },
  1854. /* COM 168 */   { ACCREG , REGB, 
  1855.         "53;" },
  1856. /* COM 169 */   { 0 , 0, 
  1857.         "73;[1=]x" },
  1858. /* COM 170 */   { INDREG , REGX, 
  1859.         "63;[1=];" },
  1860. /* COM 171 */   { INDREG+TS6811 , REGY+TS6811, 
  1861.         "18;63;[1=];" },
  1862. /* COMA 172 */   { 0 , 0, 
  1863.         "43;" },
  1864. /* COMB 173 */   { 0 , 0, 
  1865.         "53;" },
  1866. /* CPD 174 */   { ADDR+TS6811 , DIRECT+TS6811, 
  1867.         "1a;93;[1=];" },
  1868. /* CPD 175 */   { ADDR+TS6811 , EXTENDED+TS6811, 
  1869.         "1a;b3;[1=]x" },
  1870. /* CPD 176 */   { TS6811 , TS6811, 
  1871.         "1a;83;[1=]x" },
  1872. /* CPD 177 */   { INDREG+TS6811 , REGX+TS6811, 
  1873.         "1a;a3;[1=];" },
  1874. /* CPD 178 */   { INDREG+TS6811 , REGY+TS6811, 
  1875.         "cd;a3;[1=];" },
  1876. /* CPX 179 */   { ADDR , DIRECT, 
  1877.         "9c;[1=];" },
  1878. /* CPX 180 */   { ADDR , EXTENDED, 
  1879.         "bc;[1=]x" },
  1880. /* CPX 181 */   { 0 , 0, 
  1881.         "8c;[1=]x" },
  1882. /* CPX 182 */   { INDREG , REGX, 
  1883.         "ac;[1=];" },
  1884. /* CPX 183 */   { INDREG+TS6811 , REGY+TS6811, 
  1885.         "cd;ac;[1=];" },
  1886. /* CPY 184 */   { ADDR+TS6811 , DIRECT+TS6811, 
  1887.         "18;9c;[1=];" },
  1888. /* CPY 185 */   { ADDR+TS6811 , EXTENDED+TS6811, 
  1889.         "18;bc;[1=]x" },
  1890. /* CPY 186 */   { TS6811 , TS6811, 
  1891.         "18;8c;[1=]x" },
  1892. /* CPY 187 */   { INDREG+TS6811 , REGX+TS6811, 
  1893.         "1a;ac;[1=];" },
  1894. /* CPY 188 */   { INDREG+TS6811 , REGY+TS6811, 
  1895.         "18;ac;[1=];" },
  1896. /* DAA 189 */   { 0 , 0, 
  1897.         "19;" },
  1898. /* DEC 190 */   { ACCREG , REGA, 
  1899.         "4a;" },
  1900. /* DEC 191 */   { ACCREG , REGB, 
  1901.         "5a;" },
  1902. /* DEC 192 */   { 0 , 0, 
  1903.         "7a;[1=]x" },
  1904. /* DEC 193 */   { INDREG , REGX, 
  1905.         "6a;[1=];" },
  1906. /* DEC 194 */   { INDREG+TS6811 , REGY+TS6811, 
  1907.         "18;6a;[1=];" },
  1908. /* DECA 195 */   { 0 , 0, 
  1909.         "4a;" },
  1910. /* DECB 196 */   { 0 , 0, 
  1911.         "5a;" },
  1912. /* DES 197 */   { 0 , 0, 
  1913.         "34;" },
  1914. /* DEX 198 */   { 0 , 0, 
  1915.         "09;" },
  1916. /* DEY 199 */   { TS6811 , TS6811, 
  1917.         "18;09;" },
  1918. /* EOR 200 */   { ACCREG+ADDR , REGA+DIRECT, 
  1919.         "98;[1=];" },
  1920. /* EOR 201 */   { ACCREG+ADDR , REGA+EXTENDED, 
  1921.         "b8;[1=]x" },
  1922. /* EOR 202 */   { ACCREG+ADDR , REGB+DIRECT, 
  1923.         "d8;[1=];" },
  1924. /* EOR 203 */   { ACCREG+ADDR , REGB+EXTENDED, 
  1925.         "f8;[1=]x" },
  1926. /* EOR 204 */   { ACCREG , REGA, 
  1927.         "88;[1=];" },
  1928. /* EOR 205 */   { ACCREG , REGB, 
  1929.         "c8;[1=];" },
  1930. /* EOR 206 */   { ACCREG+INDREG , REGA+REGX, 
  1931.         "a8;[1=];" },
  1932. /* EOR 207 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  1933.         "18;a8;[1=];" },
  1934. /* EOR 208 */   { ACCREG+INDREG , REGB+REGX, 
  1935.         "e8;[1=];" },
  1936. /* EOR 209 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  1937.         "18;e8;[1=];" },
  1938. /* EORA 210 */   { ADDR , DIRECT, 
  1939.         "98;[1=];" },
  1940. /* EORA 211 */   { ADDR , EXTENDED, 
  1941.         "b8;[1=]x" },
  1942. /* EORA 212 */   { 0 , 0, 
  1943.         "88;[1=];" },
  1944. /* EORA 213 */   { INDREG , REGX, 
  1945.         "a8;[1=];" },
  1946. /* EORA 214 */   { INDREG+TS6811 , REGY+TS6811, 
  1947.         "18;a8;[1=];" },
  1948. /* EORB 215 */   { ADDR , DIRECT, 
  1949.         "d8;[1=];" },
  1950. /* EORB 216 */   { ADDR , EXTENDED, 
  1951.         "f8;[1=]x" },
  1952. /* EORB 217 */   { 0 , 0, 
  1953.         "c8;[1=];" },
  1954. /* EORB 218 */   { INDREG , REGX, 
  1955.         "e8;[1=];" },
  1956. /* EORB 219 */   { INDREG+TS6811 , REGY+TS6811, 
  1957.         "18;e8;[1=];" },
  1958. /* FDIV 220 */   { TS6811 , TS6811, 
  1959.         "03;" },
  1960. /* IDIV 221 */   { TS6811 , TS6811, 
  1961.         "02;" },
  1962. /* INC 222 */   { ACCREG , REGA, 
  1963.         "4c;" },
  1964. /* INC 223 */   { ACCREG , REGB, 
  1965.         "5c;" },
  1966. /* INC 224 */   { 0 , 0, 
  1967.         "7c;[1=]x" },
  1968. /* INC 225 */   { INDREG , REGX, 
  1969.         "6c;[1=];" },
  1970. /* INC 226 */   { INDREG+TS6811 , REGY+TS6811, 
  1971.         "18;6c;[1=];" },
  1972. /* INCA 227 */   { 0 , 0, 
  1973.         "4c;" },
  1974. /* INCB 228 */   { 0 , 0, 
  1975.         "5c;" },
  1976. /* INS 229 */   { 0 , 0, 
  1977.         "31;" },
  1978. /* INX 230 */   { 0 , 0, 
  1979.         "08;" },
  1980. /* INY 231 */   { TS6811 , TS6811, 
  1981.         "18;08;" },
  1982. /* JMP 232 */   { 0 , 0, 
  1983.         "7e;[1=]x" },
  1984. /* JMP 233 */   { INDREG , REGX, 
  1985.         "6e;[1=];" },
  1986. /* JMP 234 */   { INDREG+TS6811 , REGY+TS6811, 
  1987.         "18;6e;[1=];" },
  1988. /* JSR 235 */   { ADDR+CPUMASK , DIRECT+CPU6800, 
  1989.         "bd;[1=]x" },
  1990. /* JSR 236 */   { ADDR+TS6801PLUS , DIRECT+TS6801PLUS, 
  1991.         "9d;[1=];" },
  1992. /* JSR 237 */   { ADDR , EXTENDED, 
  1993.         "bd;[1=]x" },
  1994. /* JSR 238 */   { INDREG , REGX, 
  1995.         "ad;[1=];" },
  1996. /* JSR 239 */   { INDREG+TS6811 , REGY+TS6811, 
  1997.         "18;ad;[1=];" },
  1998. /* LDA 240 */   { ACCREG+ADDR , REGA+DIRECT, 
  1999.         "96;[1=];" },
  2000. /* LDA 241 */   { ACCREG+ADDR , REGA+EXTENDED, 
  2001.         "b6;[1=]x" },
  2002. /* LDA 242 */   { ACCREG+ADDR , REGB+DIRECT, 
  2003.         "d6;[1=];" },
  2004. /* LDA 243 */   { ACCREG+ADDR , REGB+EXTENDED, 
  2005.         "f6;[1=]x" },
  2006. /* LDA 244 */   { ACCREG , REGA, 
  2007.         "86;[1=];" },
  2008. /* LDA 245 */   { ACCREG , REGB, 
  2009.         "c6;[1=];" },
  2010. /* LDA 246 */   { ACCREG+INDREG , REGA+REGX, 
  2011.         "a6;[1=];" },
  2012. /* LDA 247 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  2013.         "18;a6;[1=];" },
  2014. /* LDA 248 */   { ACCREG+INDREG , REGB+REGX, 
  2015.         "e6;[1=];" },
  2016. /* LDA 249 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  2017.         "18;e6;[1=];" },
  2018. /* LDAA 250 */   { ADDR , DIRECT, 
  2019.         "96;[1=];" },
  2020. /* LDAA 251 */   { ADDR , EXTENDED, 
  2021.         "b6;[1=]x" },
  2022. /* LDAA 252 */   { 0 , 0, 
  2023.         "86;[1=];" },
  2024. /* LDAA 253 */   { INDREG , REGX, 
  2025.         "a6;[1=];" },
  2026. /* LDAA 254 */   { INDREG+TS6811 , REGY+TS6811, 
  2027.         "18;a6;[1=];" },
  2028. /* LDAB 255 */   { ADDR , DIRECT, 
  2029.         "d6;[1=];" },
  2030. /* LDAB 256 */   { ADDR , EXTENDED, 
  2031.         "f6;[1=]x" },
  2032. /* LDAB 257 */   { 0 , 0, 
  2033.         "c6;[1=];" },
  2034. /* LDAB 258 */   { INDREG , REGX, 
  2035.         "e6;[1=];" },
  2036. /* LDAB 259 */   { INDREG+TS6811 , REGY+TS6811, 
  2037.         "18;e6;[1=];" },
  2038. /* LDD 260 */   { ADDR+TS6801PLUS , DIRECT+TS6801PLUS, 
  2039.         "dc;[1=];" },
  2040. /* LDD 261 */   { ADDR+TS6801PLUS , EXTENDED+TS6801PLUS, 
  2041.         "fc;[1=]x" },
  2042. /* LDD 262 */   { TS6801PLUS , TS6801PLUS, 
  2043.         "cc;[1=]x" },
  2044. /* LDD 263 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
  2045.         "ec;[1=];" },
  2046. /* LDD 264 */   { INDREG+TS6811 , REGY+TS6811, 
  2047.         "18;ec;[1=];" },
  2048. /* LDS 265 */   { ADDR , DIRECT, 
  2049.         "9e;[1=];" },
  2050. /* LDS 266 */   { ADDR , EXTENDED, 
  2051.         "be;[1=]x" },
  2052. /* LDS 267 */   { 0 , 0, 
  2053.         "8e;[1=]x" },
  2054. /* LDS 268 */   { INDREG , REGX, 
  2055.         "ae;[1=];" },
  2056. /* LDS 269 */   { INDREG+TS6811 , REGY+TS6811, 
  2057.         "18;ae;[1=];" },
  2058. /* LDX 270 */   { ADDR , DIRECT, 
  2059.         "de;[1=];" },
  2060. /* LDX 271 */   { ADDR , EXTENDED, 
  2061.         "fe;[1=]x" },
  2062. /* LDX 272 */   { 0 , 0, 
  2063.         "ce;[1=]x" },
  2064. /* LDX 273 */   { INDREG , REGX, 
  2065.         "ee;[1=];" },
  2066. /* LDX 274 */   { INDREG+TS6811 , REGY+TS6811, 
  2067.         "cd;ee;[1=];" },
  2068. /* LDY 275 */   { TS6811+ADDR , DIRECT+TS6811, 
  2069.         "18;de;[1=];" },
  2070. /* LDY 276 */   { TS6811+ADDR , EXTENDED+TS6811, 
  2071.         "18;fe;[1=]x" },
  2072. /* LDY 277 */   { TS6811 , TS6811, 
  2073.         "18;ce;[1=]x" },
  2074. /* LDY 278 */   { TS6811+INDREG , REGX+TS6811, 
  2075.         "1a;ee;[1=];" },
  2076. /* LDY 279 */   { INDREG+TS6811 , REGY+TS6811, 
  2077.         "18;ee;[1=];" },
  2078. /* LSL 280 */   { ACCREG , REGA, 
  2079.         "48;" },
  2080. /* LSL 281 */   { ACCREG , REGB, 
  2081.         "58;" },
  2082. /* LSL 282 */   { 0 , 0, 
  2083.         "78;[1=]x" },
  2084. /* LSL 283 */   { INDREG , REGX, 
  2085.         "68;[1=];" },
  2086. /* LSL 284 */   { INDREG+TS6811 , REGY+TS6811, 
  2087.         "18;68;[1=];" },
  2088. /* LSLA 285 */   { 0 , 0, 
  2089.         "48;" },
  2090. /* LSLB 286 */   { 0 , 0, 
  2091.         "58;" },
  2092. /* LSLD 287 */   { TS6801PLUS , TS6801PLUS, 
  2093.         "05;" },
  2094. /* LSR 288 */   { ACCREG , REGA, 
  2095.         "44;" },
  2096. /* LSR 289 */   { ACCREG , REGB, 
  2097.         "54;" },
  2098. /* LSR 290 */   { 0 , 0, 
  2099.         "74;[1=]x" },
  2100. /* LSR 291 */   { INDREG , REGX, 
  2101.         "64;[1=];" },
  2102. /* LSR 292 */   { INDREG+TS6811 , REGY+TS6811, 
  2103.         "18;64;[1=];" },
  2104. /* LSRA 293 */   { 0 , 0, 
  2105.         "44;" },
  2106. /* LSRB 294 */   { 0 , 0, 
  2107.         "54;" },
  2108. /* LSRD 295 */   { TS6801PLUS , TS6801PLUS, 
  2109.         "04;" },
  2110. /* MUL 296 */   { TS6801PLUS , TS6801PLUS, 
  2111.         "3d;" },
  2112. /* NEG 297 */   { ACCREG , REGA, 
  2113.         "40;" },
  2114. /* NEG 298 */   { ACCREG , REGB, 
  2115.         "50;" },
  2116. /* NEG 299 */   { 0 , 0, 
  2117.         "70;[1=]x" },
  2118. /* NEG 300 */   { INDREG , REGX, 
  2119.         "60;[1=];" },
  2120. /* NEG 301 */   { INDREG+TS6811 , REGY+TS6811, 
  2121.         "18;60;[1=];" },
  2122. /* NEGA 302 */   { 0 , 0, 
  2123.         "40;" },
  2124. /* NEGB 303 */   { 0 , 0, 
  2125.         "50;" },
  2126. /* NOP 304 */   { 0 , 0, 
  2127.         "01;" },
  2128. /* ORA 305 */   { ACCREG+ADDR , REGA+DIRECT, 
  2129.         "9a;[1=];" },
  2130. /* ORA 306 */   { ACCREG+ADDR , REGA+EXTENDED, 
  2131.         "ba;[1=]x" },
  2132. /* ORA 307 */   { ACCREG+ADDR , REGB+DIRECT, 
  2133.         "da;[1=];" },
  2134. /* ORA 308 */   { ACCREG+ADDR , REGB+EXTENDED, 
  2135.         "fa;[1=]x" },
  2136. /* ORA 309 */   { ACCREG , REGA, 
  2137.         "8a;[1=];" },
  2138. /* ORA 310 */   { ACCREG , REGB, 
  2139.         "ca;[1=];" },
  2140. /* ORA 311 */   { ACCREG+INDREG , REGA+REGX, 
  2141.         "aa;[1=];" },
  2142. /* ORA 312 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  2143.         "18;aa;[1=];" },
  2144. /* ORA 313 */   { ACCREG+INDREG , REGB+REGX, 
  2145.         "ea;[1=];" },
  2146. /* ORA 314 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  2147.         "18;ea;[1=];" },
  2148. /* ORAA 315 */   { ADDR , DIRECT, 
  2149.         "9a;[1=];" },
  2150. /* ORAA 316 */   { ADDR , EXTENDED, 
  2151.         "ba;[1=]x" },
  2152. /* ORAA 317 */   { 0 , 0, 
  2153.         "8a;[1=];" },
  2154. /* ORAA 318 */   { INDREG , REGX, 
  2155.         "aa;[1=];" },
  2156. /* ORAA 319 */   { INDREG+TS6811 , REGY+TS6811, 
  2157.         "18;aa;[1=];" },
  2158. /* ORAB 320 */   { ADDR , DIRECT, 
  2159.         "da;[1=];" },
  2160. /* ORAB 321 */   { ADDR , EXTENDED, 
  2161.         "fa;[1=]x" },
  2162. /* ORAB 322 */   { 0 , 0, 
  2163.         "ca;[1=];" },
  2164. /* ORAB 323 */   { INDREG , REGX, 
  2165.         "ea;[1=];" },
  2166. /* ORAB 324 */   { INDREG+TS6811 , REGY+TS6811, 
  2167.         "18;ea;[1=];" },
  2168. /* PSH 325 */   { ACCREG , REGA, 
  2169.         "36;" },
  2170. /* PSH 326 */   { ACCREG , REGB, 
  2171.         "37;" },
  2172. /* PSH 327 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
  2173.         "3c;" },
  2174. /* PSH 328 */   { INDREG+TS6811 , REGY+TS6811, 
  2175.         "18;3c;" },
  2176. /* PSHA 329 */   { 0 , 0, 
  2177.         "36;" },
  2178. /* PSHB 330 */   { 0 , 0, 
  2179.         "37;" },
  2180. /* PSHX 331 */   { TS6801PLUS , TS6801PLUS, 
  2181.         "3c;" },
  2182. /* PSHY 332 */   { TS6811 , TS6811, 
  2183.         "18;3c;" },
  2184. /* PUL 333 */   { ACCREG , REGA, 
  2185.         "32;" },
  2186. /* PUL 334 */   { ACCREG , REGB, 
  2187.         "33;" },
  2188. /* PUL 335 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
  2189.         "38;" },
  2190. /* PUL 336 */   { INDREG+TS6811 , REGY+TS6811, 
  2191.         "18;38;" },
  2192. /* PULA 337 */   { 0 , 0, 
  2193.         "32;" },
  2194. /* PULB 338 */   { 0 , 0, 
  2195.         "33;" },
  2196. /* PULX 339 */   { TS6801PLUS , TS6801PLUS, 
  2197.         "38;" },
  2198. /* PULY 340 */   { TS6811 , TS6811, 
  2199.         "18;38;" },
  2200. /* ROL 341 */   { ACCREG , REGA, 
  2201.         "49;" },
  2202. /* ROL 342 */   { ACCREG , REGB, 
  2203.         "59;" },
  2204. /* ROL 343 */   { 0 , 0, 
  2205.         "79;[1=]x" },
  2206. /* ROL 344 */   { INDREG , REGX, 
  2207.         "69;[1=];" },
  2208. /* ROL 345 */   { INDREG+TS6811 , REGY+TS6811, 
  2209.         "18;69;[1=];" },
  2210. /* ROLA 346 */   { 0 , 0, 
  2211.         "49;" },
  2212. /* ROLB 347 */   { 0 , 0, 
  2213.         "59;" },
  2214. /* ROR 348 */   { ACCREG , REGA, 
  2215.         "46;" },
  2216. /* ROR 349 */   { ACCREG , REGB, 
  2217.         "56;" },
  2218. /* ROR 350 */   { 0 , 0, 
  2219.         "76;[1=]x" },
  2220. /* ROR 351 */   { INDREG , REGX, 
  2221.         "66;[1=];" },
  2222. /* ROR 352 */   { INDREG+TS6811 , REGY+TS6811, 
  2223.         "18;66;[1=];" },
  2224. /* RORA 353 */   { 0 , 0, 
  2225.         "46;" },
  2226. /* RORB 354 */   { 0 , 0, 
  2227.         "56;" },
  2228. /* RTI 355 */   { 0 , 0, 
  2229.         "3b;" },
  2230. /* RTS 356 */   { 0 , 0, 
  2231.         "39;" },
  2232. /* SBA 357 */   { 0 , 0, 
  2233.         "10;" },
  2234. /* SBC 358 */   { ACCREG+ADDR , REGA+DIRECT, 
  2235.         "92;[1=];" },
  2236. /* SBC 359 */   { ACCREG+ADDR , REGA+EXTENDED, 
  2237.         "b2;[1=]x" },
  2238. /* SBC 360 */   { ACCREG+ADDR , REGB+DIRECT, 
  2239.         "d2;[1=];" },
  2240. /* SBC 361 */   { ACCREG+ADDR , REGB+EXTENDED, 
  2241.         "f2;[1=]x" },
  2242. /* SBC 362 */   { ACCREG , REGA, 
  2243.         "82;[1=];" },
  2244. /* SBC 363 */   { ACCREG , REGB, 
  2245.         "c2;[1=];" },
  2246. /* SBC 364 */   { ACCREG+INDREG , REGA+REGX, 
  2247.         "a2;[1=];" },
  2248. /* SBC 365 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  2249.         "18;a2;[1=];" },
  2250. /* SBC 366 */   { ACCREG+INDREG , REGB+REGX, 
  2251.         "e2;[1=];" },
  2252. /* SBC 367 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  2253.         "18;e2;[1=];" },
  2254. /* SBCA 368 */   { ADDR , DIRECT, 
  2255.         "92;[1=];" },
  2256. /* SBCA 369 */   { ADDR , EXTENDED, 
  2257.         "b2;[1=]x" },
  2258. /* SBCA 370 */   { 0 , 0, 
  2259.         "82;[1=];" },
  2260. /* SBCA 371 */   { INDREG , REGX, 
  2261.         "a2;[1=];" },
  2262. /* SBCA 372 */   { INDREG+TS6811 , REGY+TS6811, 
  2263.         "18;a2;[1=];" },
  2264. /* SBCB 373 */   { ADDR , DIRECT, 
  2265.         "d2;[1=];" },
  2266. /* SBCB 374 */   { ADDR , EXTENDED, 
  2267.         "f2;[1=]x" },
  2268. /* SBCB 375 */   { 0 , 0, 
  2269.         "c2;[1=];" },
  2270. /* SBCB 376 */   { INDREG , REGX, 
  2271.         "e2;[1=];" },
  2272. /* SBCB 377 */   { INDREG+TS6811 , REGY+TS6811, 
  2273.         "18;e2;[1=];" },
  2274. /* SEC 378 */   { 0 , 0, 
  2275.         "0d;" },
  2276. /* SEI 379 */   { 0 , 0, 
  2277.         "0f;" },
  2278. /* SEV 380 */   { 0 , 0, 
  2279.         "0b;" },
  2280. /* STA 381 */   { ACCREG+ADDR , REGA+DIRECT, 
  2281.         "97;[1=];" },
  2282. /* STA 382 */   { ACCREG+ADDR , REGA+EXTENDED, 
  2283.         "b7;[1=]x" },
  2284. /* STA 383 */   { ACCREG+ADDR , REGB+DIRECT, 
  2285.         "d7;[1=];" },
  2286. /* STA 384 */   { ACCREG+ADDR , REGB+EXTENDED, 
  2287.         "f7;[1=]x" },
  2288. /* STA 385 */   { ACCREG+INDREG , REGA+REGX, 
  2289.         "a7;[1=];" },
  2290. /* STA 386 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  2291.         "18;a7;[1=];" },
  2292. /* STA 387 */   { ACCREG+INDREG , REGB+REGX, 
  2293.         "e7;[1=];" },
  2294. /* STA 388 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  2295.         "18;e7;[1=];" },
  2296. /* STAA 389 */   { ADDR , DIRECT, 
  2297.         "97;[1=];" },
  2298. /* STAA 390 */   { ADDR , EXTENDED, 
  2299.         "b7;[1=]x" },
  2300. /* STAA 391 */   { INDREG , REGX, 
  2301.         "a7;[1=];" },
  2302. /* STAA 392 */   { INDREG+TS6811 , REGY+TS6811, 
  2303.         "18;a7;[1=];" },
  2304. /* STAB 393 */   { ADDR , DIRECT, 
  2305.         "d7;[1=];" },
  2306. /* STAB 394 */   { ADDR , EXTENDED, 
  2307.         "f7;[1=]x" },
  2308. /* STAB 395 */   { INDREG , REGX, 
  2309.         "e7;[1=];" },
  2310. /* STAB 396 */   { INDREG+TS6811 , REGY+TS6811, 
  2311.         "18;e7;[1=];" },
  2312. /* STD 397 */   { TS6801PLUS+ADDR , DIRECT+TS6801PLUS, 
  2313.         "dd;[1=];" },
  2314. /* STD 398 */   { TS6801PLUS+ADDR , EXTENDED+TS6801PLUS, 
  2315.         "fd;[1=]x" },
  2316. /* STD 399 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
  2317.         "ed;[1=];" },
  2318. /* STD 400 */   { INDREG+TS6811 , REGY+TS6811, 
  2319.         "18;ed;[1=];" },
  2320. /* STOP 401 */   { TS6811 , TS6811, 
  2321.         "cf;" },
  2322. /* STS 402 */   { ADDR , DIRECT, 
  2323.         "9f;[1=];" },
  2324. /* STS 403 */   { ADDR , EXTENDED, 
  2325.         "bf;[1=]x" },
  2326. /* STS 404 */   { INDREG , REGX, 
  2327.         "af;[1=];" },
  2328. /* STS 405 */   { INDREG+TS6811 , REGY+TS6811, 
  2329.         "18;af;[1=];" },
  2330. /* STX 406 */   { ADDR , DIRECT, 
  2331.         "df;[1=];" },
  2332. /* STX 407 */   { ADDR , EXTENDED, 
  2333.         "ff;[1=]x" },
  2334. /* STX 408 */   { INDREG , REGX, 
  2335.         "ef;[1=];" },
  2336. /* STX 409 */   { INDREG+TS6811 , REGY+TS6811, 
  2337.         "cd;ef;[1=];" },
  2338. /* STY 410 */   { TS6811+ADDR , DIRECT+TS6811, 
  2339.         "18;df;[1=];" },
  2340. /* STY 411 */   { TS6811+ADDR , EXTENDED+TS6811, 
  2341.         "18;ff;[1=]x" },
  2342. /* STY 412 */   { TS6811+INDREG , REGX+TS6811, 
  2343.         "1a;ef;[1=];" },
  2344. /* STY 413 */   { INDREG+TS6811 , REGY+TS6811, 
  2345.         "18;ef;[1=];" },
  2346. /* SUB 414 */   { ACCREG+ADDR , REGA+DIRECT, 
  2347.         "90;[1=];" },
  2348. /* SUB 415 */   { ACCREG+ADDR , REGA+EXTENDED, 
  2349.         "b0;[1=]x" },
  2350. /* SUB 416 */   { ACCREG+ADDR , REGB+DIRECT, 
  2351.         "d0;[1=];" },
  2352. /* SUB 417 */   { ACCREG+ADDR , REGB+EXTENDED, 
  2353.         "f0;[1=]x" },
  2354. /* SUB 418 */   { ACCREG , REGA, 
  2355.         "80;[1=];" },
  2356. /* SUB 419 */   { ACCREG , REGB, 
  2357.         "c0;[1=];" },
  2358. /* SUB 420 */   { ACCREG+INDREG , REGA+REGX, 
  2359.         "a0;[1=];" },
  2360. /* SUB 421 */   { ACCREG+INDREG+TS6811 , REGA+REGY+TS6811, 
  2361.         "18;a0;[1=];" },
  2362. /* SUB 422 */   { ACCREG+INDREG , REGB+REGX, 
  2363.         "e0;[1=];" },
  2364. /* SUB 423 */   { ACCREG+INDREG+TS6811 , REGB+REGY+TS6811, 
  2365.         "18;e0;[1=];" },
  2366. /* SUBA 424 */   { ADDR , DIRECT, 
  2367.         "90;[1=];" },
  2368. /* SUBA 425 */   { ADDR , EXTENDED, 
  2369.         "b0;[1=]x" },
  2370. /* SUBA 426 */   { 0 , 0, 
  2371.         "80;[1=];" },
  2372. /* SUBA 427 */   { INDREG , REGX, 
  2373.         "a0;[1=];" },
  2374. /* SUBA 428 */   { INDREG+TS6811 , REGY+TS6811, 
  2375.         "18;a0;[1=];" },
  2376. /* SUBB 429 */   { ADDR , DIRECT, 
  2377.         "d0;[1=];" },
  2378. /* SUBB 430 */   { ADDR , EXTENDED, 
  2379.         "f0;[1=]x" },
  2380. /* SUBB 431 */   { 0 , 0, 
  2381.         "c0;[1=];" },
  2382. /* SUBB 432 */   { INDREG , REGX, 
  2383.         "e0;[1=];" },
  2384. /* SUBB 433 */   { INDREG+TS6811 , REGY+TS6811, 
  2385.         "18;e0;[1=];" },
  2386. /* SUBD 434 */   { TS6801PLUS+ADDR , DIRECT+TS6801PLUS, 
  2387.         "93;[1=];" },
  2388. /* SUBD 435 */   { TS6801PLUS+ADDR , EXTENDED+TS6801PLUS, 
  2389.         "b3;[1=]x" },
  2390. /* SUBD 436 */   { TS6801PLUS , TS6801PLUS, 
  2391.         "83;[1=]x" },
  2392. /* SUBD 437 */   { TS6801PLUS+INDREG , REGX+TS6801PLUS, 
  2393.         "a3;[1=];" },
  2394. /* SUBD 438 */   { INDREG+TS6811 , REGY+TS6811, 
  2395.         "18;a3;[1=];" },
  2396. /* SWI 439 */   { 0 , 0, 
  2397.         "3f;" },
  2398. /* TAB 440 */   { 0 , 0, 
  2399.         "16;" },
  2400. /* TAP 441 */   { 0 , 0, 
  2401.         "06;" },
  2402. /* TBA 442 */   { 0 , 0, 
  2403.         "17;" },
  2404. /* TEST 443 */   { TS6811 , TS6811, 
  2405.         "00;" },
  2406. /* TPA 444 */   { 0 , 0, 
  2407.         "07;" },
  2408. /* TST 445 */   { ACCREG , REGA, 
  2409.         "4d;" },
  2410. /* TST 446 */   { ACCREG , REGB, 
  2411.         "5d;" },
  2412. /* TST 447 */   { 0 , 0, 
  2413.         "7d;[1=]x" },
  2414. /* TST 448 */   { INDREG , REGX, 
  2415.         "6d;[1=];" },
  2416. /* TST 449 */   { INDREG+TS6811 , REGY+TS6811, 
  2417.         "18;6d;[1=];" },
  2418. /* TSTA 450 */   { 0 , 0, 
  2419.         "4d;" },
  2420. /* TSTB 451 */   { 0 , 0, 
  2421.         "5d;" },
  2422. /* TSX 452 */   { 0 , 0, 
  2423.         "30;" },
  2424. /* TSY 453 */   { TS6811 , TS6811, 
  2425.         "18;30;" },
  2426. /* TXS 454 */   { 0 , 0, 
  2427.         "35;" },
  2428. /* TYS 455 */   { TS6811 , TS6811, 
  2429.         "18;35;" },
  2430. /* WAI 456 */   { 0 , 0, 
  2431.         "3e;" },
  2432. /* XGDX 457 */   { TS6811 , TS6811, 
  2433.         "8f;" },
  2434. /* XGDY 458 */   { TS6811 , TS6811, 
  2435.         "18;8f;" },
  2436.     { 0,0,""} };
  2437. /* end fraptabdef.c */
  2438.