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

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