Subversion Repositories pentevo

Rev

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

  1.         cpu     ibm5100
  2.         page    0
  3.  
  4. dest    reg     r5
  5. mask    equ     r12
  6. src     reg     r9
  7. ptr     equ     r13
  8.  
  9. dev1    port    x'a'
  10. dev2    port    b'1110'
  11.  
  12. var1    equ     x'aa'
  13. var2    equ     x'ac'
  14.  
  15.         ; in a first iteration, use the instruction in the same
  16.         ; order as in t_palm_i.asm, to ease comparison:
  17.  
  18.         ; basic jump instructions
  19.  
  20.         sle     dest,mask               ; 'jle dest,mask' in IBM syntax
  21.         slt     dest,mask               ; 'jlo dest,mask' in IBM syntax
  22.         se      dest,mask               ; 'jeq dest,mask' in IBM syntax
  23.         sz      dest                    ; 'jno dest' in IBM syntax
  24.         ss      dest                    ; 'jall dest,mask' in IBM syntax
  25.         sbs     dest,mask               ; 'jallm dest,mask' in IBM syntax
  26.         sbc     dest,mask               ; 'jnom dest,mask' in IBM syntax
  27.         sbsh    dest,mask               ; 'jham dest,mask' in IBM syntax
  28.         sgt     dest,mask               ; 'jhi dest,mask' in IBM syntax
  29.         sge     dest,mask               ; 'jhe dest,mask' in IBM syntax
  30.         sne     dest,mask               ; 'jhl dest,mask' in IBM syntax
  31.         snz     dest                    ; 'jsb dest' in IBM syntax
  32.         sns     dest                    ; 'jsn dest,mask' in IBM syntax
  33.         snbs    dest,mask               ; 'jsnm dest,mask' in IBM syntax
  34.         snbc    dest,mask               ; 'jsm dest,mask' in IBM syntax
  35.         snbsh   dest,mask               ; 'jhsnm dest,mask' in IBM syntax
  36.  
  37.         ; basic arithmetic
  38.  
  39.         dec2    dest, src               ; 'mvm2 dest, src' in IBM syntax
  40.         dec2    dest                    ; 'mvm2 dest, dest' in IBM syntax
  41.         dec     dest, src               ; 'mvm1 dest, src' in IBM syntax
  42.         dec     dest                    ; 'mvm1 dest, dest' in IBM syntax
  43.         inc     dest, src               ; 'mvp1 dest, src' in IBM syntax
  44.         inc     dest                    ; 'mvp1 dest, dest' in IBM syntax
  45.         inc2    dest, src               ; 'mvp2 dest, src' in IBM syntax
  46.         inc2    dest                    ; 'mvp2 dest, dest' in IBM syntax
  47.         move    dest, src
  48.         and     dest, src
  49.         or      dest, src
  50.         xor     dest, src
  51.         add     dest, src
  52.         sub     dest, src
  53.         addh    dest, src               ; 'adds1 dest, src' in IBM syntax
  54.         addh2   dest, src               ; 'adds2 dest, src' in IBM syntax
  55.         mhl     dest, src               ; 'htl dest, src' in IBM syntax
  56.         mlh     dest, src               ; 'lth dest, src' in IBM syntax
  57.         getb    dest, dev1              ; 'getr dev1, dest' in IBM syntax
  58.         getadd  dest, dev2              ; 'geta dev2, dest' in IBM syntax
  59.  
  60.         ; basic shift & rotate
  61.  
  62.         shr     dest                    ; 'shftr dest' in IBM syntax
  63.         ror     dest                    ; 'rotr dest' in IBM syntax
  64.         ror3    dest                    ; 'srr3 dest' in IBM syntax
  65.         swap    dest                    ; 'srr4 dest' in IBM syntax
  66.  
  67.         ; direct load/store
  68.  
  69.         move    dest,var1               ; 'ldhd dest,var1' in IBM syntax
  70.         expect  1351
  71.         move    dest,var1+1
  72.         endexpect
  73.         move    var2,src                ; 'sthd src,var2' in IBM syntax
  74.         expect  1351
  75.         move    var2-1,src
  76.         endexpect
  77.  
  78.         ; indirect load/store
  79.  
  80.         move    dest,(ptr)              ; 'ldhi dest,ptr[,0]' in IBM syntax
  81.         move    dest,(ptr)'             ; 'ldhi dest,ptr,1' in IBM syntax
  82.         move    dest,(ptr)+             ; 'ldhi dest,ptr,2' in IBM syntax
  83.         move    dest,(ptr)+'            ; 'ldhi dest,ptr,3' in IBM syntax
  84.         move    dest,(ptr)++            ; 'ldhi dest,ptr,4' in IBM syntax
  85.         expect  1350
  86.         move    dest,(ptr)+++           ; too much...
  87.         endexpect
  88.         move    dest,(ptr)~             ; 'ldhi dest,ptr,-1' in IBM syntax
  89.         move    dest,(ptr)-             ; 'ldhi dest,ptr,-2' in IBM syntax
  90.         move    dest,(ptr)-~            ; 'ldhi dest,ptr,-3' in IBM syntax
  91.         move    dest,(ptr)--            ; 'ldhi dest,ptr,-4' in IBM syntax
  92.         expect  1350
  93.         move    dest,(ptr)---           ; too much...
  94.         endexpect
  95.  
  96.         move    (ptr),dest              ; 'sthi dest,ptr[,0]' in IBM syntax
  97.         move    (ptr)',dest             ; 'sthi dest,ptr,1' in IBM syntax
  98.         move    (ptr)+,dest             ; 'sthi dest,ptr,2' in IBM syntax
  99.         move    (ptr)+',dest            ; 'sthi dest,ptr,3' in IBM syntax
  100.         move    (ptr)++,dest            ; 'sthi dest,ptr,4' in IBM syntax
  101.         expect  1350
  102.         move    (ptr)+++,dest           ; too much...
  103.         endexpect
  104.         move    (ptr)~,dest             ; 'sthi dest,ptr,-1' in IBM syntax
  105.         move    (ptr)-,dest             ; 'sthi dest,ptr,-2' in IBM syntax
  106.         move    (ptr)-~,dest            ; 'sthi dest,ptr,-3' in IBM syntax
  107.         move    (ptr)--,dest            ; 'sthi dest,ptr,-4' in IBM syntax
  108.         expect  1350
  109.         move    (ptr)---,dest           ; too much...
  110.         endexpect
  111.  
  112.         movb    dest,(ptr)              ; 'ldbi dest,ptr[,0]' in IBM syntax
  113.         movb    dest,(ptr)+             ; 'ldbi dest,ptr,1' in IBM syntax
  114.         movb    dest,(ptr)++            ; 'ldbi dest,ptr,2' in IBM syntax
  115.         movb    dest,(ptr)+++           ; 'ldbi dest,ptr,3' in IBM syntax
  116.         movb    dest,(ptr)++++          ; 'ldbi dest,ptr,4' in IBM syntax
  117.         expect  1350
  118.         movb    dest,(ptr)+++++         ; too much...
  119.         endexpect
  120.         movb    dest,(ptr)-             ; 'ldbi dest,ptr,-1' in IBM syntax
  121.         movb    dest,(ptr)--            ; 'ldbi dest,ptr,-2' in IBM syntax
  122.         movb    dest,(ptr)---           ; 'ldbi dest,ptr,-3' in IBM syntax
  123.         movb    dest,(ptr)----          ; 'ldbi dest,ptr,-4' in IBM syntax
  124.         expect  1350
  125.         movb    dest,(ptr)-----         ; too much...
  126.         endexpect
  127.  
  128.         movb    (ptr),dest              ; 'stbi dest,ptr[,0]' in IBM syntax
  129.         movb    (ptr)+,dest             ; 'stbi dest,ptr,1' in IBM syntax
  130.         movb    (ptr)++,dest            ; 'stbi dest,ptr,2' in IBM syntax
  131.         movb    (ptr)+++,dest           ; 'stbi dest,ptr,3' in IBM syntax
  132.         movb    (ptr)++++,dest          ; 'stbi dest,ptr,4' in IBM syntax
  133.         expect  1350
  134.         movb    (ptr)+++++,dest         ; too much...
  135.         endexpect
  136.         movb    (ptr)-,dest             ; 'stbi dest,ptr,-1' in IBM syntax
  137.         movb    (ptr)--,dest            ; 'stbi dest,ptr,-2' in IBM syntax
  138.         movb    (ptr)---,dest           ; 'stbi dest,ptr,-3' in IBM syntax
  139.         movb    (ptr)----,dest          ; 'stbi dest,ptr,-4' in IBM syntax
  140.         expect  1350
  141.         movb    (ptr)-----,dest         ; too much...
  142.         endexpect
  143.  
  144.         ; immediate argument
  145.  
  146.         lbi     dest,#x'aa'             ; 'emit dest,#x'aa'' in IBM syntax
  147.         lbi     dest,x'aa'              ; 'emit dest,x'aa'' in IBM syntax
  148.         clr     dest,#x'aa'             ; 'clri dest,#x'aa'' in IBM syntax
  149.         clr     dest,x'aa'              ; 'clri dest,x'aa'' in IBM syntax
  150.         set     dest,#x'aa'             ; 'seti dest,#x'aa'' in IBM syntax
  151.         set     dest,x'aa'              ; 'seti dest,x'aa'' in IBM syntax
  152.  
  153.         add     dest,#x'aa'             ; 'addi dest,#x'aa'' in IBM syntax
  154.         add     dest,#1                 ; 'addi dest,#1' in IBM syntax
  155.         add     dest,#256               ; 'addi dest,#256' in IBM syntax
  156.         expect  1315
  157.         add     dest,#0
  158.         endexpect
  159.         expect  1320
  160.         add     dest,#257
  161.         endexpect
  162.  
  163.         sub     dest,#x'aa'             ; 'subi dest,#x'aa'' in IBM syntax
  164.         sub     dest,#1                 ; 'subi dest,#1' in IBM syntax
  165.         sub     dest,#256               ; 'subi dest,#256' in IBM syntax
  166.         expect  1315
  167.         sub     dest,#0
  168.         endexpect
  169.         expect  1320
  170.         sub     dest,#257
  171.         endexpect
  172.  
  173.         ; I/O
  174.  
  175.         ctrl    dev2,#x'cf'             ; 'ctl dev2,#x'cf'' in IBM syntax
  176.         ctrl    dev2,b'11001111'        ; 'ctl dev2,b'11001111'' in IBM syntax
  177.  
  178.         putb    dev2,(ptr)              ; 'putb dev2,ptr[,0]' in IBM syntax
  179.         putb    dev2,(ptr)+             ; 'putb dev2,ptr,1' in IBM syntax
  180.         putb    dev2,(ptr)++            ; 'putb dev2,ptr,2' in IBM syntax
  181.         putb    dev2,(ptr)+++           ; 'putb dev2,ptr,3' in IBM syntax
  182.         putb    dev2,(ptr)++++          ; 'putb dev2,ptr,4' in IBM syntax
  183.         expect  1350
  184.         putb    dev2,(ptr)+++++         ; too much :-)
  185.         endexpect
  186.         putb    dev2,(ptr)-             ; 'putb dev2,ptr,-1' in IBM syntax
  187.         putb    dev2,(ptr)--            ; 'putb dev2,ptr,-2' in IBM syntax
  188.         putb    dev2,(ptr)---           ; 'putb dev2,ptr,-3' in IBM syntax
  189.         putb    dev2,(ptr)----          ; 'putb dev2,ptr,-4' in IBM syntax
  190.         expect  1350
  191.         putb    dev2,(ptr)-----         ; too much :-)
  192.         endexpect
  193.  
  194.         getb    (ptr),dev1              ; 'getb dev1,ptr[,0]' in IBM syntax
  195.         getb    (ptr)+,dev1             ; 'getb dev1,ptr,1' in IBM syntax
  196.         getb    (ptr)++,dev1            ; 'getb dev1,ptr,2' in IBM syntax
  197.         getb    (ptr)+++,dev1           ; 'getb dev1,ptr,3' in IBM syntax
  198.         getb    (ptr)++++,dev1          ; 'getb dev1,ptr,4' in IBM syntax
  199.         expect  1350
  200.         getb    (ptr)+++++,dev1         ; too much :-)
  201.         endexpect
  202.         getb    (ptr)-,dev1             ; 'getb dev1,ptr,-1' in IBM syntax
  203.         getb    (ptr)--,dev1            ; 'getb dev1,ptr,-2' in IBM syntax
  204.         getb    (ptr)---,dev1           ; 'getb dev1,ptr,-3' in IBM syntax
  205.         getb    (ptr)----,dev1          ; 'getb dev1,ptr,-4' in IBM syntax
  206.         expect  1350
  207.         getb    (ptr)-----,dev1         ; too much :-)
  208.         endexpect
  209.  
  210.         stat    r14,13                  ; 'getrb 13,r14' in IBM syntax
  211.  
  212.         ; now everything again, but in machine code order, like on Christian's page:
  213.  
  214. i       port    1
  215. ii      equ     x'aa'
  216. j       equ     x'12'
  217. Rx      reg     r1
  218. Ry      reg     r2
  219.  
  220.         dec2    Rx, Ry
  221.         halt
  222.         dec     Rx, Ry
  223.         inc     Rx, Ry
  224.         inc2    Rx, Ry
  225.         move    Rx, Ry
  226.         nop
  227.         and     Rx, Ry
  228.         or      Rx, Ry
  229.         xor     Rx, Ry
  230.         add     Rx, Ry
  231.         sub     Rx, Ry
  232.         addh    Rx, Ry
  233.         addh2   Rx, Ry
  234.         mhl     Rx, Ry
  235.         mlh     Rx, Ry
  236.         getb    Ry, i
  237.         getadd  Ry, i
  238.         ctrl    i, #j
  239.         move    Rx, ii
  240.         move    ii, Rx
  241.         putb    i, (Rx)+
  242.         putb    i, (Rx)++
  243.         putb    i, (Rx)+++
  244.         putb    i, (Rx)++++
  245.         putb    i, (Rx)-
  246.         putb    i, (Rx)--
  247.         putb    i, (Rx)---
  248.         putb    i, (Rx)----
  249.         putb    i, (Rx)
  250.         move    (Ry)', Rx
  251.         move    (Ry)+, Rx
  252.         move    (Ry)+', Rx
  253.         move    (Ry)++, Rx
  254.         move    (Ry)~, Rx
  255.         move    (Ry)-, Rx
  256.         move    (Ry)-~, Rx
  257.         move    (Ry)--, Rx
  258.         move    (Ry), Rx
  259.         movb    Rx, (Ry)+
  260.         movb    Rx, (Ry)++
  261.         movb    Rx, (Ry)+++
  262.         movb    Rx, (Ry)++++
  263.         movb    Rx, (Ry)-
  264.         movb    Rx, (Ry)--
  265.         movb    Rx, (Ry)---
  266.         movb    Rx, (Ry)----
  267.         movb    Rx, (Ry)
  268.         movb    (Ry)+, Rx
  269.         movb    (Ry)++, Rx
  270.         movb    (Ry)+++, Rx
  271.         movb    (Ry)++++, Rx
  272.         movb    (Ry)-, Rx
  273.         movb    (Ry)--, Rx
  274.         movb    (Ry)---, Rx
  275.         movb    (Ry)----, Rx
  276.         movb    (Ry), Rx
  277.         lbi     Rx, #i
  278.         clr     Rx, #i
  279.         add     Rx, #(i+1)
  280.         set     Rx, #i
  281.         sle     Rx, Ry
  282.         slt     Rx, Ry
  283.         se      Rx, Ry
  284.         sz      Rx
  285.         ss      Rx
  286.         sbs     Rx, Ry
  287.         sbc     Rx, Ry
  288.         sbsh    Rx, Ry
  289.         sgt     Rx, Ry
  290.         sge     Rx, Ry
  291.         sne     Rx, Ry
  292.         snz     Rx
  293.         sns     Rx
  294.         snbs    Rx, Ry
  295.         snbc    Rx, Ry
  296.         snbsh   Rx, Ry
  297.  
  298.         ; NOTE: The assembler checks for attempts to skip a multiword
  299.         ; instruction, which is here the case (LWI uses two machine words).
  300.         ; Since this is only a synthetic test and not code that will ever
  301.         ; be executed, we suppress the warning.
  302.  
  303.         expect  420
  304.         lwi     Rx, #i
  305.         endexpect
  306.         move    Rx, (Ry)'
  307.         move    Rx, (Ry)+
  308.         move    Rx, (Ry)+'
  309.         move    Rx, (Ry)++
  310.         move    Rx, (Ry)~
  311.         move    Rx, (Ry)-
  312.         move    Rx, (Ry)-~
  313.         move    Rx, (Ry)--
  314.         move    Rx, (Ry)
  315.         shr     Rx
  316.         ror     Rx
  317.         ror3    Rx
  318.         swap    Rx
  319.         getb    (Rx)+, i
  320.         getb    (Rx)++, i
  321.         getb    (Rx)+++, i
  322.         getb    (Rx)++++, i
  323.         getb    (Rx)-, i
  324.         getb    (Rx)--, i
  325.         getb    (Rx)---, i
  326.         getb    (Rx)----, i
  327.         getb    (Rx), i
  328.         stat    Rx, i
  329.         sub     Rx, #(i+1)
  330.