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

  1. From: markz@ssc.UUCP (Mark Zenier)
  2. Newsgroups: alt.sources
  3. Subject: Frankenstein Cross Assemblers, Motorola 6805 "Flavor", Part 1 of 1
  4. Message-ID: <595@ssc.UUCP>
  5. Date: 4 Dec 90 07:53:09 GMT
  6.  
  7. ---- Cut Here and feed the following to sh ----
  8. #!/bin/sh
  9. # This is Frankasm/As6805, a shell archive (shar 3.43)
  10. # made 12/04/1990 06:55 UTC by markz@ssc.uucp
  11. # Source directory /usr/mark/frank.shar
  12. #
  13. # existing files will NOT be overwritten unless -c is specified
  14. # This format requires very little intelligence at unshar time.
  15. # "if test", "echo", "true", and "sed" may be needed.
  16. #
  17. # This shar contains:
  18. # length  mode       name
  19. # ------ ---------- ------------------------------------------
  20. #   1488 -r--r----- as6805.1
  21. #   6429 -r--r----- as6805.doc
  22. #   2569 -r--r----- as6805.tst
  23. #   5653 -r--r--r-- as6805.tut
  24. #  35559 -r--r--r-- as6805.y
  25. #
  26. # ============= as6805.1 ==============
  27. if test -f 'as6805.1' -a X"$1" != X"-c"; then
  28.     echo 'x - skipping as6805.1 (File already exists)'
  29. else
  30. echo 'x - extracting as6805.1 (Text)'
  31. sed 's/^X//' << 'SHAR_EOF' > 'as6805.1' &&
  32. X.TH AS6805 1L
  33. X.SH NAME
  34. Xas6805 \- cross assemblers for microcomputers
  35. X.SH SYNOPSIS
  36. X.nf
  37. Xas6805 [-p cpu] [-l listfile] [-o hexfile] [-d] [-s symbolfile] input
  38. X.fi
  39. X.SH DESCRIPTION
  40. XThe namelist command assembles the input file into a
  41. Xtext output file representing the program memory for a microcomputer.
  42. X
  43. XOptions
  44. X.IP "-p cpu"
  45. XOverride the instruction set selection.
  46. X.RS 10
  47. XValid Values for Cpu
  48. X.RS 5
  49. X146805, 68hc05, 68HC05, 63L05, 6305, 6805
  50. X.RE
  51. X.RE
  52. X.IP "-l listfile"
  53. XOutput a file formated with the memory address, data, and source input lines.
  54. X.IP "-o hexfile"
  55. XOutput the memory data image in a form accepted by most prom programmers.
  56. X.IP "-h hexfile"
  57. XSame as \-o.
  58. X.IP \-d
  59. XSave the intermediate data file (see FILE) and abort the execution at the
  60. Xend of processing.
  61. X.IP "-s symbolfile"
  62. XPrint the symbol table values and names, one per line in the specified file.
  63. X.SH FILES
  64. X/usr/tmp/frtXXXXXX
  65. X.SH SEE ALSO
  66. XFrankenstein Cross Assemblers Users Manual (file base.doc)
  67. XAppendix for as6805 Frankenstein Assembler (file as6805.doc)
  68. X.SH NOTES
  69. XThere is only one input file.
  70. X
  71. XThe program can select which subset of instructions is accepted.
  72. XThe program first uses the name with which it is invoked.
  73. XThis is scanned for a substring which indicates which set to use.
  74. XThe -p options overrides this selction by performing the same substring
  75. Xsearch.
  76. XFinally the input file can select which subset to use with the CPU statement.
  77. X
  78. XThere should only be one executable file with all of its names linked to it.
  79. SHAR_EOF
  80. true || echo 'restore of as6805.1 failed'
  81. fi
  82. # ============= as6805.doc ==============
  83. if test -f 'as6805.doc' -a X"$1" != X"-c"; then
  84.     echo 'x - skipping as6805.doc (File already exists)'
  85. else
  86. echo 'x - extracting as6805.doc (Text)'
  87. sed 's/^X//' << 'SHAR_EOF' > 'as6805.doc' &&
  88. X.HM A 1 1 1 1 1 1
  89. X.H 1 "Appendix for as6805 Frankenstein Assembler"
  90. X.H 2 "Pseudo Operations"
  91. X.H 3 "Standard Pseudo Operation Mnemonics"
  92. X.VL 40 5 1
  93. X.LI "End"
  94. XEND
  95. X.LI "File Inclusion"
  96. XINCL
  97. XINCLUDE
  98. X.LI "If"
  99. XIF
  100. X.LI "Else"
  101. XELSE
  102. X.LI "End If"
  103. XENDI
  104. X.LI "Equate"
  105. XEQU
  106. X.LI "Set"
  107. XSET
  108. X.LI "Org"
  109. XORG
  110. X.LI "Reserve Memory"
  111. XRESERVE
  112. XRMB
  113. X.LI "Define Byte Data"
  114. XBYTE
  115. XDB
  116. XFCB
  117. X.LI "Define Word Data"
  118. XDW
  119. XFDB
  120. XWORD
  121. X.LI "Define String Data"
  122. XFCC
  123. XSTRING
  124. X.LI "Define Character Set Translation"
  125. XCHARSET
  126. X.LI "Define Character Value"
  127. XCHARDEF
  128. XCHD
  129. X.LI "Use Character Translation"
  130. XCHARUSE
  131. X.LE
  132. X.H 3 "Machine Dependent Pseudo Operations"
  133. X.H 4 "Instruction Set Selection"
  134. X.DS I N
  135. XCPU string
  136. X.DE
  137. XThe instruction set can be specified in the source file with the CPU 
  138. Xpseudooperation.
  139. XThe string, delimited by quotes or apostrophes, is scanned for a
  140. Xsubstring which selects which instruction set is used.
  141. XWhen the program is invoked, this operation is performed on the name of
  142. Xthe program, then the -p optional arguement, if any, and then any CPU
  143. Xstatements.
  144. XThe last one selects which subset of the instructions the assembler will
  145. Xaccept.
  146. XThe instruction set can be changed at any place in the source file. 
  147. X.VL 30 5 1
  148. X.LI "Instruction Set"
  149. XSubstrings
  150. X.LI "68hc05"
  151. Xhc
  152. XHC
  153. X.LI "146805"
  154. X4
  155. X.LI "6305"
  156. X3
  157. X.LI "6805"
  158. X05
  159. Xl05
  160. XL05
  161. X.LE
  162. X.H 2 "Instructions"
  163. X.H 3 "Instruction List"
  164. X.TS H
  165. X;
  166. Xl l l.
  167. XOpcode    Syntax    Selection Criteria
  168. X.sp
  169. X.TH
  170. X.sp
  171. XADC     '#' expr
  172. XADC     expr    DIRECT
  173. XADC     expr    EXTENDED
  174. XADC     indexed    INDEX0
  175. XADC     indexed    INDEX1
  176. XADC     indexed    INDEX2
  177. X.sp
  178. XADD     '#' expr
  179. XADD     expr    DIRECT
  180. XADD     expr    EXTENDED
  181. XADD     indexed    INDEX0
  182. XADD     indexed    INDEX1
  183. XADD     indexed    INDEX2
  184. X.sp
  185. XAND     '#' expr
  186. XAND     expr    DIRECT
  187. XAND     expr    EXTENDED
  188. XAND     indexed    INDEX0
  189. XAND     indexed    INDEX1
  190. XAND     indexed    INDEX2
  191. X.sp
  192. XASL     expr    DIRECT
  193. XASL     indexed    INDEX0
  194. XASL     indexed    INDEX1
  195. X.sp
  196. XASLA    
  197. X.sp
  198. XASLX    
  199. X.sp
  200. XASR     expr    DIRECT
  201. XASR     indexed    INDEX0
  202. XASR     indexed    INDEX1
  203. X.sp
  204. XASRA    
  205. X.sp
  206. XASRX    
  207. X.sp
  208. XBCC     expr
  209. X.sp
  210. XBCLR     expr ',' expr
  211. X.sp
  212. XBCS     expr
  213. X.sp
  214. XBEQ     expr
  215. X.sp
  216. XBHCC     expr
  217. X.sp
  218. XBHCS     expr
  219. X.sp
  220. XBHI     expr
  221. X.sp
  222. XBHS     expr
  223. X.sp
  224. XBIH     expr
  225. X.sp
  226. XBIL     expr
  227. X.sp
  228. XBIT     '#' expr
  229. XBIT     expr    DIRECT
  230. XBIT     expr    EXTENDED
  231. XBIT     indexed    INDEX0
  232. XBIT     indexed    INDEX1
  233. XBIT     indexed    INDEX2
  234. X.sp
  235. XBLO     expr
  236. X.sp
  237. XBLS     expr
  238. X.sp
  239. XBMC     expr
  240. X.sp
  241. XBMI     expr
  242. X.sp
  243. XBMS     expr
  244. X.sp
  245. XBNE     expr
  246. X.sp
  247. XBPL     expr
  248. X.sp
  249. XBRA     expr
  250. X.sp
  251. XBRCLR     expr ',' expr ',' expr
  252. X.sp
  253. XBRN     expr
  254. X.sp
  255. XBRSET     expr ',' expr ',' expr
  256. X.sp
  257. XBSET     expr ',' expr
  258. X.sp
  259. XBSR     expr
  260. X.sp
  261. XCLC    
  262. X.sp
  263. XCLI    
  264. X.sp
  265. XCLR     expr    DIRECT
  266. XCLR     indexed    INDEX0
  267. XCLR     indexed    INDEX1
  268. X.sp
  269. XCLRA    
  270. X.sp
  271. XCLRX    
  272. X.sp
  273. XCMP     '#' expr
  274. XCMP     expr    DIRECT
  275. XCMP     expr    EXTENDED
  276. XCMP     indexed    INDEX0
  277. XCMP     indexed    INDEX1
  278. XCMP     indexed    INDEX2
  279. X.sp
  280. XCOM     expr    DIRECT
  281. XCOM     indexed    INDEX0
  282. XCOM     indexed    INDEX1
  283. X.sp
  284. XCOMA    
  285. X.sp
  286. XCOMX    
  287. X.sp
  288. XCPX     '#' expr
  289. XCPX     expr    DIRECT
  290. XCPX     expr    EXTENDED
  291. XCPX     indexed    INDEX0
  292. XCPX     indexed    INDEX1
  293. XCPX     indexed    INDEX2
  294. X.sp
  295. XDAA        INSTDAA
  296. X.sp
  297. XDEC     expr    DIRECT
  298. XDEC     indexed    INDEX0
  299. XDEC     indexed    INDEX1
  300. X.sp
  301. XDECA    
  302. X.sp
  303. XDECX    
  304. X.sp
  305. XEOR     '#' expr
  306. XEOR     expr    DIRECT
  307. XEOR     expr    EXTENDED
  308. XEOR     indexed    INDEX0
  309. XEOR     indexed    INDEX1
  310. XEOR     indexed    INDEX2
  311. X.sp
  312. XINC     expr    DIRECT
  313. XINC     indexed    INDEX0
  314. XINC     indexed    INDEX1
  315. X.sp
  316. XINCA    
  317. X.sp
  318. XINCX    
  319. X.sp
  320. XJMP     expr    DIRECT
  321. XJMP     expr    EXTENDED
  322. XJMP     indexed    INDEX0
  323. XJMP     indexed    INDEX1
  324. XJMP     indexed    INDEX2
  325. X.sp
  326. XJSR     expr    DIRECT
  327. XJSR     expr    EXTENDED
  328. XJSR     indexed    INDEX0
  329. XJSR     indexed    INDEX1
  330. XJSR     indexed    INDEX2
  331. X.sp
  332. XLDA     '#' expr
  333. XLDA     expr    DIRECT
  334. XLDA     expr    EXTENDED
  335. XLDA     indexed    INDEX0
  336. XLDA     indexed    INDEX1
  337. XLDA     indexed    INDEX2
  338. X.sp
  339. XLDX     '#' expr
  340. XLDX     expr    DIRECT
  341. XLDX     expr    EXTENDED
  342. XLDX     indexed    INDEX0
  343. XLDX     indexed    INDEX1
  344. XLDX     indexed    INDEX2
  345. X.sp
  346. XLSL     expr    DIRECT
  347. XLSL     indexed    INDEX0
  348. XLSL     indexed    INDEX1
  349. X.sp
  350. XLSLA    
  351. X.sp
  352. XLSLX    
  353. X.sp
  354. XLSR     expr    DIRECT
  355. XLSR     indexed    INDEX0
  356. XLSR     indexed    INDEX1
  357. X.sp
  358. XLSRA    
  359. X.sp
  360. XLSRX    
  361. X.sp
  362. XMUL        INSTMUL
  363. X.sp
  364. XNEG     expr    DIRECT
  365. XNEG     indexed    INDEX0
  366. XNEG     indexed    INDEX1
  367. X.sp
  368. XNEGA    
  369. X.sp
  370. XNEGX    
  371. X.sp
  372. XNOP    
  373. X.sp
  374. XORA     '#' expr
  375. XORA     expr    DIRECT
  376. XORA     expr    EXTENDED
  377. XORA     indexed    INDEX0
  378. XORA     indexed    INDEX1
  379. XORA     indexed    INDEX2
  380. X.sp
  381. XROL     expr    DIRECT
  382. XROL     indexed    INDEX0
  383. XROL     indexed    INDEX1
  384. X.sp
  385. XROLA    
  386. X.sp
  387. XROLX    
  388. X.sp
  389. XROR     expr    DIRECT
  390. XROR     indexed    INDEX0
  391. XROR     indexed    INDEX1
  392. X.sp
  393. XRORA    
  394. X.sp
  395. XRORX    
  396. X.sp
  397. XRSP    
  398. X.sp
  399. XRTI    
  400. X.sp
  401. XRTS    
  402. X.sp
  403. XSBC     '#' expr
  404. XSBC     expr    DIRECT
  405. XSBC     expr    EXTENDED
  406. XSBC     indexed    INDEX0
  407. XSBC     indexed    INDEX1
  408. XSBC     indexed    INDEX2
  409. X.sp
  410. XSEC    
  411. X.sp
  412. XSEI    
  413. X.sp
  414. XSTA     expr    DIRECT
  415. XSTA     expr    EXTENDED
  416. XSTA     indexed    INDEX0
  417. XSTA     indexed    INDEX1
  418. XSTA     indexed    INDEX2
  419. X.sp
  420. XSTOP        INSTSTWA
  421. X.sp
  422. XSTX     expr    DIRECT
  423. XSTX     expr    EXTENDED
  424. XSTX     indexed    INDEX0
  425. XSTX     indexed    INDEX1
  426. XSTX     indexed    INDEX2
  427. X.sp
  428. XSUB     '#' expr
  429. XSUB     expr    DIRECT
  430. XSUB     expr    EXTENDED
  431. XSUB     indexed    INDEX0
  432. XSUB     indexed    INDEX1
  433. XSUB     indexed    INDEX2
  434. X.sp
  435. XSWI    
  436. X.sp
  437. XTAX    
  438. X.sp
  439. XTST     expr    DIRECT
  440. XTST     indexed    INDEX0
  441. XTST     indexed    INDEX1
  442. X.sp
  443. XTSTA    
  444. X.sp
  445. XTSTX    
  446. X.sp
  447. XTXA    
  448. X.sp
  449. XWAIT        INSTSTWA
  450. X.TE
  451. X.H 3 "Selection Criteria Keywords"
  452. X.VL 25 5 
  453. X.LI DIRECT
  454. XThe direct addressing mode can be used if the expression has a value 
  455. Xbetween 0 and 255. 
  456. XThe expression will be treated as a two byte long value if it is not
  457. Xdefined when the statement is processed in the first pass.
  458. X.LI EXTENDED
  459. XThe expression can be a 2 byte long value.
  460. X.LI INDEX0
  461. XThe Indexed addressing mode with no offset can be used.
  462. X.LI INDEX1
  463. XThe Indexed addressing mode with a one byte offset can be used.
  464. X.LI INDEX2
  465. XThe Indexed addressing mode with two byte offset can be used.
  466. X.LI INSTSTWA
  467. XThe instruction is only available in the 146805, 6305, and 68hc05 instruction
  468. Xsets.
  469. X.LI INSTMUL
  470. XThe instruction is only available in the 68hc05 instruction set.
  471. X.LI INSTDAA
  472. XThe instruction is only available in the 6305 instruction set.
  473. X.LE
  474. X.H 3 "Apostrophes"
  475. XThe apostrophes in the syntax field are a notation used for the
  476. Xparser generator and are not put in the assembler source statement.
  477. X.H 2 "Notes"
  478. X.H 3 "Bit Numbers"
  479. XThe bit number expression in the BSET, BCLR, BRCLR, BRSET operations has
  480. Xto have value defined when the instruction is read in the first pass.
  481. XThe value must be between 0 and 7.
  482. X.H 3 "Indexed Addressing"
  483. XThe indexed addressing mode is represented in two ways.
  484. X.P
  485. XFirst, with no offset, the form ",X" is used.
  486. X.P
  487. XSecond, the form "expression, X" is used for both the one and two byte
  488. Xoffsets modes.  
  489. XThe expression will be treated as a two byte long value if it is not
  490. Xdefined when the statement is processed in the first pass.
  491. X.H 3 "Reserved Symbols"
  492. X.H 4 "Machine Dependent Reserved Symbols"
  493. XX
  494. Xx
  495. X.H 4 "Standard Reserved Symbols"
  496. XAND
  497. XDEFINED
  498. XEQ
  499. XGE
  500. XGT
  501. XHIGH
  502. XLE
  503. XLOW
  504. XLT
  505. XMOD
  506. XNE
  507. XNOT
  508. XOR
  509. XSHL
  510. XSHR
  511. XXOR
  512. Xand
  513. Xdefined
  514. Xeq
  515. Xge
  516. Xgt
  517. Xhigh
  518. Xle
  519. Xlow
  520. Xlt
  521. Xmod
  522. Xne
  523. Xnot
  524. Xor
  525. Xshl
  526. Xshr
  527. Xxor
  528. X.TC 1 1 7
  529. SHAR_EOF
  530. true || echo 'restore of as6805.doc failed'
  531. fi
  532. # ============= as6805.tst ==============
  533. if test -f 'as6805.tst' -a X"$1" != X"-c"; then
  534.     echo 'x - skipping as6805.tst (File already exists)'
  535. else
  536. echo 'x - extracting as6805.tst (Text)'
  537. sed 's/^X//' << 'SHAR_EOF' > 'as6805.tst' &&
  538. X    org    $1234
  539. Ximmed    equ    $55
  540. Xdirect    equ    $22
  541. Xextend    equ    $7654
  542. Xindex1    equ    $77
  543. Xindex2    equ    $3333
  544. X
  545. X    adc    #immed
  546. X    adc    direct
  547. X    adc    extend
  548. X    adc    ,x
  549. X    adc    index1,x
  550. X    adc    index2,x
  551. X    add    #immed
  552. X    add    direct
  553. X    add    extend
  554. X    add    ,x
  555. X    add    index1,x
  556. X    add    index2,x
  557. X    and    #immed
  558. X    and    direct
  559. X    and    extend
  560. X    and    ,x
  561. X    and    index1,x
  562. X    and    index2,x
  563. X    asl    direct
  564. X    asl    ,x
  565. X    asl    index1,x
  566. X    asla
  567. X    aslx
  568. X    asr    direct
  569. X    asr    ,x
  570. X    asr    index1,x
  571. X    asra
  572. X    asrx
  573. X    bcc    *-23
  574. X    bclr    0,direct
  575. X    bclr    1,direct
  576. X    bclr    2,direct
  577. X    bclr    3,direct
  578. X    bclr    4,direct
  579. X    bclr    5,direct
  580. X    bclr    6,direct
  581. X    bclr    7,direct
  582. X    bcs    *-23
  583. X    beq    *-23
  584. X    bhcc    *-23
  585. X    bhcs    *-23
  586. X    bhi    *-23
  587. X    bhs    *-23
  588. X    bih    *-23
  589. X    bil    *-23
  590. X    bit    #immed
  591. X    bit    direct
  592. X    bit    extend
  593. X    bit    ,x
  594. X    bit    index1,x
  595. X    bit    index2,x
  596. X    blo    *-23
  597. X    bls    *-23
  598. X    bmc    *-23
  599. X    bmi    *-23
  600. X    bms    *-23
  601. X    bne    *-23
  602. X    bpl    *-23
  603. X    bra    *-23
  604. X    brclr    0,direct,*-23
  605. X    brclr    1,direct,*-23
  606. X    brclr    2,direct,*-23
  607. X    brclr    3,direct,*-23
  608. X    brclr    4,direct,*-23
  609. X    brclr    5,direct,*-23
  610. X    brclr    6,direct,*-23
  611. X    brclr    7,direct,*-23
  612. X    brn    *-23
  613. X    brset    0,direct,*-23
  614. X    brset    1,direct,*-23
  615. X    brset    2,direct,*-23
  616. X    brset    3,direct,*-23
  617. X    brset    4,direct,*-23
  618. X    brset    5,direct,*-23
  619. X    brset    6,direct,*-23
  620. X    brset    7,direct,*-23
  621. X    bset    0,direct
  622. X    bset    1,direct
  623. X    bset    2,direct
  624. X    bset    3,direct
  625. X    bset    4,direct
  626. X    bset    5,direct
  627. X    bset    6,direct
  628. X    bset    7,direct
  629. X    bsr    *-23
  630. X    clc
  631. X    cli
  632. X    clr    direct
  633. X    clr    ,x
  634. X    clr    index1,x
  635. X    clra
  636. X    clrx
  637. X    cmp    #immed
  638. X    cmp    direct
  639. X    cmp    extend
  640. X    cmp    ,x
  641. X    cmp    index1,x
  642. X    cmp    index2,x
  643. X    com    direct
  644. X    com    ,x
  645. X    com    index1,x
  646. X    coma
  647. X    comx
  648. X    cpx    #immed
  649. X    cpx    direct
  650. X    cpx    extend
  651. X    cpx    ,x
  652. X    cpx    index1,x
  653. X    cpx    index2,x
  654. X    dec    direct
  655. X    dec    ,x
  656. X    dec    index1,x
  657. X    deca
  658. X    decx
  659. X    eor    #immed
  660. X    eor    direct
  661. X    eor    extend
  662. X    eor    ,x
  663. X    eor    index1,x
  664. X    eor    index2,x
  665. X    inc    direct
  666. X    inc    ,x
  667. X    inc    index1,x
  668. X    inca
  669. X    incx
  670. X    jmp    direct
  671. X    jmp    extend
  672. X    jmp    ,x
  673. X    jmp    index1,x
  674. X    jmp    index2,x
  675. X    jsr    direct
  676. X    jsr    extend
  677. X    jsr    ,x
  678. X    jsr    index1,x
  679. X    jsr    index2,x
  680. X    lda    #immed
  681. X    lda    direct
  682. X    lda    extend
  683. X    lda    ,x
  684. X    lda    index1,x
  685. X    lda    index2,x
  686. X    ldx    #immed
  687. X    ldx    direct
  688. X    ldx    extend
  689. X    ldx    ,x
  690. X    ldx    index1,x
  691. X    ldx    index2,x
  692. X    lsl    direct
  693. X    lsl    ,x
  694. X    lsl    index1,x
  695. X    lsla
  696. X    lslx
  697. X    lsr    direct
  698. X    lsr    ,x
  699. X    lsr    index1,x
  700. X    lsra
  701. X    lsrx
  702. X    neg    direct
  703. X    neg    ,x
  704. X    neg    index1,x
  705. X    nega
  706. X    negx
  707. X    nop
  708. X    ora    #immed
  709. X    ora    direct
  710. X    ora    extend
  711. X    ora    ,x
  712. X    ora    index1,x
  713. X    ora    index2,x
  714. X    rol    direct
  715. X    rol    ,x
  716. X    rol    index1,x
  717. X    rola
  718. X    rolx
  719. X    ror    direct
  720. X    ror    ,x
  721. X    ror    index1,x
  722. X    rora
  723. X    rorx
  724. X    rsp
  725. X    rti
  726. X    rts
  727. X    sbc    #immed
  728. X    sbc    direct
  729. X    sbc    extend
  730. X    sbc    ,x
  731. X    sbc    index1,x
  732. X    sbc    index2,x
  733. X    sec
  734. X    sei
  735. X    sta    direct
  736. X    sta    extend
  737. X    sta    ,x
  738. X    sta    index1,x
  739. X    sta    index2,x
  740. X    stx    direct
  741. X    stx    extend
  742. X    stx    ,x
  743. X    stx    index1,x
  744. X    stx    index2,x
  745. X    sub    #immed
  746. X    sub    direct
  747. X    sub    extend
  748. X    sub    ,x
  749. X    sub    index1,x
  750. X    sub    index2,x
  751. X    swi
  752. X    tax
  753. X    tst    direct
  754. X    tst    ,x
  755. X    tst    index1,x
  756. X    tsta
  757. X    tstx
  758. X    txa
  759. SHAR_EOF
  760. true || echo 'restore of as6805.tst failed'
  761. fi
  762. # ============= as6805.tut ==============
  763. if test -f 'as6805.tut' -a X"$1" != X"-c"; then
  764.     echo 'x - skipping as6805.tut (File already exists)'
  765. else
  766. echo 'x - extracting as6805.tut (Text)'
  767. sed 's/^X//' << 'SHAR_EOF' > 'as6805.tut' &&
  768. X00000055 immed            00000022 direct           00007654 extend           
  769. X00000077 index1           00003333 index2           
  770. X  0x1234                     org    $1234
  771. X 0x55                   immed    equ    $55
  772. X 0x22                   direct    equ    $22
  773. X 0x7654                 extend    equ    $7654
  774. X 0x77                   index1    equ    $77
  775. X 0x3333                 index2    equ    $3333
  776. X
  777. X1234 a9 55             adc    #immed
  778. X1236 b9 22             adc    direct
  779. X1238 c9 76 54             adc    extend
  780. X123b f9             adc    ,x
  781. X123c e9 77             adc    index1,x
  782. X123e d9 33 33             adc    index2,x
  783. X1241 ab 55             add    #immed
  784. X1243 bb 22             add    direct
  785. X1245 cb 76 54             add    extend
  786. X1248 fb             add    ,x
  787. X1249 eb 77             add    index1,x
  788. X124b db 33 33             add    index2,x
  789. X124e a4 55             and    #immed
  790. X1250 b4 22             and    direct
  791. X1252 c4 76 54             and    extend
  792. X1255 f4             and    ,x
  793. X1256 e4 77             and    index1,x
  794. X1258 d4 33 33             and    index2,x
  795. X125b 38 22             asl    direct
  796. X125d 78             asl    ,x
  797. X125e 68 77             asl    index1,x
  798. X1260 48             asla
  799. X1261 58             aslx
  800. X1262 37 22             asr    direct
  801. X1264 77             asr    ,x
  802. X1265 67 77             asr    index1,x
  803. X1267 47             asra
  804. X1268 57             asrx
  805. X1269 24 e7             bcc    *-23
  806. X126b 11 22             bclr    0,direct
  807. X126d 13 22             bclr    1,direct
  808. X126f 15 22             bclr    2,direct
  809. X1271 17 22             bclr    3,direct
  810. X1273 19 22             bclr    4,direct
  811. X1275 1b 22             bclr    5,direct
  812. X1277 1d 22             bclr    6,direct
  813. X1279 1f 22             bclr    7,direct
  814. X127b 25 e7             bcs    *-23
  815. X127d 27 e7             beq    *-23
  816. X127f 28 e7             bhcc    *-23
  817. X1281 29 e7             bhcs    *-23
  818. X1283 22 e7             bhi    *-23
  819. X1285 24 e7             bhs    *-23
  820. X1287 2f e7             bih    *-23
  821. X1289 2e e7             bil    *-23
  822. X128b a5 55             bit    #immed
  823. X128d b5 22             bit    direct
  824. X128f c5 76 54             bit    extend
  825. X1292 f5             bit    ,x
  826. X1293 e5 77             bit    index1,x
  827. X1295 d5 33 33             bit    index2,x
  828. X1298 25 e7             blo    *-23
  829. X129a 23 e7             bls    *-23
  830. X129c 2c e7             bmc    *-23
  831. X129e 2b e7             bmi    *-23
  832. X12a0 2d e7             bms    *-23
  833. X12a2 26 e7             bne    *-23
  834. X12a4 2a e7             bpl    *-23
  835. X12a6 20 e7             bra    *-23
  836. X12a8 01 22 e6             brclr    0,direct,*-23
  837. X12ab 03 22 e6             brclr    1,direct,*-23
  838. X12ae 05 22 e6             brclr    2,direct,*-23
  839. X12b1 07 22 e6             brclr    3,direct,*-23
  840. X12b4 09 22 e6             brclr    4,direct,*-23
  841. X12b7 0b 22 e6             brclr    5,direct,*-23
  842. X12ba 0d 22 e6             brclr    6,direct,*-23
  843. X12bd 0f 22 e6             brclr    7,direct,*-23
  844. X12c0 21 e7             brn    *-23
  845. X12c2 00 22 e6             brset    0,direct,*-23
  846. X12c5 02 22 e6             brset    1,direct,*-23
  847. X12c8 04 22 e6             brset    2,direct,*-23
  848. X12cb 06 22 e6             brset    3,direct,*-23
  849. X12ce 08 22 e6             brset    4,direct,*-23
  850. X12d1 0a 22 e6             brset    5,direct,*-23
  851. X12d4 0c 22 e6             brset    6,direct,*-23
  852. X12d7 0e 22 e6             brset    7,direct,*-23
  853. X12da 10 22             bset    0,direct
  854. X12dc 12 22             bset    1,direct
  855. X12de 14 22             bset    2,direct
  856. X12e0 16 22             bset    3,direct
  857. X12e2 18 22             bset    4,direct
  858. X12e4 1a 22             bset    5,direct
  859. X12e6 1c 22             bset    6,direct
  860. X12e8 1e 22             bset    7,direct
  861. X12ea ad e7             bsr    *-23
  862. X12ec 98             clc
  863. X12ed 9a             cli
  864. X12ee 3f 22             clr    direct
  865. X12f0 7f             clr    ,x
  866. X12f1 6f 77             clr    index1,x
  867. X12f3 4f             clra
  868. X12f4 5f             clrx
  869. X12f5 a1 55             cmp    #immed
  870. X12f7 b1 22             cmp    direct
  871. X12f9 c1 76 54             cmp    extend
  872. X12fc f1             cmp    ,x
  873. X12fd e1 77             cmp    index1,x
  874. X12ff d1 33 33             cmp    index2,x
  875. X1302 33 22             com    direct
  876. X1304 73             com    ,x
  877. X1305 63 77             com    index1,x
  878. X1307 43             coma
  879. X1308 53             comx
  880. X1309 a3 55             cpx    #immed
  881. X130b b3 22             cpx    direct
  882. X130d c3 76 54             cpx    extend
  883. X1310 f3             cpx    ,x
  884. X1311 e3 77             cpx    index1,x
  885. X1313 d3 33 33             cpx    index2,x
  886. X1316 3a 22             dec    direct
  887. X1318 7a             dec    ,x
  888. X1319 6a 77             dec    index1,x
  889. X131b 4a             deca
  890. X131c 5a             decx
  891. X131d a8 55             eor    #immed
  892. X131f b8 22             eor    direct
  893. X1321 c8 76 54             eor    extend
  894. X1324 f8             eor    ,x
  895. X1325 e8 77             eor    index1,x
  896. X1327 d8 33 33             eor    index2,x
  897. X132a 3c 22             inc    direct
  898. X132c 7c             inc    ,x
  899. X132d 6c 77             inc    index1,x
  900. X132f 4c             inca
  901. X1330 5c             incx
  902. X1331 bc 22             jmp    direct
  903. X1333 cc 76 54             jmp    extend
  904. X1336 fc             jmp    ,x
  905. X1337 ec 77             jmp    index1,x
  906. X1339 dc 33 33             jmp    index2,x
  907. X133c bd 22             jsr    direct
  908. X133e cd 76 54             jsr    extend
  909. X1341 fd             jsr    ,x
  910. X1342 ed 77             jsr    index1,x
  911. X1344 dd 33 33             jsr    index2,x
  912. X1347 a6 55             lda    #immed
  913. X1349 b6 22             lda    direct
  914. X134b c6 76 54             lda    extend
  915. X134e f6             lda    ,x
  916. X134f e6 77             lda    index1,x
  917. X1351 d6 33 33             lda    index2,x
  918. X1354 ae 55             ldx    #immed
  919. X1356 be 22             ldx    direct
  920. X1358 ce 76 54             ldx    extend
  921. X135b fe             ldx    ,x
  922. X135c ee 77             ldx    index1,x
  923. X135e de 33 33             ldx    index2,x
  924. X1361 38 22             lsl    direct
  925. X1363 78             lsl    ,x
  926. X1364 68 77             lsl    index1,x
  927. X1366 48             lsla
  928. X1367 58             lslx
  929. X1368 34 22             lsr    direct
  930. X136a 74             lsr    ,x
  931. X136b 64 77             lsr    index1,x
  932. X136d 44             lsra
  933. X136e 54             lsrx
  934. X136f 30 22             neg    direct
  935. X1371 70             neg    ,x
  936. X1372 60 77             neg    index1,x
  937. X1374 40             nega
  938. X1375 50             negx
  939. X1376 9d             nop
  940. X1377 aa 55             ora    #immed
  941. X1379 ba 22             ora    direct
  942. X137b ca 76 54             ora    extend
  943. X137e fa             ora    ,x
  944. X137f ea 77             ora    index1,x
  945. X1381 da 33 33             ora    index2,x
  946. X1384 39 22             rol    direct
  947. X1386 79             rol    ,x
  948. X1387 69 77             rol    index1,x
  949. X1389 49             rola
  950. X138a 59             rolx
  951. X138b 36 22             ror    direct
  952. X138d 76             ror    ,x
  953. X138e 66 77             ror    index1,x
  954. X1390 46             rora
  955. X1391 56             rorx
  956. X1392 9c             rsp
  957. X1393 80             rti
  958. X1394 81             rts
  959. X1395 a2 55             sbc    #immed
  960. X1397 b2 22             sbc    direct
  961. X1399 c2 76 54             sbc    extend
  962. X139c f2             sbc    ,x
  963. X139d e2 77             sbc    index1,x
  964. X139f d2 33 33             sbc    index2,x
  965. X13a2 99             sec
  966. X13a3 9b             sei
  967. X13a4 b7 22             sta    direct
  968. X13a6 c7 76 54             sta    extend
  969. X13a9 f7             sta    ,x
  970. X13aa e7 77             sta    index1,x
  971. X13ac d7 33 33             sta    index2,x
  972. X13af bf 22             stx    direct
  973. X13b1 cf 76 54             stx    extend
  974. X13b4 ff             stx    ,x
  975. X13b5 ef 77             stx    index1,x
  976. X13b7 df 33 33             stx    index2,x
  977. X13ba a0 55             sub    #immed
  978. X13bc b0 22             sub    direct
  979. X13be c0 76 54             sub    extend
  980. X13c1 f0             sub    ,x
  981. X13c2 e0 77             sub    index1,x
  982. X13c4 d0 33 33             sub    index2,x
  983. X13c7 83             swi
  984. X13c8 97             tax
  985. X13c9 3d 22             tst    direct
  986. X13cb 7d             tst    ,x
  987. X13cc 6d 77             tst    index1,x
  988. X13ce 4d             tsta
  989. X13cf 5d             tstx
  990. X13d0 9f             txa
  991. X ERROR SUMMARY - ERRORS DETECTED 0
  992. X               -  WARNINGS       0
  993. SHAR_EOF
  994. true || echo 'restore of as6805.tut failed'
  995. fi
  996. # ============= as6805.y ==============
  997. if test -f 'as6805.y' -a X"$1" != X"-c"; then
  998.     echo 'x - skipping as6805.y (File already exists)'
  999. else
  1000. echo 'x - extracting as6805.y (Text)'
  1001. sed 's/^X//' << 'SHAR_EOF' > 'as6805.y' &&
  1002. X%{
  1003. X
  1004. X/*
  1005. XHEADER:     ;
  1006. XTITLE:         Frankenstein Cross Assemblers;
  1007. XVERSION:     2.0;
  1008. XDESCRIPTION: "    Reconfigurable Cross-assembler producing Intel (TM)
  1009. X        Hex format object records.  ";
  1010. XKEYWORDS:     cross-assemblers, 1805, 2650, 6301, 6502, 6805, 6809, 
  1011. X        6811, tms7000, 8048, 8051, 8096, z8, z80;
  1012. XSYSTEM:     UNIX, MS-Dos ;
  1013. XFILENAME:     as6805.y;
  1014. XWARNINGS:     "This software is in the public domain.  
  1015. X        Any prior copyright claims are relinquished.  
  1016. X
  1017. X        This software is distributed with no warranty whatever.  
  1018. X        The author takes no responsibility for the consequences 
  1019. X        of its use.
  1020. X
  1021. X        Yacc (or Bison) required to compile."  ;
  1022. XSEE-ALSO:     as6805.doc,frasmain.c;    
  1023. XAUTHORS:     Mark Zenier;
  1024. XCOMPILERS:     Microport Sys V/AT, ATT Yacc, Turbo C V1.5, Bison (CUG disk 285)
  1025. X        (previous versions Xenix, Unisoft 68000 Version 7, Sun 3);
  1026. X*/
  1027. X/* 6805 instruction generation file */
  1028. X/* November 17, 1990 */
  1029. X
  1030. X/*
  1031. X    description    frame work parser description for framework cross
  1032. X            assemblers
  1033. X    history        February 2, 1988
  1034. X            September 11, 1990 - merge table definition
  1035. X            September 12, 1990 - short file names
  1036. X            September 14, 1990 - short variable names
  1037. X            September 17, 1990 - use yylex as external
  1038. X*/
  1039. X#include <stdio.h>
  1040. X#include "frasmdat.h"
  1041. X#include "fragcon.h"
  1042. X
  1043. X#define yylex lexintercept
  1044. X
  1045. X/*
  1046. X    file        fraselcrit.h
  1047. X    author        Mark Zenier
  1048. X    description    Selection criteria and token values for 6805
  1049. X            framework assembler
  1050. X    usage        framework cross assembler
  1051. X    history        September 19, 1987
  1052. X            October 2, 1987
  1053. X            June 7, 1989  fix relative addressing (BRset/clr)
  1054. X*/
  1055. X    /* selectors for the ST_EXP address */
  1056. X    /* 0000 0000 0000 00xx */
  1057. X#define ADDR        0x3
  1058. X#define DIRECT        0x1
  1059. X#define EXTENDED    0x2
  1060. X
  1061. X    /* selectors for the ST_IND offset */
  1062. X    /* 0000 0000 000x xx00 */
  1063. X#define INDEXLEN    0x1C
  1064. X#define INDEX0        0x4
  1065. X#define INDEX1        0x8
  1066. X#define INDEX2        0x10
  1067. X
  1068. X    /* selectors for instruction set extensions */
  1069. X    /* 0000 0000 xxx0 0000 */
  1070. X#define INSTSTWA    0x20
  1071. X#define INSTMUL    0x40
  1072. X#define INSTDAA    0x80
  1073. X
  1074. X    /* cpu instruction extensions */
  1075. X#define CPU6805    0
  1076. X#define CPU146805    INSTSTWA
  1077. X#define CPU68HC05    (INSTSTWA | INSTMUL)
  1078. X#define CPU6305    (INSTSTWA | INSTDAA)
  1079. X#define ST_BRSET 0x1
  1080. X#define ST_BSET 0x2
  1081. X#define ST_EXP 0x4
  1082. X#define ST_IMM 0x8
  1083. X#define ST_IND 0x10
  1084. X#define ST_INH 0x20
  1085. X    
  1086. X    int    cpuselect = CPU6805;
  1087. X    static char    genbdef[] = "[1=];";
  1088. X    static char    genwdef[] = "[1=]x";
  1089. X    char ignosyn[] = "[Xinvalid syntax for instruction";
  1090. X    char ignosel[] = "[Xinvalid operands/illegal instruction for cpu";
  1091. X
  1092. X    long    labelloc;
  1093. X    static int satsub;
  1094. X    int    ifstkpt = 0;
  1095. X    int    fraifskip = FALSE;
  1096. X
  1097. X    struct symel * endsymbol = SYMNULL;
  1098. X
  1099. X%}
  1100. X%union {
  1101. X    int    intv;
  1102. X    long     longv;
  1103. X    char    *strng;
  1104. X    struct symel *symb;
  1105. X    struct {int indexv, ex; } inetre;
  1106. X}
  1107. X
  1108. X%token <intv> INDEX
  1109. X%type <inetre> indexed
  1110. X%token <intv> KOC_BDEF
  1111. X%token <intv> KOC_ELSE
  1112. X%token <intv> KOC_END
  1113. X%token <intv> KOC_ENDI
  1114. X%token <intv> KOC_EQU
  1115. X%token <intv> KOC_IF
  1116. X%token <intv> KOC_INCLUDE
  1117. X%token <intv> KOC_ORG
  1118. X%token <intv> KOC_RESM
  1119. X%token <intv> KOC_SDEF
  1120. X%token <intv> KOC_SET
  1121. X%token <intv> KOC_WDEF
  1122. X%token <intv> KOC_CHSET
  1123. X%token <intv> KOC_CHDEF
  1124. X%token <intv> KOC_CHUSE
  1125. X%token <intv> KOC_CPU
  1126. X%token <intv> KOC_opcode
  1127. X
  1128. X%token <longv> CONSTANT
  1129. X%token EOL
  1130. X%token KEOP_AND
  1131. X%token KEOP_DEFINED
  1132. X%token KEOP_EQ
  1133. X%token KEOP_GE
  1134. X%token KEOP_GT
  1135. X%token KEOP_HIGH
  1136. X%token KEOP_LE
  1137. X%token KEOP_LOW
  1138. X%token KEOP_LT
  1139. X%token KEOP_MOD
  1140. X%token KEOP_MUN
  1141. X%token KEOP_NE
  1142. X%token KEOP_NOT
  1143. X%token KEOP_OR
  1144. X%token KEOP_SHL
  1145. X%token KEOP_SHR
  1146. X%token KEOP_XOR
  1147. X%token KEOP_locctr
  1148. X%token <symb> LABEL
  1149. X%token <strng> STRING
  1150. X%token <symb> SYMBOL
  1151. X
  1152. X%token KTK_invalid
  1153. X
  1154. X%right    KEOP_HIGH KEOP_LOW
  1155. X%left    KEOP_OR KEOP_XOR
  1156. X%left    KEOP_AND
  1157. X%right    KEOP_NOT
  1158. X%nonassoc    KEOP_GT KEOP_GE KEOP_LE KEOP_LT KEOP_NE KEOP_EQ
  1159. X%left    '+' '-'
  1160. X%left    '*' '/' KEOP_MOD KEOP_SHL KEOP_SHR
  1161. X%right    KEOP_MUN
  1162. X
  1163. X
  1164. X%type <intv> expr exprlist stringlist
  1165. X
  1166. X%start file
  1167. X
  1168. X%%
  1169. X
  1170. Xfile    :    file allline
  1171. X    |    allline
  1172. X    ;
  1173. X
  1174. Xallline    :     line EOL
  1175. X            {
  1176. X                clrexpr();
  1177. X            }
  1178. X    |    EOL
  1179. X    |    error EOL
  1180. X            {
  1181. X                clrexpr();
  1182. X                yyerrok;
  1183. X            }
  1184. X    ;
  1185. X
  1186. Xline    :    LABEL KOC_END 
  1187. X            {
  1188. X                endsymbol = $1;
  1189. X                nextreadact = Nra_end;
  1190. X            }
  1191. X    |          KOC_END 
  1192. X            {
  1193. X                nextreadact = Nra_end;
  1194. X            }
  1195. X    |    KOC_INCLUDE STRING
  1196. X            {
  1197. X        if(nextfstk >= FILESTKDPTH)
  1198. X        {
  1199. X            fraerror("include file nesting limit exceeded");
  1200. X        }
  1201. X        else
  1202. X        {
  1203. X            infilestk[nextfstk].fnm = savestring($2,strlen($2));
  1204. X            if( (infilestk[nextfstk].fpt = fopen($2,"r"))
  1205. X                ==(FILE *)NULL )
  1206. X            {
  1207. X                fraerror("cannot open include file");
  1208. X            }
  1209. X            else
  1210. X            {
  1211. X                nextreadact = Nra_new;
  1212. X            }
  1213. X        }
  1214. X            }
  1215. X    |    LABEL KOC_EQU expr 
  1216. X            {
  1217. X                if($1 -> seg == SSG_UNDEF)
  1218. X                {
  1219. X                    pevalexpr(0, $3);
  1220. X                    if(evalr[0].seg == SSG_ABS)
  1221. X                    {
  1222. X                        $1 -> seg = SSG_EQU;
  1223. X                        $1 -> value = evalr[0].value;
  1224. X                        prtequvalue("C: 0x%lx\n",
  1225. X                            evalr[0].value);
  1226. X                    }
  1227. X                    else
  1228. X                    {
  1229. X                        fraerror(
  1230. X                    "noncomputable expression for EQU");
  1231. X                    }
  1232. X                }
  1233. X                else
  1234. X                {
  1235. X                    fraerror(
  1236. X                "cannot change symbol value with EQU");
  1237. X                }
  1238. X            }
  1239. X    |    LABEL KOC_SET expr 
  1240. X            {
  1241. X                if($1 -> seg == SSG_UNDEF
  1242. X                   || $1 -> seg == SSG_SET)
  1243. X                {
  1244. X                    pevalexpr(0, $3);
  1245. X                    if(evalr[0].seg == SSG_ABS)
  1246. X                    {
  1247. X                        $1 -> seg = SSG_SET;
  1248. X                        $1 -> value = evalr[0].value;
  1249. X                        prtequvalue("C: 0x%lx\n",
  1250. X                            evalr[0].value);
  1251. X                    }
  1252. X                    else
  1253. X                    {
  1254. X                        fraerror(
  1255. X                    "noncomputable expression for SET");
  1256. X                    }
  1257. X                }
  1258. X                else
  1259. X                {
  1260. X                    fraerror(
  1261. X                "cannot change symbol value with SET");
  1262. X                }
  1263. X            }
  1264. X    |    KOC_IF expr 
  1265. X            {
  1266. X        if((++ifstkpt) < IFSTKDEPTH)
  1267. X        {
  1268. X            pevalexpr(0, $2);
  1269. X            if(evalr[0].seg == SSG_ABS)
  1270. X            {
  1271. X                if(evalr[0].value != 0)
  1272. X                {
  1273. X                    elseifstk[ifstkpt] = If_Skip;
  1274. X                    endifstk[ifstkpt] = If_Active;
  1275. X                }
  1276. X                else
  1277. X                {
  1278. X                    fraifskip = TRUE;
  1279. X                    elseifstk[ifstkpt] = If_Active;
  1280. X                    endifstk[ifstkpt] = If_Active;
  1281. X                }
  1282. X            }
  1283. X            else
  1284. X            {
  1285. X                fraifskip = TRUE;
  1286. X                elseifstk[ifstkpt] = If_Active;
  1287. X                endifstk[ifstkpt] = If_Active;
  1288. X            }
  1289. X        }
  1290. X        else
  1291. X        {
  1292. X            fraerror("IF stack overflow");
  1293. X        }
  1294. X            }
  1295. X                        
  1296. X    |    KOC_IF 
  1297. X            {
  1298. X        if(fraifskip) 
  1299. X        {
  1300. X            if((++ifstkpt) < IFSTKDEPTH)
  1301. X            {
  1302. X                    elseifstk[ifstkpt] = If_Skip;
  1303. X                    endifstk[ifstkpt] = If_Skip;
  1304. X            }
  1305. X            else
  1306. X            {
  1307. X                fraerror("IF stack overflow");
  1308. X            }
  1309. X        }
  1310. X        else
  1311. X        {
  1312. X            yyerror("syntax error");
  1313. X            YYERROR;
  1314. X        }
  1315. X                }
  1316. X                        
  1317. X    |    KOC_ELSE 
  1318. X            {
  1319. X                switch(elseifstk[ifstkpt])
  1320. X                {
  1321. X                case If_Active:
  1322. X                    fraifskip = FALSE;
  1323. X                    break;
  1324. X                
  1325. X                case If_Skip:
  1326. X                    fraifskip = TRUE;
  1327. X                    break;
  1328. X                
  1329. X                case If_Err:
  1330. X                    fraerror("ELSE with no matching if");
  1331. X                    break;
  1332. X                }
  1333. X            }
  1334. X
  1335. X    |    KOC_ENDI 
  1336. X            {
  1337. X                switch(endifstk[ifstkpt])
  1338. X                {
  1339. X                case If_Active:
  1340. X                    fraifskip = FALSE;
  1341. X                    ifstkpt--;
  1342. X                    break;
  1343. X                
  1344. X                case If_Skip:
  1345. X                    fraifskip = TRUE;
  1346. X                    ifstkpt--;
  1347. X                    break;
  1348. X                
  1349. X                case If_Err:
  1350. X                    fraerror("ENDI with no matching if");
  1351. X                    break;
  1352. X                }
  1353. X            }
  1354. X    |    LABEL KOC_ORG expr 
  1355. X            {
  1356. X                pevalexpr(0, $3);
  1357. X                if(evalr[0].seg == SSG_ABS)
  1358. X                {
  1359. X                    locctr = labelloc = evalr[0].value;
  1360. X                    if($1 -> seg == SSG_UNDEF)
  1361. X                    {
  1362. X                        $1 -> seg = SSG_ABS;
  1363. X                        $1 -> value = labelloc;
  1364. X                    }
  1365. X                    else
  1366. X                        fraerror(
  1367. X                        "multiple definition of label");
  1368. X                    prtequvalue("C: 0x%lx\n",
  1369. X                        evalr[0].value);
  1370. X                }
  1371. X                else
  1372. X                {
  1373. X                    fraerror(
  1374. X                     "noncomputable expression for ORG");
  1375. X                }
  1376. X            }
  1377. X    |          KOC_ORG expr 
  1378. X            {
  1379. X                pevalexpr(0, $2);
  1380. X                if(evalr[0].seg == SSG_ABS)
  1381. X                {
  1382. X                    locctr = labelloc = evalr[0].value;
  1383. X                    prtequvalue("C: 0x%lx\n",
  1384. X                        evalr[0].value);
  1385. X                }
  1386. X                else
  1387. X                {
  1388. X                    fraerror(
  1389. X                     "noncomputable expression for ORG");
  1390. X                }
  1391. X            }
  1392. X    |    LABEL KOC_CHSET
  1393. X            {
  1394. X                if($1 -> seg == SSG_UNDEF)
  1395. X                {
  1396. X                    $1 -> seg = SSG_EQU;
  1397. X                    if( ($1->value = chtcreate()) <= 0)
  1398. X                    {
  1399. X        fraerror( "cannot create character translation table");
  1400. X                    }
  1401. X                    prtequvalue("C: 0x%lx\n", $1 -> value);
  1402. X                }
  1403. X                else
  1404. X                {
  1405. X            fraerror( "multiple definition of label");
  1406. X                }
  1407. X            }
  1408. X    |        KOC_CHUSE
  1409. X            {
  1410. X                chtcpoint = (int *) NULL;
  1411. X                prtequvalue("C: 0x%lx\n", 0L);
  1412. X            }
  1413. X    |        KOC_CHUSE expr
  1414. X            {
  1415. X                pevalexpr(0, $2);
  1416. X                if( evalr[0].seg == SSG_ABS)
  1417. X                {
  1418. X                    if( evalr[0].value == 0)
  1419. X                    {
  1420. X                        chtcpoint = (int *)NULL;
  1421. X                        prtequvalue("C: 0x%lx\n", 0L);
  1422. X                    }
  1423. X                    else if(evalr[0].value < chtnxalph)
  1424. X                    {
  1425. X                chtcpoint = chtatab[evalr[0].value];
  1426. X                prtequvalue("C: 0x%lx\n", evalr[0].value);
  1427. X                    }
  1428. X                    else
  1429. X                    {
  1430. X            fraerror("nonexistent character translation table");
  1431. X                    }
  1432. X                }
  1433. X                else
  1434. X                {
  1435. X                    fraerror("noncomputable expression");
  1436. X                }
  1437. X            }
  1438. X    |        KOC_CHDEF STRING ',' exprlist
  1439. X            {
  1440. X        int findrv, numret, *charaddr;
  1441. X        char *sourcestr = $2, *before;
  1442. X
  1443. X        if(chtnpoint != (int *)NULL)
  1444. X        {
  1445. X            for(satsub = 0; satsub < $4; satsub++)
  1446. X            {
  1447. X                before = sourcestr;
  1448. X
  1449. X                pevalexpr(0, exprlist[satsub]);
  1450. X                findrv = chtcfind(chtnpoint, &sourcestr,
  1451. X                        &charaddr, &numret);
  1452. X                if(findrv == CF_END)
  1453. X                {
  1454. X            fraerror("more expressions than characters");
  1455. X                    break;
  1456. X                }
  1457. X
  1458. X                if(evalr[0].seg == SSG_ABS)
  1459. X                {
  1460. X                    switch(findrv)
  1461. X                    {
  1462. X                    case CF_UNDEF:
  1463. X                        {
  1464. X                if(evalr[0].value < 0 ||
  1465. X                    evalr[0].value > 255)
  1466. X                {
  1467. X            frawarn("character translation value truncated");
  1468. X                }
  1469. X                *charaddr = evalr[0].value & 0xff;
  1470. X                prtequvalue("C: 0x%lx\n", evalr[0].value);
  1471. X                        }
  1472. X                        break;
  1473. X
  1474. X                    case CF_INVALID:
  1475. X                    case CF_NUMBER:
  1476. X                fracherror("invalid character to define", 
  1477. X                    before, sourcestr);
  1478. X                        break;
  1479. X
  1480. X                    case CF_CHAR:
  1481. X                fracherror("character already defined", 
  1482. X                    before, sourcestr);
  1483. X                        break;
  1484. X                    }
  1485. X                }
  1486. X                else
  1487. X                {
  1488. X                    fraerror("noncomputable expression");
  1489. X                }
  1490. X            }
  1491. X
  1492. X            if( *sourcestr != '\0')
  1493. X            {
  1494. X                fraerror("more characters than expressions");
  1495. X            }
  1496. X        }
  1497. X        else
  1498. X        {
  1499. X            fraerror("no CHARSET statement active");
  1500. X        }
  1501. X            
  1502. X            }
  1503. X    |    LABEL 
  1504. X            {
  1505. X            if($1 -> seg == SSG_UNDEF)
  1506. X            {
  1507. X                $1 -> seg = SSG_ABS;
  1508. X                $1 -> value = labelloc;
  1509. X                prtequvalue("C: 0x%lx\n", labelloc);
  1510. X
  1511. X            }
  1512. X            else
  1513. X                fraerror(
  1514. X                "multiple definition of label");
  1515. X            }
  1516. X    |    labeledline
  1517. X    ;
  1518. X
  1519. Xlabeledline :    LABEL genline
  1520. X            {
  1521. X            if($1 -> seg == SSG_UNDEF)
  1522. X            {
  1523. X                $1 -> seg = SSG_ABS;
  1524. X                $1 -> value = labelloc;
  1525. X            }
  1526. X            else
  1527. X                fraerror(
  1528. X                "multiple definition of label");
  1529. X            labelloc = locctr;
  1530. X            }
  1531. X                
  1532. X    |    genline
  1533. X            {
  1534. X                labelloc = locctr;
  1535. X            }
  1536. X    ;
  1537. X
  1538. Xgenline    :    KOC_BDEF    exprlist 
  1539. X            {
  1540. X                genlocrec(currseg, labelloc);
  1541. X                for( satsub = 0; satsub < $2; satsub++)
  1542. X                {
  1543. X                    pevalexpr(1, exprlist[satsub]);
  1544. X                    locctr += geninstr(genbdef);
  1545. X                }
  1546. X            }
  1547. X    |    KOC_SDEF stringlist 
  1548. X            {
  1549. X                genlocrec(currseg, labelloc);
  1550. X                for(satsub = 0; satsub < $2; satsub++)
  1551. X                {
  1552. X                    locctr += genstring(stringlist[satsub]);
  1553. X                }
  1554. X            }
  1555. X    |    KOC_WDEF exprlist 
  1556. X            {
  1557. X                genlocrec(currseg, labelloc);
  1558. X                for( satsub = 0; satsub < $2; satsub++)
  1559. X                {
  1560. X                    pevalexpr(1, exprlist[satsub]);
  1561. X                    locctr += geninstr(genwdef);
  1562. X                }
  1563. X            }    
  1564. X    |    KOC_RESM expr 
  1565. X            {
  1566. X                pevalexpr(0, $2);
  1567. X                if(evalr[0].seg == SSG_ABS)
  1568. X                {
  1569. X                    locctr = labelloc + evalr[0].value;
  1570. X                    prtequvalue("C: 0x%lx\n", labelloc);
  1571. X                }
  1572. X                else
  1573. X                {
  1574. X                    fraerror(
  1575. X                 "noncomputable result for RMB expression");
  1576. X                }
  1577. X            }
  1578. X    ;
  1579. X
  1580. Xexprlist :    exprlist ',' expr
  1581. X            {
  1582. X                exprlist[nextexprs ++ ] = $3;
  1583. X                $$ = nextexprs;
  1584. X            }
  1585. X    |    expr
  1586. X            {
  1587. X                nextexprs = 0;
  1588. X                exprlist[nextexprs ++ ] = $1;
  1589. X                $$ = nextexprs;
  1590. X            }
  1591. X    ;
  1592. X
  1593. Xstringlist :    stringlist ',' STRING
  1594. X            {
  1595. X                stringlist[nextstrs ++ ] = $3;
  1596. X                $$ = nextstrs;
  1597. X            }
  1598. X    |    STRING
  1599. X            {
  1600. X                nextstrs = 0;
  1601. X                stringlist[nextstrs ++ ] = $1;
  1602. X                $$ = nextstrs;
  1603. X            }
  1604. X    ;
  1605. X
  1606. X
  1607. Xline    :    KOC_CPU STRING
  1608. X            {
  1609. X        if( ! cpumatch($2))
  1610. X        {
  1611. X            fraerror("unknown cpu type, 6805 assumed");
  1612. X            cpuselect = CPU6805;
  1613. X        }
  1614. X            }
  1615. X    ;
  1616. Xgenline : KOC_opcode  expr ',' expr ',' expr
  1617. X            {
  1618. X        pevalexpr(1,$2);
  1619. X        if(evalr[1].seg != SSG_ABS || 
  1620. X            evalr[1].value < 0 ||
  1621. X            evalr[1].value > 7)
  1622. X        {
  1623. X            evalr[1].value = 0;
  1624. X            fraerror("impossible bit number");
  1625. X        }
  1626. X        else
  1627. X        {
  1628. X            evalr[1].value *= 2;
  1629. X        }
  1630. X        pevalexpr(2,$4);
  1631. X        pevalexpr(3,$6);
  1632. X        genlocrec(currseg, labelloc);
  1633. X        locctr += geninstr( findgen($1, ST_BRSET, 0));
  1634. X            }
  1635. X    ;
  1636. Xgenline : KOC_opcode  expr ',' expr
  1637. X            {
  1638. X        pevalexpr(1,$2);
  1639. X        if(evalr[1].seg != SSG_ABS || 
  1640. X            evalr[1].value < 0 ||
  1641. X            evalr[1].value > 7)
  1642. X        {
  1643. X            evalr[1].value = 0;
  1644. X            fraerror("impossible bit number");
  1645. X        }
  1646. X        else
  1647. X        {
  1648. X            evalr[1].value *= 2;
  1649. X        }
  1650. X        pevalexpr(2,$4);
  1651. X        genlocrec(currseg, labelloc);
  1652. X        locctr += geninstr( findgen( $1, ST_BSET, 0));
  1653. X            }
  1654. X    ;
  1655. Xgenline : KOC_opcode  expr
  1656. X            {
  1657. X        pevalexpr(1, $2);
  1658. X        genlocrec(currseg, labelloc);
  1659. X        locctr += geninstr( findgen( $1, ST_EXP, 
  1660. X                  ( (evalr[1].seg == SSG_ABS 
  1661. X                && evalr[1].value >= 0
  1662. X                && evalr[1].value <= 255 )
  1663. X                ? DIRECT : EXTENDED ) )
  1664. X                );
  1665. X            }
  1666. X    ;
  1667. Xgenline : KOC_opcode  '#' expr
  1668. X            {
  1669. X        pevalexpr(1, $3);
  1670. X        genlocrec(currseg, labelloc);
  1671. X        locctr += geninstr( findgen($1, ST_IMM, 0));
  1672. X            }
  1673. X    ;
  1674. Xgenline : KOC_opcode  indexed
  1675. X            {
  1676. X        int selcrit = INDEX2;
  1677. X
  1678. X        pevalexpr(1, $2.ex);
  1679. X
  1680. X        if(evalr[1].seg == SSG_ABS)
  1681. X        {
  1682. X            if(evalr[1].value == 0)
  1683. X            {
  1684. X                selcrit = INDEX0;
  1685. X            }
  1686. X            else if(evalr[1].value > 0 && evalr[1].value <= 255)
  1687. X            {
  1688. X                selcrit = INDEX1;
  1689. X            }
  1690. X        }
  1691. X
  1692. X        genlocrec(currseg, labelloc);
  1693. X        locctr += geninstr( findgen($1, ST_IND, selcrit));
  1694. X            }
  1695. X    ;
  1696. Xgenline : KOC_opcode 
  1697. X            {
  1698. X        genlocrec(currseg, labelloc);
  1699. X        locctr += geninstr(findgen($1, ST_INH, cpuselect));
  1700. X            }
  1701. X    ;
  1702. X
  1703. Xindexed    :    ',' INDEX    
  1704. X            {
  1705. X                $$.indexv = $2;
  1706. X                $$.ex = exprnode(PCCASE_CONS,0,
  1707. X                    IGP_CONSTANT,0,
  1708. X                    (long)0, SYMNULL);
  1709. X            }
  1710. X    |    expr ',' INDEX
  1711. X            {
  1712. X                $$.ex = $1;
  1713. X                $$.indexv = $3;
  1714. X            }
  1715. X    ;
  1716. X
  1717. Xexpr    :    '+' expr %prec KEOP_MUN
  1718. X            {
  1719. X                $$ = $2;
  1720. X            }
  1721. X    |    '-' expr %prec KEOP_MUN
  1722. X            {
  1723. X                $$ = exprnode(PCCASE_UN,$2,IFC_NEG,0,0L,
  1724. X                    SYMNULL);
  1725. X            }
  1726. X    |    KEOP_NOT expr
  1727. X            {
  1728. X                $$ = exprnode(PCCASE_UN,$2,IFC_NOT,0,0L,
  1729. X                    SYMNULL);
  1730. X            }
  1731. X    |    KEOP_HIGH expr
  1732. X            {
  1733. X                $$ = exprnode(PCCASE_UN,$2,IFC_HIGH,0,0L,
  1734. X                    SYMNULL);
  1735. X            }
  1736. X    |    KEOP_LOW expr
  1737. X            {
  1738. X                $$ = exprnode(PCCASE_UN,$2,IFC_LOW,0,0L,
  1739. X                    SYMNULL);
  1740. X            }
  1741. X    |    expr '*' expr
  1742. X            {
  1743. X                $$ = exprnode(PCCASE_BIN,$1,IFC_MUL,$3,0L,
  1744. X                    SYMNULL);
  1745. X            }
  1746. X    |    expr '/' expr
  1747. X            {
  1748. X                $$ = exprnode(PCCASE_BIN,$1,IFC_DIV,$3,0L,
  1749. X                    SYMNULL);
  1750. X            }
  1751. X    |    expr '+' expr
  1752. X            {
  1753. X                $$ = exprnode(PCCASE_BIN,$1,IFC_ADD,$3,0L,
  1754. X                    SYMNULL);
  1755. X            }
  1756. X    |    expr '-' expr
  1757. X            {
  1758. X                $$ = exprnode(PCCASE_BIN,$1,IFC_SUB,$3,0L,
  1759. X                    SYMNULL);
  1760. X            }
  1761. X    |    expr KEOP_MOD expr
  1762. X            {
  1763. X                $$ = exprnode(PCCASE_BIN,$1,IFC_MOD,$3,0L,
  1764. X                    SYMNULL);
  1765. X            }
  1766. X    |    expr KEOP_SHL expr
  1767. X            {
  1768. X                $$ = exprnode(PCCASE_BIN,$1,IFC_SHL,$3,0L,
  1769. X                    SYMNULL);
  1770. X            }
  1771. X    |    expr KEOP_SHR expr
  1772. X            {
  1773. X                $$ = exprnode(PCCASE_BIN,$1,IFC_SHR,$3,0L,
  1774. X                    SYMNULL);
  1775. X            }
  1776. X    |    expr KEOP_GT expr
  1777. X            {
  1778. X                $$ = exprnode(PCCASE_BIN,$1,IFC_GT,$3,0L,
  1779. X                    SYMNULL);
  1780. X            }
  1781. X    |    expr KEOP_GE expr
  1782. X            {
  1783. X                $$ = exprnode(PCCASE_BIN,$1,IFC_GE,$3,0L,
  1784. X                    SYMNULL);
  1785. X            }
  1786. X    |    expr KEOP_LT expr
  1787. X            {
  1788. X                $$ = exprnode(PCCASE_BIN,$1,IFC_LT,$3,0L,
  1789. X                    SYMNULL);
  1790. X            }
  1791. X    |    expr KEOP_LE expr
  1792. X            {
  1793. X                $$ = exprnode(PCCASE_BIN,$1,IFC_LE,$3,0L,
  1794. X                    SYMNULL);
  1795. X            }
  1796. X    |    expr KEOP_NE expr
  1797. X            {
  1798. X                $$ = exprnode(PCCASE_BIN,$1,IFC_NE,$3,0L,
  1799. X                    SYMNULL);
  1800. X            }
  1801. X    |    expr KEOP_EQ expr
  1802. X            {
  1803. X                $$ = exprnode(PCCASE_BIN,$1,IFC_EQ,$3,0L,
  1804. X                    SYMNULL);
  1805. X            }
  1806. X    |    expr KEOP_AND expr
  1807. X            {
  1808. X                $$ = exprnode(PCCASE_BIN,$1,IFC_AND,$3,0L,
  1809. X                    SYMNULL);
  1810. X            }
  1811. X    |    expr KEOP_OR expr
  1812. X            {
  1813. X                $$ = exprnode(PCCASE_BIN,$1,IFC_OR,$3,0L,
  1814. X                    SYMNULL);
  1815. X            }
  1816. X    |    expr KEOP_XOR expr
  1817. X            {
  1818. X                $$ = exprnode(PCCASE_BIN,$1,IFC_XOR,$3,0L,
  1819. X                    SYMNULL);
  1820. X            }
  1821. X    |    KEOP_DEFINED SYMBOL
  1822. X            {
  1823. X                $$ = exprnode(PCCASE_DEF,0,IGP_DEFINED,0,0L,$2);
  1824. X            }
  1825. X    |    SYMBOL
  1826. X            {
  1827. X                $$ = exprnode(PCCASE_SYMB,0,IFC_SYMB,0,0L,$1);
  1828. X            }
  1829. X    |    '*'
  1830. X            {
  1831. X                $$ = exprnode(PCCASE_PROGC,0,IFC_PROGCTR,0,
  1832. X                    labelloc, SYMNULL);
  1833. X            }
  1834. X    |    CONSTANT
  1835. X            {
  1836. X                $$ = exprnode(PCCASE_CONS,0,IGP_CONSTANT,0,$1,
  1837. X                    SYMNULL);
  1838. X            }
  1839. X    |    STRING
  1840. X            {
  1841. X                char *sourcestr = $1;
  1842. X                long accval = 0;
  1843. X
  1844. X                if(strlen($1) > 0)
  1845. X                {
  1846. X                    accval = chtran(&sourcestr);
  1847. X                    if(*sourcestr != '\0')
  1848. X                    {
  1849. X                        accval = (accval << 8) +
  1850. X                            chtran(&sourcestr);
  1851. X                    }
  1852. X
  1853. X                    if( *sourcestr != '\0')
  1854. X                    {
  1855. X    frawarn("string constant in expression more than 2 characters long");
  1856. X                    }
  1857. X                }
  1858. X                $$ = exprnode(PCCASE_CONS, 0, IGP_CONSTANT, 0,
  1859. X                    accval, SYMNULL);
  1860. X            }
  1861. X    |    '(' expr ')'
  1862. X            {
  1863. X                $$ = $2;
  1864. X            }
  1865. X    ;
  1866. X
  1867. X
  1868. X%%
  1869. X
  1870. Xlexintercept()
  1871. X/*
  1872. X    description    intercept the call to yylex (the lexical analyzer)
  1873. X            and filter out all unnecessary tokens when skipping
  1874. X            the input between a failed IF and its matching ENDI or
  1875. X            ELSE
  1876. X    globals     fraifskip    the enable flag
  1877. X*/
  1878. X{
  1879. X#undef yylex
  1880. X
  1881. X    int rv;
  1882. X
  1883. X    if(fraifskip)
  1884. X    {
  1885. X        for(;;)
  1886. X        {
  1887. X
  1888. X            switch(rv = yylex())
  1889. X
  1890. X            {
  1891. X            case 0:
  1892. X            case KOC_END:
  1893. X            case KOC_IF:
  1894. X            case KOC_ELSE:
  1895. X            case KOC_ENDI:
  1896. X            case EOL:
  1897. X                return rv;
  1898. X            default:
  1899. X                break;
  1900. X            }
  1901. X        }
  1902. X    }
  1903. X    else
  1904. X        return yylex();
  1905. X#define yylex lexintercept
  1906. X}
  1907. X
  1908. X
  1909. Xsetreserved()
  1910. X{
  1911. X/* machine dependent */
  1912. X    reservedsym("x", INDEX, 0);
  1913. X    reservedsym("X", INDEX, 0);
  1914. X
  1915. X
  1916. X    reservedsym("and", KEOP_AND, 0);
  1917. X    reservedsym("defined", KEOP_DEFINED,0);
  1918. X    reservedsym("eq", KEOP_EQ, 0);
  1919. X    reservedsym("ge", KEOP_GE, 0);
  1920. X    reservedsym("gt", KEOP_GT, 0);
  1921. X    reservedsym("high", KEOP_HIGH, 0);
  1922. X    reservedsym("le", KEOP_LE, 0);
  1923. X    reservedsym("low", KEOP_LOW, 0);
  1924. X    reservedsym("lt", KEOP_LT, 0);
  1925. X    reservedsym("mod", KEOP_MOD, 0);
  1926. X    reservedsym("ne", KEOP_NE, 0);
  1927. X    reservedsym("not", KEOP_NOT, 0);
  1928. X    reservedsym("or", KEOP_OR, 0);
  1929. X    reservedsym("shl", KEOP_SHL, 0);
  1930. X    reservedsym("shr", KEOP_SHR, 0);
  1931. X    reservedsym("xor", KEOP_XOR, 0);
  1932. X    reservedsym("AND", KEOP_AND, 0);
  1933. X    reservedsym("DEFINED", KEOP_DEFINED,0);
  1934. X    reservedsym("EQ", KEOP_EQ, 0);
  1935. X    reservedsym("GE", KEOP_GE, 0);
  1936. X    reservedsym("GT", KEOP_GT, 0);
  1937. X    reservedsym("HIGH", KEOP_HIGH, 0);
  1938. X    reservedsym("LE", KEOP_LE, 0);
  1939. X    reservedsym("LOW", KEOP_LOW, 0);
  1940. X    reservedsym("LT", KEOP_LT, 0);
  1941. X    reservedsym("MOD", KEOP_MOD, 0);
  1942. X    reservedsym("NE", KEOP_NE, 0);
  1943. X    reservedsym("NOT", KEOP_NOT, 0);
  1944. X    reservedsym("OR", KEOP_OR, 0);
  1945. X    reservedsym("SHL", KEOP_SHL, 0);
  1946. X    reservedsym("SHR", KEOP_SHR, 0);
  1947. X    reservedsym("XOR", KEOP_XOR, 0);
  1948. X
  1949. X}
  1950. X
  1951. Xcpumatch(str)
  1952. X    char * str;
  1953. X{
  1954. X    int msub;
  1955. X
  1956. X    static struct
  1957. X    {
  1958. X        char * mtch;
  1959. X        int   cpuv;
  1960. X    } matchtab[] =
  1961. X    {
  1962. X        {"4", CPU146805 },
  1963. X        {"hc", CPU68HC05 },
  1964. X        {"HC", CPU68HC05 },
  1965. X        {"l05", CPU6805 },
  1966. X        {"L05", CPU6805 },
  1967. X        {"3", CPU6305 },
  1968. X        {"05", CPU6805 },
  1969. X        {"", 0} 
  1970. X    };
  1971. X
  1972. X    for(msub = 0; matchtab[msub].mtch[0] != '\0'; msub++)
  1973. X    {
  1974. X        if(strcontains(str, matchtab[msub].mtch))
  1975. X        {
  1976. X            cpuselect = matchtab[msub].cpuv;
  1977. X            return TRUE;
  1978. X        }
  1979. X    }
  1980. X
  1981. X    return FALSE;
  1982. X}
  1983. X
  1984. X
  1985. Xstrcontains(s1, sm)
  1986. X    char * s1, *sm;
  1987. X{
  1988. X    int l1 = strlen(s1), lm = strlen(sm);
  1989. X
  1990. X    for(; l1 >= lm; l1--, s1++)
  1991. X    {
  1992. X        if(strncmp(s1, sm, lm) == 0)
  1993. X        {
  1994. X            return TRUE;
  1995. X        }
  1996. X    }
  1997. X    return FALSE;
  1998. X}
  1999. X
  2000. X/*
  2001. X    description    Opcode and Instruction generation tables
  2002. X    usage        Unix, framework crossassembler
  2003. X    history        September 25, 1987
  2004. X*/
  2005. X
  2006. X#define NUMOPCODE 115
  2007. X#define NUMSYNBLK 132
  2008. X#define NUMDIFFOP 192
  2009. X
  2010. Xint gnumopcode = NUMOPCODE;
  2011. X
  2012. Xint ophashlnk[NUMOPCODE];
  2013. X
  2014. Xstruct opsym optab[NUMOPCODE+1]
  2015. X    = {
  2016. X    {"invalid", KOC_opcode, 2, 0 },
  2017. X    {"ADC", KOC_opcode, 3, 2 },
  2018. X    {"ADD", KOC_opcode, 3, 5 },
  2019. X    {"AND", KOC_opcode, 3, 8 },
  2020. X    {"ASL", KOC_opcode, 2, 11 },
  2021. X    {"ASLA", KOC_opcode, 1, 13 },
  2022. X    {"ASLX", KOC_opcode, 1, 14 },
  2023. X    {"ASR", KOC_opcode, 2, 15 },
  2024. X    {"ASRA", KOC_opcode, 1, 17 },
  2025. X    {"ASRX", KOC_opcode, 1, 18 },
  2026. X    {"BCC", KOC_opcode, 1, 19 },
  2027. X    {"BCLR", KOC_opcode, 1, 20 },
  2028. X    {"BCS", KOC_opcode, 1, 21 },
  2029. X    {"BEQ", KOC_opcode, 1, 22 },
  2030. X    {"BHCC", KOC_opcode, 1, 23 },
  2031. X    {"BHCS", KOC_opcode, 1, 24 },
  2032. X    {"BHI", KOC_opcode, 1, 25 },
  2033. X    {"BHS", KOC_opcode, 1, 26 },
  2034. X    {"BIH", KOC_opcode, 1, 27 },
  2035. X    {"BIL", KOC_opcode, 1, 28 },
  2036. X    {"BIT", KOC_opcode, 3, 29 },
  2037. X    {"BLO", KOC_opcode, 1, 32 },
  2038. X    {"BLS", KOC_opcode, 1, 33 },
  2039. X    {"BMC", KOC_opcode, 1, 34 },
  2040. X    {"BMI", KOC_opcode, 1, 35 },
  2041. X    {"BMS", KOC_opcode, 1, 36 },
  2042. X    {"BNE", KOC_opcode, 1, 37 },
  2043. X    {"BPL", KOC_opcode, 1, 38 },
  2044. X    {"BRA", KOC_opcode, 1, 39 },
  2045. X    {"BRCLR", KOC_opcode, 1, 40 },
  2046. X    {"BRN", KOC_opcode, 1, 41 },
  2047. X    {"BRSET", KOC_opcode, 1, 42 },
  2048. X    {"BSET", KOC_opcode, 1, 43 },
  2049. X    {"BSR", KOC_opcode, 1, 44 },
  2050. X    {"BYTE", KOC_BDEF, 0, 0 },
  2051. X    {"CHARDEF", KOC_CHDEF, 0, 0 },
  2052. X    {"CHARSET", KOC_CHSET, 0, 0 },
  2053. X    {"CHARUSE", KOC_CHUSE, 0, 0 },
  2054. X    {"CHD", KOC_CHDEF, 0, 0 },
  2055. X    {"CLC", KOC_opcode, 1, 45 },
  2056. X    {"CLI", KOC_opcode, 1, 46 },
  2057. X    {"CLR", KOC_opcode, 2, 47 },
  2058. X    {"CLRA", KOC_opcode, 1, 49 },
  2059. X    {"CLRX", KOC_opcode, 1, 50 },
  2060. X    {"CMP", KOC_opcode, 3, 51 },
  2061. X    {"COM", KOC_opcode, 2, 54 },
  2062. X    {"COMA", KOC_opcode, 1, 56 },
  2063. X    {"COMX", KOC_opcode, 1, 57 },
  2064. X    {"CPU", KOC_CPU, 0, 0 },
  2065. X    {"CPX", KOC_opcode, 3, 58 },
  2066. X    {"DAA", KOC_opcode, 1, 61 },
  2067. X    {"DB", KOC_BDEF, 0, 0 },
  2068. X    {"DEC", KOC_opcode, 2, 62 },
  2069. X    {"DECA", KOC_opcode, 1, 64 },
  2070. X    {"DECX", KOC_opcode, 1, 65 },
  2071. X    {"DW", KOC_WDEF, 0, 0 },
  2072. X    {"ELSE", KOC_ELSE, 0, 0 },
  2073. X    {"END", KOC_END, 0, 0 },
  2074. X    {"ENDI", KOC_ENDI, 0, 0 },
  2075. X    {"EOR", KOC_opcode, 3, 66 },
  2076. X    {"EQU", KOC_EQU, 0, 0 },
  2077. X    {"FCB", KOC_BDEF, 0, 0 },
  2078. X    {"FCC", KOC_SDEF, 0, 0 },
  2079. X    {"FDB", KOC_WDEF, 0, 0 },
  2080. X    {"IF", KOC_IF, 0, 0 },
  2081. X    {"INC", KOC_opcode, 2, 69 },
  2082. X    {"INCA", KOC_opcode, 1, 71 },
  2083. X    {"INCL", KOC_INCLUDE, 0, 0 },
  2084. X    {"INCLUDE", KOC_INCLUDE, 0, 0 },
  2085. X    {"INCX", KOC_opcode, 1, 72 },
  2086. X    {"JMP", KOC_opcode, 2, 73 },
  2087. X    {"JSR", KOC_opcode, 2, 75 },
  2088. X    {"LDA", KOC_opcode, 3, 77 },
  2089. X    {"LDX", KOC_opcode, 3, 80 },
  2090. X    {"LSL", KOC_opcode, 2, 83 },
  2091. X    {"LSLA", KOC_opcode, 1, 85 },
  2092. X    {"LSLX", KOC_opcode, 1, 86 },
  2093. X    {"LSR", KOC_opcode, 2, 87 },
  2094. X    {"LSRA", KOC_opcode, 1, 89 },
  2095. X    {"LSRX", KOC_opcode, 1, 90 },
  2096. X    {"MUL", KOC_opcode, 1, 91 },
  2097. X    {"NEG", KOC_opcode, 2, 92 },
  2098. X    {"NEGA", KOC_opcode, 1, 94 },
  2099. X    {"NEGX", KOC_opcode, 1, 95 },
  2100. X    {"NOP", KOC_opcode, 1, 96 },
  2101. X    {"ORA", KOC_opcode, 3, 97 },
  2102. X    {"ORG", KOC_ORG, 0, 0 },
  2103. X    {"RESERVE", KOC_RESM, 0, 0 },
  2104. X    {"RMB", KOC_RESM, 0, 0 },
  2105. X    {"ROL", KOC_opcode, 2, 100 },
  2106. X    {"ROLA", KOC_opcode, 1, 102 },
  2107. X    {"ROLX", KOC_opcode, 1, 103 },
  2108. X    {"ROR", KOC_opcode, 2, 104 },
  2109. X    {"RORA", KOC_opcode, 1, 106 },
  2110. X    {"RORX", KOC_opcode, 1, 107 },
  2111. X    {"RSP", KOC_opcode, 1, 108 },
  2112. X    {"RTI", KOC_opcode, 1, 109 },
  2113. X    {"RTS", KOC_opcode, 1, 110 },
  2114. X    {"SBC", KOC_opcode, 3, 111 },
  2115. X    {"SEC", KOC_opcode, 1, 114 },
  2116. X    {"SEI", KOC_opcode, 1, 115 },
  2117. X    {"SET", KOC_SET, 0, 0 },
  2118. X    {"STA", KOC_opcode, 2, 116 },
  2119. X    {"STOP", KOC_opcode, 1, 118 },
  2120. X    {"STRING", KOC_SDEF, 0, 0 },
  2121. X    {"STX", KOC_opcode, 2, 119 },
  2122. X    {"SUB", KOC_opcode, 3, 121 },
  2123. X    {"SWI", KOC_opcode, 1, 124 },
  2124. X    {"TAX", KOC_opcode, 1, 125 },
  2125. X    {"TST", KOC_opcode, 2, 126 },
  2126. X    {"TSTA", KOC_opcode, 1, 128 },
  2127. X    {"TSTX", KOC_opcode, 1, 129 },
  2128. X    {"TXA", KOC_opcode, 1, 130 },
  2129. X    {"WAIT", KOC_opcode, 1, 131 },
  2130. X    {"WORD", KOC_WDEF, 0, 0 },
  2131. X    { "", 0, 0, 0 }};
  2132. X
  2133. Xstruct opsynt ostab[NUMSYNBLK+1]
  2134. X    = {
  2135. X/* invalid 0 */ { 0, 1, 0 },
  2136. X/* invalid 1 */ { 0xffff, 1, 1 },
  2137. X/* ADC 2 */ { ST_EXP, 2, 2 },
  2138. X/* ADC 3 */ { ST_IMM, 1, 4 },
  2139. X/* ADC 4 */ { ST_IND, 3, 5 },
  2140. X/* ADD 5 */ { ST_EXP, 2, 8 },
  2141. X/* ADD 6 */ { ST_IMM, 1, 10 },
  2142. X/* ADD 7 */ { ST_IND, 3, 11 },
  2143. X/* AND 8 */ { ST_EXP, 2, 14 },
  2144. X/* AND 9 */ { ST_IMM, 1, 16 },
  2145. X/* AND 10 */ { ST_IND, 3, 17 },
  2146. X/* ASL 11 */ { ST_EXP, 1, 20 },
  2147. X/* ASL 12 */ { ST_IND, 2, 21 },
  2148. X/* ASLA 13 */ { ST_INH, 1, 23 },
  2149. X/* ASLX 14 */ { ST_INH, 1, 24 },
  2150. X/* ASR 15 */ { ST_EXP, 1, 25 },
  2151. X/* ASR 16 */ { ST_IND, 2, 26 },
  2152. X/* ASRA 17 */ { ST_INH, 1, 28 },
  2153. X/* ASRX 18 */ { ST_INH, 1, 29 },
  2154. X/* BCC 19 */ { ST_EXP, 1, 30 },
  2155. X/* BCLR 20 */ { ST_BSET, 1, 31 },
  2156. X/* BCS 21 */ { ST_EXP, 1, 32 },
  2157. X/* BEQ 22 */ { ST_EXP, 1, 33 },
  2158. X/* BHCC 23 */ { ST_EXP, 1, 34 },
  2159. X/* BHCS 24 */ { ST_EXP, 1, 35 },
  2160. X/* BHI 25 */ { ST_EXP, 1, 36 },
  2161. X/* BHS 26 */ { ST_EXP, 1, 37 },
  2162. X/* BIH 27 */ { ST_EXP, 1, 38 },
  2163. X/* BIL 28 */ { ST_EXP, 1, 39 },
  2164. X/* BIT 29 */ { ST_EXP, 2, 40 },
  2165. X/* BIT 30 */ { ST_IMM, 1, 42 },
  2166. X/* BIT 31 */ { ST_IND, 3, 43 },
  2167. X/* BLO 32 */ { ST_EXP, 1, 46 },
  2168. X/* BLS 33 */ { ST_EXP, 1, 47 },
  2169. X/* BMC 34 */ { ST_EXP, 1, 48 },
  2170. X/* BMI 35 */ { ST_EXP, 1, 49 },
  2171. X/* BMS 36 */ { ST_EXP, 1, 50 },
  2172. X/* BNE 37 */ { ST_EXP, 1, 51 },
  2173. X/* BPL 38 */ { ST_EXP, 1, 52 },
  2174. X/* BRA 39 */ { ST_EXP, 1, 53 },
  2175. X/* BRCLR 40 */ { ST_BRSET, 1, 54 },
  2176. X/* BRN 41 */ { ST_EXP, 1, 55 },
  2177. X/* BRSET 42 */ { ST_BRSET, 1, 56 },
  2178. X/* BSET 43 */ { ST_BSET, 1, 57 },
  2179. X/* BSR 44 */ { ST_EXP, 1, 58 },
  2180. X/* CLC 45 */ { ST_INH, 1, 59 },
  2181. X/* CLI 46 */ { ST_INH, 1, 60 },
  2182. X/* CLR 47 */ { ST_EXP, 1, 61 },
  2183. X/* CLR 48 */ { ST_IND, 2, 62 },
  2184. X/* CLRA 49 */ { ST_INH, 1, 64 },
  2185. X/* CLRX 50 */ { ST_INH, 1, 65 },
  2186. X/* CMP 51 */ { ST_EXP, 2, 66 },
  2187. X/* CMP 52 */ { ST_IMM, 1, 68 },
  2188. X/* CMP 53 */ { ST_IND, 3, 69 },
  2189. X/* COM 54 */ { ST_EXP, 1, 72 },
  2190. X/* COM 55 */ { ST_IND, 2, 73 },
  2191. X/* COMA 56 */ { ST_INH, 1, 75 },
  2192. X/* COMX 57 */ { ST_INH, 1, 76 },
  2193. X/* CPX 58 */ { ST_EXP, 2, 77 },
  2194. X/* CPX 59 */ { ST_IMM, 1, 79 },
  2195. X/* CPX 60 */ { ST_IND, 3, 80 },
  2196. X/* DAA 61 */ { ST_INH, 1, 83 },
  2197. X/* DEC 62 */ { ST_EXP, 1, 84 },
  2198. X/* DEC 63 */ { ST_IND, 2, 85 },
  2199. X/* DECA 64 */ { ST_INH, 1, 87 },
  2200. X/* DECX 65 */ { ST_INH, 1, 88 },
  2201. X/* EOR 66 */ { ST_EXP, 2, 89 },
  2202. X/* EOR 67 */ { ST_IMM, 1, 91 },
  2203. X/* EOR 68 */ { ST_IND, 3, 92 },
  2204. X/* INC 69 */ { ST_EXP, 1, 95 },
  2205. X/* INC 70 */ { ST_IND, 2, 96 },
  2206. X/* INCA 71 */ { ST_INH, 1, 98 },
  2207. X/* INCX 72 */ { ST_INH, 1, 99 },
  2208. X/* JMP 73 */ { ST_EXP, 2, 100 },
  2209. X/* JMP 74 */ { ST_IND, 3, 102 },
  2210. X/* JSR 75 */ { ST_EXP, 2, 105 },
  2211. X/* JSR 76 */ { ST_IND, 3, 107 },
  2212. X/* LDA 77 */ { ST_EXP, 2, 110 },
  2213. X/* LDA 78 */ { ST_IMM, 1, 112 },
  2214. X/* LDA 79 */ { ST_IND, 3, 113 },
  2215. X/* LDX 80 */ { ST_EXP, 2, 116 },
  2216. X/* LDX 81 */ { ST_IMM, 1, 118 },
  2217. X/* LDX 82 */ { ST_IND, 3, 119 },
  2218. X/* LSL 83 */ { ST_EXP, 1, 122 },
  2219. X/* LSL 84 */ { ST_IND, 2, 123 },
  2220. X/* LSLA 85 */ { ST_INH, 1, 125 },
  2221. X/* LSLX 86 */ { ST_INH, 1, 126 },
  2222. X/* LSR 87 */ { ST_EXP, 1, 127 },
  2223. X/* LSR 88 */ { ST_IND, 2, 128 },
  2224. X/* LSRA 89 */ { ST_INH, 1, 130 },
  2225. X/* LSRX 90 */ { ST_INH, 1, 131 },
  2226. X/* MUL 91 */ { ST_INH, 1, 132 },
  2227. X/* NEG 92 */ { ST_EXP, 1, 133 },
  2228. X/* NEG 93 */ { ST_IND, 2, 134 },
  2229. X/* NEGA 94 */ { ST_INH, 1, 136 },
  2230. X/* NEGX 95 */ { ST_INH, 1, 137 },
  2231. X/* NOP 96 */ { ST_INH, 1, 138 },
  2232. X/* ORA 97 */ { ST_EXP, 2, 139 },
  2233. X/* ORA 98 */ { ST_IMM, 1, 141 },
  2234. X/* ORA 99 */ { ST_IND, 3, 142 },
  2235. X/* ROL 100 */ { ST_EXP, 1, 145 },
  2236. X/* ROL 101 */ { ST_IND, 2, 146 },
  2237. X/* ROLA 102 */ { ST_INH, 1, 148 },
  2238. X/* ROLX 103 */ { ST_INH, 1, 149 },
  2239. X/* ROR 104 */ { ST_EXP, 1, 150 },
  2240. X/* ROR 105 */ { ST_IND, 2, 151 },
  2241. X/* RORA 106 */ { ST_INH, 1, 153 },
  2242. X/* RORX 107 */ { ST_INH, 1, 154 },
  2243. X/* RSP 108 */ { ST_INH, 1, 155 },
  2244. X/* RTI 109 */ { ST_INH, 1, 156 },
  2245. X/* RTS 110 */ { ST_INH, 1, 157 },
  2246. X/* SBC 111 */ { ST_EXP, 2, 158 },
  2247. X/* SBC 112 */ { ST_IMM, 1, 160 },
  2248. X/* SBC 113 */ { ST_IND, 3, 161 },
  2249. X/* SEC 114 */ { ST_INH, 1, 164 },
  2250. X/* SEI 115 */ { ST_INH, 1, 165 },
  2251. X/* STA 116 */ { ST_EXP, 2, 166 },
  2252. X/* STA 117 */ { ST_IND, 3, 168 },
  2253. X/* STOP 118 */ { ST_INH, 1, 171 },
  2254. X/* STX 119 */ { ST_EXP, 2, 172 },
  2255. X/* STX 120 */ { ST_IND, 3, 174 },
  2256. X/* SUB 121 */ { ST_EXP, 2, 177 },
  2257. X/* SUB 122 */ { ST_IMM, 1, 179 },
  2258. X/* SUB 123 */ { ST_IND, 3, 180 },
  2259. X/* SWI 124 */ { ST_INH, 1, 183 },
  2260. X/* TAX 125 */ { ST_INH, 1, 184 },
  2261. X/* TST 126 */ { ST_EXP, 1, 185 },
  2262. X/* TST 127 */ { ST_IND, 2, 186 },
  2263. X/* TSTA 128 */ { ST_INH, 1, 188 },
  2264. X/* TSTX 129 */ { ST_INH, 1, 189 },
  2265. X/* TXA 130 */ { ST_INH, 1, 190 },
  2266. X/* WAIT 131 */ { ST_INH, 1, 191 },
  2267. X    { 0, 0, 0 } };
  2268. X
  2269. Xstruct igel igtab[NUMDIFFOP+1]
  2270. X    = {
  2271. X/* invalid 0 */   { 0 , 0, 
  2272. X        "[Xnullentry" },
  2273. X/* invalid 1 */   { 0 , 0, 
  2274. X        "[Xinvalid opcode" },
  2275. X/* ADC 2 */   { ADDR , DIRECT, 
  2276. X        "B9;[1=];" },
  2277. X/* ADC 3 */   { ADDR , EXTENDED, 
  2278. X        "C9;[1=]x" },
  2279. X/* ADC 4 */   { 0 , 0, 
  2280. X        "A9;[1=];" },
  2281. X/* ADC 5 */   { INDEXLEN , INDEX2, 
  2282. X        "D9;[1=]x" },
  2283. X/* ADC 6 */   { INDEXLEN , INDEX1, 
  2284. X        "E9;[1=];" },
  2285. X/* ADC 7 */   { INDEXLEN , INDEX0, 
  2286. X        "F9;" },
  2287. X/* ADD 8 */   { ADDR , DIRECT, 
  2288. X        "BB;[1=];" },
  2289. X/* ADD 9 */   { ADDR , EXTENDED, 
  2290. X        "CB;[1=]x" },
  2291. X/* ADD 10 */   { 0 , 0, 
  2292. X        "AB;[1=];" },
  2293. X/* ADD 11 */   { INDEXLEN , INDEX2, 
  2294. X        "DB;[1=]x" },
  2295. X/* ADD 12 */   { INDEXLEN , INDEX1, 
  2296. X        "EB;[1=];" },
  2297. X/* ADD 13 */   { INDEXLEN , INDEX0, 
  2298. X        "FB;" },
  2299. X/* AND 14 */   { ADDR , DIRECT, 
  2300. X        "B4;[1=];" },
  2301. X/* AND 15 */   { ADDR , EXTENDED, 
  2302. X        "C4;[1=]x" },
  2303. X/* AND 16 */   { 0 , 0, 
  2304. X        "A4;[1=];" },
  2305. X/* AND 17 */   { INDEXLEN , INDEX2, 
  2306. X        "D4;[1=]x" },
  2307. X/* AND 18 */   { INDEXLEN , INDEX1, 
  2308. X        "E4;[1=];" },
  2309. X/* AND 19 */   { INDEXLEN , INDEX0, 
  2310. X        "F4;" },
  2311. X/* ASL 20 */   { ADDR , DIRECT, 
  2312. X        "38;[1=];" },
  2313. X/* ASL 21 */   { INDEXLEN , INDEX1, 
  2314. X        "68;[1=];" },
  2315. X/* ASL 22 */   { INDEXLEN , INDEX0, 
  2316. X        "78;" },
  2317. X/* ASLA 23 */   { 0 , 0, 
  2318. X        "48;" },
  2319. X/* ASLX 24 */   { 0 , 0, 
  2320. X        "58;" },
  2321. X/* ASR 25 */   { ADDR , DIRECT, 
  2322. X        "37;[1=];" },
  2323. X/* ASR 26 */   { INDEXLEN , INDEX1, 
  2324. X        "67;[1=];" },
  2325. X/* ASR 27 */   { INDEXLEN , INDEX0, 
  2326. X        "77;" },
  2327. X/* ASRA 28 */   { 0 , 0, 
  2328. X        "47;" },
  2329. X/* ASRX 29 */   { 0 , 0, 
  2330. X        "57;" },
  2331. X/* BCC 30 */   { 0 , 0, 
  2332. X        "24;[1=].Q.1+-r" },
  2333. X/* BCLR 31 */   { 0 , 0, 
  2334. X        "11.[1#]|;[2=];" },
  2335. X/* BCS 32 */   { 0 , 0, 
  2336. X        "25;[1=].Q.1+-r" },
  2337. X/* BEQ 33 */   { 0 , 0, 
  2338. X        "27;[1=].Q.1+-r" },
  2339. X/* BHCC 34 */   { 0 , 0, 
  2340. X        "28;[1=].Q.1+-r" },
  2341. X/* BHCS 35 */   { 0 , 0, 
  2342. X        "29;[1=].Q.1+-r" },
  2343. X/* BHI 36 */   { 0 , 0, 
  2344. X        "22;[1=].Q.1+-r" },
  2345. X/* BHS 37 */   { 0 , 0, 
  2346. X        "24;[1=].Q.1+-r" },
  2347. X/* BIH 38 */   { 0 , 0, 
  2348. X        "2f;[1=].Q.1+-r" },
  2349. X/* BIL 39 */   { 0 , 0, 
  2350. X        "2e;[1=].Q.1+-r" },
  2351. X/* BIT 40 */   { ADDR , DIRECT, 
  2352. X        "B5;[1=];" },
  2353. X/* BIT 41 */   { ADDR , EXTENDED, 
  2354. X        "C5;[1=]x" },
  2355. X/* BIT 42 */   { 0 , 0, 
  2356. X        "A5;[1=];" },
  2357. X/* BIT 43 */   { INDEXLEN , INDEX2, 
  2358. X        "D5;[1=]x" },
  2359. X/* BIT 44 */   { INDEXLEN , INDEX1, 
  2360. X        "E5;[1=];" },
  2361. X/* BIT 45 */   { INDEXLEN , INDEX0, 
  2362. X        "F5;" },
  2363. X/* BLO 46 */   { 0 , 0, 
  2364. X        "25;[1=].Q.1+-r" },
  2365. X/* BLS 47 */   { 0 , 0, 
  2366. X        "23;[1=].Q.1+-r" },
  2367. X/* BMC 48 */   { 0 , 0, 
  2368. X        "2c;[1=].Q.1+-r" },
  2369. X/* BMI 49 */   { 0 , 0, 
  2370. X        "2b;[1=].Q.1+-r" },
  2371. X/* BMS 50 */   { 0 , 0, 
  2372. X        "2d;[1=].Q.1+-r" },
  2373. X/* BNE 51 */   { 0 , 0, 
  2374. X        "26;[1=].Q.1+-r" },
  2375. X/* BPL 52 */   { 0 , 0, 
  2376. X        "2a;[1=].Q.1+-r" },
  2377. X/* BRA 53 */   { 0 , 0, 
  2378. X        "20;[1=].Q.1+-r" },
  2379. X/* BRCLR 54 */   { 0 , 0, 
  2380. X        "01.[1#]|;[2=];[3=].Q.1+-r" },
  2381. X/* BRN 55 */   { 0 , 0, 
  2382. X        "21;[1=].Q.1+-r" },
  2383. X/* BRSET 56 */   { 0 , 0, 
  2384. X        "00.[1#]|;[2=];[3=].Q.1+-r" },
  2385. X/* BSET 57 */   { 0 , 0, 
  2386. X        "10.[1#]|;[2=];" },
  2387. X/* BSR 58 */   { 0 , 0, 
  2388. X        "ad;[1=].Q.1+-r" },
  2389. X/* CLC 59 */   { 0 , 0, 
  2390. X        "98;" },
  2391. X/* CLI 60 */   { 0 , 0, 
  2392. X        "9a;" },
  2393. X/* CLR 61 */   { ADDR , DIRECT, 
  2394. X        "3F;[1=];" },
  2395. X/* CLR 62 */   { INDEXLEN , INDEX1, 
  2396. X        "6F;[1=];" },
  2397. X/* CLR 63 */   { INDEXLEN , INDEX0, 
  2398. X        "7F;" },
  2399. X/* CLRA 64 */   { 0 , 0, 
  2400. X        "4F;" },
  2401. X/* CLRX 65 */   { 0 , 0, 
  2402. X        "5F;" },
  2403. X/* CMP 66 */   { ADDR , DIRECT, 
  2404. X        "B1;[1=];" },
  2405. X/* CMP 67 */   { ADDR , EXTENDED, 
  2406. X        "C1;[1=]x" },
  2407. X/* CMP 68 */   { 0 , 0, 
  2408. X        "A1;[1=];" },
  2409. X/* CMP 69 */   { INDEXLEN , INDEX2, 
  2410. X        "D1;[1=]x" },
  2411. X/* CMP 70 */   { INDEXLEN , INDEX1, 
  2412. X        "E1;[1=];" },
  2413. X/* CMP 71 */   { INDEXLEN , INDEX0, 
  2414. X        "F1;" },
  2415. X/* COM 72 */   { ADDR , DIRECT, 
  2416. X        "33;[1=];" },
  2417. X/* COM 73 */   { INDEXLEN , INDEX1, 
  2418. X        "63;[1=];" },
  2419. X/* COM 74 */   { INDEXLEN , INDEX0, 
  2420. X        "73;" },
  2421. X/* COMA 75 */   { 0 , 0, 
  2422. X        "43;" },
  2423. X/* COMX 76 */   { 0 , 0, 
  2424. X        "53;" },
  2425. X/* CPX 77 */   { ADDR , DIRECT, 
  2426. X        "B3;[1=];" },
  2427. X/* CPX 78 */   { ADDR , EXTENDED, 
  2428. X        "C3;[1=]x" },
  2429. X/* CPX 79 */   { 0 , 0, 
  2430. X        "A3;[1=];" },
  2431. X/* CPX 80 */   { INDEXLEN , INDEX2, 
  2432. X        "D3;[1=]x" },
  2433. X/* CPX 81 */   { INDEXLEN , INDEX1, 
  2434. X        "E3;[1=];" },
  2435. X/* CPX 82 */   { INDEXLEN , INDEX0, 
  2436. X        "F3;" },
  2437. X/* DAA 83 */   { INSTDAA , INSTDAA, 
  2438. X        "8d;" },
  2439. X/* DEC 84 */   { ADDR , DIRECT, 
  2440. X        "3A;[1=];" },
  2441. X/* DEC 85 */   { INDEXLEN , INDEX1, 
  2442. X        "6A;[1=];" },
  2443. X/* DEC 86 */   { INDEXLEN , INDEX0, 
  2444. X        "7A;" },
  2445. X/* DECA 87 */   { 0 , 0, 
  2446. X        "4A;" },
  2447. X/* DECX 88 */   { 0 , 0, 
  2448. X        "5A;" },
  2449. X/* EOR 89 */   { ADDR , DIRECT, 
  2450. X        "B8;[1=];" },
  2451. X/* EOR 90 */   { ADDR , EXTENDED, 
  2452. X        "C8;[1=]x" },
  2453. X/* EOR 91 */   { 0 , 0, 
  2454. X        "A8;[1=];" },
  2455. X/* EOR 92 */   { INDEXLEN , INDEX2, 
  2456. X        "D8;[1=]x" },
  2457. X/* EOR 93 */   { INDEXLEN , INDEX1, 
  2458. X        "E8;[1=];" },
  2459. X/* EOR 94 */   { INDEXLEN , INDEX0, 
  2460. X        "F8;" },
  2461. X/* INC 95 */   { ADDR , DIRECT, 
  2462. X        "3C;[1=];" },
  2463. X/* INC 96 */   { INDEXLEN , INDEX1, 
  2464. X        "6C;[1=];" },
  2465. X/* INC 97 */   { INDEXLEN , INDEX0, 
  2466. X        "7C;" },
  2467. X/* INCA 98 */   { 0 , 0, 
  2468. X        "4C;" },
  2469. X/* INCX 99 */   { 0 , 0, 
  2470. X        "5C;" },
  2471. X/* JMP 100 */   { ADDR , DIRECT, 
  2472. X        "BC;[1=];" },
  2473. X/* JMP 101 */   { ADDR , EXTENDED, 
  2474. X        "CC;[1=]x" },
  2475. X/* JMP 102 */   { INDEXLEN , INDEX2, 
  2476. X        "DC;[1=]x" },
  2477. X/* JMP 103 */   { INDEXLEN , INDEX1, 
  2478. X        "EC;[1=];" },
  2479. X/* JMP 104 */   { INDEXLEN , INDEX0, 
  2480. X        "FC;" },
  2481. X/* JSR 105 */   { ADDR , DIRECT, 
  2482. X        "BD;[1=];" },
  2483. X/* JSR 106 */   { ADDR , EXTENDED, 
  2484. X        "CD;[1=]x" },
  2485. X/* JSR 107 */   { INDEXLEN , INDEX2, 
  2486. X        "DD;[1=]x" },
  2487. X/* JSR 108 */   { INDEXLEN , INDEX1, 
  2488. X        "ED;[1=];" },
  2489. X/* JSR 109 */   { INDEXLEN , INDEX0, 
  2490. X        "FD;" },
  2491. X/* LDA 110 */   { ADDR , DIRECT, 
  2492. X        "B6;[1=];" },
  2493. X/* LDA 111 */   { ADDR , EXTENDED, 
  2494. X        "C6;[1=]x" },
  2495. X/* LDA 112 */   { 0 , 0, 
  2496. X        "A6;[1=];" },
  2497. X/* LDA 113 */   { INDEXLEN , INDEX2, 
  2498. X        "D6;[1=]x" },
  2499. X/* LDA 114 */   { INDEXLEN , INDEX1, 
  2500. X        "E6;[1=];" },
  2501. X/* LDA 115 */   { INDEXLEN , INDEX0, 
  2502. X        "F6;" },
  2503. X/* LDX 116 */   { ADDR , DIRECT, 
  2504. X        "BE;[1=];" },
  2505. X/* LDX 117 */   { ADDR , EXTENDED, 
  2506. X        "CE;[1=]x" },
  2507. X/* LDX 118 */   { 0 , 0, 
  2508. X        "AE;[1=];" },
  2509. X/* LDX 119 */   { INDEXLEN , INDEX2, 
  2510. X        "DE;[1=]x" },
  2511. X/* LDX 120 */   { INDEXLEN , INDEX1, 
  2512. X        "EE;[1=];" },
  2513. X/* LDX 121 */   { INDEXLEN , INDEX0, 
  2514. X        "FE;" },
  2515. X/* LSL 122 */   { ADDR , DIRECT, 
  2516. X        "38;[1=];" },
  2517. X/* LSL 123 */   { INDEXLEN , INDEX1, 
  2518. X        "68;[1=];" },
  2519. X/* LSL 124 */   { INDEXLEN , INDEX0, 
  2520. X        "78;" },
  2521. X/* LSLA 125 */   { 0 , 0, 
  2522. X        "48;" },
  2523. X/* LSLX 126 */   { 0 , 0, 
  2524. X        "58;" },
  2525. X/* LSR 127 */   { ADDR , DIRECT, 
  2526. X        "34;[1=];" },
  2527. X/* LSR 128 */   { INDEXLEN , INDEX1, 
  2528. X        "64;[1=];" },
  2529. X/* LSR 129 */   { INDEXLEN , INDEX0, 
  2530. X        "74;" },
  2531. X/* LSRA 130 */   { 0 , 0, 
  2532. X        "44;" },
  2533. X/* LSRX 131 */   { 0 , 0, 
  2534. X        "54;" },
  2535. X/* MUL 132 */   { INSTMUL , INSTMUL, 
  2536. X        "42;" },
  2537. X/* NEG 133 */   { ADDR , DIRECT, 
  2538. X        "30;[1=];" },
  2539. X/* NEG 134 */   { INDEXLEN , INDEX1, 
  2540. X        "60;[1=];" },
  2541. X/* NEG 135 */   { INDEXLEN , INDEX0, 
  2542. X        "70;" },
  2543. X/* NEGA 136 */   { 0 , 0, 
  2544. X        "40;" },
  2545. X/* NEGX 137 */   { 0 , 0, 
  2546. X        "50;" },
  2547. X/* NOP 138 */   { 0 , 0, 
  2548. X        "9d;" },
  2549. X/* ORA 139 */   { ADDR , DIRECT, 
  2550. X        "BA;[1=];" },
  2551. X/* ORA 140 */   { ADDR , EXTENDED, 
  2552. X        "CA;[1=]x" },
  2553. X/* ORA 141 */   { 0 , 0, 
  2554. X        "AA;[1=];" },
  2555. X/* ORA 142 */   { INDEXLEN , INDEX2, 
  2556. X        "DA;[1=]x" },
  2557. X/* ORA 143 */   { INDEXLEN , INDEX1, 
  2558. X        "EA;[1=];" },
  2559. X/* ORA 144 */   { INDEXLEN , INDEX0, 
  2560. X        "FA;" },
  2561. X/* ROL 145 */   { ADDR , DIRECT, 
  2562. X        "39;[1=];" },
  2563. X/* ROL 146 */   { INDEXLEN , INDEX1, 
  2564. X        "69;[1=];" },
  2565. X/* ROL 147 */   { INDEXLEN , INDEX0, 
  2566. X        "79;" },
  2567. X/* ROLA 148 */   { 0 , 0, 
  2568. X        "49;" },
  2569. X/* ROLX 149 */   { 0 , 0, 
  2570. X        "59;" },
  2571. X/* ROR 150 */   { ADDR , DIRECT, 
  2572. X        "36;[1=];" },
  2573. X/* ROR 151 */   { INDEXLEN , INDEX1, 
  2574. X        "66;[1=];" },
  2575. X/* ROR 152 */   { INDEXLEN , INDEX0, 
  2576. X        "76;" },
  2577. X/* RORA 153 */   { 0 , 0, 
  2578. X        "46;" },
  2579. X/* RORX 154 */   { 0 , 0, 
  2580. X        "56;" },
  2581. X/* RSP 155 */   { 0 , 0, 
  2582. X        "9c;" },
  2583. X/* RTI 156 */   { 0 , 0, 
  2584. X        "80;" },
  2585. X/* RTS 157 */   { 0 , 0, 
  2586. X        "81;" },
  2587. X/* SBC 158 */   { ADDR , DIRECT, 
  2588. X        "B2;[1=];" },
  2589. X/* SBC 159 */   { ADDR , EXTENDED, 
  2590. X        "C2;[1=]x" },
  2591. X/* SBC 160 */   { 0 , 0, 
  2592. X        "A2;[1=];" },
  2593. X/* SBC 161 */   { INDEXLEN , INDEX2, 
  2594. X        "D2;[1=]x" },
  2595. X/* SBC 162 */   { INDEXLEN , INDEX1, 
  2596. X        "E2;[1=];" },
  2597. X/* SBC 163 */   { INDEXLEN , INDEX0, 
  2598. X        "F2;" },
  2599. X/* SEC 164 */   { 0 , 0, 
  2600. X        "99;" },
  2601. X/* SEI 165 */   { 0 , 0, 
  2602. X        "9b;" },
  2603. X/* STA 166 */   { ADDR , DIRECT, 
  2604. X        "B7;[1=];" },
  2605. X/* STA 167 */   { ADDR , EXTENDED, 
  2606. X        "C7;[1=]x" },
  2607. X/* STA 168 */   { INDEXLEN , INDEX2, 
  2608. X        "D7;[1=]x" },
  2609. X/* STA 169 */   { INDEXLEN , INDEX1, 
  2610. X        "E7;[1=];" },
  2611. X/* STA 170 */   { INDEXLEN , INDEX0, 
  2612. X        "F7;" },
  2613. X/* STOP 171 */   { INSTSTWA , INSTSTWA, 
  2614. X        "8e;" },
  2615. X/* STX 172 */   { ADDR , DIRECT, 
  2616. X        "BF;[1=];" },
  2617. X/* STX 173 */   { ADDR , EXTENDED, 
  2618. X        "CF;[1=]x" },
  2619. X/* STX 174 */   { INDEXLEN , INDEX2, 
  2620. X        "DF;[1=]x" },
  2621. X/* STX 175 */   { INDEXLEN , INDEX1, 
  2622. X        "EF;[1=];" },
  2623. X/* STX 176 */   { INDEXLEN , INDEX0, 
  2624. X        "FF;" },
  2625. X/* SUB 177 */   { ADDR , DIRECT, 
  2626. X        "B0;[1=];" },
  2627. X/* SUB 178 */   { ADDR , EXTENDED, 
  2628. X        "C0;[1=]x" },
  2629. X/* SUB 179 */   { 0 , 0, 
  2630. X        "A0;[1=];" },
  2631. X/* SUB 180 */   { INDEXLEN , INDEX2, 
  2632. X        "D0;[1=]x" },
  2633. X/* SUB 181 */   { INDEXLEN , INDEX1, 
  2634. X        "E0;[1=];" },
  2635. X/* SUB 182 */   { INDEXLEN , INDEX0, 
  2636. X        "F0;" },
  2637. X/* SWI 183 */   { 0 , 0, 
  2638. X        "83;" },
  2639. X/* TAX 184 */   { 0 , 0, 
  2640. X        "97;" },
  2641. X/* TST 185 */   { ADDR , DIRECT, 
  2642. X        "3D;[1=];" },
  2643. X/* TST 186 */   { INDEXLEN , INDEX1, 
  2644. X        "6D;[1=];" },
  2645. X/* TST 187 */   { INDEXLEN , INDEX0, 
  2646. X        "7D;" },
  2647. X/* TSTA 188 */   { 0 , 0, 
  2648. X        "4D;" },
  2649. X/* TSTX 189 */   { 0 , 0, 
  2650. X        "5D;" },
  2651. X/* TXA 190 */   { 0 , 0, 
  2652. X        "9f;" },
  2653. X/* WAIT 191 */   { INSTSTWA , INSTSTWA, 
  2654. X        "8f;" },
  2655. X    { 0,0,""} };
  2656. X/* end fraptabdef.c */
  2657. SHAR_EOF
  2658. true || echo 'restore of as6805.y failed'
  2659. fi
  2660. exit 0
  2661.