home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2223 < prev    next >
Internet Message Format  |  1990-12-28  |  52KB

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