?login_element?

Subversion Repositories NedoOS

Rev

Rev 539 | Blame | Compare with Previous | Last modification | View Log | Download

  1. ; Thorough tests for memory accessing instructions with --syntax=b
  2.     ; default bracket syntax (relaxed one)
  3.     OPT reset --zxnext --syntax=a -Wrdlow
  4.     ; 3x OK: val, mem, mem
  5.     ld  a,0 : ld  a,(1) : ld  a,[2]
  6.     ; 2x OK: val, val, ---
  7.     ld  b,3 : ld  b,(4) : ld  b,[5]
  8.     ; 2x OK: val, val, ---
  9.     bit 3,a : bit (3),a : bit [3],a
  10.     ; 2x OK: val, val, ---
  11.     add a,6 : add a,(7) : add a,[8]
  12.     adc a,6 : adc a,(7) : adc a,[8]
  13.     sub a,6 : sub a,(7) : sub a,[8]     ; this syntax works because --syntax=A was used
  14.     sbc a,6 : sbc a,(7) : sbc a,[8]
  15.     and a,6 : and a,(7) : and a,[8]
  16.     xor a,6 : xor a,(7) : xor a,[8]
  17.     or  a,6 : or  a,(7) : or  a,[8]
  18.     cp  a,6 : cp  a,(7) : cp  a,[8]
  19.     ; 2x OK: val, val, ---
  20.     im  1   : im  (1)   : im  [1]
  21.     ; 2x OK: val, val, ---
  22.     ld (hl),9  : ld (hl),(10) : ld (hl),[11]
  23.     ; 2x OK: val, val, ---
  24.     ld (ix),12 : ld (ix),(13) : ld (ix),[14]
  25.     ; 2x OK: val, val, ---
  26.     ld  ixl,15 : ld  ixl,(16) : ld  ixl,[17]
  27.     ; 2x OK: val, val, ---
  28.     ldd (hl),18 : ldd (hl),(19) : ldd (hl),[20]  ; Fake instructions
  29.     ; 2x OK: val, val, ---
  30.     ldd (ix),21 : ldd (ix),(22) : ldd (ix),[23]  ; Fake instructions
  31.     ; 2x OK: val, val, ---
  32.     ldi (hl),24 : ldi (hl),(25) : ldi (hl),[26]  ; Fake instructions
  33.     ; 2x OK: val, val, ---
  34.     ldi (ix),27 : ldi (ix),(28) : ldi (ix),[29]  ; Fake instructions
  35.     ; 2x OK: val, val, ---
  36.     nextreg 30,31 : nextreg (32),(33) : nextreg [34],[35]
  37.     ; 2x OK: val, val, ---
  38.     out (c),0 : out (c),(0) : out (c),[0]
  39.     ; 2x OK: val, val, ---
  40.     res 7,a : res (7),a : res [7],a
  41.     ; 2x OK: val, val, ---
  42.     rst 16 : rst (16) : rst [16]
  43.     ; 2x OK: val, val, ---
  44.     set 6,a : set (6),a : set [6],a
  45.     ; 2x OK: val, val, ---
  46.     test 36 : test (37) : test [38]
  47.  
  48.     ;; 16 bit immediates (none of them on regular Z80, always ambiguous val+mem combination)
  49.     ; 2x OK: val, val, ---
  50.     add hl,100 : add hl,(101) : add hl,[102]
  51.     add bc,103 : add bc,(104) : add bc,[105]
  52.     add de,106 : add de,(107) : add de,[108]
  53.     push 109 : push (110) : push [111]
  54.    
  55.     OPT --syntax=b
  56.     ; 3x OK: val, mem, mem
  57.     ld  a,0 : ld  a,(1) : ld  a,[2]
  58.     ; 1x OK: val, ---, ---
  59.     ld  b,3 : ld  b,(4) : ld  b,[5]
  60.     ; 1x OK: val, ---, ---
  61.     bit 3,a : bit (3),a : bit [3],a
  62.     ; 1x OK: val, ---, ---
  63.     add a,6 : add a,(7) : add a,[8]
  64.     adc a,6 : adc a,(7) : adc a,[8]
  65.     sub a,6 : sub a,(7) : sub a,[8]     ; this syntax works because --syntax=A was used
  66.     sbc a,6 : sbc a,(7) : sbc a,[8]
  67.     and a,6 : and a,(7) : and a,[8]
  68.     xor a,6 : xor a,(7) : xor a,[8]
  69.     or  a,6 : or  a,(7) : or  a,[8]
  70.     cp  a,6 : cp  a,(7) : cp  a,[8]
  71.     ; 1x OK: val, ---, ---
  72.     im  1   : im  (1)   : im  [1]
  73.     ; 1x OK: val, ---, ---
  74.     ld (hl),9  : ld (hl),(10) : ld (hl),[11]
  75.     ; 1x OK: val, ---, ---
  76.     ld (ix),12 : ld (ix),(13) : ld (ix),[14]
  77.     ; 1x OK: val, ---, ---
  78.     ld  ixl,15 : ld  ixl,(16) : ld  ixl,[17]
  79.     ; 1x OK: val, ---, ---
  80.     ldd (hl),18 : ldd (hl),(19) : ldd (hl),[20]  ; Fake instructions
  81.     ; 1x OK: val, ---, ---
  82.     ldd (ix),21 : ldd (ix),(22) : ldd (ix),[23]  ; Fake instructions
  83.     ; 1x OK: val, ---, ---
  84.     ldi (hl),24 : ldi (hl),(25) : ldi (hl),[26]  ; Fake instructions
  85.     ; 1x OK: val, ---, ---
  86.     ldi (ix),27 : ldi (ix),(28) : ldi (ix),[29]  ; Fake instructions
  87.     ; 1x OK: val, ---, ---
  88.     nextreg 30,31 : nextreg (32),(33) : nextreg [34],[35]
  89.     ; 1x OK: val, ---, ---
  90.     out (c),0 : out (c),(0) : out (c),[0]
  91.     ; 1x OK: val, ---, ---
  92.     res 7,a : res (7),a : res [7],a
  93.     ; 1x OK: val, ---, ---
  94.     rst 16 : rst (16) : rst [16]
  95.     ; 1x OK: val, ---, ---
  96.     set 6,a : set (6),a : set [6],a
  97.     ; 1x OK: val, ---, ---
  98.     test 36 : test (37) : test [38]
  99.  
  100.     ; 1x OK: val, ---, ---
  101.     add hl,100 : add hl,(101) : add hl,[102]
  102.     add bc,103 : add bc,(104) : add bc,[105]
  103.     add de,106 : add de,(107) : add de,[108]
  104.     push 109 : push (110) : push [111]
  105.  
  106. someLabel:
  107.     ld  b,(someLabel)       ; just make super sure it does catch the original real world annoyance
  108.  
  109.     ;; Docs example from command line options section
  110.         OPT reset --syntax=abfw
  111. label:  dw 15
  112.         ld b,(label)
  113.         sub a,b
  114.