Subversion Repositories pentevo

Rev

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

  1.         cpu     z8002
  2.         page    0
  3.         supmode on
  4.  
  5.         adc     r2,r3
  6.         adc     rh2,rl3
  7.         adcb    rh2,rl3
  8.         expect  1130
  9.         adc     rr4,rr6
  10.         endexpect
  11.  
  12.         ; ADD R,R
  13.         add     r2,r3
  14.         add     rh2,rl3
  15.         addb    rh2,rl3
  16.         add     rr4,rr6
  17.         addl    rr4,rr6
  18.         ; ADD R,IM
  19.         add     rh2,#57h
  20.         addb    rh2,#57h
  21.         add     r5,#5678h
  22.         add     rr8,#12345678h
  23.         addl    rr8,#12345678h
  24.         ; ADD R,IR
  25.         add     r2,@r3
  26.         add     rh2,@r3
  27.         addb    rh2,@r3
  28.         add     rr4,@r6
  29.         addl    rr4,@r6
  30.         ; ADD R,DA
  31.         add     r2,1234h
  32.         add     rh2,1234h
  33.         addb    rh2,1234h
  34.         add     rr4,1234h
  35.         addl    rr4,1234h
  36.         ; ADD R,X
  37.         add     r2,1234h(r10)
  38.         add     rh2,1234h(r10)
  39.         addb    rh2,1234h(r10)
  40.         add     rr4,1234h(r10)
  41.         addl    rr4,1234h(r10)
  42.  
  43.         ; AND R,R
  44.         and     r2,r3
  45.         and     rh2,rl3
  46.         andb    rh2,rl3
  47.         expect  1130,1200
  48.         and     rr4,rr6
  49.         andl    rr4,rr6
  50.         endexpect
  51.         ; AND R,IM
  52.         and     rh2,#57h
  53.         andb    rh2,#57h
  54.         and     r5,#5678h
  55.         ; AND R,IR
  56.         and     r2,@r3
  57.         and     rh2,@r3
  58.         andb    rh2,@r3
  59.         ; AND R,DA
  60.         and     r2,1234h
  61.         and     rh2,1234h
  62.         andb    rh2,1234h
  63.         ; AND R,X
  64.         and     r2,1234h(r10)
  65.         and     rh2,1234h(r10)
  66.         andb    rh2,1234h(r10)
  67.  
  68.         ; BIT R,IM
  69.         bit     rl3,#4
  70.         bitb    rl3,#4
  71.         bit     r13,#12
  72.         ; BIT IR,IM
  73.         bit     @r9,#12
  74.         bitb    @r9,#4
  75.         bit     @r9,#12
  76.         ; BIT DA,IM
  77.         bit     1234h,#12
  78.         bitb    1234h,#4
  79.         bit     1234h,#12
  80.         ; BIT X,IM
  81.         bit     1234h(r6),#12
  82.         bitb    1234h(r6),#4
  83.         bit     1234h(r6),#12
  84.         ; BIT R,R
  85.         bit     rl3,r4
  86.         bitb    rl3,r4
  87.         bit     r13,r12
  88.  
  89.         call    @r8
  90.         call    1234h
  91.         call    1234h(r6)
  92.  
  93.         calr    $+300h
  94.         calr    $-80h
  95.  
  96.         clr     rh6
  97.         clrb    rh6
  98.         clr     r12
  99.         clrb    @r4
  100.         clr     @r4
  101.         clrb    1234h
  102.         clr     1234h
  103.         clrb    1234h(r2)
  104.         clr     1234h(r2)
  105.  
  106.         com     rh6
  107.         comb    rh6
  108.         com     r12
  109.         comb    @r4
  110.         com     @r4
  111.         comb    1234h
  112.         com     1234h
  113.         comb    1234h(r2)
  114.         com     1234h(r2)
  115.  
  116.         expect  1110
  117.         comflg
  118.         endexpect
  119.         comflg  c
  120.         comflg  z
  121.         comflg  s
  122.         comflg  p
  123.         comflg  v
  124.         comflg  p/v
  125.         comflg  c,z,p/v
  126.         expect  1366
  127.         comflg  x
  128.         endexpect
  129.         expect  1367
  130.         comflg  c,z,c,s
  131.         endexpect
  132.  
  133.         ; CP R,R
  134.         cp      r2,r3
  135.         cp      rh2,rl3
  136.         cpb     rh2,rl3
  137.         cp      rr4,rr6
  138.         cpl     rr4,rr6
  139.         ; CP R,IM
  140.         cp      rh2,#57h
  141.         cpb     rh2,#57h
  142.         cp      r5,#5678h
  143.         cp      rr8,#12345678h
  144.         cpl     rr8,#12345678h
  145.         ; CP R,IR
  146.         cp      r2,@r3
  147.         cp      rh2,@r3
  148.         cpb     rh2,@r3
  149.         cp      rr4,@r6
  150.         cpl     rr4,@r6
  151.         ; CP R,DA
  152.         cp      r2,1234h
  153.         cp      rh2,1234h
  154.         cpb     rh2,1234h
  155.         cp      rr4,1234h
  156.         cpl     rr4,1234h
  157.         ; CP R,X
  158.         cp      r2,1234h(r10)
  159.         cp      rh2,1234h(r10)
  160.         cpb     rh2,1234h(r10)
  161.         cp      rr4,1234h(r10)
  162.         cpl     rr4,1234h(r10)
  163.         ; CP IR,IM
  164.         cpb     @r2,#57h
  165.         cp      @r5,#5678h
  166.         expect  1130
  167.         cpl     @r8,#12345678h
  168.         endexpect
  169.         ; CP DA,IM
  170.         cpb     1234h,#57h
  171.         cp      1234h,#5678h
  172.         expect  1130
  173.         cpl     1234h,#12345678h
  174.         endexpect
  175.         ; CP X,IM
  176.         cpb     1234h(r14),#57h
  177.         cp      1234h(r14),#5678h
  178.         expect  1130
  179.         cpl     1234h(r14),#12345678h
  180.         endexpect
  181.  
  182.         cpd     rh5,@r10,r4,eq
  183.         cpdb    rh5,@r10,r4,eq
  184.         cpd     r5,@r10,r4,eq
  185.         expect  1131
  186.         cpdb    r5,@r10,r4,eq   ; expect operand size conflict
  187.         endexpect
  188.         expect  1130
  189.         cpd     rr8,@r10,r4,eq  ; expect invalid operand size
  190.         endexpect
  191.         expect  95
  192.         cpd     rh5,@r5,r4,eq   ; expect overlap dst<->src
  193.         endexpect
  194.         expect  95
  195.         cpd     r5,@r5,r4,eq    ; expect overlap dst<->src
  196.         endexpect
  197.         expect  95
  198.         cpd     rh5,@r6,r5,eq   ; expect overlap dst<->cnt
  199.         endexpect
  200.         expect  95
  201.         cpd     r5,@r6,r5,eq    ; expect overlap dst<->cnt
  202.         endexpect
  203.         expect  95
  204.         cpd     r5,@r6,r6,eq    ; expect overlap src<->cnt
  205.         endexpect
  206.  
  207.         cpdr    rh5,@r10,r4,eq
  208.         cpdrb   rh5,@r10,r4,eq
  209.         cpdr    r5,@r10,r4,eq
  210.         expect  1131
  211.         cpdrb   r5,@r10,r4,eq   ; expect operand size conflict
  212.         endexpect
  213.         expect  1130
  214.         cpdr    rr8,@r10,r4,eq  ; expect invalid operand size
  215.         endexpect
  216.         expect  95
  217.         cpdr    rh5,@r5,r4,eq   ; expect overlap dst<->src
  218.         endexpect
  219.         expect  95
  220.         cpdr    r5,@r5,r4,eq    ; expect overlap dst<->src
  221.         endexpect
  222.         expect  95
  223.         cpdr    rh5,@r6,r5,eq   ; expect overlap dst<->cnt
  224.         endexpect
  225.         expect  95
  226.         cpdr    r5,@r6,r5,eq    ; expect overlap dst<->cnt
  227.         endexpect
  228.         expect  95
  229.         cpdr    r5,@r6,r6,eq    ; expect overlap src<->cnt
  230.         endexpect
  231.  
  232.         cpi     rh5,@r10,r4,eq
  233.         cpib    rh5,@r10,r4,eq
  234.         cpi     r5,@r10,r4,eq
  235.         expect  1131
  236.         cpib    r5,@r10,r4,eq   ; expect operand size conflict
  237.         endexpect
  238.         expect  1130
  239.         cpi     rr8,@r10,r4,eq  ; expect invalid operand size
  240.         endexpect
  241.         expect  95
  242.         cpi     rh5,@r5,r4,eq   ; expect overlap dst<->src
  243.         endexpect
  244.         expect  95
  245.         cpi     r5,@r5,r4,eq    ; expect overlap dst<->src
  246.         endexpect
  247.         expect  95
  248.         cpi     rh5,@r6,r5,eq   ; expect overlap dst<->cnt
  249.         endexpect
  250.         expect  95
  251.         cpi     r5,@r6,r5,eq    ; expect overlap dst<->cnt
  252.         endexpect
  253.         expect  95
  254.         cpi     r5,@r6,r6,eq    ; expect overlap src<->cnt
  255.         endexpect
  256.  
  257.         cpi     rh5,@r10,r4
  258.         cpib    rh5,@r10,r4
  259.         cpi     r5,@r10,r4
  260.         expect  1131
  261.         cpib    r5,@r10,r4      ; expect operand size conflict
  262.         endexpect
  263.         expect  1130
  264.         cpi     rr8,@r10,r4     ; expect invalid operand size
  265.         endexpect
  266.         expect  95
  267.         cpi     rh5,@r5,r4      ; expect overlap dst<->src
  268.         endexpect
  269.         expect  95
  270.         cpi     r5,@r5,r4       ; expect overlap dst<->src
  271.         endexpect
  272.         expect  95
  273.         cpi     rh5,@r6,r5      ; expect overlap dst<->cnt
  274.         endexpect
  275.         expect  95
  276.         cpi     r5,@r6,r5       ; expect overlap dst<->cnt
  277.         endexpect
  278.         expect  95
  279.         cpi     r5,@r6,r6       ; expect overlap src<->cnt
  280.         endexpect
  281.  
  282.         cpir    rh5,@r10,r4,eq
  283.         cpirb   rh5,@r10,r4,eq
  284.         cpir    r5,@r10,r4,eq
  285.         expect  1131
  286.         cpirb   r5,@r10,r4,eq   ; expect operand size conflict
  287.         endexpect
  288.         expect  1130
  289.         cpir    rr8,@r10,r4,eq  ; expect invalid operand size
  290.         endexpect
  291.         expect  95
  292.         cpir    rh5,@r5,r4,eq   ; expect overlap dst<->src
  293.         endexpect
  294.         expect  95
  295.         cpir    r5,@r5,r4,eq    ; expect overlap dst<->src
  296.         endexpect
  297.         expect  95
  298.         cpir    rh5,@r6,r5,eq   ; expect overlap dst<->cnt
  299.         endexpect
  300.         expect  95
  301.         cpir    r5,@r6,r5,eq    ; expect overlap dst<->cnt
  302.         endexpect
  303.         expect  95
  304.         cpir    r5,@r6,r6,eq    ; expect overlap src<->cnt
  305.         endexpect
  306.  
  307.         cpsdb   @r5,@r10,r4,eq
  308.         cpsd    @r5,@r10,r4,eq
  309.         expect  95
  310.         cpsd    @r5,@r5,r4,eq   ; expect overlap dst<->src
  311.         endexpect
  312.         expect  95
  313.         cpsdb   @r5,@r5,r4,eq   ; expect overlap dst<->src
  314.         endexpect
  315.         expect  95
  316.         cpsd    @r5,@r6,r5,eq   ; expect overlap dst<->cnt
  317.         endexpect
  318.         expect  95
  319.         cpsdb   @r5,@r6,r5,eq   ; expect overlap dst<->cnt
  320.         endexpect
  321.         expect  95
  322.         cpsd    @r5,@r6,r6,eq   ; expect overlap src<->cnt
  323.         endexpect
  324.  
  325.         cpsdrb  @r5,@r10,r4,eq
  326.         cpsdr   @r5,@r10,r4,eq
  327.         expect  95
  328.         cpsdr   @r5,@r5,r4,eq   ; expect overlap dst<->src
  329.         endexpect
  330.         expect  95
  331.         cpsdrb  @r5,@r5,r4,eq   ; expect overlap dst<->src
  332.         endexpect
  333.         expect  95
  334.         cpsdr   @r5,@r6,r5,eq   ; expect overlap dst<->cnt
  335.         endexpect
  336.         expect  95
  337.         cpsdrb  @r5,@r6,r5,eq   ; expect overlap dst<->cnt
  338.         endexpect
  339.         expect  95
  340.         cpsdr   @r5,@r6,r6,eq   ; expect overlap src<->cnt
  341.         endexpect
  342.  
  343.         cpsib   @r5,@r10,r4,eq
  344.         cpsi    @r5,@r10,r4,eq
  345.         expect  95
  346.         cpsi    @r5,@r5,r4,eq   ; expect overlap dst<->src
  347.         endexpect
  348.         expect  95
  349.         cpsib   @r5,@r5,r4,eq   ; expect overlap dst<->src
  350.         endexpect
  351.         expect  95
  352.         cpsi    @r5,@r6,r5,eq   ; expect overlap dst<->cnt
  353.         endexpect
  354.         expect  95
  355.         cpsib   @r5,@r6,r5,eq   ; expect overlap dst<->cnt
  356.         endexpect
  357.         expect  95
  358.         cpsi    @r5,@r6,r6,eq   ; expect overlap src<->cnt
  359.         endexpect
  360.  
  361.         cpsirb  @r5,@r10,r4,eq
  362.         cpsir   @r5,@r10,r4,eq
  363.         expect  95
  364.         cpsir   @r5,@r5,r4,eq   ; expect overlap dst<->src
  365.         endexpect
  366.         expect  95
  367.         cpsirb  @r5,@r5,r4,eq   ; expect overlap dst<->src
  368.         endexpect
  369.         expect  95
  370.         cpsir   @r5,@r6,r5,eq   ; expect overlap dst<->cnt
  371.         endexpect
  372.         expect  95
  373.         cpsirb  @r5,@r6,r5,eq   ; expect overlap dst<->cnt
  374.         endexpect
  375.         expect  95
  376.         cpsir   @r5,@r6,r6,eq   ; expect overlap src<->cnt
  377.         endexpect
  378.  
  379.         dab     rh4
  380.         expect  1131
  381.         dab     r5
  382.         endexpect
  383.  
  384.         dec     rh7
  385.         decb    rh7
  386.         dec     r12
  387.         expect  1130,1130
  388.         dec     rr4
  389.         dec     rq8
  390.         endexpect
  391.         dec     @r5
  392.         decb    @r9
  393.         dec     1234h
  394.         decb    1234h
  395.         dec     1234h(r7)
  396.         decb    1234h(r7)
  397.         dec     r12,#1
  398.         dec     r12,#16
  399.         expect  1315
  400.         dec     r12,#0
  401.         endexpect
  402.         expect  1320
  403.         dec     r12,#17
  404.         endexpect
  405.  
  406.         expect  1110
  407.         di
  408.         endexpect
  409.         di      vi
  410.         di      nvi
  411.         di      vi,nvi
  412.         expect  1368
  413.         di      nmi
  414.         endexpect
  415.         expect  1369
  416.         di      vi,vi
  417.         endexpect
  418.  
  419.         div     rq8,rr2
  420.         divl    rq8,rr2
  421.         div     rr8,r2
  422.         expect  1130
  423.         div     r8,rh2          ; 16:8 not supported
  424.         endexpect
  425.         expect  1131
  426.         divl    rq12,rq4        ; dest must have double with of src    
  427.         endexpect
  428.         div     rr4,#100
  429.         div     rq4,#100
  430.         divl    rq4,#100
  431.         div     rr8,@r5
  432.         div     rq8,@r5
  433.         divl    rq8,@r5
  434.         div     rr12,1234h
  435.         div     rq12,1234h
  436.         divl    rq12,1234h
  437.         div     rr4,1234h(r5)
  438.         div     rq4,1234h(r5)
  439.         divl    rq4,1234h(r5)
  440.  
  441.         djnz    rh2,$-252
  442.         dbjnz   rh2,$+2
  443.         djnz    r5,$
  444.  
  445.         expect  1110
  446.         ei
  447.         endexpect
  448.         ei      vi
  449.         ei      nvi
  450.         ei      vi,nvi
  451.         expect  1368
  452.         ei      nmi
  453.         endexpect
  454.         expect  1369
  455.         ei      vi,vi
  456.         endexpect
  457.  
  458.         ex      r5,r6
  459.         ex      rh5,rh6
  460.         exb     rh5,rh6
  461.         expect  1130
  462.         ex      rr6,rr8
  463.         endexpect
  464.         ex      r5,@r6
  465.         ex      rh5,@r6
  466.         ex      r5,1234h
  467.         ex      rh5,1234h
  468.         ex      r5,1234h(r6)
  469.         ex      rh5,1234h(r6)
  470.         ex      @r6,r5
  471.         ex      @r6,rh5
  472.         ex      1234h,r5
  473.         ex      1234h,rh5
  474.         ex      1234h(r6),r5
  475.         ex      1234h(r6),rh5
  476.  
  477.         exts    r5
  478.         extsb   r5
  479.         exts    rr6
  480.         exts    rq4
  481.         extsl   rq4
  482.         expect  1130
  483.         exts    rh2
  484.         endexpect
  485.  
  486.         halt
  487.  
  488.         in      r12,@r13
  489.         inb     rh4,@r13
  490.         in      rh4,@r13
  491.         expect  1130
  492.         in      rr12,@r13
  493.         endexpect
  494.         expect  1131
  495.         inb     r4,@r13
  496.         endexpect
  497.         in      r12,1234h
  498.         inb     rh4,1234h
  499.         in      rh4,1234h
  500.         sin     r12,1234h
  501.         sinb    rh4,1234h
  502.         sin     rh4,1234h
  503.  
  504.         inc     rh7
  505.         incb    rh7
  506.         inc     r12
  507.         expect  1130,1130
  508.         inc     rr4
  509.         inc     rq8
  510.         endexpect
  511.         inc     @r5
  512.         incb    @r9
  513.         inc     1234h
  514.         incb    1234h
  515.         inc     1234h(r7)
  516.         incb    1234h(r7)
  517.         inc     r12,#1
  518.         inc     r12,#16
  519.         expect  1315
  520.         inc     r12,#0
  521.         endexpect
  522.         expect  1320
  523.         inc     r12,#17
  524.         endexpect
  525.  
  526.         ind     @r4,@r8,r12
  527.         indb    @r4,@r8,r12
  528.         sind    @r4,@r8,r12
  529.         sindb   @r4,@r8,r12
  530.         indr    @r4,@r8,r12
  531.         indrb   @r4,@r8,r12
  532.         sindr   @r4,@r8,r12
  533.         sindrb  @r4,@r8,r12
  534.         ini     @r4,@r8,r12
  535.         inib    @r4,@r8,r12
  536.         sini    @r4,@r8,r12
  537.         sinib   @r4,@r8,r12
  538.         inir    @r4,@r8,r12
  539.         inirb   @r4,@r8,r12
  540.         sinir   @r4,@r8,r12
  541.         sinirb  @r4,@r8,r12
  542.  
  543.         iret
  544.  
  545.         jp      @r8
  546.         jp      1234h
  547.         jp      1234h(r6)
  548.         jp      ,@r8
  549.         jp      ,1234h
  550.         jp      ,1234h(r6)
  551.         jp      f,@r8
  552.         jp      f,1234h
  553.         jp      f,1234h(r6)
  554.         jp      nc,@r8
  555.         jp      nc,1234h
  556.         jp      nc,1234h(r6)
  557.  
  558.         jr      f,$+80h
  559.         jr      f,$-90h
  560.         jr      $+80h
  561.         jr      $-90h
  562.         irp     cond,,z,nz,c,nc,pl,mi,ne,eq,ov,nov,pe,po,ge,lt,gt,le,uge,ult,ugt,ule
  563.         jr      cond,$+80h
  564.         jr      cond,$-90h
  565.         endm
  566.  
  567.         ; LD R,R
  568.         ld      r2,r3
  569.         ld      rh2,rl3
  570.         ldb     rh2,rl3
  571.         ld      rr4,rr6
  572.         ldl     rr4,rr6
  573.         ; LD R,IR
  574.         ld      r2,@r3
  575.         ld      rh2,@r3
  576.         ldb     rh2,@r3
  577.         ld      rr4,@r6
  578.         ldl     rr4,@r6
  579.         ; LD R,DA
  580.         ld      r2,1234h
  581.         ld      rh2,1234h
  582.         ldb     rh2,1234h
  583.         ld      rr4,1234h
  584.         ldl     rr4,1234h
  585.         ; LD R,X
  586.         ld      r2,1234h(r10)
  587.         ld      rh2,1234h(r10)
  588.         ldb     rh2,1234h(r10)
  589.         ld      rr4,1234h(r10)
  590.         ldl     rr4,1234h(r10)
  591.         ; LD R,BA
  592.         ld      r2,r3(#4321h)
  593.         ld      rh2,r3(#4321h)
  594.         ldb     rh2,r3(#4321h)
  595.         ld      rr4,r3(#4321h)
  596.         ldl     rr4,r3(#4321h)
  597.         ; LD R,BX
  598.         ld      r2,r3(r11)
  599.         ld      rh2,r3(r11)
  600.         ldb     rh2,r3(r11)
  601.         ld      rr4,r3(r11)
  602.         ldl     rr4,r3(r11)
  603.         ; LD IR,R
  604.         ld      @r3,r2
  605.         ld      @r3,rh2
  606.         ldb     @r3,rh2
  607.         ld      @r6,rr4
  608.         ldl     @r6,rr4
  609.         ; LD DA,R
  610.         ld      1234h,r2
  611.         ld      1234h,rh2
  612.         ldb     1234h,rh2
  613.         ld      1234h,rr4
  614.         ldl     1234h,rr4
  615.         ; LD X,R
  616.         ld      1234h(r10),r2
  617.         ld      1234h(r10),rh2
  618.         ldb     1234h(r10),rh2
  619.         ld      1234h(r10),rr4
  620.         ldl     1234h(r10),rr4
  621.         ; LD BA,R
  622.         ld      r7(#4321h),r2
  623.         ld      r7(#4321h),rh2
  624.         ldb     r7(#4321h),rh2
  625.         ld      r7(#4321h),rr4
  626.         ldl     r7(#4321h),rr4
  627.         ; LD BX,R
  628.         ld      r7(r11),r2
  629.         ld      r7(r11),rh2
  630.         ldb     r7(r11),rh2
  631.         ld      r7(r11),rr4
  632.         ldl     r7(r11),rr4
  633.         ; LD R,IM
  634.         ld      rh2,#57h
  635.         ldb     rh2,#57h
  636.         ld      r5,#5678h
  637.         ld      rr8,#12345678h
  638.         ldl     rr8,#12345678h
  639.         ; LD IR,IM
  640.         ldb     @r2,#57h
  641.         ld      @r5,#5678h
  642.         expect  1130
  643.         ldl     @r8,#12345678h
  644.         endexpect
  645.         ; LD DA,IM
  646.         ldb     1234h,#57h
  647.         ld      1234h,#5678h
  648.         expect  1130
  649.         ldl     1234h,#12345678h
  650.         endexpect
  651.         ; LD X,IM
  652.         ldb     1234h(r14),#57h
  653.         ld      1234h(r14),#5678h
  654.         expect  1130
  655.         ldl     1234h(r14),#12345678h
  656.         endexpect
  657.  
  658.         lda     r4,1234h
  659.         lda     r4,1234h(r5)
  660.         lda     r4,r5(#1000)
  661.         lda     r4,r5(r6)
  662.  
  663.         ldar    r4,$+2000
  664.  
  665.         ldctl   fcw,r9
  666.         ldctl   refresh,r9
  667.         expect  1440
  668.         ldctl   psapseg,r9
  669.         endexpect
  670.         ldctl   psap,r9
  671.         expect  1440
  672.         ldctl   nspseg,r9
  673.         endexpect
  674.         ldctl   nsp,r9
  675.         ldctl   r9,fcw
  676.         ldctl   r9,refresh
  677.         expect  1440
  678.         ldctl   r9,psapseg
  679.         endexpect
  680.         ldctl   r9,psap
  681.         expect  1440
  682.         ldctl   r9,nspseg
  683.         endexpect
  684.         ldctl   r9,nsp
  685.  
  686.         ldctl   flags,rl0
  687.         ldctlb  flags,rl0
  688.         ldctl   rl0,flags
  689.         ldctlb  rl0,flags
  690.  
  691.         ldd     @r4,@r5,r6
  692.         lddb    @r4,@r5,r6
  693.         lddr    @r4,@r5,r6
  694.         lddrb   @r4,@r5,r6
  695.         ldi     @r4,@r5,r6
  696.         ldib    @r4,@r5,r6
  697.         ldir    @r4,@r5,r6
  698.         ldirb   @r4,@r5,r6
  699.  
  700.         ldk     r5,#10
  701.         expect  1320
  702.         ldk     r5,#20
  703.         endexpect
  704.         ld      r5,#10          ; assembles as LDK
  705.  
  706.         ldm     r5,@r4,#7
  707.         expect  1130
  708.         ldm     rh5,@r4,#7      ; invalid register size
  709.         endexpect
  710.         expect  370
  711.         ldm     r5,@r4,#15      ; register # wrapover
  712.         endexpect
  713.         ldm     r5,1234h,#7
  714.         ldm     r5,1234h(r4),#7
  715.         ldm     @r4,r5,#7
  716.         ldm     1234h,r5,#7
  717.         ldm     1234h(r4),r5,#7
  718.  
  719.         ldps    @r9
  720.         ldps    4321h
  721.         ldps    4321h(r9)
  722.  
  723.         ldr     rh5,$+100
  724.         ldrb    rh5,$+100
  725.         ldr     r5,$+100
  726.         ldr     rr6,$+100
  727.         ldrl    rr6,$+100
  728.  
  729.         ldr     $+100,rh5
  730.         ldrb    $+100,rh5
  731.         ldr     $+100,r5
  732.         ldr     $+100,rr6
  733.         ldrl    $+100,rr6
  734.         expect  1130
  735.         ldr     $+100,rq8
  736.         endexpect
  737.  
  738.         mbit
  739.  
  740.         mreq    r14
  741.  
  742.         mres
  743.  
  744.         mset
  745.  
  746.         mult    rq8,rr2
  747.         multl   rq8,rr2
  748.         mult    rr8,r2
  749.         expect  1130
  750.         mult    r8,rh2          ; 8b*8b->16b not supported
  751.         endexpect
  752.         expect  1131
  753.         multl   rq12,rq4        ; dest must have double with of src    
  754.         endexpect
  755.         mult    rr4,#100
  756.         mult    rq4,#100
  757.         multl   rq4,#100
  758.         mult    rr8,@r5
  759.         mult    rq8,@r5
  760.         multl   rq8,@r5
  761.         mult    rr12,1234h
  762.         mult    rq12,1234h
  763.         multl   rq12,1234h
  764.         mult    rr4,1234h(r5)
  765.         mult    rq4,1234h(r5)
  766.         multl   rq4,1234h(r5)
  767.  
  768.         neg     rh6
  769.         negb    rh6
  770.         neg     r12
  771.         negb    @r4
  772.         neg     @r4
  773.         negb    1234h
  774.         neg     1234h
  775.         negb    1234h(r2)
  776.         neg     1234h(r2)
  777.  
  778.         nop
  779.  
  780.         ; OR R,R
  781.         or      r2,r3
  782.         or      rh2,rl3
  783.         orb     rh2,rl3
  784.         expect  1130,1200
  785.         or      rr4,rr6
  786.         orl     rr4,rr6
  787.         endexpect
  788.         ; OR R,IM
  789.         or      rh2,#57h
  790.         orb     rh2,#57h
  791.         or      r5,#5678h
  792.         ; OR R,IR
  793.         or      r2,@r3
  794.         or      rh2,@r3
  795.         orb     rh2,@r3
  796.         ; OR R,DA
  797.         or      r2,1234h
  798.         or      rh2,1234h
  799.         orb     rh2,1234h
  800.         ; OR R,X
  801.         or      r2,1234h(r10)
  802.         or      rh2,1234h(r10)
  803.         orb     rh2,1234h(r10)
  804.  
  805.         otdr    @r4,@r8,r12
  806.         otdrb   @r4,@r8,r12
  807.         sotdr   @r4,@r8,r12
  808.         sotdrb  @r4,@r8,r12
  809.         otir    @r4,@r8,r12
  810.         otirb   @r4,@r8,r12
  811.         sotir   @r4,@r8,r12
  812.         sotirb  @r4,@r8,r12
  813.  
  814.         out     @r13,r12
  815.         outb    @r13,rh4
  816.         out     @r13,rh4
  817.         expect  1130
  818.         out     @r13,rr12
  819.         endexpect
  820.         expect  1131
  821.         outb    @r13,r4
  822.         endexpect
  823.         out     1234h,r12
  824.         outb    1234h,rh4
  825.         out     1234h,rh4
  826.         sout    1234h,r12
  827.         soutb   1234h,rh4
  828.         sout    1234h,rh4
  829.  
  830.         outd    @r4,@r8,r12
  831.         outdb   @r4,@r8,r12
  832.         soutd   @r4,@r8,r12
  833.         soutdb  @r4,@r8,r12
  834.         outi    @r4,@r8,r12
  835.         outib   @r4,@r8,r12
  836.         souti   @r4,@r8,r12
  837.         soutib  @r4,@r8,r12
  838.  
  839.         pop     r7,@r6
  840.         pop     rr8,@r6
  841.         popl    rr8,@r6
  842.         expect  1130
  843.         pop     rh2,@r6         ; byte op not supported
  844.         endexpect
  845.         expect  95
  846.         pop     r7,@r7          ; overlap
  847.         endexpect
  848.         expect  95
  849.         pop     rr10,@r11       ; overlap
  850.         endexpect
  851.         pop     @r7,@r6
  852.         popl    @r7,@r6
  853.         expect  95
  854.         popl    @r6,@r6         ; overlap
  855.         endexpect
  856.         pop     1234h,@r6
  857.         popl    1234h,@r6
  858.         pop     1234h(r7),@r6
  859.         popl    1234h(r7),@r6
  860.  
  861.         push    @r6,r7
  862.         push    @r6,rr8
  863.         pushl   @r6,rr8
  864.         expect  1130
  865.         push    @r6,rh2         ; byte op not supported
  866.         endexpect
  867.         expect  95
  868.         push    @r7,r7          ; overlap
  869.         endexpect
  870.         expect  95
  871.         push    @r11,rr10       ; overlap
  872.         endexpect
  873.         push    @r6,@r7
  874.         pushl   @r6,@r7
  875.         expect  95
  876.         pushl   @r6,@r6         ; overlap
  877.         endexpect
  878.         push    @r6,1234h
  879.         pushl   @r6,1234h
  880.         push    @r6,1234h(r7)
  881.         pushl   @r6,1234h(r7)
  882.         push    @r6,#1234h
  883.         expect  1130
  884.         pushl   @r6,#12345678h
  885.         endexpect
  886.  
  887.         ; RES R,IM
  888.         res     rl3,#4
  889.         resb    rl3,#4
  890.         res     r13,#12
  891.         ; RES IR,IM
  892.         res     @r9,#12
  893.         resb    @r9,#4
  894.         res     @r9,#12
  895.         ; RES DA,IM
  896.         res     1234h,#12
  897.         resb    1234h,#4
  898.         res     1234h,#12
  899.         ; RES X,IM
  900.         res     1234h(r6),#12
  901.         resb    1234h(r6),#4
  902.         res     1234h(r6),#12
  903.         ; RES R,R
  904.         res     rl3,r4
  905.         resb    rl3,r4
  906.         res     r13,r12
  907.  
  908.         expect  1110
  909.         resflg
  910.         endexpect
  911.         resflg  c
  912.         resflg  z
  913.         resflg  s
  914.         resflg  p
  915.         resflg  v
  916.         resflg  p/v
  917.         resflg  c,z,p/v
  918.         expect  1366
  919.         resflg  x
  920.         endexpect
  921.         expect  1367
  922.         resflg  c,z,c,s
  923.         endexpect
  924.  
  925.         ret
  926.         ret     eq
  927.         ret     mi
  928.         ret     c
  929.  
  930.         rl      r2
  931.         rl      rh2
  932.         rlb     rh2
  933.         expect  1130
  934.         rl      rr4     ; wrong size
  935.         endexpect
  936.         rl      r2,#2
  937.         expect  1320
  938.         rl      r2,#3   ; range overflow
  939.         endexpect
  940.  
  941.         rlc     r2
  942.         rlc     rh2
  943.         rlcb    rh2
  944.         expect  1130
  945.         rlc     rr4     ; wrong size
  946.         endexpect
  947.         rlc     r2,#2
  948.         expect  1320
  949.         rlc     r2,#3   ; range overflow
  950.         endexpect
  951.  
  952.         rldb    rh1,rl1
  953.  
  954.         rr      r2
  955.         rr      rh2
  956.         rrb     rh2
  957.         expect  1130
  958.         rr      rr4     ; wrong size
  959.         endexpect
  960.         rr      r2,#2
  961.         expect  1320
  962.         rr      r2,#3   ; range overflow
  963.         endexpect
  964.  
  965.         rrc     r2
  966.         rrc     rh2
  967.         rrcb    rh2
  968.         expect  1130
  969.         rrc     rr4     ; wrong size
  970.         endexpect
  971.         rrc     r2,#2
  972.         expect  1320
  973.         rrc     r2,#3   ; range overflow
  974.         endexpect
  975.  
  976.         rrdb    rh1,rl1
  977.  
  978.         sbc     r2,r3
  979.         sbc     rh2,rl3
  980.         sbcb    rh2,rl3
  981.         expect  1130
  982.         sbc     rr4,rr6
  983.         endexpect
  984.  
  985.         sc      #170
  986.         sc      170
  987.  
  988.         sda     r5,r1
  989.         sda     rh4,r1
  990.         sdab    rh4,r1
  991.         sda     rr4,r1
  992.         sdal    rr4,r1
  993.         expect  1130
  994.         sda     rq4,r1  ; invalid size
  995.         endexpect
  996.        
  997.         sdl     r5,r1
  998.         sdl     rh4,r1
  999.         sdlb    rh4,r1
  1000.         sdl     rr4,r1
  1001.         sdll    rr4,r1
  1002.         expect  1130
  1003.         sdl     rq4,r1  ; invalid size
  1004.         endexpect
  1005.  
  1006.  
  1007.         ; SET R,IM
  1008.         set     rl3,#4
  1009.         setb    rl3,#4
  1010.         set     r13,#12
  1011.         ; SET IR,IM
  1012.         set     @r9,#12
  1013.         setb    @r9,#4
  1014.         set     @r9,#12
  1015.         ; SET DA,IM
  1016.         set     1234h,#12
  1017.         setb    1234h,#4
  1018.         set     1234h,#12
  1019.         ; SET X,IM
  1020.         set     1234h(r6),#12
  1021.         setb    1234h(r6),#4
  1022.         set     1234h(r6),#12
  1023.         ; SET R,R
  1024.         set     rl3,r4
  1025.         setb    rl3,r4
  1026.         set     r13,r12
  1027.  
  1028.         expect  1110
  1029.         setflg
  1030.         endexpect
  1031.         setflg  c
  1032.         setflg  z
  1033.         setflg  s
  1034.         setflg  p
  1035.         setflg  v
  1036.         setflg  p/v
  1037.         setflg  c,z,p/v
  1038.         expect  1366
  1039.         setflg  x
  1040.         endexpect
  1041.         expect  1367
  1042.         setflg  c,z,c,s
  1043.         endexpect
  1044.  
  1045.         sla     r10
  1046.         sla     rl2
  1047.         slab    rl2
  1048.         sla     rr10
  1049.         slal    rr10
  1050.         sla     rl2,#0
  1051.         sla     rl2,#8
  1052.         expect  1320
  1053.         sla     rl2,#9          ; overflow
  1054.         endexpect
  1055.         sla     r10,#0
  1056.         sla     r10,#16
  1057.         expect  1320
  1058.         sla     r10,#17         ; overflow
  1059.         endexpect
  1060.         sla     rr10,#0
  1061.         sla     rr10,#32
  1062.         expect  1320
  1063.         sla     rr10,#33        ; overflow
  1064.         endexpect
  1065.  
  1066.         sll     r10
  1067.         sll     rl2
  1068.         sllb    rl2
  1069.         sll     rr10
  1070.         slll    rr10
  1071.         sll     rl2,#0
  1072.         sll     rl2,#8
  1073.         expect  1320
  1074.         sll     rl2,#9          ; overflow
  1075.         endexpect
  1076.         sll     r10,#0
  1077.         sll     r10,#16
  1078.         expect  1320
  1079.         sll     r10,#17         ; overflow
  1080.         endexpect
  1081.         sll     rr10,#0
  1082.         sll     rr10,#32
  1083.         expect  1320
  1084.         sll     rr10,#33        ; overflow
  1085.         endexpect
  1086.  
  1087.         sra     r10
  1088.         sra     rl2
  1089.         srab    rl2
  1090.         sra     rr10
  1091.         sral    rr10
  1092.         expect  1315
  1093.         sra     rl2,#0          ; underflow
  1094.         endexpect
  1095.         sra     rl2,#1
  1096.         sra     rl2,#8
  1097.         expect  1320
  1098.         sra     rl2,#9          ; overflow
  1099.         endexpect
  1100.         expect  1315
  1101.         sra     r10,#0          ; underflow
  1102.         endexpect
  1103.         sra     r10,#1
  1104.         sra     r10,#16
  1105.         expect  1320
  1106.         sra     r10,#17         ; overflow
  1107.         endexpect
  1108.         expect  1315
  1109.         sra     rr10,#0
  1110.         endexpect
  1111.         sra     rr10,#1
  1112.         sra     rr10,#32
  1113.         expect  1320
  1114.         sra     rr10,#33        ; overflow
  1115.         endexpect
  1116.  
  1117.         srl     r10
  1118.         srl     rl2
  1119.         srlb    rl2
  1120.         srl     rr10
  1121.         srll    rr10
  1122.         expect  1315
  1123.         srl     rl2,#0          ; underflow
  1124.         endexpect
  1125.         srl     rl2,#1
  1126.         srl     rl2,#8
  1127.         expect  1320
  1128.         srl     rl2,#9          ; overflow
  1129.         endexpect
  1130.         expect  1315
  1131.         srl     r10,#0          ; underflow
  1132.         endexpect
  1133.         srl     r10,#1
  1134.         srl     r10,#16
  1135.         expect  1320
  1136.         srl     r10,#17         ; overflow
  1137.         endexpect
  1138.         expect  1315
  1139.         srl     rr10,#0         ; underflow
  1140.         endexpect
  1141.         srl     rr10,#1
  1142.         srl     rr10,#32
  1143.         expect  1320
  1144.         srl     rr10,#33        ; overflow
  1145.         endexpect
  1146.  
  1147.         ; SUB R,R
  1148.         sub     r2,r3
  1149.         sub     rh2,rl3
  1150.         subb    rh2,rl3
  1151.         sub     rr4,rr6
  1152.         subl    rr4,rr6
  1153.         ; SUB R,IM
  1154.         sub     rh2,#57h
  1155.         subb    rh2,#57h
  1156.         sub     r5,#5678h
  1157.         sub     rr8,#12345678h
  1158.         subl    rr8,#12345678h
  1159.         ; SUB R,IR
  1160.         sub     r2,@r3
  1161.         sub     rh2,@r3
  1162.         subb    rh2,@r3
  1163.         sub     rr4,@r6
  1164.         subl    rr4,@r6
  1165.         ; SUB R,DA
  1166.         sub     r2,1234h
  1167.         sub     rh2,1234h
  1168.         subb    rh2,1234h
  1169.         sub     rr4,1234h
  1170.         subl    rr4,1234h
  1171.         ; SUB R,X
  1172.         sub     r2,1234h(r10)
  1173.         sub     rh2,1234h(r10)
  1174.         subb    rh2,1234h(r10)
  1175.         sub     rr4,1234h(r10)
  1176.         subl    rr4,1234h(r10)
  1177.  
  1178.         tcc     r10
  1179.         tcc     rl2
  1180.         tccb    rl2
  1181.         tcc     eq,r10
  1182.         tcc     eq,rl2
  1183.         tccb    eq,rl2
  1184.  
  1185.         test    rh6
  1186.         testb   rh6
  1187.         test    r12
  1188.         test    rr12
  1189.         testl   rr12
  1190.         testb   @r4
  1191.         test    @r4
  1192.         testl   @r4
  1193.         testb   1234h
  1194.         test    1234h
  1195.         testl   1234h
  1196.         testb   1234h(r2)
  1197.         test    1234h(r2)
  1198.         testl   1234h(r2)
  1199.  
  1200.         trdb    @r6,@r7,r8
  1201.         trdrb   @r6,@r7,r8
  1202.         trib    @r6,@r7,r8
  1203.         trirb   @r6,@r7,r8
  1204.         trtdb   @r6,@r7,r8
  1205.         trtdrb  @r6,@r7,r8
  1206.         trtib   @r6,@r7,r8
  1207.         trtirb  @r6,@r7,r8
  1208.  
  1209.         tset    rh6
  1210.         tsetb   rh6
  1211.         tset    r12
  1212.         tsetb   @r4
  1213.         tset    @r4
  1214.         tsetb   1234h
  1215.         tset    1234h
  1216.         tsetb   1234h(r2)
  1217.         tset    1234h(r2)
  1218.  
  1219.         ; XOR R,R
  1220.         xor     r2,r3
  1221.         xor     rh2,rl3
  1222.         xorb    rh2,rl3
  1223.         expect  1130,1200
  1224.         xor     rr4,rr6
  1225.         xorl    rr4,rr6
  1226.         endexpect
  1227.         ; XOR R,IM
  1228.         xor     rh2,#57h
  1229.         xorb    rh2,#57h
  1230.         xor     r5,#5678h
  1231.         ; XOR R,IR
  1232.         xor     r2,@r3
  1233.         xor     rh2,@r3
  1234.         xorb    rh2,@r3
  1235.         ; XOR R,DA
  1236.         xor     r2,1234h
  1237.         xor     rh2,1234h
  1238.         xorb    rh2,1234h
  1239.         ; XOR R,X
  1240.         xor     r2,1234h(r10)
  1241.         xor     rh2,1234h(r10)
  1242.         xorb    rh2,1234h(r10)
  1243.  
  1244.         ; testing a bit the parser about how 'good' it is at detecting
  1245.         ; expressions of the form xxx(yyy), without producing false positives:
  1246.  
  1247.         ld      r7,10(r5)               ; is
  1248.         ld      r7,10 (r5)              ; is
  1249.         ld      r7,(10)+(20)            ; is NOT
  1250.         ld      r7,(10) + (20)          ; is NOT
  1251.         ld      r7,10+20                ; is for sure NOT
  1252.         ld      r7,abs(-10)(r5)         ; IS
  1253.         ld      r7,r2(#'(')             ; IS
  1254.  
  1255.         ; bit symbols
  1256.  
  1257.         res     200h,#5
  1258. mybitb  defbitb 200h,#5
  1259. mybit   defbit  200h,#5
  1260.         res     mybitb
  1261.         res     mybit
  1262.  
  1263.         ; register aliases
  1264.  
  1265. reg_rh0 equ     rh0
  1266. reg_rh1 equ     rh1
  1267. reg_rh2 equ     rh2
  1268. reg_rh3 equ     rh3
  1269. reg_rh4 equ     rh4
  1270. reg_rh5 equ     rh5
  1271. reg_rh6 equ     rh6
  1272. reg_rh7 equ     rh7
  1273. reg_rl0 equ     rl0
  1274. reg_rl1 equ     rl1
  1275. reg_rl2 equ     rl2
  1276. reg_rl3 equ     rl3
  1277. reg_rl4 equ     rl4
  1278. reg_rl5 equ     rl5
  1279. reg_rl6 equ     rl6
  1280. reg_rl7 equ     rl7
  1281.  
  1282. reg_r0  equ     r0
  1283. reg_r1  equ     r1
  1284. reg_r2  equ     r2
  1285. reg_r3  equ     r3
  1286. reg_r4  equ     r4
  1287. reg_r5  equ     r5
  1288. reg_r6  equ     r6
  1289. reg_r7  equ     r7
  1290. reg_r8  equ     r8
  1291. reg_r9  equ     r9
  1292. reg_r10 equ     r10
  1293. reg_r11 equ     r11
  1294. reg_r12 equ     r12
  1295. reg_r13 equ     r13
  1296. reg_r14 equ     r14
  1297. reg_r15 equ     r15
  1298.  
  1299. reg_rr0 reg     rr0
  1300. reg_rr2 reg     rr2
  1301. reg_rr4 reg     rr4
  1302. reg_rr6 reg     rr6
  1303. reg_rr8 reg     rr8
  1304. reg_rr10 reg    rr10
  1305. reg_rr12 reg    rr12
  1306. reg_rr14 reg    rr14
  1307.  
  1308. reg_rq0 equ     rq0
  1309. reg_rq4 equ     rq4
  1310. reg_rq8 equ     rq8
  1311. reg_rq12 equ    rq12
  1312.  
  1313.         ld      r12,#20
  1314.         ld      reg_r12,#20
  1315.  
  1316.         ; all right, now the (rudimentary) support for segmented mode:
  1317.  
  1318.         cpu     z8001
  1319.  
  1320.         ; indirect addressing is done via register pairs:
  1321.  
  1322.         ld      r3,@rr4
  1323.         expect  2212
  1324.         ld      r3,@r4
  1325.         endexpect
  1326.  
  1327.         ; long addresses: may be just 'linear 23 bit':
  1328.  
  1329.         ld      r3,45678h
  1330.         ld      r3,45678h(r3)
  1331.  
  1332.         ; short addresses (offset < 256) currently must be forced:
  1333.  
  1334.         ld      r3,40078h
  1335.         ld      r3,40078h(r3)
  1336.         ld      r3,|40078h|
  1337.         ld      r3,|40078h|(r3)
  1338.  
  1339.         ; <<segment>>offset syntax
  1340.  
  1341.         ld      r3,<<4>>5678h
  1342.         ld      r3,<<4>>78h
  1343.         ld      r3,|<<4>>78h|
  1344.         ld      r3,|<<4>>78h|(r4)
  1345.  
  1346.         ; robust enough against spaces?
  1347.  
  1348.         ld      r3, << 4 >> 5678h
  1349.         ld      r3, << 4 >> 78h
  1350.         ld      r3, | << 4 >> 78h |
  1351.         ld      r3, | << 4 >> 78h | (r4)
  1352.  
  1353.         ; a << or >> operator in the segment part makes things even
  1354.         ; more interesting.  Use parentheses to clarify:
  1355.  
  1356.         ld      r3,<<10h>>2>>5678h      ; results in segment 10h, offset 0
  1357.         ld      r3,<<(10h>>2)>>5678h    ; results in segment 4h, offset 5678h
  1358.         ld      r3,<<(10h>>2)>>78h
  1359.         ld      r3,<<(10h>>2)>>78h(r4)
  1360.         ld      r3,|<<(10h>>2)>>78h|(r4)
  1361.