Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.         cpu     tms9900
  2.         page    0
  3.         supmode off                     ; TMS9900 has no privileged mode, instructions shall not generate warnings
  4.  
  5.         a       r5,r3
  6.  
  7.         a       wr5,wr3
  8.         ab      wr6,*wr10
  9.         c       wr7,*wr2+
  10.         cb      wr8,@1234h
  11.         s       wr9,@1234h(wr6)
  12.  
  13.         sb      *wr10,wr9
  14.         soc     *wr11,*wr6
  15.         socb    *wr12,*wr1+
  16.         szc     *wr13,@1234h
  17.         szcb    *wr14,@1234h(wr14)
  18.  
  19.         mov     *wr15+,wr10
  20.         movb    *wr0+,*wr6
  21.         a       *wr1+,*wr6+
  22.         ab      *wr2+,@1234h
  23.         c       *wr3+,@1234h(wr7)
  24.  
  25.         cb      *wr4+,wr5
  26.         s       *wr5+,*wr13
  27.         sb      *wr6+,*wr13+
  28.         soc     *wr7+,@1234h
  29.         socb    *wr8+,@1234h(wr12)
  30.  
  31.         szc     @1234h,wr10
  32.         szcb    @1234h,*wr2
  33.         mov     @1234h,*wr3+
  34.         movb    @1234h,@2345h
  35.         a       @1234h,@2345h(wr8)
  36.  
  37.         ab      @1234h(wr9),wr5
  38.         c       @1234h(wr10),*wr1
  39.         cb      @1234h(wr11),*wr14+
  40.         s       @1234h(wr12),@2345h
  41.         sb      @1234h(wr13),@2345h(wr5)
  42.  
  43.  
  44.         coc     wr12,wr5
  45.         czc     *wr4,wr10
  46.         xor     *wr12+,wr7
  47.         mpy     @1234h,wr4
  48.         div     @200(wr4),wr6
  49.         xop     @2345h,wr5
  50.  
  51.         b       @1234h
  52.         bl      *wr5
  53.         blwp    *wr7+
  54.         clr     wr4
  55.         seto    @1234h(wr8)
  56.         inv     wr7
  57.         neg     *wr15
  58.         abs     wr3
  59.         swpb    wr9
  60.         inc     *wr12+
  61.         inct    *wr12+
  62.         dec     *wr12+
  63.         dect    *wr12+
  64.         x       *wr6
  65.  
  66.         ldcr    wr5,10
  67.         stcr    wr6,16
  68.  
  69.         sbo     10
  70.         sbz     -33
  71.         tb      34h
  72.  
  73.         jeq     lab
  74.         jgt     lab
  75.         jh      lab
  76.         jhe     lab
  77.         jl      lab
  78.         jle     lab
  79. lab:    jlt     lab
  80.         jmp     lab
  81.         jnc     lab
  82.         jne     lab
  83.         jno     lab
  84.         joc     lab
  85.         jop     lab
  86.  
  87.         sla     wr1,1
  88.         sra     wr5,wr0
  89.         src     wr6,10
  90.         srl     wr10,15
  91.  
  92.         ai      wr5,1234h
  93.         andi    wr10,2345h
  94.         ci      wr15,3456h
  95.         li      wr5,4567h
  96.         ori     wr10,5678h
  97.  
  98.         lwpi    1234h
  99.         limi    2345h
  100.  
  101.         stst    wr2
  102.         stwp    wr6
  103.  
  104.         rtwp
  105.         idle
  106.         rset
  107.         ckof
  108.         ckon
  109.         lrex
  110.  
  111.         padding on
  112.  
  113.         byte    1,2,3,4,5
  114.         word    1,2,3,4,5       ; inserts pad byte before
  115.         byte    "Hello World"
  116.         byte    1,2,3,4,5,6     ; no pad needed, byte-oriented insn
  117.         word    1,2,3,4,5       ; two odd lengths add up to even length -> no padding needed
  118.         byte    "Hello World!"
  119.         word    1,2,3,4,5       ; even number of bytes on previous insn -> no padding needed
  120.  
  121.         padding off
  122.  
  123.         byte    1,2,3,4,5
  124.         byte    "Hello World"
  125.         byte    1,2,3,4,5,6
  126.         byte    "Hello World!"
  127.         word    1,2,3,4,5
  128.  
  129.  
  130. table   equ     1234h
  131. oldval  equ     2345h
  132. newval  equ     3456h
  133. new     equ     4567h
  134. loc     equ     5678h
  135. count   equ     6789h
  136. list    equ     789ah
  137. tran    equ     89abh
  138. testbits equ    9abch
  139. testbit equ     0abcdh
  140. ones    equ     0bcdeh
  141. temp    equ     0cdefh
  142. change  equ     0def0h
  143. bits    equ     0ef01h
  144. testva  equ     0f012h
  145. prt     equ     r3
  146.  
  147.         a       r5,@table
  148.         ab      3,*2+
  149.         ai      6,0ch
  150.         s       @oldval,@newval
  151.         sb      *6+,1
  152.         mpy     @new,5
  153.         div     @loc,2
  154.         inc     @count
  155.         inct    5
  156.         dec     @count
  157.         dect    prt
  158.         abs     @list(7)
  159.         neg     5
  160.         b       *3
  161.         bl      @tran
  162.         blwp    @tran
  163.         rtwp
  164.         jmp     $
  165.         jh      $
  166.         jl      $
  167.         jhe     $
  168.         jle     $
  169.         jgt     $
  170.         jlt     $
  171.         jeq     $
  172.         jne     $
  173.         joc     $
  174.         jnc     $
  175.         jno     $
  176.         jop     $
  177.         x       @tran
  178.         c       r5,@table
  179.         cb      3,*2+
  180.         ci      9,0f330h
  181.         coc     @testbits,8
  182.         czc     @testbit,8
  183.         rset
  184.         idle
  185.         ckof
  186.         ckon
  187.         lrex
  188.         sbo     20
  189.         sbz     30
  190.         tb      40
  191.         ldcr    @1234h,7
  192.         stcr    @1234h,7
  193.         li      7,5
  194.         limi    3
  195.         lwpi    12h
  196.         mov     7,7
  197.         mov     @ones,9
  198.         movb    @temp,3
  199.         swpb    *0+
  200.         stst    7
  201.         stwp    r5
  202.         andi    0,6d03h
  203.         ori     5,60d3h
  204.         xor     @change,2
  205.         inv     11
  206.         clr     *0bh
  207.         seto    3
  208.         soc     3,@new
  209.         socb    5,8
  210.         szc     5,7
  211.         SZCB    @bits,@testva
  212.         sra     5,0
  213.         sla     10,5
  214.         srl     0,3
  215.         src     2,7
  216.         xop     *4,wr4
  217.  
  218.         cpu     tms9995
  219.  
  220.         mpys    wr5
  221.         divs    *wr9+
  222.         lst     wr4
  223.         lwp     wr8
  224.  
  225.         cpu     tms9940
  226.  
  227.         irp     instr,rset,lrex,ckon,ckof       ; deleted on TMS9940
  228.         expect  1500
  229.         instr
  230.         endexpect
  231.         endm
  232.  
  233.         liim    2                       ; new on TMS9940
  234.         dca     *wr5
  235.         dcs     *wr7+
  236.  
  237.         cpu     tms99105
  238.  
  239.         ; these instructions are privileged on 99xxx (and TI990 computer):
  240.  
  241.         irp     instr,idle,rset,ckon,ckof,lrex
  242.         expect  50
  243.         instr
  244.         endexpect
  245.         endm
  246.         expect  50
  247.         limi    1234h
  248.         endexpect
  249.  
  250.         bind    @1234h(wr9)
  251.         evad    *wr4
  252.  
  253.         blsk    wr5,1234h
  254.  
  255.         am      @1234h(wr13),@2345h(wr5)
  256.         sm      @1234h(wr13),@2345h(wr5)
  257.  
  258.         slam    @1234h(wr13),10
  259.         sram    *wr13,11
  260.  
  261.         tmb     *wr2,wr0
  262.         tcmb    @1234h(wr13),10
  263.         tsmb    @1234h(wr13),10
  264.  
  265.         rtwp    0
  266.         rtwp    1
  267.         rtwp    2
  268.         expect  1985
  269.         rtwp    3
  270.         endexpect
  271.         rtwp    4
  272.         expect  1320
  273.         rtwp    5
  274.         endexpect
  275.  
  276.         cpu     tms99110
  277.  
  278.         ; only on TI990 & TMS99110
  279.  
  280.         expect  50     
  281.         lmf     r5,0
  282.         endexpect
  283.         expect  50
  284.         lds     @bits
  285.         endexpect
  286.         expect  50
  287.         ldd     @bits
  288.         endexpect
  289.  
  290.         mm      @1234h(wr13),@2345h(wr5)
  291.         cr      @1234h(wr13),@2345h(wr5)
  292.         cer
  293.         cre
  294.         negr
  295.         cri
  296.         ar      @1234h(wr9)
  297.         sr      *wr10
  298.         mr      @1234h(wr9)
  299.         dr      *wr10
  300.         lr      @1234h(wr9)
  301.         str     *wr10
  302.         cir     @1234h(wr9)
  303.  
  304.         ; only on TI990/12
  305.  
  306.         cpu     ti990/12
  307.  
  308.         ; Type 11 instructions have a byte count as third argument.
  309.         ; The TMS99xxx only implements AM and SM of those, with the
  310.         ; additional restriction that the byte count is limited to 4,
  311.         ; i.e. operand size is fixed to 32 bits.  This is also the
  312.         ; default for TI990/12 if the third argument is omitted:
  313.  
  314.         am      *WR7,@1234h(wr9),4
  315.         am      *WR7,@1234h(wr9)
  316.         sm      *WR7,@1234h(wr9),8
  317.         nrm     *WR8,@1234h(wr10),7
  318.         rto     *WR9,@1234h(wr11),6
  319.         lto     *WR10,@1234h(wr12),5
  320.         cnto    *WR11,@1234h(wr13),4
  321.         bdc     *WR12,@1234h(wr14),3
  322.         dbc     *WR13,@1234h(wr15),2
  323.         swpm    *WR14,@1234h(wr1),1
  324.         xorm    *WR15,@1234h(wr2),wr0
  325.         orm     *WR1,@1234h(wr3),15
  326.         andm    *WR2,@1234h(wr4),14
  327.  
  328.         emd
  329.         eint
  330.         dint
  331.         cdi
  332.         negd
  333.         cde
  334.         ced
  335.         xit
  336.  
  337.         ad      *wr9
  338.         cid     wr5
  339.         dd      *wr12+
  340.         ld      @1234h
  341.         md      @1234h(wr12)
  342.         sd      wr12
  343.         std     @1234h(wr12)
  344.  
  345.         expect  2170
  346.         crc     @1234h(wr12),@5678(wr13)
  347.         endexpect
  348.         crc     @1234h(wr12),@5678h(wr13),,wr15
  349.         ckpt    wr15
  350.         crc     @1234h(wr12),@5678h(wr13),,
  351.         crc     @1234h(wr12),@5678h(wr13),wr0
  352.         crc     @1234h(wr12),@5678h(wr13),12
  353.         cs      @1234h(wr12),@5678h(wr13),12
  354.         movs    @1234h(wr12),@5678h(wr13),12
  355.         mvsk    @1234h(wr12),@5678h(wr13),12
  356.         mvsr    @1234h(wr12),@5678h(wr13),12
  357.         pops    @1234h(wr12),@5678h(wr13),12
  358.         pshs    @1234h(wr12),@5678h(wr13),12
  359.         seqb    @1234h(wr12),@5678h(wr13),12
  360.         sneb    @1234h(wr12),@5678h(wr13),12
  361.         ts      @1234h(wr12),@5678h(wr13),12
  362.         ckpt    nothing
  363.         expect  2170
  364.         crc     @1234h(wr12),@5678(wr13)
  365.         endexpect
  366.  
  367.         expect  2180,2180
  368.         iof     @1234h,1
  369.         iof     @1234h,(1)
  370.         endexpect
  371.         iof     @1234h,(1,8)
  372.  
  373.         insf    @0aa55h,@3366h,(1,8)
  374.         xv      @0aa55h,@3366h,(1,8)
  375.         xf      @0aa55h,@3366h,(1,8)
  376.  
  377.         arj     dest,,wr3
  378.         arj     dest,wr3
  379.         arj     dest,1,wr3
  380.         arj     dest,8,wr3
  381.         srj     dest,8,wr3
  382. dest:
  383.  
  384.         stpc    r4
  385.         lim     r5
  386.         lcs     r6
  387.  
  388.         mova    @1234h(wr12),*wr4
  389.  
  390.         slsl    eq,@1234h,@5678h
  391.         slsp    ne,@1234h,@5678h
  392.  
  393.         ep      @1234h,@5678h,6,10
  394.  
  395.         ; leave out some values that may be subject of rounding errors:
  396.  
  397.         single  0.0             ; 0000 0000 = 0.0000 * 16^(-64)
  398.         single  1.0             ; 4110 0000 = 1/16 * 16^1
  399.         single  2.0             ; 4120 0000 = 1/8 * 16^1
  400.         single  4.0             ; 4140 0000 = 1/4 * 16^1
  401.         single  8.0             ; 4180 0000 = 1/2 * 16^1
  402.         single  16.0            ; 4210 0000 = 1/16 * 16^2
  403.         single  24.0            ; 4218 0000 = 3/16 * 16^2
  404.         single  42.0            ; 422A 0000 = 21/8 * 16^2
  405.         single  0.125           ; 4020 0000 = 1/8 * 16^0
  406.         single  0.0078125       ; 3F20 0000 = 1/8 * 16^-1
  407.         single  1000.0          ; 433E 8000 = 0.24414062 * 16^3
  408.         single  -1000.0         ; C33E 8000 = -0.24414062 * 16^3
  409.         single  -118.625        ; C276 A000 = -0.463... * 16^1
  410. ;       single  0.1             ; 4019 999A = 0.1 * 16^0
  411. ;       single  7.23700528E75   ; 7FFF FFFf (almost maximum)
  412. ;       single  5.397605346934E-79      ; 0010 0000 or 000F FFFF (smallest non-denormal number)
  413.