home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / sys / amiga / programm / 16135 < prev    next >
Encoding:
Text File  |  1992-11-20  |  35.7 KB  |  2,902 lines

  1. Nntp-Posting-Host: sognsvann.ifi.uio.no
  2. Newsgroups: comp.sys.amiga.programmer
  3. Path: sparky!uunet!mcsun!sunic!aun.uninett.no!nuug!ifi.uio.no!mortena
  4. From: mortena@ifi.uio.no (Morten Amundsen)
  5. Subject: 68000 Disassembler
  6. Message-ID: <1992Nov20.143625.17313@ifi.uio.no>
  7. Sender: mortena@ifi.uio.no (Morten Amundsen)
  8. Organization: Dept. of Informatics, University of Oslo, Norway
  9. Date: Fri, 20 Nov 1992 14:36:25 GMT
  10. Lines: 2889
  11. Originator: mortena@sognsvann.ifi.uio.no
  12.  
  13.  
  14.  
  15.  A 68000 disassembler for those who want it...
  16.  Made in AsmOne
  17.  
  18. ;-------------------------------------------------------------------------
  19. ; Disassembler by Morten Amundsen (mortena@ifi.uio.no)
  20. ;-------------------------------------------------------------------------
  21.  
  22.     section    Program,code
  23.  
  24. ;-- Macros ---------------------------------------------------------------
  25.  
  26. GETWORD:    MACRO
  27.         moveq    #0,d0
  28.         move.w    (a6)+,d0
  29.         ENDM
  30.  
  31. ;-------------------------------------------------------------------------
  32.  
  33. GETLONG:    MACRO
  34.         move.l    (a6)+,d0
  35.         ENDM
  36.  
  37. ;-------------------------------------------------------------------------
  38.  
  39. FILL:        MACRO
  40.         lea    \1,a0
  41. LOOP\@1:    move.b    (a0)+,(a5)+
  42.         bne.s    LOOP\@1
  43.         lea    -1(a5),a5
  44.         ENDM
  45.  
  46. ;-------------------------------------------------------------------------
  47.  
  48. CHAR:        MACRO
  49.         move.b    #\1,(a5)+
  50.         ENDM
  51.  
  52. ;-------------------------------------------------------------------------
  53.  
  54. SOURCE:        MACRO
  55.         move.w    CODE,d0
  56.         move.w    d0,d1
  57.         and.w    #%0000000000111000,d0    ; Mode
  58.         lsr.w    #3,d0
  59.         and.w    #%0000000000000111,d1    ; Register
  60.         bsr.l    MODEREGISTER
  61.         ENDM
  62.  
  63. ;-------------------------------------------------------------------------
  64.  
  65. DESTINATION:    MACRO
  66.         move.w    CODE,d0
  67.         move.w    d0,d1
  68.         and.w    #%0000000111000000,d0    ; Mode
  69.         lsr.w    #6,d0
  70.         and.w    #%0000111000000000,d1    ; Register
  71.         rol.w    #7,d1
  72.         bsr.l    MODEREGISTER
  73.         ENDM
  74.  
  75. ;-------------------------------------------------------------------------
  76.  
  77. DATAREG:    MACRO
  78.         lea    DATAS,a0
  79.         lsl.w    #1,d1
  80.         lea    (a0,d1.w),a0
  81.         move.b    (a0)+,(a5)+
  82.         move.b    (a0),(a5)+
  83.         ENDM
  84.  
  85. ;-------------------------------------------------------------------------
  86.  
  87. ADDRESSREG:    MACRO
  88.         lea    ADDS,a0
  89.         lsl.w    #1,d1
  90.         lea    (a0,d1.w),a0
  91.         move.b    (a0)+,(a5)+
  92.         move.b    (a0),(a5)+
  93.         ENDM
  94.  
  95. ;-- Library offsets ------------------------------------------------------
  96.  
  97. ;-------------------------------------------------------------------------
  98.  
  99. NIL:        equ    $00
  100. TAB:        equ    $09
  101. LF:        equ    $0a
  102. SPC:        equ    $20
  103.  
  104. ;-------------------------------------------------------------------------
  105.  
  106. S:
  107.     movem.l    d0-d7/a0-a6,-(a7)
  108.  
  109.     move.l    POINTER,a6
  110.     bclr    #0,a6
  111.  
  112.     clr.w    COUNTER
  113. MAINLOOP:
  114.     bsr.s    CLRLINE
  115.     lea    LINE,a5
  116.  
  117.     move.l    a6,d0
  118.     bsr.l    LONG2TEXT
  119.     CHAR    " "
  120.     CHAR    ":"
  121.     CHAR    TAB
  122.  
  123.     GETWORD
  124.     
  125.     move.w    d0,CODE
  126.     and.w    #$f000,d0
  127.     rol.w    #6,d0
  128.  
  129.     lea    GROUPS,a0
  130.     lea    (a0,d0.w),a0
  131.     move.l    (a0),a0
  132.     jsr    (a0)
  133.  
  134.     lea    LINE,a0
  135.     move.l    BUFPTR,a1
  136. BUFLOOP:
  137.     move.b    (a0)+,(a1)+
  138.     bne.s    BUFLOOP
  139.  
  140.     lea    -1(a1),a1
  141.     move.l    a1,BUFPTR    
  142.  
  143.     addq.w    #1,COUNTER
  144.     cmp.w    #256,COUNTER
  145.     bne.s    MAINLOOP
  146.  
  147. EXIT:
  148.     movem.l    (a7)+,d0-d7/a0-a6
  149.     move.l    BUFPTR,a0
  150.     moveq    #0,d0
  151.     rts
  152.  
  153. COUNTER:    dc.w    0
  154.  
  155. ;-------------------------------------------------------------------------
  156.  
  157. CLRLINE:
  158.     lea    LINE,a0
  159.     move.w    #79,d7
  160. CLRLOOP:
  161.     clr.b    (a0)+
  162.     dbf    d7,CLRLOOP
  163.     rts
  164.  
  165. ;-------------------------------------------------------------------------
  166.  
  167. NONE:
  168.     cmp.b    #TAB,-(a5)
  169.     bne.s    NONE
  170.  
  171.     lea    1(a5),a5
  172.  
  173.     lea    (a5),a0
  174.     move.w    #39,d7
  175. SAFETY:    clr.b    (a0)+
  176.     dbf    d7,SAFETY
  177.  
  178.     FILL    DECLARE
  179.     CHAR    TAB
  180.     
  181.     move.w    CODE,d0
  182.     bsr.w    WORD2TEXT
  183.  
  184.     CHAR    LF
  185.     rts
  186.  
  187. ;=========================================================================
  188.  
  189. BMMI:
  190.     move.w    CODE,d0
  191.  
  192.     and.w    #%0000111100000000,d0        ; ori
  193.     beq.w    ORII
  194.     cmp.w    #%0000100000000000,d0
  195.     beq.w    BITSS
  196.     cmp.w    #%0000001000000000,d0
  197.     beq.w    ANDII
  198.     cmp.w    #%0000010000000000,d0
  199.     beq.w    SUBII
  200.     cmp.w    #%0000011000000000,d0
  201.     beq.w    ADDII
  202.     cmp.w    #%0000101000000000,d0
  203.     beq.w    EORII
  204.     cmp.w    #%0000110000000000,d0
  205.     beq.w    CMPII
  206.     cmp.w    #%0000111000000000,d0
  207.     beq.w    MOVESI
  208.  
  209.     btst    #8,d0
  210.     bne.s    BITSD
  211.  
  212.     bra.w    NONE
  213.  
  214. ;-------------------------------------------------------------------------
  215.  
  216. BITSD:
  217.     move.w    CODE,d0
  218.     and.w    #%0000000000111000,d0
  219.     cmp.w    #%0000000000001000,d0
  220.     beq.w    MOVEPI
  221.  
  222.     move.w    CODE,d0
  223.     and.w    #%0000000011000000,d0
  224.     lsr.w    #4,d0
  225.  
  226.     lea    BTST,a0
  227.     lea    (a0,d0.w),a0
  228.  
  229.     move.b    (a0)+,(a5)+
  230.     move.b    (a0)+,(a5)+
  231.     move.b    (a0)+,(a5)+
  232.     move.b    (a0),(a5)+
  233.  
  234.     CHAR    TAB
  235.  
  236.     move.w    CODE,d0
  237.     and.w    #%0000111000000000,d0
  238.     rol.w    #7,d0
  239.     move.w    d0,d1
  240.     DATAREG
  241.  
  242.     CHAR    ","
  243.  
  244.     move.w    CODE,d0
  245.     SOURCE
  246.  
  247.     CHAR    LF
  248.     rts    
  249.  
  250. ;-------------------------------------------------------------------------
  251.  
  252. BITSS:
  253.     move.w    CODE,d0
  254.     and.w    #%0000000011000000,d0
  255.     lsr.w    #4,d0
  256.  
  257.     lea    BTST,a0
  258.     lea    (a0,d0.w),a0
  259.  
  260.     move.b    (a0)+,(a5)+
  261.     move.b    (a0)+,(a5)+
  262.     move.b    (a0)+,(a5)+
  263.     move.b    (a0),(a5)+
  264.  
  265.     CHAR    TAB
  266.  
  267.     CHAR    "#"
  268.  
  269.     GETWORD
  270.     bsr.l    WORD2TEXT
  271.  
  272.     CHAR    ","
  273.  
  274.     move.w    CODE,d0
  275.     SOURCE
  276.  
  277.     CHAR    LF
  278.     rts
  279.  
  280.  
  281. ;-------------------------------------------------------------------------
  282.  
  283. MOVEPI:
  284.     FILL    MOVEP
  285.  
  286.     move.w    CODE,d0
  287.     bsr.w    GETSIZE
  288.  
  289.     CHAR    TAB
  290.  
  291.     move.w    CODE,d0
  292.     btst    #7,d0
  293.     beq.s    MPM2R
  294.  
  295. MPR2M:
  296.     move.w    d0,d1
  297.     and.w    #%0000111000000000,d1
  298.     rol.w    #7,d1
  299.     DATAREG
  300.  
  301.     CHAR    ","
  302.  
  303.     GETWORD
  304.     bsr.w    WORD2TEXT
  305.  
  306.     CHAR    "("
  307.  
  308.     move.w    CODE,d0
  309.     move.w    d0,d1
  310.     and.w    #%0000000000000111,d1
  311.     ADDRESSREG
  312.  
  313.     CHAR    ")"
  314.     CHAR    LF
  315.     rts
  316.  
  317. MPM2R:
  318.     GETWORD
  319.     bsr.w    WORD2TEXT
  320.  
  321.     CHAR    "("
  322.  
  323.     move.w    CODE,d0
  324.     move.w    d0,d1
  325.     and.w    #%0000000000000111,d1
  326.     ADDRESSREG
  327.  
  328.     CHAR    ")"
  329.  
  330.     CHAR    ","
  331.  
  332.     move.w    d0,d1
  333.     and.w    #%0000111000000000,d1
  334.     rol.w    #7,d1
  335.     DATAREG
  336.  
  337.     CHAR    LF
  338.     rts
  339.  
  340. ;-------------------------------------------------------------------------
  341.  
  342. ORII:                        ; ORI
  343.     FILL    OR
  344.     bra.s    IMMCAT0
  345.  
  346. ANDII:
  347.     FILL    AND
  348.     bra.s    IMMCAT0
  349.  
  350. SUBII:
  351.     FILL    SUB
  352.     bra.s    IMMCAT0
  353.  
  354. ADDII:
  355.     FILL    ADD
  356.     bra.s    IMMCAT0
  357.  
  358. EORII:
  359.     FILL    EOR
  360.     bra.s    IMMCAT0
  361.  
  362. CMPII:
  363.     FILL    CMP
  364.     bra.s    IMMCAT0
  365.  
  366. MOVESI:
  367.     FILL    MOVES
  368.     bra.w    IMMCAT0
  369.  
  370. ;-----------------------------------------------------------------------
  371.  
  372. IMMCAT0:
  373.     move.w    CODE,d0
  374.     move.w    d0,d1
  375.     and.w    #%0000000011000000,d1
  376.     cmp.w    #%0000000011000000,d1        ; Hmmm...
  377.     beq.w    NONE
  378.  
  379.     bsr.w    GETSIZE
  380.  
  381.     CHAR    TAB
  382.     
  383.     lsr.w    #1,d1
  384.  
  385.     CHAR    "#"
  386.     bsr.s    IMMVALUE
  387.  
  388.     CHAR    ","
  389.  
  390.     moveq    #0,d0
  391.     move.w    CODE,d0
  392.  
  393.     SOURCE
  394.  
  395.     CHAR    LF
  396.     rts
  397.  
  398. ;-------------------------------------------------------------------------
  399.     
  400. IMMVALUE:
  401.     cmp.w    #2,d1
  402.     beq.s    VALLONG
  403.  
  404. VALWORD:
  405.     GETWORD
  406.     bsr.l    WORD2TEXT
  407.     rts
  408.  
  409. VALLONG:
  410.     GETLONG
  411.     bsr.l    LONG2TEXT
  412.     rts
  413.  
  414. ;=========================================================================
  415.  
  416. MOVEI:                    ; MOVE.B/MOVE.W/MOVE.L
  417.     FILL    MOVE
  418.  
  419.     lsr.w    #2,d0
  420.  
  421.     cmp.w    #1,d0
  422.     beq.s    MOVEB
  423.     cmp.w    #2,d0
  424.     beq.s    MOVEL
  425.  
  426. MOVEW:
  427.     FILL    WORD
  428.     clr.w    SIZE
  429.     bra.s    MOVEMODES
  430.  
  431. MOVEB:
  432.     FILL    BYTE
  433.     clr.w    SIZE
  434.     bra.s    MOVEMODES
  435.  
  436. MOVEL:
  437.     FILL    LONG
  438.     move.w    #1,SIZE
  439.     
  440. MOVEMODES:
  441.     CHAR    TAB
  442.  
  443.     clr.w    ISC
  444.     SOURCE
  445.  
  446.     CHAR    ","
  447.  
  448.     move.w    #1,ISC
  449.     DESTINATION
  450.  
  451.     CHAR    LF
  452.     rts
  453.  
  454. ;=========================================================================
  455.  
  456. BCCI:                        ; Bcc
  457.     CHAR    "b"
  458.  
  459.     move.w    CODE,d0
  460.     and.w    #%0000111100000000,d0
  461.     lsr.w    #7,d0
  462.  
  463.     lea    BRANCHES,a0
  464.     lea    (a0,d0.w),a0
  465.  
  466.     move.b    (a0)+,(a5)+
  467.     move.b    (a0),(a5)+
  468.  
  469.     CHAR    "."
  470.  
  471.     move.w    CODE,d0
  472.     and.w    #$00ff,d0
  473.     beq.s    DIS16
  474.  
  475. DIS8:
  476.     CHAR    "s"
  477.     CHAR    TAB
  478.     
  479.     ext.w    d0
  480.     ext.l    d0
  481.     add.l    a6,d0
  482.  
  483.     bsr.w    LONG2TEXT
  484.  
  485.     CHAR    LF
  486.     rts
  487.  
  488. DIS16:
  489.     CHAR    "l"
  490.     CHAR    TAB
  491.     
  492.     GETWORD
  493.  
  494.     ext.l    d0
  495.     add.l    a6,d0
  496.     subq.l    #$2,d0
  497.  
  498.     bsr.w    LONG2TEXT    
  499.  
  500.     CHAR    LF
  501.     rts
  502.  
  503. ;=========================================================================
  504.  
  505. MOVEQI:                        ; MOVEQ
  506.     FILL    MOVEQ
  507.  
  508.     CHAR    TAB
  509.  
  510.     CHAR    "#"
  511.  
  512.     move.w    CODE,d0
  513.     and.w    #$00ff,d0
  514.     bsr.w    BYTE2TEXT
  515.  
  516.     CHAR    ","
  517.  
  518.     move.w    CODE,d0
  519.     and.w    #%0000111000000000,d0
  520.     lsr.w    #8,d0
  521.     move.w    d0,d1
  522.  
  523.     DATAREG
  524.  
  525.     CHAR    LF
  526.     rts
  527.  
  528. ;=========================================================================
  529.  
  530. SHIFTI:                        ; ROR/ROL/LSL/LSR/etc
  531.     move.w    CODE,d0                ; (All shifting instr.)
  532.     and.w    #%0000000011000000,d0
  533.     cmp.w    #%0000000011000000,d0        ; Memory-form or
  534.     beq.w    MEMFORM                ; Register-form shifting...
  535.  
  536. REGFORM:
  537.     move.w    CODE,d0
  538.     move.w    d0,d1
  539.     and.w    #%0000000000011000,d0
  540.     and.w    #%0000000100000000,d1
  541.     lsr.w    #6,d1
  542.     or.w    d1,d0
  543.  
  544.     lea    SHIFTS,a0
  545.     move.l    (a0,d0.w),a0
  546.  
  547.     FILL    (a0)
  548.  
  549.     move.w    CODE,d0
  550.     bsr.w    GETSIZE
  551.  
  552.     CHAR    TAB
  553.  
  554.     btst    #5,d0
  555.     beq.s    IDATA
  556.  
  557. REGNUM:
  558.     and.w    #%0000111000000000,d0
  559.     rol.w    #7,d0
  560.     move.w    d0,d1
  561.     DATAREG
  562.     
  563.     bra.s    SHFTD        
  564.  
  565. IDATA:
  566.     CHAR    "#"
  567.  
  568.     and.w    #%0000111000000000,d0
  569.     rol.w    #7,d0
  570.     bsr.w    WORD2TEXT    
  571.  
  572. SHFTD:
  573.     CHAR    ","
  574.  
  575.     move.w    CODE,d0
  576.     and.w    #%0000000000000111,d0
  577.     move.w    d0,d1
  578.     DATAREG
  579.  
  580.     CHAR    LF
  581.     rts
  582.  
  583. ;-------------------------------------------------------------------------
  584.  
  585. MEMFORM:
  586.     move.w    CODE,d0
  587.     and.w    #%0000011100000000,d0
  588.     lsr.w    #6,d0
  589.  
  590.     lea    SHIFTS,a0
  591.     move.l    (a0,d0.w),a0
  592.  
  593.     FILL    (a0)
  594.     CHAR    "."
  595.     CHAR    "w"
  596.  
  597.     CHAR    TAB
  598.  
  599.     SOURCE
  600.  
  601.     CHAR    LF    
  602.     rts
  603.  
  604. ;=========================================================================
  605.  
  606. LINEAI:                        ; LINE_A
  607.     FILL    LINEA
  608.     bra.s    LINECOMP
  609.  
  610. LINEFI:                        ; LINE_F
  611.     FILL    LINEF
  612.  
  613. LINECOMP:
  614.     CHAR    TAB
  615.     CHAR    "#"
  616.  
  617.     move.w    CODE,d0
  618.     and.w    #$0fff,d0
  619.  
  620.     bsr.w    WORD2TEXT
  621.  
  622.     CHAR    LF
  623.     rts
  624.  
  625. ;=========================================================================
  626.  
  627. ADDINS:
  628.     move.w    CODE,d0
  629.     and.w    #%0000000011000000,d0
  630.     cmp.w    #%0000000011000000,d0
  631.     beq.w    ADDAI
  632.  
  633.     move.w    CODE,d0
  634.     and.w    #%0000000100110000,d0
  635.     cmp.w    #%0000000100000000,d0
  636.     beq.w    ADDXI
  637.  
  638. ADDING:                            ; ADD
  639.     FILL    ADD
  640.  
  641.     move.w    CODE,d0
  642.     bsr.w    GETSIZE    
  643.  
  644.     CHAR    TAB
  645.  
  646.     btst    #8,d0
  647.     beq.s    ADDMEM2D
  648.  
  649. ADDD2MEM:
  650.     and.w    #%0000111000000000,d0
  651.     rol.w    #7,d0
  652.     move.w    d0,d1
  653.     DATAREG
  654.  
  655.     CHAR    ","
  656.  
  657.     move.w    CODE,d0
  658.     SOURCE
  659.  
  660.     CHAR    LF
  661.     rts
  662.  
  663. ADDMEM2D:
  664.     move.w    CODE,d0
  665.     SOURCE
  666.  
  667.     CHAR    ","
  668.  
  669.     move.w    CODE,d0
  670.     and.w    #%0000111000000000,d0
  671.     rol.w    #7,d0
  672.     move.w    d0,d1
  673.     DATAREG
  674.  
  675.     CHAR    LF
  676.     rts
  677.  
  678. ;--------------------------------------------------------------------------
  679.  
  680. ADDXI:                        ; ADDX
  681.     FILL    ADDX
  682.  
  683.     move.w    CODE,d0
  684.     bsr.w    GETSIZE
  685.  
  686.     CHAR    TAB
  687.  
  688.     btst    #3,d0
  689.     beq.s    DATAXA
  690.  
  691. ADDRX:
  692.     CHAR    "-"
  693.     CHAR    "("
  694.     and.w    #%0000000000000111,d0
  695.     move.w    d0,d1
  696.     ADDRESSREG
  697.     CHAR    ")"
  698.     
  699.     CHAR    ","
  700.  
  701.     CHAR    "-"
  702.     CHAR    "("
  703.     move.w    CODE,d0
  704.     and.w    #%0000111000000000,d0
  705.     rol.w    #7,d0
  706.     move.w    d0,d1
  707.     ADDRESSREG
  708.     CHAR    ")"
  709.  
  710.     CHAR    LF    
  711.     rts        
  712.  
  713. ;------------------------------------------------------------------------
  714.  
  715. DATAXA:
  716.     and.w    #%0000000000000111,d0
  717.     move.w    d0,d1
  718.     DATAREG
  719.  
  720.     CHAR    ","
  721.  
  722.     move.w    CODE,d0
  723.     and.w    #%0000111000000000,d0
  724.     rol.w    #7,d0
  725.     move.w    d0,d1
  726.     DATAREG
  727.  
  728.     CHAR    LF    
  729.     rts
  730.  
  731. ;--------------------------------------------------------------------------
  732.  
  733. ADDAI:                            ; ADDA
  734.     FILL    ADD
  735.  
  736.     CHAR    "."
  737.  
  738.     move.w    CODE,d0
  739.     btst    #8,d0
  740.     beq.s    ADDAW
  741.  
  742. ADDAL:
  743.     CHAR    "l"
  744.     bra.s    ADDAC
  745.  
  746. ADDAW:
  747.     CHAR    "w"
  748.  
  749. ADDAC:
  750.     CHAR    TAB
  751.  
  752.     SOURCE
  753.  
  754.     CHAR    ","
  755.  
  756.     move.w    CODE,d0
  757.     and.w    #%0000111000000000,d0
  758.     rol.w    #7,d0
  759.     move.w    d0,d1
  760.     ADDRESSREG
  761.  
  762.     CHAR    LF    
  763.     rts
  764.  
  765. ;=========================================================================
  766.  
  767. SUBINS:
  768.     move.w    CODE,d0
  769.     and.w    #%0000000011000000,d0
  770.     cmp.w    #%0000000011000000,d0
  771.     beq.w    SUBAI
  772.  
  773.     move.w    CODE,d0
  774.     and.w    #%0000000100110000,d0
  775.     cmp.w    #%0000000100000000,d0
  776.     beq.w    SUBXI
  777.  
  778. SUBING:                            ; SUB
  779.     FILL    SUB
  780.  
  781.     move.w    CODE,d0
  782.     bsr.w    GETSIZE    
  783.  
  784.     CHAR    TAB
  785.  
  786.     btst    #8,d0
  787.     beq.s    SUBMEM2D
  788.  
  789. SUBD2MEM:
  790.     and.w    #%0000111000000000,d0
  791.     rol.w    #7,d0
  792.     move.w    d0,d1
  793.     DATAREG
  794.  
  795.     CHAR    ","
  796.  
  797.     move.w    CODE,d0
  798.     SOURCE
  799.  
  800.     CHAR    LF
  801.     rts
  802.  
  803. SUBMEM2D:
  804.     move.w    CODE,d0
  805.     SOURCE
  806.  
  807.     CHAR    ","
  808.  
  809.     move.w    CODE,d0
  810.     and.w    #%0000111000000000,d0
  811.     rol.w    #7,d0
  812.     move.w    d0,d1
  813.     DATAREG
  814.  
  815.     CHAR    LF
  816.     rts
  817.  
  818. ;--------------------------------------------------------------------------
  819.  
  820. SUBXI:                            ; SUBX
  821.     FILL    SUBX
  822.  
  823.     move.w    CODE,d0
  824.     bsr.w    GETSIZE
  825.  
  826.     CHAR    TAB
  827.  
  828.     btst    #3,d0
  829.     beq.s    DATAXS
  830.  
  831. SUBAX:
  832.     CHAR    "-"
  833.     CHAR    "("
  834.     and.w    #%0000000000000111,d0
  835.     move.w    d0,d1
  836.     ADDRESSREG
  837.     CHAR    ")"
  838.     
  839.     CHAR    ","
  840.  
  841.     CHAR    "-"
  842.     CHAR    "("
  843.     move.w    CODE,d0
  844.     and.w    #%0000111000000000,d0
  845.     rol.w    #7,d0
  846.     move.w    d0,d1
  847.     ADDRESSREG
  848.     CHAR    ")"
  849.  
  850.     CHAR    LF    
  851.     rts        
  852.  
  853. ;------------------------------------------------------------------------
  854.  
  855. DATAXS:
  856.     and.w    #%0000000000000111,d0
  857.     move.w    d0,d1
  858.     DATAREG
  859.  
  860.     CHAR    ","
  861.  
  862.     move.w    CODE,d0
  863.     and.w    #%0000111000000000,d0
  864.     rol.w    #7,d0
  865.     move.w    d0,d1
  866.     DATAREG
  867.  
  868.     CHAR    LF    
  869.     rts
  870.  
  871. ;--------------------------------------------------------------------------
  872.  
  873. SUBAI:                            ; SUBA
  874.     FILL    SUB
  875.  
  876.     CHAR    "."
  877.  
  878.     move.w    CODE,d0
  879.     btst    #8,d0
  880.     beq.s    SUBAW
  881.  
  882. SUBAL:
  883.     CHAR    "l"
  884.     bra.s    SUBAC
  885.  
  886. SUBAW:
  887.     CHAR    "w"
  888.  
  889. SUBAC:
  890.     CHAR    TAB
  891.  
  892.     SOURCE
  893.  
  894.     CHAR    ","
  895.  
  896.     move.w    CODE,d0
  897.     and.w    #%0000111000000000,d0
  898.     rol.w    #7,d0
  899.     move.w    d0,d1
  900.     ADDRESSREG
  901.  
  902.     CHAR    LF    
  903.     rts
  904.  
  905. ;=========================================================================
  906.  
  907. ASSDB:                        ; ADDQ/SUBQ/Scc/DBcc
  908.  
  909.     move.w    CODE,d0
  910.     and.w    #%0000000011000000,d0
  911.     cmp.w    #%0000000011000000,d0
  912.     beq.s    SDBRANCH
  913.  
  914.     move.w    CODE,d0
  915.     btst    #8,d0
  916.     beq.s    ADDQI
  917.  
  918. SUBQI:                        ; SUBQ
  919.     FILL    SUBQ
  920.     bra.s    ADDSUBQ
  921.     
  922. ADDQI:
  923.     FILL    ADDQ                ; ADDQ
  924.  
  925. ADDSUBQ:
  926.     bsr.w    GETSIZE
  927.  
  928.     CHAR    TAB
  929.  
  930.     CHAR    "#"
  931.  
  932.     and.w    #%0000111000000000,d0
  933.     rol.w    #7,d0
  934.     bsr.w    BYTE2TEXT
  935.  
  936.     CHAR    ","
  937.  
  938.     move.w    CODE,d0
  939.     SOURCE
  940.  
  941.     CHAR    LF
  942.     rts
  943.  
  944. SDBRANCH:
  945.     move.w    CODE,d0
  946.     and.w    #%0000000000111000,d0
  947.     cmp.w    #%0000000000001000,d0
  948.     beq.s    DBCCI
  949.  
  950. SCCI:                            ; Scc
  951.     CHAR    "s"
  952.     bra.s    CBRA
  953.     
  954. DBCCI:                            ; DBcc
  955.     CHAR    "d"
  956.     CHAR    "b"
  957.  
  958. CBRA:
  959.     move.w    CODE,d0
  960.     and.w    #%0000111100000000,d0
  961.     cmp.w    #%0000000100000000,d0
  962.     bgt.s    JUMPB
  963.  
  964.     tst.w    d0
  965.     bne.s    BRAF
  966.  
  967.     CHAR    "t"
  968.     bra.s    DONEB
  969.         
  970. BRAF:
  971.     CHAR    "f"
  972.     bra.s    DONEB
  973.     
  974. JUMPB:
  975.     lsr.w    #7,d0
  976.     lea    BRANCHES,a0
  977.     lea    (a0,d0.w),a0
  978.  
  979.     move.b    (a0)+,(a5)+
  980.     move.b    (a0),(a5)+
  981.  
  982. DONEB:
  983.     CHAR    TAB
  984.  
  985.     move.w    CODE,d0
  986.     and.w    #%0000000000111000,d0
  987.     cmp.w    #%0000000000001000,d0
  988.     beq.s    DBCCI2
  989.  
  990. SCCI2:
  991.     move.w    CODE,d0
  992.     SOURCE
  993.  
  994.     CHAR    LF
  995.     rts
  996.     
  997. DBCCI2:
  998.     move.w    CODE,d0
  999.     and.w    #%0000000000000111,d0
  1000.     move.w    d0,d1
  1001.     DATAREG
  1002.  
  1003.     CHAR    ","
  1004.  
  1005.     GETWORD
  1006.     add.l    a6,d0
  1007.     subq.l    #$2,d0
  1008.     bsr.w    LONG2TEXT
  1009.     
  1010.     CHAR    LF
  1011.     rts
  1012.  
  1013. ;=========================================================================
  1014.  
  1015. CMPEOR:
  1016.     move.w    CODE,d0
  1017.     and.w    #%0000000011000000,d0
  1018.     cmp.w    #%0000000011000000,d0
  1019.     beq.w    CMPAI
  1020.  
  1021.     move.w    CODE,d0
  1022.     btst    #8,d0
  1023.     beq.w    CMPINS
  1024.  
  1025.     and.w    #%0000000000111000,d0
  1026.     cmp.w    #%0000000000001000,d0
  1027.     beq.s    CMPMI
  1028.  
  1029. EORINS:                            ; EOR
  1030.     FILL    EOR
  1031.  
  1032.     move.w    CODE,d0
  1033.     bsr.w    GETSIZE
  1034.  
  1035.     CHAR    TAB
  1036.  
  1037.     SOURCE
  1038.  
  1039.     CHAR    ","
  1040.  
  1041.     move.w    CODE,d0
  1042.     and.w    #%0000111000000000,d0
  1043.     rol.w    #7,d0
  1044.     move.w    d0,d1
  1045.     DATAREG
  1046.  
  1047.     CHAR    LF
  1048.     rts
  1049.  
  1050. ;----------------------------------------------------------------------
  1051.  
  1052. CMPMI:                            ; CMPM
  1053.     FILL    CMPM
  1054.  
  1055.     move.w    CODE,d0
  1056.     bsr.w    GETSIZE
  1057.  
  1058.     CHAR    TAB
  1059.  
  1060.     CHAR    "("
  1061.  
  1062.     and.w    #%0000000000000111,d0
  1063.     move.w    d0,d1
  1064.     ADDRESSREG
  1065.  
  1066.     CHAR    ")"
  1067.     CHAR    "+"
  1068.  
  1069.     CHAR    ","
  1070.  
  1071.     CHAR    "("
  1072.  
  1073.     move.w    CODE,d0
  1074.     and.w    #%0000111000000000,d0
  1075.     rol.w    #7,d0
  1076.     move.w    d0,d1
  1077.     ADDRESSREG
  1078.  
  1079.     CHAR    ")"
  1080.     CHAR    "+"
  1081.  
  1082.     CHAR    LF    
  1083.     rts
  1084.  
  1085. ;-------------------------------------------------------------------------
  1086.  
  1087. CMPAI:                            ; CMPA
  1088.     FILL    CMP
  1089.  
  1090.     move.w    CODE,d0
  1091.  
  1092.     CHAR    "."
  1093.     CHAR    "w"
  1094.  
  1095.     clr.w    SIZE
  1096.  
  1097.     btst    #8,d0
  1098.     beq.s    CMPAOK
  1099.  
  1100.     move.w    #1,SIZE
  1101.  
  1102.     lea    -1(a5),a5
  1103.     CHAR    "l"
  1104.  
  1105. CMPAOK:    
  1106.     CHAR    TAB
  1107.  
  1108.     clr.w    ISC
  1109.     SOURCE
  1110.  
  1111.     CHAR    ","
  1112.  
  1113.     move.w    CODE,d0
  1114.     and.w    #%0000111000000000,d0
  1115.     rol.w    #7,d0
  1116.     move.w    d0,d1
  1117.     ADDRESSREG    
  1118.  
  1119.     CHAR    LF
  1120.     rts
  1121.  
  1122. ;-------------------------------------------------------------------------
  1123.  
  1124. CMPINS:                            ; CMP
  1125.     FILL    CMP
  1126.  
  1127.     move.w    CODE,d0
  1128.     bsr.w    GETSIZE
  1129.         
  1130.     CHAR    TAB
  1131.  
  1132.     SOURCE
  1133.  
  1134.     CHAR    ","
  1135.  
  1136.     move.w    CODE,d0
  1137.     and.w    #%0000111000000000,d0
  1138.     rol.w    #7,d0
  1139.     move.w    d0,d1
  1140.     DATAREG        
  1141.  
  1142.     CHAR    LF
  1143.     rts    
  1144.  
  1145.  
  1146. ;=========================================================================
  1147.  
  1148. ORDIS:
  1149.     move.w    CODE,d0
  1150.     and.w    #%0000000011000000,d0
  1151.     cmp.w    #%0000000011000000,d0
  1152.     beq.w    DIVI
  1153.  
  1154.     move.w    CODE,d0
  1155.     and.w    #%0000000111110000,d0
  1156.     cmp.w    #%0000000100000000,d0
  1157.     beq.w    SBCDI
  1158.  
  1159. ORI:                            ; OR
  1160.     FILL    OR
  1161.  
  1162.     move.w    CODE,d0
  1163.     bsr.w    GETSIZE
  1164.  
  1165.     CHAR    TAB
  1166.  
  1167.     move.w    CODE,d0
  1168.     btst    #8,d0
  1169.     beq.s    ORMEM2D
  1170.  
  1171. ORD2MEM:
  1172.     and.w    #%0000111000000000,d0
  1173.     rol.w    #7,d0
  1174.     move.w    d0,d1
  1175.     DATAREG
  1176.  
  1177.     CHAR    ","
  1178.  
  1179.     move.w    CODE,d0
  1180.     SOURCE
  1181.  
  1182.     CHAR    LF
  1183.     rts
  1184.  
  1185. ORMEM2D:
  1186.     SOURCE
  1187.  
  1188.     CHAR    ","
  1189.  
  1190.     move.w    CODE,d0
  1191.     and.w    #%0000111000000000,d0
  1192.     rol.w    #7,d0
  1193.     move.w    d0,d1
  1194.     DATAREG
  1195.  
  1196.     CHAR    LF
  1197.     rts
  1198.  
  1199. ;-------------------------------------------------------------------------
  1200.  
  1201. SBCDI:                            ; SBCD
  1202.     FILL    SBCD
  1203.  
  1204.     CHAR    TAB
  1205.  
  1206.     move.w    CODE,d0
  1207.     btst    #3,d0
  1208.     beq.s    SBCDDAT
  1209.  
  1210. SBCDADD:
  1211.     CHAR    "-"
  1212.     CHAR    "("
  1213.  
  1214.     and.w    #%0000000000000111,d0
  1215.     move.w    d0,d1
  1216.     ADDRESSREG
  1217.  
  1218.     CHAR    ")"
  1219.     CHAR    ","
  1220.     CHAR    "-"
  1221.     CHAR    "("
  1222.  
  1223.     move.w    CODE,d1
  1224.     and.w    #%0000111000000000,d1
  1225.     rol.w    #7,d1
  1226.     ADDRESSREG
  1227.  
  1228.     CHAR    ")"
  1229.     
  1230.     CHAR    LF
  1231.     rts
  1232.  
  1233. SBCDDAT:
  1234.     and.w    #%0000000000000111,d0
  1235.     move.w    d0,d1
  1236.     DATAREG
  1237.  
  1238.     CHAR    ","
  1239.  
  1240.     move.w    CODE,d1
  1241.     and.w    #%0000111000000000,d1
  1242.     rol.w    #7,d1
  1243.     DATAREG
  1244.     
  1245.     CHAR    LF
  1246.     rts
  1247.  
  1248. ;------------------------------------------------------------------------
  1249.  
  1250. DIVI:                        ; DIVS/DIVU
  1251.     FILL    DIV
  1252.  
  1253.     CHAR    "u"
  1254.  
  1255.     move.w    CODE,d0
  1256.     btst    #8,d0
  1257.     beq.s    OKDIV
  1258.  
  1259.     lea    -1(a5),a5
  1260.     CHAR    "s"
  1261.  
  1262. OKDIV:
  1263.     CHAR    TAB
  1264.  
  1265.     SOURCE
  1266.     CHAR    ","
  1267.  
  1268.     move.w    CODE,d0
  1269.     and.w    #%0000111000000000,d0
  1270.     rol.w    #7,d0
  1271.     move.w    d0,d1
  1272.     DATAREG
  1273.  
  1274.     CHAR    LF
  1275.     rts
  1276.  
  1277.  
  1278. ;=========================================================================
  1279.  
  1280. AMAE:
  1281.     move.w    CODE,d0
  1282.     and.w    #%0000000011000000,d0
  1283.     cmp.w    #%0000000011000000,d0
  1284.     beq.w    MULI
  1285.  
  1286.     move.w    CODE,d0
  1287.     and.w    #%0000000011110000,d0
  1288.     beq.w    ABCDI
  1289.  
  1290.     move.w    CODE,d0
  1291.     and.w    #%0000000111111000,d0
  1292.     cmp.w    #%0000000101000000,d0
  1293.     beq.w    EXGDD
  1294.     cmp.w    #%0000000101001000,d0
  1295.     beq.w    EXGAA
  1296.     cmp.w    #%0000000110000000,d0
  1297.     beq.w    EXGDA
  1298.  
  1299. ANDINS:
  1300.     FILL    AND
  1301.  
  1302.     move.w    CODE,d0
  1303.     bsr.w    GETSIZE
  1304.  
  1305.     CHAR    TAB
  1306.  
  1307.     btst    #8,d0
  1308.     beq.s    ANDMEM2D
  1309.  
  1310. ANDD2MEM:
  1311.     move.w    CODE,d0
  1312.     and.w    #%0000111000000000,d0
  1313.     rol.w    #7,d0
  1314.     move.w    d0,d1
  1315.     DATAREG
  1316.  
  1317.     CHAR    ","
  1318.  
  1319.     move.w    CODE,d0
  1320.     SOURCE
  1321.  
  1322.     CHAR    LF
  1323.     rts
  1324.  
  1325. ANDMEM2D:
  1326.     move.w    CODE,d0
  1327.     SOURCE
  1328.  
  1329.     CHAR    ","
  1330.  
  1331.     move.w    CODE,d0
  1332.     and.w    #%0000111000000000,d0
  1333.     rol.w    #7,d0
  1334.     move.w    d0,d1
  1335.     DATAREG
  1336.  
  1337.     CHAR    LF
  1338.     rts
  1339.  
  1340. ;--------------------------------------------------------------------------
  1341.  
  1342. EXGDD:
  1343.     FILL    EXG
  1344.     CHAR    TAB
  1345.  
  1346.     move.w    CODE,d0
  1347.     and.w    #%0000000000000111,d0
  1348.     move.w    d0,d1
  1349.     DATAREG
  1350.  
  1351.     CHAR    ","
  1352.  
  1353.     move.w    CODE,d0
  1354.     and.w    #%0000111000000000,d0
  1355.     rol.w    #7,d0
  1356.     move.w    d0,d1
  1357.     DATAREG
  1358.     
  1359.     CHAR    LF
  1360.     rts
  1361.  
  1362. ;--------------------------------------------------------------------------
  1363.  
  1364. EXGAA:
  1365.     FILL    EXG
  1366.     CHAR    TAB
  1367.  
  1368.     move.w    CODE,d0
  1369.     and.w    #%0000000000000111,d0
  1370.     move.w    d0,d1
  1371.     ADDRESSREG
  1372.  
  1373.     CHAR    ","
  1374.  
  1375.     move.w    CODE,d0
  1376.     and.w    #%0000111000000000,d0
  1377.     rol.w    #7,d0
  1378.     move.w    d0,d1
  1379.     ADDRESSREG
  1380.     
  1381.     CHAR    LF
  1382.     rts
  1383.  
  1384. ;--------------------------------------------------------------------------
  1385.  
  1386. EXGDA:
  1387.     FILL    EXG
  1388.     move.w    CODE,d0
  1389.     and.w    #%0000000000000111,d0
  1390.     move.w    d0,d1
  1391.     DATAREG
  1392.  
  1393.     CHAR    ","
  1394.  
  1395.     move.w    CODE,d0
  1396.     and.w    #%0000111000000000,d0
  1397.     rol.w    #7,d0
  1398.     move.w    d0,d1
  1399.     ADDRESSREG
  1400.     
  1401.     CHAR    LF
  1402.     rts
  1403.  
  1404. ;--------------------------------------------------------------------------
  1405.  
  1406. ABCDI:
  1407.     FILL    ABCD
  1408.  
  1409.     CHAR    TAB
  1410.  
  1411.     move.w    CODE,d0
  1412.     btst    #3,d0
  1413.     beq.s    ABCDDAT
  1414.  
  1415. ABCDADD:
  1416.     CHAR    "-"
  1417.     CHAR    "("
  1418.  
  1419.     and.w    #%0000000000000111,d0
  1420.     move.w    d0,d1
  1421.     ADDRESSREG
  1422.  
  1423.     CHAR    ")"
  1424.     CHAR    ","
  1425.     CHAR    "-"
  1426.     CHAR    "("
  1427.  
  1428.     move.w    CODE,d1
  1429.     and.w    #%0000111000000000,d1
  1430.     rol.w    #7,d1
  1431.     ADDRESSREG
  1432.  
  1433.     CHAR    ")"
  1434.     
  1435.     CHAR    LF
  1436.     rts
  1437.  
  1438. ABCDDAT:
  1439.     and.w    #%0000000000000111,d0
  1440.     move.w    d0,d1
  1441.     DATAREG
  1442.  
  1443.     CHAR    ","
  1444.  
  1445.     move.w    CODE,d1
  1446.     and.w    #%0000111000000000,d1
  1447.     rol.w    #7,d1
  1448.     DATAREG
  1449.     
  1450.     CHAR    LF
  1451.     rts
  1452.  
  1453. ;--------------------------------------------------------------------------
  1454.  
  1455. MULI:
  1456.     FILL    MUL
  1457.  
  1458.     move.w    CODE,d0
  1459.  
  1460.     CHAR    "u"
  1461.  
  1462.     btst    #8,d0
  1463.     beq.s    OKMUL
  1464.  
  1465.     lea    -1(a5),a5
  1466.     CHAR    "s"
  1467.     
  1468. OKMUL:
  1469.     CHAR    TAB
  1470.  
  1471.     SOURCE
  1472.  
  1473.     CHAR    ","
  1474.  
  1475.     move.w    CODE,d0
  1476.     and.w    #%0000111000000000,d0
  1477.     rol.w    #7,d0
  1478.     move.w    d0,d1
  1479.     DATAREG
  1480.  
  1481.     CHAR    LF    
  1482.     rts
  1483.  
  1484. ;=========================================================================
  1485.  
  1486. MISC:
  1487.     move.w    CODE,d0
  1488.  
  1489.     cmp.w    #$4e70,d0
  1490.     beq.w    RESETI
  1491.     cmp.w    #$4e71,d0
  1492.     beq.w    NOPI
  1493.     cmp.w    #$4e72,d0
  1494.     beq.w    STOPI
  1495.     cmp.w    #$4e73,d0
  1496.     beq.w    RTEI
  1497.     cmp.w    #$4e74,d0
  1498.     beq.w    RTDI
  1499.     cmp.w    #$4e75,d0
  1500.     beq.w    RTSI
  1501.     cmp.w    #$4e76,d0
  1502.     beq.w    TRAPVI
  1503.     cmp.w    #$4e77,d0
  1504.     beq.w    RTRI
  1505.     cmp.w    #$4afc,d0
  1506.     beq.w    ILLEGALI
  1507.  
  1508.     move.w    CODE,d0
  1509.     and.w    #%0000111111111110,d1
  1510.     cmp.w    #%0000111001111010,d1
  1511.     beq.w    MOVECI
  1512.  
  1513. ;---
  1514.  
  1515.     move.w    d0,d1
  1516.     and.w    #%0000111111111000,d1
  1517.     
  1518.     cmp.w    #%0000100001000000,d1
  1519.     beq.w    SWAPI
  1520.     cmp.w    #%0000100010000000,d1
  1521.     beq.w    EXTWI
  1522.     cmp.w    #%0000100011000000,d1
  1523.     beq.w    EXTLI
  1524.     cmp.w    #%0000111001100000,d1
  1525.     beq.w    TOUSPI
  1526.     cmp.w    #%0000111001101000,d1
  1527.     beq.w    FROMUSPI
  1528.         
  1529. ;---
  1530.  
  1531.     move.w    d0,d1
  1532.     and.w    #%0000111111110000,d1
  1533.  
  1534.     cmp.w    #%0000111001010000,d1
  1535.     beq.w    LINKI
  1536.  
  1537. ;---
  1538.  
  1539.     move.w    d0,d1
  1540.     and.w    #%0000111111000000,d1
  1541.  
  1542.     cmp.w    #%0000111010000000,d1
  1543.     beq.w    JSRI
  1544.  
  1545.     cmp.w    #%0000111011000000,d1
  1546.     beq.w    JMPI
  1547.  
  1548.     cmp.w    #%0000111001000000,d1
  1549.     beq.w    TRAPI
  1550.  
  1551.     cmp.w    #%0000100001000000,d1
  1552.     beq.w    PEAI
  1553.  
  1554.     cmp.w    #%0000100000000000,d1
  1555.     beq.w    NBCDI
  1556.  
  1557.     cmp.w    #%0000101011000000,d1
  1558.     beq.w    TASI
  1559.         
  1560. ;---
  1561.  
  1562.     move.w    d0,d1
  1563.     and.w    #%0000111110000000,d1
  1564.  
  1565.     cmp.w    #%0000100010000000,d1
  1566.     beq.s    MOVMEA
  1567.  
  1568.     cmp.w    #%0000110010000000,d1
  1569.     beq.w    MOVMREG
  1570.  
  1571. ;---
  1572.  
  1573.     move.w    d0,d1
  1574.     and.w    #%0000111100000000,d1
  1575.  
  1576.     cmp.w    #%0000101000000000,d1
  1577.     beq.w    TSTI
  1578.  
  1579.     cmp.w    #%0000000000000000,d1
  1580.     beq.w    FROMSRI
  1581.  
  1582.     cmp.w    #%0000011000000000,d1
  1583.     beq.w    TOSRI
  1584.  
  1585.     cmp.w    #%0000001000000000,d1
  1586.     beq.w    FROMCCRI
  1587.  
  1588.     cmp.w    #%0000010000000000,d1
  1589.     beq.w    TOCCRI
  1590.  
  1591.     move.w    d0,d1
  1592.     and.w    #%0000000111000000,d1
  1593.  
  1594.     cmp.w    #%0000000111000000,d1
  1595.     beq.w    LEAI
  1596.  
  1597.     cmp.w    #%0000000110000000,d1
  1598.     beq.w    CHKI    
  1599.  
  1600.     bra.l    NONE
  1601.  
  1602. ;-------------------------------------------------------------------------
  1603.  
  1604. MOVMEA:
  1605.     FILL    MOVEM
  1606.     CHAR    "."
  1607.  
  1608.     CHAR    "w"
  1609.  
  1610.     move.w    CODE,d0
  1611.     btst    #6,d0
  1612.     beq.s    OKME    
  1613.  
  1614.     lea    -1(a5),a5
  1615.     CHAR    "l"
  1616.     
  1617. OKME:
  1618.     CHAR    TAB
  1619.  
  1620.     GETWORD
  1621.     move.w    d0,SET
  1622.  
  1623.     move.w    CODE,d0
  1624.     and.w    #%0000000000111000,d0
  1625.     cmp.w    #%0000000000100000,d0
  1626.     bne.s    OKSET
  1627.  
  1628.     bsr.w    REVSET
  1629.     
  1630. OKSET:
  1631.     bsr.w    REGISTERS
  1632.  
  1633.     CHAR    ","
  1634.  
  1635.     move.w    CODE,d0
  1636.     SOURCE
  1637.  
  1638.     CHAR    LF
  1639.     rts
  1640.  
  1641. ;-----------------------------------------------------------------------
  1642.  
  1643. MOVMREG:
  1644.     FILL    MOVEM
  1645.     CHAR    "."
  1646.  
  1647.     CHAR    "w"
  1648.  
  1649.     move.w    CODE,d0
  1650.     btst    #6,d0
  1651.     beq.s    OKMR
  1652.  
  1653.     lea    -1(a5),a5
  1654.     CHAR    "l"
  1655.     
  1656. OKMR:
  1657.     CHAR    TAB
  1658.  
  1659.     GETWORD
  1660.     move.w    d0,SET
  1661.     
  1662.     move.w    CODE,d0
  1663.     SOURCE
  1664.  
  1665.     CHAR    ","
  1666.  
  1667.     bsr.s    REGISTERS
  1668.  
  1669.     CHAR    LF
  1670.     rts
  1671.  
  1672.  
  1673. ;-------------------------------------------------------------------------
  1674.  
  1675. REGISTERS:
  1676.     move.w    SET,d0
  1677.     lea    DATAS,a0
  1678.     
  1679.     moveq    #0,d7
  1680. REGLOOP:
  1681.     btst    d7,d0
  1682.     beq.s    NXT
  1683.  
  1684.     move.b    (a0),(a5)+
  1685.     move.b    1(a0),(a5)+
  1686.     CHAR    "/"
  1687.  
  1688. NXT:    lea    2(a0),a0
  1689.     addq.w    #1,d7
  1690.     cmp.w    #$10,d7
  1691.     bne.s    REGLOOP
  1692.  
  1693.     lea    -1(a5),a5
  1694.     rts
  1695.  
  1696. ;-------------------------------------------------------------------------
  1697.  
  1698. REVSET:
  1699.     move.w    SET,d0
  1700.     moveq    #0,d1
  1701.  
  1702.     moveq    #0,d6
  1703.     move.w    #15,d7
  1704. REVLOOP:
  1705.     btst    d7,d0
  1706.     beq.s    NEXTREG
  1707.  
  1708.     bset    d6,d1
  1709.  
  1710. NEXTREG:
  1711.     addq.w    #1,d6
  1712.     dbf    d7,REVLOOP
  1713.  
  1714.     move.w    d1,SET
  1715.     rts    
  1716.  
  1717. ;-------------------------------------------------------------------------
  1718.  
  1719. MOVECI:
  1720.     FILL    MOVEC
  1721.     CHAR    TAB
  1722.  
  1723.     move.w    CODE,d0
  1724.     btst    #0,d0
  1725.     beq.s    CSRC
  1726.  
  1727. CDST:
  1728.     GETWORD
  1729.     bsr.s    REGISTER
  1730.     CHAR    ","
  1731.     bsr.s    CONTROL
  1732.     CHAR    LF
  1733.     rts    
  1734.  
  1735. ;----
  1736.  
  1737. CSRC:
  1738.     GETWORD
  1739.     bsr.s    CONTROL
  1740.     CHAR    ","
  1741.     bsr.s    REGISTER
  1742.     CHAR    LF
  1743.     rts
  1744.  
  1745. ;-----------------
  1746.  
  1747. CONTROL:
  1748.     move.w    d0,d2
  1749.     and.w    #%0000111111111111,d2
  1750.  
  1751.     tst.w    d2
  1752.     beq.s    SFCI
  1753.     cmp.w    #$1,d2
  1754.     beq.s    DFCI
  1755.     cmp.w    #$800,d2
  1756.     beq.s    USPI
  1757.     cmp.w    #$801,d2
  1758.     beq.s    VBRI
  1759.  
  1760.     rts
  1761.  
  1762. ;--------------
  1763.  
  1764. SFCI:
  1765.     CHAR    "s"
  1766.     CHAR    "f"
  1767.     CHAR    "c"
  1768.     rts
  1769.  
  1770. DFCI:
  1771.     CHAR    "d"
  1772.     CHAR    "f"
  1773.     CHAR    "c"
  1774.     rts
  1775.  
  1776. USPI:
  1777.     CHAR    "u"
  1778.     CHAR    "s"
  1779.     CHAR    "p"
  1780.     rts
  1781.  
  1782. VBRI:
  1783.     CHAR    "v"
  1784.     CHAR    "b"
  1785.     CHAR    "r"
  1786.     rts
  1787.  
  1788. ;-----------------
  1789.  
  1790. REGISTER:
  1791.     move.w    d0,d2
  1792.     and.w    #%0111000000000000,d0
  1793.     rol.w    #4,d0
  1794.     move.w    d0,d1
  1795.  
  1796.     btst    #15,d2
  1797.     bne.s    AREG
  1798.  
  1799. DREG:
  1800.     DATAREG
  1801.     move.w    d2,d0
  1802.     rts
  1803.     
  1804. AREG:
  1805.     ADDRESSREG
  1806.     move.w    d2,d0
  1807.     rts
  1808.  
  1809. ;-------------------------------------------------------------------------
  1810.  
  1811. TASI:
  1812.     FILL    TAS
  1813.     CHAR    TAB
  1814.  
  1815.     move.w    CODE,d0
  1816.     SOURCE
  1817.  
  1818.     CHAR    LF
  1819.     rts
  1820.     
  1821. ;-------------------------------------------------------------------------
  1822.  
  1823. TSTI:
  1824.     FILL    TST
  1825.  
  1826.     move.w    CODE,d0
  1827.     bsr.w    GETSIZE
  1828.  
  1829.     CHAR    TAB
  1830.  
  1831.     move.w    CODE,d0
  1832.     SOURCE
  1833.  
  1834.     CHAR    LF
  1835.     rts
  1836.  
  1837. ;-------------------------------------------------------------------------
  1838.  
  1839. NBCDI:
  1840.     FILL    NBCD
  1841.     CHAR    TAB
  1842.  
  1843.     move.w    CODE,d0
  1844.     SOURCE
  1845.  
  1846.     CHAR    LF    
  1847.     rts
  1848.  
  1849. ;-------------------------------------------------------------------------
  1850.  
  1851. PEAI:
  1852.     FILL    PEA
  1853.     CHAR    TAB
  1854.  
  1855.     move.w    CODE,d0
  1856.     SOURCE
  1857.  
  1858.     CHAR    LF
  1859.     rts
  1860.  
  1861. ;-------------------------------------------------------------------------
  1862.  
  1863. TOUSPI:
  1864.     FILL    MOVE
  1865.     CHAR    "."
  1866.     CHAR    "l"
  1867.  
  1868.     CHAR    TAB
  1869.  
  1870.     move.w    CODE,d0
  1871.     and.w    #%0000000000000111,d0
  1872.     move.w    d0,d1
  1873.     ADDRESSREG
  1874.  
  1875.     CHAR    ","
  1876.  
  1877.     CHAR    "u"
  1878.     CHAR    "s"
  1879.     CHAR    "p"
  1880.  
  1881.     CHAR    LF
  1882.     rts
  1883.  
  1884. ;-------------------------------------------------------------------------
  1885.  
  1886. FROMUSPI:
  1887.     FILL    MOVE
  1888.     CHAR    "."
  1889.     CHAR    "l"
  1890.  
  1891.     CHAR    TAB
  1892.  
  1893.     CHAR    "u"
  1894.     CHAR    "s"
  1895.     CHAR    "p"
  1896.  
  1897.     CHAR    ","
  1898.  
  1899.     move.w    CODE,d0
  1900.     and.w    #%0000000000000111,d0
  1901.     move.w    d0,d1
  1902.     ADDRESSREG
  1903.  
  1904.     CHAR    LF
  1905.     rts
  1906.  
  1907. ;-------------------------------------------------------------------------
  1908.  
  1909. SWAPI:
  1910.     FILL    SWAP
  1911.     bra.s    ESREG
  1912.     
  1913. EXTWI:
  1914.     FILL    EXTW
  1915.     bra.s    ESREG
  1916.  
  1917. EXTLI:
  1918.     FILL    EXTL
  1919.  
  1920. ESREG:
  1921.     CHAR    TAB
  1922.  
  1923.     move.w    CODE,d0
  1924.     and.w    #%0000000000000111,d0
  1925.     move.w    d0,d1
  1926.     DATAREG
  1927.  
  1928.     CHAR    LF
  1929.     rts
  1930.  
  1931. ;-------------------------------------------------------------------------
  1932.  
  1933. LEAI:
  1934.     FILL    LEA
  1935.  
  1936.     CHAR    TAB
  1937.  
  1938.     move.w    CODE,d0
  1939.     SOURCE
  1940.  
  1941.     CHAR    ","
  1942.  
  1943.     move.w    CODE,d0
  1944.     and.w    #%0000111000000000,d0
  1945.     rol.w    #7,d0
  1946.     move.w    d0,d1
  1947.     ADDRESSREG
  1948.  
  1949.     CHAR    LF    
  1950.     rts
  1951.  
  1952. ;-------------------------------------------------------------------------
  1953.  
  1954. CHKI:
  1955.     FILL    CHK
  1956.  
  1957.     CHAR    TAB
  1958.  
  1959.     move.w    CODE,d0
  1960.     SOURCE
  1961.  
  1962.     CHAR    ","
  1963.  
  1964.     move.w    CODE,d0
  1965.     and.w    #%0000111000000000,d0
  1966.     rol.w    #7,d0
  1967.     move.w    d0,d1
  1968.     DATAREG
  1969.  
  1970.     CHAR    LF    
  1971.     rts
  1972.  
  1973. ;-------------------------------------------------------------------------
  1974.  
  1975. LINKI:
  1976.     move.w    CODE,d0
  1977.     btst    #3,d0
  1978.     bne.s    UNLKI
  1979.  
  1980.     FILL    LINK
  1981.     CHAR    TAB
  1982.  
  1983.     move.w    CODE,d0
  1984.     and.w    #%0000000000000111,d0
  1985.     move.w    d0,d1
  1986.     ADDRESSREG    
  1987.  
  1988.     CHAR    ","
  1989.  
  1990.     CHAR    "#"
  1991.  
  1992.     GETWORD
  1993.     bsr.w    WORD2TEXT
  1994.  
  1995.     CHAR    LF
  1996.     rts
  1997.  
  1998. UNLKI:
  1999.     FILL    UNLK
  2000.  
  2001.     CHAR    TAB
  2002.  
  2003.     move.w    CODE,d0
  2004.     and.w    #%0000000000000111,d0
  2005.     move.w    d0,d1
  2006.     ADDRESSREG    
  2007.  
  2008.     CHAR    LF    
  2009.     rts
  2010. ;-------------------------------------------------------------------------
  2011.  
  2012. FROMCCRI:
  2013.     move.w    d0,d1
  2014.     and.w    #%0000000011000000,d1
  2015.     cmp.w    #%0000000011000000,d1
  2016.     bne.s    CLRI
  2017.  
  2018.     FILL    MOVE
  2019.     CHAR    "."
  2020.     CHAR    "w"
  2021.  
  2022.     CHAR    TAB
  2023.  
  2024.     CHAR    "c"
  2025.     CHAR    "c"
  2026.     CHAR    "r"
  2027.  
  2028.     CHAR    ","
  2029.  
  2030.     move.w    CODE,d0
  2031.     SOURCE
  2032.  
  2033.     CHAR    LF
  2034.     rts
  2035.  
  2036. ;-------------------------------------------------------------------------
  2037.  
  2038. CLRI:
  2039.     FILL    CLR
  2040.  
  2041.     move.w    CODE,d0
  2042.     bsr.w    GETSIZE
  2043.  
  2044.     CHAR    TAB
  2045.  
  2046.     move.w    CODE,d0
  2047.     SOURCE
  2048.  
  2049.     CHAR    LF
  2050.     rts
  2051.  
  2052. ;-------------------------------------------------------------------------
  2053.  
  2054. TOCCRI:
  2055.     move.w    d0,d1
  2056.     and.w    #%0000000011000000,d1
  2057.     cmp.w    #%0000000011000000,d1
  2058.     bne.s    NEGINS
  2059.  
  2060.     FILL    MOVE
  2061.     CHAR    "."
  2062.     CHAR    "w"
  2063.  
  2064.     CHAR    TAB
  2065.  
  2066.     move.w    CODE,d0
  2067.     SOURCE
  2068.  
  2069.     CHAR    ","
  2070.  
  2071.     CHAR    "c"
  2072.     CHAR    "c"
  2073.     CHAR    "r"
  2074.  
  2075.     CHAR    LF
  2076.     rts
  2077.  
  2078. ;---------------------------------------------------------------------------
  2079.  
  2080. NEGINS:
  2081.     FILL    NEG
  2082.  
  2083.     move.w    CODE,d0
  2084.     bsr.w    GETSIZE
  2085.  
  2086.     CHAR    TAB
  2087.  
  2088.     move.w    CODE,d0
  2089.     SOURCE
  2090.  
  2091.     CHAR    LF
  2092.     rts
  2093.  
  2094. ;---------------------------------------------------------------------------
  2095.  
  2096. FROMSRI:
  2097.     move.w    d0,d1
  2098.     and.w    #%0000000011000000,d1
  2099.     cmp.w    #%0000000011000000,d1
  2100.     bne.s    NEGXI
  2101.  
  2102.     FILL    MOVE
  2103.     CHAR    "."
  2104.     CHAR    "w"
  2105.  
  2106.     CHAR    TAB
  2107.  
  2108.     CHAR    "s"
  2109.     CHAR    "r"
  2110.  
  2111.     CHAR    ","
  2112.  
  2113.     move.w    CODE,d0
  2114.     SOURCE
  2115.  
  2116.     CHAR    LF
  2117.     rts
  2118.  
  2119. ;-------------------------------------------------------------------------
  2120.  
  2121. NEGXI:
  2122.     FILL    NEGX
  2123.  
  2124.     move.w    CODE,d0
  2125.     bsr.w    GETSIZE
  2126.  
  2127.     CHAR    TAB
  2128.  
  2129.     move.w    CODE,d0
  2130.     SOURCE
  2131.  
  2132.     CHAR    LF
  2133.     rts
  2134.  
  2135. ;-------------------------------------------------------------------------
  2136.  
  2137. TOSRI:
  2138.     move.w    d0,d1
  2139.     and.w    #%0000000011000000,d1
  2140.     cmp.w    #%0000000011000000,d1
  2141.     bne.s    NOTI
  2142.  
  2143.     FILL    MOVE
  2144.     CHAR    "."
  2145.     CHAR    "w"
  2146.  
  2147.     CHAR    TAB
  2148.  
  2149.     move.w    CODE,d0
  2150.     SOURCE
  2151.  
  2152.     CHAR    ","
  2153.  
  2154.     CHAR    "s"
  2155.     CHAR    "r"
  2156.  
  2157.     CHAR    LF
  2158.     rts
  2159.  
  2160. ;-------------------------------------------------------------------------
  2161.  
  2162. NOTI:
  2163.     FILL    NOT
  2164.  
  2165.     move.w    CODE,d0
  2166.     bsr.w    GETSIZE
  2167.  
  2168.     CHAR    TAB
  2169.  
  2170.     move.w    CODE,d0
  2171.     SOURCE
  2172.  
  2173.     CHAR    LF
  2174.     rts
  2175.  
  2176. ;-------------------------------------------------------------------------
  2177.  
  2178. TRAPI:
  2179.     FILL    TRAP
  2180.     CHAR    TAB
  2181.  
  2182.     CHAR    "#"
  2183.     
  2184.     move.w    CODE,d0
  2185.     and.w    #%0000000000000111,d0
  2186.     bsr.w    BYTE2TEXT
  2187.  
  2188.     CHAR    LF
  2189.     rts
  2190.  
  2191. ;-------------------------------------------------------------------------
  2192.  
  2193. JSRI:
  2194.     FILL    JSR
  2195.     bra.s    JUMPCOMP
  2196.  
  2197. JMPI:
  2198.     FILL    JMP
  2199.  
  2200. JUMPCOMP:
  2201.     CHAR    TAB
  2202.  
  2203.     move.w    CODE,d0
  2204.     SOURCE
  2205.  
  2206.     CHAR    LF
  2207.     rts
  2208.  
  2209. ;-------------------------------------------------------------------------
  2210.  
  2211. STOPI:
  2212.     FILL    STOP
  2213.     CHAR    TAB
  2214.  
  2215.     GETWORD
  2216.     CHAR    "#"
  2217.     bsr.w    WORD2TEXT
  2218.     
  2219.     CHAR    LF
  2220.     rts    
  2221.  
  2222. ;-------------------------------------------------------------------------
  2223.  
  2224. TRAPVI:
  2225.     FILL    TRAPV
  2226.     CHAR    LF
  2227.     rts
  2228.     
  2229. ;-------------------------------------------------------------------------
  2230.  
  2231. RTSI:
  2232.     FILL    RTS
  2233.     CHAR    LF
  2234.     rts
  2235.  
  2236. ;-------------------------------------------------------------------------
  2237.  
  2238. RTDI:
  2239.     FILL    RTD
  2240.     CHAR    TAB
  2241.  
  2242.     GETWORD
  2243.     CHAR    "#"
  2244.     bsr.w    WORD2TEXT
  2245.     
  2246.     CHAR    LF
  2247.     rts
  2248.  
  2249. ;-------------------------------------------------------------------------
  2250.  
  2251. ILLEGALI:
  2252.     FILL    ILLEGAL
  2253.     CHAR    LF
  2254.     rts
  2255.  
  2256. ;-------------------------------------------------------------------------
  2257.  
  2258. RTRI:
  2259.     FILL    RTR
  2260.     CHAR    LF
  2261.     rts
  2262.  
  2263. ;-------------------------------------------------------------------------
  2264.  
  2265. RTEI:
  2266.     FILL    RTE
  2267.     CHAR    LF
  2268.     rts
  2269.  
  2270. ;-------------------------------------------------------------------------
  2271.  
  2272. NOPI:
  2273.     FILL    NOP
  2274.     CHAR    LF
  2275.     rts
  2276.  
  2277. ;-------------------------------------------------------------------------
  2278.  
  2279. RESETI:
  2280.     FILL    RESET
  2281.     CHAR    LF
  2282.     rts
  2283.  
  2284. ;=========================================================================
  2285.  
  2286. GETSIZE:
  2287.     move.w    d0,d1
  2288.     and.w    #%0000000011000000,d1
  2289.     lsr.w    #5,d1
  2290.  
  2291.     clr.w    SIZE
  2292.  
  2293.     cmp.w    #4,d1
  2294.     blt.s    OKSIZE
  2295.  
  2296.     move.w    #1,SIZE
  2297. OKSIZE:
  2298.     lea    SIZES,a1
  2299.     lea    (a1,d1.w),a1
  2300.  
  2301.     move.b    (a1)+,(a5)+
  2302.     move.b    (a1),(a5)+
  2303.  
  2304.     rts        
  2305.  
  2306. ;=========================================================================
  2307.  
  2308. MODEREGISTER:            ; Mode (d0) ... Register (d1)
  2309.     lsl.w    #2,d0
  2310.     lea    MODES,a0
  2311.     lea    (a0,d0.w),a0
  2312.     move.l    (a0),a0
  2313.     jmp    (a0)        
  2314.  
  2315. ;-------------------------------------------------------------------------
  2316.  
  2317. DATADIRECT:
  2318.     DATAREG
  2319.     rts
  2320.  
  2321. ;-------------------------------------------------------------------------
  2322.  
  2323. ADDRESSDIRECT:
  2324.     ADDRESSREG
  2325.     rts
  2326.  
  2327. ;-------------------------------------------------------------------------
  2328.  
  2329. ADDRESSINDIRECT:
  2330.     CHAR    "("
  2331.     ADDRESSREG
  2332.     CHAR    ")"
  2333.     rts
  2334.  
  2335. ;-------------------------------------------------------------------------
  2336.  
  2337. ADDRESSINPOST:
  2338.     CHAR    "("
  2339.     ADDRESSREG
  2340.     CHAR    ")"
  2341.     CHAR    "+"    
  2342.     rts
  2343.  
  2344. ;-------------------------------------------------------------------------
  2345.  
  2346. ADDRESSINPRE:
  2347.     CHAR    "-"    
  2348.     CHAR    "("
  2349.     ADDRESSREG
  2350.     CHAR    ")"
  2351.     rts
  2352.  
  2353. ;-------------------------------------------------------------------------
  2354.  
  2355. ADDRESSINDIS:
  2356.     GETWORD
  2357.     move.l    d1,-(a7)
  2358.     bsr.w    WORD2TEXT
  2359.     move.l    (a7)+,d1
  2360.  
  2361.     bsr.s    ADDRESSINDIRECT
  2362.     rts
  2363.  
  2364. ;-------------------------------------------------------------------------
  2365.  
  2366. ADDRESSINIDX:
  2367.     GETWORD
  2368.     movem.l    d0/d1,-(a7)
  2369.     bsr.w    BYTE2TEXT
  2370.     movem.l    (a7)+,d0/d1
  2371.  
  2372.     CHAR    "("
  2373.  
  2374.     ADDRESSREG    
  2375.     
  2376.     CHAR    ","
  2377.  
  2378.     move.w    d0,d1
  2379.     and.w    #$f000,d1
  2380.     and.w    #$0f00,d0
  2381.  
  2382.     rol.w    #4,d1
  2383.     lsr.w    #8,d0
  2384.     
  2385.     btst    #3,d1
  2386.     beq.s    IDXDATA
  2387.  
  2388.     bclr    #3,d1
  2389.     ADDRESSREG
  2390.     bra.s    SIZEIDX    
  2391.  
  2392. IDXDATA:
  2393.     DATAREG
  2394.  
  2395. SIZEIDX:
  2396.     CHAR    "."
  2397.  
  2398.     CHAR    "w"
  2399.  
  2400.     btst    #3,d0
  2401.     beq.s    DOIDX
  2402.  
  2403.     lea    -1(a5),a5
  2404.     CHAR    "l"
  2405.  
  2406. DOIDX:
  2407.     CHAR    ")"
  2408.     rts
  2409.  
  2410. ;-------------------------------------------------------------------------
  2411.  
  2412. OTHERMODES:
  2413.     lsl.w    #2,d1
  2414.     lea    SUBMODES,a0
  2415.     lea    (a0,d1.w),a0
  2416.     move.l    (a0),a0
  2417.     jmp    (a0)        
  2418.  
  2419. ;-------------------------------------------------------------------------
  2420.  
  2421. ABSSHORT:
  2422.     GETWORD
  2423.     bsr.w    WORD2TEXT
  2424.     CHAR    "."
  2425.     CHAR    "w"
  2426.     rts
  2427.  
  2428. ;-------------------------------------------------------------------------
  2429.  
  2430. ABSLONG:
  2431.     GETLONG
  2432.     bsr.w    LONG2TEXT
  2433.     rts
  2434.  
  2435. ;-------------------------------------------------------------------------
  2436.  
  2437. PCDIS:
  2438.     GETWORD
  2439.     ext.l    d0
  2440.     add.l    a6,d0
  2441.     subq.l    #$2,d0
  2442.     bsr.l    LONG2TEXT
  2443.  
  2444.     CHAR    "("
  2445.     FILL    PCT
  2446.     CHAR    ")"
  2447.     rts
  2448.  
  2449. ;-------------------------------------------------------------------------
  2450.  
  2451. PCIDX:
  2452.     GETWORD
  2453.     move.w    d0,d1
  2454.  
  2455.     and.w    #$00ff,d0
  2456.     ext.w    d0
  2457.     ext.l    d0
  2458.     add.l    a6,d0
  2459.     subq.l    #$2,d0
  2460.  
  2461.     move.l    d1,-(a7)
  2462.     bsr.l    LONG2TEXT
  2463.     move.l    (a7)+,d1
  2464.  
  2465.     CHAR    "("
  2466.     FILL    PCT
  2467.     CHAR    ","
  2468.  
  2469.     moveq    #0,d0
  2470.     move.w    d1,d0
  2471.     
  2472.     and.w    #$f000,d1
  2473.     and.w    #$0f00,d0
  2474.  
  2475.     rol.w    #4,d1
  2476.     lsr.w    #8,d0
  2477.     
  2478.     btst    #3,d1
  2479.     beq.s    PCDATA
  2480.  
  2481.     bclr    #3,d1
  2482.     ADDRESSREG
  2483.     bra.s    SIZEPC
  2484.  
  2485. PCDATA:
  2486.     DATAREG
  2487.  
  2488. SIZEPC:
  2489.     CHAR    "."
  2490.  
  2491.     CHAR    "w"
  2492.  
  2493.     btst    #3,d0
  2494.     beq.s    DOPC
  2495.  
  2496.     lea    -1(a5),a5
  2497.     CHAR    "l"
  2498.  
  2499. DOPC:
  2500.     CHAR    ")"
  2501.     rts
  2502.  
  2503. ;-------------------------------------------------------------------------
  2504.  
  2505. IMM_SR_CCR:
  2506.     tst.w    ISC
  2507.     beq.s    IMMIDIATE
  2508.  
  2509.     cmp.w    #1,ISC
  2510.     beq.s    SMSR
  2511.  
  2512. SMCCR:
  2513.     FILL    CCRT
  2514.     rts
  2515.  
  2516. SMSR:
  2517.     FILL    SRT
  2518.     rts
  2519.  
  2520. ;-------------------------------------------------------------------------
  2521.  
  2522. IMMIDIATE:
  2523.     CHAR    "#"
  2524.  
  2525.     tst.w    SIZE
  2526.     bne.s    IMMLONG
  2527.  
  2528. IMMWORD:
  2529.     GETWORD
  2530.     bsr.l    WORD2TEXT
  2531.     rts
  2532.  
  2533. IMMLONG:
  2534.     GETLONG
  2535.     bsr.l    LONG2TEXT
  2536.     rts
  2537.  
  2538. ;-------------------------------------------------------------------------
  2539.  
  2540. BYTE2TEXT:
  2541.     btst    #7,d0
  2542.     beq.s    PLUSSB
  2543.  
  2544.     CHAR    "-"
  2545.  
  2546.     neg.w    d0
  2547.     and.w    #$00ff,d0
  2548.  
  2549. PLUSSB:
  2550.     CHAR    "$"
  2551.  
  2552.     moveq    #1,d4
  2553.     move.w    #$00f0,d6
  2554.  
  2555.     move.w    #1,d7
  2556. B2LOOP:
  2557.     move.w    d0,d1
  2558.     and.w    d6,d1
  2559.             
  2560.     moveq    #0,d5
  2561. B2SHIFT:
  2562.     cmp.w    d5,d7
  2563.     beq.s    B2DONE
  2564.  
  2565.     lsr.w    #4,d1
  2566.     addq.w    #1,d5
  2567.     bra.s    B2SHIFT
  2568.  
  2569. B2DONE:
  2570.     tst.w    d4
  2571.     beq.s    B2IGNORE
  2572.  
  2573.     tst.b    d1
  2574.     beq.s    B2CONT
  2575.  
  2576.     moveq    #0,d4    
  2577.  
  2578. B2IGNORE:
  2579.     bsr.w    INSTEXT
  2580.  
  2581. B2CONT:
  2582.     lsr.w    #4,d6
  2583.     dbf    d7,B2LOOP
  2584.  
  2585.     cmp.b    #'$',-1(a5)
  2586.     bne.s    OKBT
  2587.  
  2588.     move.b    #'0',(a5)+
  2589.  
  2590. OKBT:
  2591.     rts
  2592.  
  2593. ;-------------------------------------------------------------------------
  2594.  
  2595. WORD2TEXT:
  2596.     CHAR    "$"
  2597.  
  2598.     moveq    #1,d4
  2599.     move.w    #$f000,d6
  2600.  
  2601.     move.w    #3,d7
  2602. W2LOOP:
  2603.     move.w    d0,d1
  2604.     and.w    d6,d1
  2605.             
  2606.     moveq    #0,d5
  2607. W2SHIFT:
  2608.     cmp.w    d5,d7
  2609.     beq.s    W2DONE
  2610.  
  2611.     lsr.w    #4,d1
  2612.     addq.w    #1,d5
  2613.     bra.s    W2SHIFT
  2614.  
  2615. W2DONE:
  2616.     tst.w    d4
  2617.     beq.s    W2IGNORE
  2618.  
  2619.     tst.b    d1
  2620.     beq.s    W2CONT
  2621.  
  2622.     moveq    #0,d4    
  2623.  
  2624. W2IGNORE:
  2625.     bsr.s    INSTEXT
  2626.  
  2627. W2CONT:
  2628.     lsr.w    #4,d6
  2629.     dbf    d7,W2LOOP
  2630.  
  2631.     cmp.b    #'$',-1(a5)
  2632.     bne.s    OKWT
  2633.  
  2634.     move.b    #'0',(a5)+
  2635.     
  2636. OKWT:
  2637.     rts
  2638.  
  2639. ;-------------------------------------------------------------------------
  2640.  
  2641. LONG2TEXT:
  2642.     CHAR    "$"
  2643.  
  2644.     moveq    #1,d4
  2645.     move.l    #$f0000000,d6
  2646.  
  2647.     move.w    #7,d7
  2648. L2LOOP:
  2649.     move.l    d0,d1
  2650.     and.l    d6,d1
  2651.             
  2652.     moveq    #0,d5
  2653. L2SHIFT:
  2654.     cmp.w    d5,d7
  2655.     beq.s    L2DONE
  2656.  
  2657.     lsr.l    #4,d1
  2658.     addq.w    #1,d5
  2659.     bra.s    L2SHIFT
  2660.  
  2661. L2DONE:
  2662.     tst.w    d4
  2663.     beq.s    L2IGNORE
  2664.  
  2665.     tst.b    d1
  2666.     beq.s    L2CONT
  2667.  
  2668.     moveq    #0,d4    
  2669.  
  2670. L2IGNORE:
  2671.     bsr.s    INSTEXT
  2672.  
  2673. L2CONT:
  2674.     lsr.l    #4,d6
  2675.     dbf    d7,L2LOOP
  2676.  
  2677.     cmp.b    #'$',-1(a5)
  2678.     bne.s    OKLT
  2679.  
  2680.     move.b    #'0',(a5)+
  2681.  
  2682. OKLT:
  2683.     rts
  2684.  
  2685. ;-------------------------------------------------------------------------
  2686.  
  2687. INSTEXT:
  2688.     cmp.b    #$9,d1
  2689.     bgt.s    HEX
  2690.  
  2691.     add.b    #'0',d1
  2692.     move.b    d1,(a5)+
  2693.     rts
  2694.  
  2695. HEX:
  2696.     add.b    #87,d1
  2697.     move.b    d1,(a5)+
  2698.     rts    
  2699.  
  2700. ;-------------------------------------------------------------------------
  2701.  
  2702.     section    Datafield,data
  2703.  
  2704. POINTER:    dc.l    $fc00d2
  2705. LINE:        blk.b    80,0
  2706.  
  2707. ;--
  2708.  
  2709. SET:        dc.w    0
  2710. CODE:        dc.w    0
  2711.  
  2712. GROUPS:
  2713.         dc.l    BMMI    ; 0     Bit Manip./MOVEP/Immidiate
  2714.         dc.l    MOVEI    ; 1     Move Byte
  2715.         dc.l    MOVEI    ; 2     Move Long
  2716.         dc.l    MOVEI    ; 3     Move Word
  2717.         dc.l    MISC    ; 4     Miscellanious
  2718.         dc.l    ASSDB    ; 5     ADDQ/SUBQ/Scc/DBcc
  2719.         dc.l    BCCI    ; 6     Branching (Bcc)
  2720.         dc.l    MOVEQI    ; 7     MoveQ
  2721.         dc.l    ORDIS    ; 8     OR/DIV/SBCD
  2722.         dc.l    SUBINS    ; 9     SUB/SUBX
  2723.         dc.l    LINEAI    ; a     LINE_A
  2724.         dc.l    CMPEOR    ; b     CMP/EOR
  2725.         dc.l    AMAE    ; c     AND/MULU/MULS/ABCD/EXG
  2726.         dc.l    ADDINS    ; d     ADD/ADDX
  2727.         dc.l    SHIFTI    ; e     Shifting
  2728.         dc.l    LINEFI    ; f     LINE_F
  2729.  
  2730. ;------------------------------------------------------------------------
  2731.  
  2732. MODES:
  2733.         dc.l    DATADIRECT
  2734.         dc.l    ADDRESSDIRECT
  2735.         dc.l    ADDRESSINDIRECT
  2736.         dc.l    ADDRESSINPOST
  2737.         dc.l    ADDRESSINPRE
  2738.         dc.l    ADDRESSINDIS
  2739.         dc.l    ADDRESSINIDX
  2740.         dc.l    OTHERMODES
  2741.  
  2742. SUBMODES:
  2743.         dc.l    ABSSHORT
  2744.         dc.l    ABSLONG
  2745.         dc.l    PCDIS
  2746.         dc.l    PCIDX
  2747.         dc.l    IMM_SR_CCR
  2748.  
  2749. ISC:        dc.w    0            ; 0 = Immidiate
  2750.                         ; 1 = SR
  2751.                         ; 2 = CCR
  2752.  
  2753. SIZE:        dc.w    0            ; 0 = Word
  2754.                         ; 1 = Longword
  2755.  
  2756. ;------------------------------------------------------------------------
  2757.  
  2758. PCT:        dc.b    "pc",0
  2759. SRT:        dc.b    "sr",0
  2760. CCRT:        dc.b    "ccr",0
  2761.  
  2762. BYTE:        dc.b    ".b",0
  2763. WORD:        dc.b    ".w",0
  2764. LONG:        dc.b    ".l",0
  2765.  
  2766. SIZES:
  2767.         dc.b    ".b"
  2768.         dc.b    ".w"
  2769.         dc.b    ".l"
  2770.         dc.b    ".w"
  2771.         
  2772. DATAS:
  2773.         dc.b    "d0"
  2774.         dc.b    "d1"
  2775.         dc.b    "d2"
  2776.         dc.b    "d3"
  2777.         dc.b    "d4"
  2778.         dc.b    "d5"
  2779.         dc.b    "d6"
  2780.         dc.b    "d7"
  2781. ADDS:
  2782.         dc.b    "a0"
  2783.         dc.b    "a1"
  2784.         dc.b    "a2"
  2785.         dc.b    "a3"
  2786.         dc.b    "a4"
  2787.         dc.b    "a5"
  2788.         dc.b    "a6"
  2789.         dc.b    "a7"
  2790.  
  2791. ;--
  2792.  
  2793. BRANCHES:
  2794.     dc.b    "ra"
  2795.     dc.b    "sr"
  2796.     dc.b    "hi"
  2797.     dc.b    "ls"
  2798.     dc.b    "cc"
  2799.     dc.b    "cs"
  2800.     dc.b    "ne"
  2801.     dc.b    "eq"
  2802.     dc.b    "vc"
  2803.     dc.b    "vs"
  2804.     dc.b    "pl"
  2805.     dc.b    "mi"
  2806.     dc.b    "ge"
  2807.     dc.b    "lt"
  2808.     dc.b    "gt"
  2809.     dc.b    "le"
  2810.     even
  2811.         
  2812. SHIFTS:
  2813.     dc.l    ASR
  2814.     dc.l    ASL
  2815.     dc.l    LSR
  2816.     dc.l    LSL
  2817.     dc.l    ROXR
  2818.     dc.l    ROXL
  2819.     dc.l    ROR
  2820.     dc.l    ROL
  2821.  
  2822. DECLARE:    dc.b    "dc.w",0
  2823.     
  2824. ASR:        dc.b    "asr",0
  2825. ASL:        dc.b    "asl",0
  2826. LSR:        dc.b    "lsr",0
  2827. LSL:        dc.b    "lsl",0
  2828. ROXR:        dc.b    "roxr",0
  2829. ROXL:        dc.b    "roxl",0
  2830. ROR:        dc.b    "ror",0
  2831. ROL:        dc.b    "rol",0
  2832.  
  2833. BTST:        dc.b    "btst"
  2834. BCHG:        dc.b    "bchg"
  2835. BCLR:        dc.b    "bclr"
  2836. BSET:        dc.b    "bset"
  2837.  
  2838. LINEA:        dc.b    "line_a",0
  2839. LINEF:        dc.b    "line_f",0
  2840.  
  2841. ABCD:        dc.b    "abcd",0
  2842. ADD:        dc.b    "add",0
  2843. ADDQ:        dc.b    "addq",0
  2844. ADDX:        dc.b    "addx",0
  2845. AND:        dc.b    "and",0
  2846. CLR:        dc.b    "clr",0
  2847. CMP:        dc.b    "cmp",0
  2848. CMPM:        dc.b    "cmpm",0
  2849. DIV:        dc.b    "div",0
  2850. EOR:        dc.b    "eor",0
  2851. EXG:        dc.b    "exg",0
  2852. ILLEGAL:    dc.b    "illegal",0
  2853. MOVE:        dc.b    "move",0
  2854. MOVEC:        dc.b    "movec",0
  2855. MOVEQ:        dc.b    "moveq",0
  2856. MOVES:        dc.b    "moves",0
  2857. MUL:        dc.b    "mul",0
  2858. NEG:        dc.b    "neg",0
  2859. NEGX:        dc.b    "negx",0
  2860. NOP:        dc.b    "nop",0
  2861. NOT:        dc.b    "not",0
  2862. OR:        dc.b    "or",0
  2863. RESET:        dc.b    "reset",0
  2864. RTD:        dc.b    "rtd",0
  2865. RTE:        dc.b    "rte",0
  2866. RTR:        dc.b    "rtr",0
  2867. RTS:        dc.b    "rts",0
  2868. SBCD:        dc.b    "sbcd",0
  2869. SUB:        dc.b    "sub",0
  2870. SUBX:        dc.b    "subx",0
  2871. SUBQ:        dc.b    "subq",0
  2872. TRAP:        dc.b    "trap",0
  2873. TRAPV:        dc.b    "trapv",0
  2874. JSR:        dc.b    "jsr",0
  2875. JMP:        dc.b    "jmp",0
  2876. CHK:        dc.b    "chk.w",0
  2877. LEA:        dc.b    "lea",0
  2878. PEA:        dc.b    "pea",0
  2879. STOP:        dc.b    "stop",0
  2880. LINK:        dc.b    "link",0
  2881. UNLK:        dc.b    "unlk",0
  2882. EXTW:        dc.b    "ext.w",0
  2883. EXTL:        dc.b    "ext.l",0
  2884. SWAP:        dc.b    "swap",0
  2885. TAS:        dc.b    "tas",0
  2886. TST:        dc.b    "tst",0
  2887. NBCD:        dc.b    "nbcd",0
  2888. MOVEM:        dc.b    "movem",0
  2889. MOVEP:        dc.b    "movep",0
  2890.         even
  2891.         
  2892. BUFPTR:        dc.l    BUFFER
  2893. BUFFER:        blk.b    [80*256],0
  2894. E:
  2895. ;-----------------------------------------------------------------------
  2896.  
  2897.  
  2898. -- 
  2899. Morten Amundsen, mortena@ifi.uio.no
  2900. University Of Oslo, Institute Of Informatics
  2901. "Some Play Hard To Get, I Play Hard To Want"
  2902.