New files for testing gasp.
authorSteve Chamberlain <sac@cygnus>
Mon, 31 Jan 1994 16:53:03 +0000 (16:53 +0000)
committerSteve Chamberlain <sac@cygnus>
Mon, 31 Jan 1994 16:53:03 +0000 (16:53 +0000)
67 files changed:
gas/testsuite/gasp/INC1.H [new file with mode: 0644]
gas/testsuite/gasp/INC2.H [new file with mode: 0644]
gas/testsuite/gasp/assign.asm [new file with mode: 0644]
gas/testsuite/gasp/assign.is [new file with mode: 0644]
gas/testsuite/gasp/assign.was [new file with mode: 0644]
gas/testsuite/gasp/condass.asm [new file with mode: 0644]
gas/testsuite/gasp/condass.is [new file with mode: 0644]
gas/testsuite/gasp/condass.was [new file with mode: 0644]
gas/testsuite/gasp/crash.asm [new file with mode: 0644]
gas/testsuite/gasp/crash.is [new file with mode: 0644]
gas/testsuite/gasp/crash.was [new file with mode: 0644]
gas/testsuite/gasp/crash1.asm [new file with mode: 0644]
gas/testsuite/gasp/crash1.is [new file with mode: 0644]
gas/testsuite/gasp/crash1.was [new file with mode: 0644]
gas/testsuite/gasp/crash2.asm [new file with mode: 0644]
gas/testsuite/gasp/data.asm [new file with mode: 0644]
gas/testsuite/gasp/data.is [new file with mode: 0644]
gas/testsuite/gasp/data.was [new file with mode: 0644]
gas/testsuite/gasp/exp.asm [new file with mode: 0644]
gas/testsuite/gasp/exp.is [new file with mode: 0644]
gas/testsuite/gasp/exp.was [new file with mode: 0644]
gas/testsuite/gasp/include.asm [new file with mode: 0644]
gas/testsuite/gasp/include.is [new file with mode: 0644]
gas/testsuite/gasp/include.was [new file with mode: 0644]
gas/testsuite/gasp/listing.asm [new file with mode: 0644]
gas/testsuite/gasp/listing.is [new file with mode: 0644]
gas/testsuite/gasp/listing.was [new file with mode: 0644]
gas/testsuite/gasp/macro.asm [new file with mode: 0644]
gas/testsuite/gasp/macro.is [new file with mode: 0644]
gas/testsuite/gasp/macro.was [new file with mode: 0644]
gas/testsuite/gasp/reg.asm [new file with mode: 0644]
gas/testsuite/gasp/reg.is [new file with mode: 0644]
gas/testsuite/gasp/reg.was [new file with mode: 0644]
gas/testsuite/gasp/rep.asm [new file with mode: 0644]
gas/testsuite/gasp/rep.is [new file with mode: 0644]
gas/testsuite/gasp/rep.was [new file with mode: 0644]
gas/testsuite/gasp/repeat.asm [new file with mode: 0644]
gas/testsuite/gasp/repeat.is [new file with mode: 0644]
gas/testsuite/gasp/repeat.was [new file with mode: 0644]
gas/testsuite/gasp/reperr.asm [new file with mode: 0644]
gas/testsuite/gasp/reperr1.asm [new file with mode: 0644]
gas/testsuite/gasp/reperr1.is [new file with mode: 0644]
gas/testsuite/gasp/reperr1.was [new file with mode: 0644]
gas/testsuite/gasp/reperr2.asm [new file with mode: 0644]
gas/testsuite/gasp/reperr2.is [new file with mode: 0644]
gas/testsuite/gasp/reperr2.was [new file with mode: 0644]
gas/testsuite/gasp/reperr3.asm [new file with mode: 0644]
gas/testsuite/gasp/reperr3.is [new file with mode: 0644]
gas/testsuite/gasp/reperr3.was [new file with mode: 0644]
gas/testsuite/gasp/sdata.asm [new file with mode: 0644]
gas/testsuite/gasp/sdata.is [new file with mode: 0644]
gas/testsuite/gasp/sdata.was [new file with mode: 0644]
gas/testsuite/gasp/sfunc.asm [new file with mode: 0644]
gas/testsuite/gasp/sfunc.is [new file with mode: 0644]
gas/testsuite/gasp/sfunc.was [new file with mode: 0644]
gas/testsuite/gasp/t1.asm [new file with mode: 0644]
gas/testsuite/gasp/t1.is [new file with mode: 0644]
gas/testsuite/gasp/t1.was [new file with mode: 0644]
gas/testsuite/gasp/t2.asm [new file with mode: 0644]
gas/testsuite/gasp/t2.is [new file with mode: 0644]
gas/testsuite/gasp/t2.was [new file with mode: 0644]
gas/testsuite/gasp/t3.asm [new file with mode: 0644]
gas/testsuite/gasp/t3.is [new file with mode: 0644]
gas/testsuite/gasp/t3.was [new file with mode: 0644]
gas/testsuite/gasp/while.asm [new file with mode: 0644]
gas/testsuite/gasp/while.is [new file with mode: 0644]
gas/testsuite/gasp/while.was [new file with mode: 0644]

diff --git a/gas/testsuite/gasp/INC1.H b/gas/testsuite/gasp/INC1.H
new file mode 100644 (file)
index 0000000..0d37323
--- /dev/null
@@ -0,0 +1,3 @@
+FILE 1 FIRST LINE
+       .INCLUDE        "INC2.H"
+FILE 1 LAST LINE
diff --git a/gas/testsuite/gasp/INC2.H b/gas/testsuite/gasp/INC2.H
new file mode 100644 (file)
index 0000000..083c3dc
--- /dev/null
@@ -0,0 +1,2 @@
+       FILE 2 FIRST LINE
+       FILE 2 LAST LINE
diff --git a/gas/testsuite/gasp/assign.asm b/gas/testsuite/gasp/assign.asm
new file mode 100644 (file)
index 0000000..7f66718
--- /dev/null
@@ -0,0 +1,13 @@
+
+foo:   .ASSIGNC        "hello"
+BAR:   .ASSIGNA        12+34
+
+       \&foo'foo
+       \&foo\&foo\&foo 
+       \&foo \&foo \&foo 
+       \&BAR\&bar\&BAR
+
+
+
+       
+       .END
diff --git a/gas/testsuite/gasp/assign.is b/gas/testsuite/gasp/assign.is
new file mode 100644 (file)
index 0000000..65aadf3
--- /dev/null
@@ -0,0 +1,25 @@
+******** assign.amp
+!
+
+!foo:  .ASSIGNC        "hello"
+!BAR:  .ASSIGNA        12+34
+!
+
+!      \&foo'foo
+       hellofoo
+!      \&foo\&foo\&foo 
+       hellohellohello 
+!      \&foo \&foo \&foo 
+       hello hello hello 
+!      \&BAR\&bar\&BAR
+       4646
+!
+
+!
+
+!
+
+!      
+       
+!      .END
+assign.amp:8 Can't find preprocessor variable bar.
diff --git a/gas/testsuite/gasp/assign.was b/gas/testsuite/gasp/assign.was
new file mode 100644 (file)
index 0000000..65aadf3
--- /dev/null
@@ -0,0 +1,25 @@
+******** assign.amp
+!
+
+!foo:  .ASSIGNC        "hello"
+!BAR:  .ASSIGNA        12+34
+!
+
+!      \&foo'foo
+       hellofoo
+!      \&foo\&foo\&foo 
+       hellohellohello 
+!      \&foo \&foo \&foo 
+       hello hello hello 
+!      \&BAR\&bar\&BAR
+       4646
+!
+
+!
+
+!
+
+!      
+       
+!      .END
+assign.amp:8 Can't find preprocessor variable bar.
diff --git a/gas/testsuite/gasp/condass.asm b/gas/testsuite/gasp/condass.asm
new file mode 100644 (file)
index 0000000..2bd9f07
--- /dev/null
@@ -0,0 +1,129 @@
+       .AIF    1 EQ 1
+       OK
+       .AELSE
+       BAD
+       .AENDI
+       .AIF    1 EQ 2
+       BAD
+       .AELSE
+       OK
+       .AENDI
+       .AIF    1 EQ 2
+       BAD
+       .AELSE
+       OK
+       .AIF    1 EQ 2
+       BAD
+       .AELSE
+       OK
+       .AENDI
+       .AENDI
+       .AIF    1 LT  2
+       OK
+       .AENDI
+       .AIF    1 EQ  2
+       BAD
+       .AENDI
+       .AIF    1 NE  2
+       OK
+       .AENDI
+       .AIF    1 LE  2
+       OK
+       .AENDI
+       .AIF    1 GT  2
+       BAD
+       .AENDI
+       .AIF    3 GE  2
+       OK
+       .AENDI
+       .AIF    3 LT  2
+       BAD
+       .AENDI
+       .AIF    3 EQ  2
+       BAD 
+       .AENDI
+       .AIF    3 NE  2
+       OK
+       .AENDI
+       .AIF    3 LE  2
+       BAD
+       .AENDI
+       .AIF    3 GT  2
+       OK
+       .AENDI
+       .AIF    3 GE  2
+       OK
+       .AENDI
+       .AIF    "FOO" EQ "BAR"
+       BAD
+       .AENDI
+       .AIF    "FOO" EQ "FOO"
+       OK
+       .AENDI
+       .AIF    "FOO" NE "BAR"
+       OK
+       .AENDI
+       .AIF    "FOO" EQ "FOO"
+       OK
+       .AENDI
+       .AIF    1 EQ 1
+       .AIF    1 EQ 1
+       OK
+       .AELSE  
+       BAD
+       .AENDI
+       .AIF    1 EQ 0
+       BAD
+       .AELSE  
+       OK
+       .AENDI
+       OK
+       .AELSE  
+       BAD
+       .AENDI
+       .AIF    1 EQ 0
+       BAD
+       .AELSE  
+       OK
+       .AENDI
+       .AIF    1 EQ 1
+       OK
+       .AELSE  
+       BAD
+       .AENDI
+       .AIF    1 EQ 0
+       BAD
+       .AELSE  
+       .AIF    1 EQ 1
+       OK
+       .AELSE  
+       BAD
+       .AENDI
+       .AIF    1 EQ 0
+       BAD
+       .AELSE  
+       OK
+       .AENDI
+       OK
+       .AENDI
+       .AIF    1 EQ 1
+       OK
+       .AIF    1 EQ 1
+       OK
+       .AELSE  
+       BAD
+       .AENDI
+       .AIF    1 EQ 0
+       BAD
+       .AELSE  
+       OK
+       .AENDI
+       .AELSE  
+       BAD
+       .AENDI
+       .AIF    1 EQ 0
+       BAD
+       .AELSE  
+       OK
+       .AENDI
+       .END
diff --git a/gas/testsuite/gasp/condass.is b/gas/testsuite/gasp/condass.is
new file mode 100644 (file)
index 0000000..a1093a7
--- /dev/null
@@ -0,0 +1,155 @@
+******** condass.amp
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 2
+!      BAD
+!      .AELSE
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ 2
+!      BAD
+!      .AELSE
+!      OK
+       OK
+!      .AIF    1 EQ 2
+!      BAD
+!      .AELSE
+!      OK
+       OK
+!      .AENDI
+!      .AENDI
+!      .AIF    1 LT  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ  2
+!      BAD
+!      .AENDI
+!      .AIF    1 NE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 LE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 GT  2
+!      BAD
+!      .AENDI
+!      .AIF    3 GE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    3 LT  2
+!      BAD
+!      .AENDI
+!      .AIF    3 EQ  2
+!      BAD 
+!      .AENDI
+!      .AIF    3 NE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    3 LE  2
+!      BAD
+!      .AENDI
+!      .AIF    3 GT  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    3 GE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    "FOO" EQ "BAR"
+!      BAD
+!      .AENDI
+!      .AIF    "FOO" EQ "FOO"
+!      OK
+       OK
+!      .AENDI
+!      .AIF    "FOO" NE "BAR"
+!      OK
+!      .AENDI
+!      .AIF    "FOO" EQ "FOO"
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ 1
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      .END
diff --git a/gas/testsuite/gasp/condass.was b/gas/testsuite/gasp/condass.was
new file mode 100644 (file)
index 0000000..a1093a7
--- /dev/null
@@ -0,0 +1,155 @@
+******** condass.amp
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 2
+!      BAD
+!      .AELSE
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ 2
+!      BAD
+!      .AELSE
+!      OK
+       OK
+!      .AIF    1 EQ 2
+!      BAD
+!      .AELSE
+!      OK
+       OK
+!      .AENDI
+!      .AENDI
+!      .AIF    1 LT  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ  2
+!      BAD
+!      .AENDI
+!      .AIF    1 NE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 LE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 GT  2
+!      BAD
+!      .AENDI
+!      .AIF    3 GE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    3 LT  2
+!      BAD
+!      .AENDI
+!      .AIF    3 EQ  2
+!      BAD 
+!      .AENDI
+!      .AIF    3 NE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    3 LE  2
+!      BAD
+!      .AENDI
+!      .AIF    3 GT  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    3 GE  2
+!      OK
+       OK
+!      .AENDI
+!      .AIF    "FOO" EQ "BAR"
+!      BAD
+!      .AENDI
+!      .AIF    "FOO" EQ "FOO"
+!      OK
+       OK
+!      .AENDI
+!      .AIF    "FOO" NE "BAR"
+!      OK
+!      .AENDI
+!      .AIF    "FOO" EQ "FOO"
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ 1
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      OK
+       OK
+!      .AENDI
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AIF    1 EQ 1
+!      OK
+       OK
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      .AELSE  
+!      BAD
+!      .AENDI
+!      .AIF    1 EQ 0
+!      BAD
+!      .AELSE  
+!      OK
+       OK
+!      .AENDI
+!      .END
diff --git a/gas/testsuite/gasp/crash.asm b/gas/testsuite/gasp/crash.asm
new file mode 100644 (file)
index 0000000..0014bfd
--- /dev/null
@@ -0,0 +1,22 @@
+
+       Stuff to try and crash it
+
+foo:   .MACRO  
+       HI
+bar:   .MACRO  
+       THERE
+       bar
+       .ENDM   
+
+
+       .ENDM
+       foo
+       foo
+       foo
+       foo
+       foo
+       bar
+
+
+
+       
\ No newline at end of file
diff --git a/gas/testsuite/gasp/crash.is b/gas/testsuite/gasp/crash.is
new file mode 100644 (file)
index 0000000..9d12fe1
--- /dev/null
@@ -0,0 +1,3061 @@
+******** crash.amp
+!
+
+!      Stuff to try and crash it
+       Stuff to try and crash it
+!
+
+!foo:  .MACRO  
+!      HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+!
+!      .ENDM
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+crash.amp:18 Unreasonable expansion (-u turns off check).
diff --git a/gas/testsuite/gasp/crash.was b/gas/testsuite/gasp/crash.was
new file mode 100644 (file)
index 0000000..9d12fe1
--- /dev/null
@@ -0,0 +1,3061 @@
+******** crash.amp
+!
+
+!      Stuff to try and crash it
+       Stuff to try and crash it
+!
+
+!foo:  .MACRO  
+!      HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+!
+!      .ENDM
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      foo
+!      HI
+       HI
+!bar:  .MACRO  
+!      THERE
+!      bar
+!      .ENDM   
+!
+
+!
+
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+!      THERE
+       THERE
+!      bar
+crash.amp:18 Unreasonable expansion (-u turns off check).
diff --git a/gas/testsuite/gasp/crash1.asm b/gas/testsuite/gasp/crash1.asm
new file mode 100644 (file)
index 0000000..d2b6b30
--- /dev/null
@@ -0,0 +1,13 @@
+
+
+       .MACRO  foo a b c=a
+       \a \b \c \d
+       .ENDM
+
+       foo 1 2
+       foo 1 2 3 4
+       foo 1
+       foo 
+
+
+       .END
diff --git a/gas/testsuite/gasp/crash1.is b/gas/testsuite/gasp/crash1.is
new file mode 100644 (file)
index 0000000..d2c6b46
--- /dev/null
@@ -0,0 +1,26 @@
+******** crash1.amp
+!
+
+!
+
+!      .MACRO  foo a b c=a
+!      \a \b \c \d
+!      .ENDM
+!
+
+!      foo 1 2
+!      1 2 a \d
+       1 2 a \d
+!      foo 1 2 3 4
+!      foo 1
+!      1  a \d
+       1  a \d
+!      foo 
+!        a \d
+       a \d
+!
+
+!
+
+!      .END
+crash1.amp:8 Too many positional arguments.
diff --git a/gas/testsuite/gasp/crash1.was b/gas/testsuite/gasp/crash1.was
new file mode 100644 (file)
index 0000000..d2c6b46
--- /dev/null
@@ -0,0 +1,26 @@
+******** crash1.amp
+!
+
+!
+
+!      .MACRO  foo a b c=a
+!      \a \b \c \d
+!      .ENDM
+!
+
+!      foo 1 2
+!      1 2 a \d
+       1 2 a \d
+!      foo 1 2 3 4
+!      foo 1
+!      1  a \d
+       1  a \d
+!      foo 
+!        a \d
+       a \d
+!
+
+!
+
+!      .END
+crash1.amp:8 Too many positional arguments.
diff --git a/gas/testsuite/gasp/crash2.asm b/gas/testsuite/gasp/crash2.asm
new file mode 100644 (file)
index 0000000..288a003
--- /dev/null
@@ -0,0 +1,41 @@
+
+foo:   .ASSIGNA        1
+       \&foo+1 
+       \&foo+1
+foo:   .ASSIGNC        "foo"
+       \&foo+1
+       \&foo+1
+
+foo:   .ASSIGNA        1
+       \&foo+1 
+       \&foo+1
+foo:   .ASSIGNC        "foo"
+       \&foo+1
+       \&foo+1
+
+foo:   .ASSIGNA        1
+       \&foo+1 
+       \&foo+1
+foo:   .ASSIGNC        "foo"
+       \&foo+1
+       \&foo+1
+
+foo:   .ASSIGNA        1
+       \&foo+1 
+       \&foo+1
+foo:   .ASSIGNC        "foo"
+       \&foo+1
+       \&foo+1
+
+foo:   .ASSIGNA        1
+       \&foo+1 
+       \&foo+1
+foo:   .ASSIGNC        "foo"
+       \&foo+1
+       \&foo+1
+       foo
+       foo     foo
+       foo     foo
+       foo
+       .END
+
diff --git a/gas/testsuite/gasp/data.asm b/gas/testsuite/gasp/data.asm
new file mode 100644 (file)
index 0000000..ba6b0a0
--- /dev/null
@@ -0,0 +1,23 @@
+
+foo    .DATA   1,2,3
+bar    .DATA   1,2,3,4,5 ,6
+       .DATA.B 12345,12,2
+       .DATA.W 9,2,12,3,13+41,foo+9
+       .DATA.L 2~99
+
+
+
+       .DATAB  1,2,3
+       .DATAB  1,2,3
+
+
+
+
+       .DATAB  1,9+32
+
+       .DATAB.L        1,H'11111111
+       .DATAB.W        2,H'2222
+       .DATAB.B        3,H'333
+
+
+       .END
diff --git a/gas/testsuite/gasp/data.is b/gas/testsuite/gasp/data.is
new file mode 100644 (file)
index 0000000..0fe6974
--- /dev/null
@@ -0,0 +1,46 @@
+******** data.amp
+!
+
+!foo   .DATA   1,2,3
+foo:   .long   1,2,3
+!bar   .DATA   1,2,3,4,5 ,6
+bar:   .long   1,2,3,4,5,6
+!      .DATA.B 12345,12,2
+       .byte   12345,12,2
+!      .DATA.W 9,2,12,3,13+41,foo+9
+       .short  9,2,12,3,54,foo+9
+!      .DATA.L 2~99
+       .long   97
+!
+
+!
+
+!
+
+!      .DATAB  1,2,3
+       .fill   1,4,2
+!      .DATAB  1,2,3
+       .fill   1,4,2
+!
+
+!
+
+!
+
+!
+
+!      .DATAB  1,9+32
+       .fill   1,4,41
+!
+
+!      .DATAB.L        1,H'11111111
+       .fill   1,4,286331153
+!      .DATAB.W        2,H'2222
+       .fill   2,2,8738
+!      .DATAB.B        3,H'333
+       .fill   3,1,819
+!
+
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/data.was b/gas/testsuite/gasp/data.was
new file mode 100644 (file)
index 0000000..0fe6974
--- /dev/null
@@ -0,0 +1,46 @@
+******** data.amp
+!
+
+!foo   .DATA   1,2,3
+foo:   .long   1,2,3
+!bar   .DATA   1,2,3,4,5 ,6
+bar:   .long   1,2,3,4,5,6
+!      .DATA.B 12345,12,2
+       .byte   12345,12,2
+!      .DATA.W 9,2,12,3,13+41,foo+9
+       .short  9,2,12,3,54,foo+9
+!      .DATA.L 2~99
+       .long   97
+!
+
+!
+
+!
+
+!      .DATAB  1,2,3
+       .fill   1,4,2
+!      .DATAB  1,2,3
+       .fill   1,4,2
+!
+
+!
+
+!
+
+!
+
+!      .DATAB  1,9+32
+       .fill   1,4,41
+!
+
+!      .DATAB.L        1,H'11111111
+       .fill   1,4,286331153
+!      .DATAB.W        2,H'2222
+       .fill   2,2,8738
+!      .DATAB.B        3,H'333
+       .fill   3,1,819
+!
+
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/exp.asm b/gas/testsuite/gasp/exp.asm
new file mode 100644 (file)
index 0000000..041608a
--- /dev/null
@@ -0,0 +1,80 @@
+
+; test all ops
+
+a1     .EQU    4+10
+a2     .EQU    4-10
+a3     .EQU    4&10
+a4     .EQU    4|2
+a5     .EQU    4~2
+a6     .EQU    4*10
+a7     .EQU    40/10
+a8     .EQU    +7
+a9     .EQU    -7
+a10    .EQU    ~7
+
+
+       a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
+
+; test the priorities
+
+b1     .EQU    1|2~3&4+5-8*7/2
+b2     .EQU    (1|2~(3&(4+5-(8*(7/2)))))
+b3     .EQU    10*2/3*4
+b4     .EQU    (((10*2)/3)*4)
+b5     .EQU    10+2-3+4
+b6     .EQU    (((10+2)-3)+4)
+
+       b1 b2 b3 b4
+
+; test association
+
+c1     .EQU    -~3
+c2     .EQU    ~-3
+c3     .EQU    -(~3)
+c4     .EQU    ~(-3)
+
+       c1 c2 c3 c4
+
+; test rules for symbols
+
+ok1    .EQU    FOO
+ok2    .EQU    FOO+10
+ok3    .EQU    10+FOO
+ok4    .EQU    FOO-10
+
+       ok1
+       ok2 
+       ok3 
+       ok4
+
+ok5    .EQU    FOO+3+4+5+6
+ok6    .EQU    FOO-BAR
+
+       ok5
+       ok6
+
+bad1   .EQU    FOO+FOO
+bad2   .EQU    FOO*2
+bad3   .EQU    FOO/2
+bad4   .EQU    FOO|2
+bad5   .EQU    FOO&2
+bad6   .EQU    FOO~2
+bad7   .EQU    FOO*2
+
+; test spacing
+
+space1 .EQU    1 +     2       +3+FOO + 3
+space2
+
+; from the SH manual
+
+       .DATA.L 1+(2-(3+(4-5))),1
+
+       .DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
+
+       .DATA.L -~-~H'0000000f,H'00
+
+
+       
+
+       .END
diff --git a/gas/testsuite/gasp/exp.is b/gas/testsuite/gasp/exp.is
new file mode 100644 (file)
index 0000000..ab2b5ee
--- /dev/null
@@ -0,0 +1,133 @@
+******** exp.amp
+!
+
+!; test all ops
+       ; test all ops
+!
+
+!a1    .EQU    4+10
+!a2    .EQU    4-10
+!a3    .EQU    4&10
+!a4    .EQU    4|2
+!a5    .EQU    4~2
+!a6    .EQU    4*10
+!a7    .EQU    40/10
+!a8    .EQU    +7
+!a9    .EQU    -7
+!a10   .EQU    ~7
+!
+
+!
+
+!      a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
+       14 -6 0 6 6 40 4 7 -7 -8
+!
+
+!; test the priorities
+       ; test the priorities
+!
+
+!b1    .EQU    1|2~3&4+5-8*7/2
+!b2    .EQU    (1|2~(3&(4+5-(8*(7/2)))))
+!b3    .EQU    10*2/3*4
+!b4    .EQU    (((10*2)/3)*4)
+!b5    .EQU    10+2-3+4
+!b6    .EQU    (((10+2)-3)+4)
+!
+
+!      b1 b2 b3 b4
+       2 2 24 24
+!
+
+!; test association
+       ; test association
+!
+
+!c1    .EQU    -~3
+!c2    .EQU    ~-3
+!c3    .EQU    -(~3)
+!c4    .EQU    ~(-3)
+!
+
+!      c1 c2 c3 c4
+       4 2 4 2
+!
+
+!; test rules for symbols
+       ; test rules for symbols
+!
+
+!ok1   .EQU    FOO
+!ok2   .EQU    FOO+10
+!ok3   .EQU    10+FOO
+!ok4   .EQU    FOO-10
+!
+
+!      ok1
+       FOO
+!      ok2 
+       FOO+10 
+!      ok3 
+       FOO+10 
+!      ok4
+       FOO+-10
+!
+
+!ok5   .EQU    FOO+3+4+5+6
+!ok6   .EQU    FOO-BAR
+!
+
+!      ok5
+       FOO+18
+!      ok6
+       FOO-FOO
+!
+
+!bad1  .EQU    FOO+FOO
+!bad2  .EQU    FOO*2
+!bad3  .EQU    FOO/2
+!bad4  .EQU    FOO|2
+!bad5  .EQU    FOO&2
+!bad6  .EQU    FOO~2
+!bad7  .EQU    FOO*2
+!
+
+!; test spacing
+       ; test spacing
+!
+
+!space1        .EQU    1 +     2       +3+FOO + 3
+!space2
+space2:        
+!
+
+!; from the SH manual
+       ; from the SH manual
+!
+
+!      .DATA.L 1+(2-(3+(4-5))),1
+       .long   1,1
+!
+
+!      .DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
+       .long   4095,4095
+!
+
+!      .DATA.L -~-~H'0000000f,H'00
+       .long   17,0
+!
+
+!
+
+!      
+       
+!
+
+!      .END
+exp.amp:56 can't add two relocatable expressions
+exp.amp:57 the * operator cannot take non-absolute arguments.
+exp.amp:58 the / operator cannot take non-absolute arguments.
+exp.amp:59 the | operator cannot take non-absolute arguments.
+exp.amp:60 the & operator cannot take non-absolute arguments.
+exp.amp:61 the ~ operator cannot take non-absolute arguments.
+exp.amp:62 the * operator cannot take non-absolute arguments.
diff --git a/gas/testsuite/gasp/exp.was b/gas/testsuite/gasp/exp.was
new file mode 100644 (file)
index 0000000..ab2b5ee
--- /dev/null
@@ -0,0 +1,133 @@
+******** exp.amp
+!
+
+!; test all ops
+       ; test all ops
+!
+
+!a1    .EQU    4+10
+!a2    .EQU    4-10
+!a3    .EQU    4&10
+!a4    .EQU    4|2
+!a5    .EQU    4~2
+!a6    .EQU    4*10
+!a7    .EQU    40/10
+!a8    .EQU    +7
+!a9    .EQU    -7
+!a10   .EQU    ~7
+!
+
+!
+
+!      a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
+       14 -6 0 6 6 40 4 7 -7 -8
+!
+
+!; test the priorities
+       ; test the priorities
+!
+
+!b1    .EQU    1|2~3&4+5-8*7/2
+!b2    .EQU    (1|2~(3&(4+5-(8*(7/2)))))
+!b3    .EQU    10*2/3*4
+!b4    .EQU    (((10*2)/3)*4)
+!b5    .EQU    10+2-3+4
+!b6    .EQU    (((10+2)-3)+4)
+!
+
+!      b1 b2 b3 b4
+       2 2 24 24
+!
+
+!; test association
+       ; test association
+!
+
+!c1    .EQU    -~3
+!c2    .EQU    ~-3
+!c3    .EQU    -(~3)
+!c4    .EQU    ~(-3)
+!
+
+!      c1 c2 c3 c4
+       4 2 4 2
+!
+
+!; test rules for symbols
+       ; test rules for symbols
+!
+
+!ok1   .EQU    FOO
+!ok2   .EQU    FOO+10
+!ok3   .EQU    10+FOO
+!ok4   .EQU    FOO-10
+!
+
+!      ok1
+       FOO
+!      ok2 
+       FOO+10 
+!      ok3 
+       FOO+10 
+!      ok4
+       FOO+-10
+!
+
+!ok5   .EQU    FOO+3+4+5+6
+!ok6   .EQU    FOO-BAR
+!
+
+!      ok5
+       FOO+18
+!      ok6
+       FOO-FOO
+!
+
+!bad1  .EQU    FOO+FOO
+!bad2  .EQU    FOO*2
+!bad3  .EQU    FOO/2
+!bad4  .EQU    FOO|2
+!bad5  .EQU    FOO&2
+!bad6  .EQU    FOO~2
+!bad7  .EQU    FOO*2
+!
+
+!; test spacing
+       ; test spacing
+!
+
+!space1        .EQU    1 +     2       +3+FOO + 3
+!space2
+space2:        
+!
+
+!; from the SH manual
+       ; from the SH manual
+!
+
+!      .DATA.L 1+(2-(3+(4-5))),1
+       .long   1,1
+!
+
+!      .DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
+       .long   4095,4095
+!
+
+!      .DATA.L -~-~H'0000000f,H'00
+       .long   17,0
+!
+
+!
+
+!      
+       
+!
+
+!      .END
+exp.amp:56 can't add two relocatable expressions
+exp.amp:57 the * operator cannot take non-absolute arguments.
+exp.amp:58 the / operator cannot take non-absolute arguments.
+exp.amp:59 the | operator cannot take non-absolute arguments.
+exp.amp:60 the & operator cannot take non-absolute arguments.
+exp.amp:61 the ~ operator cannot take non-absolute arguments.
+exp.amp:62 the * operator cannot take non-absolute arguments.
diff --git a/gas/testsuite/gasp/include.asm b/gas/testsuite/gasp/include.asm
new file mode 100644 (file)
index 0000000..69ed1dd
--- /dev/null
@@ -0,0 +1,4 @@
+       HI
+       .INCLUDE        "INC1.H"
+       THERE
+       .END
diff --git a/gas/testsuite/gasp/include.is b/gas/testsuite/gasp/include.is
new file mode 100644 (file)
index 0000000..3d35d85
--- /dev/null
@@ -0,0 +1,16 @@
+******** include.amp
+!      HI
+       HI
+!      .INCLUDE        "INC1.H"
+!FILE 1 FIRST LINE
+FILE:  1 FIRST LINE
+!      .INCLUDE        "INC2.H"
+!      FILE 2 FIRST LINE
+       FILE 2 FIRST LINE
+!      FILE 2 LAST LINE
+       FILE 2 LAST LINE
+!FILE 1 LAST LINE
+FILE:  1 LAST LINE
+!      THERE
+       THERE
+!      .END
diff --git a/gas/testsuite/gasp/include.was b/gas/testsuite/gasp/include.was
new file mode 100644 (file)
index 0000000..3d35d85
--- /dev/null
@@ -0,0 +1,16 @@
+******** include.amp
+!      HI
+       HI
+!      .INCLUDE        "INC1.H"
+!FILE 1 FIRST LINE
+FILE:  1 FIRST LINE
+!      .INCLUDE        "INC2.H"
+!      FILE 2 FIRST LINE
+       FILE 2 FIRST LINE
+!      FILE 2 LAST LINE
+       FILE 2 LAST LINE
+!FILE 1 LAST LINE
+FILE:  1 LAST LINE
+!      THERE
+       THERE
+!      .END
diff --git a/gas/testsuite/gasp/listing.asm b/gas/testsuite/gasp/listing.asm
new file mode 100644 (file)
index 0000000..b98ce96
--- /dev/null
@@ -0,0 +1,15 @@
+
+
+       .HEADING        " ""QUOTE"" "
+       .PAGE
+       .PRINT LIST
+       foo             
+       .PRINT NOLIST
+       foo
+
+
+       .FORM   LIN=12
+       .FORM   COL=90
+       .FORM   LIN=123 COL=23
+       
+       .END
\ No newline at end of file
diff --git a/gas/testsuite/gasp/listing.is b/gas/testsuite/gasp/listing.is
new file mode 100644 (file)
index 0000000..e4c50a2
--- /dev/null
@@ -0,0 +1,32 @@
+******** listing.amp
+!
+
+!
+
+!      .HEADING        " ""QUOTE"" "
+       .title  " "QUOTE" "
+!      .PAGE
+       .eject
+!      .PRINT LIST
+       .list
+!      foo             
+       foo             
+!      .PRINT NOLIST
+       .nolist
+!      foo
+       foo
+!
+
+!
+
+!      .FORM   LIN=12
+       .psize 12,132
+!      .FORM   COL=90
+       .psize 60,90
+!      .FORM   LIN=123 COL=23
+       .psize 123,23
+!      
+       
+!      .END
+end of file not at start of line.
+.END missing from end of file.
diff --git a/gas/testsuite/gasp/listing.was b/gas/testsuite/gasp/listing.was
new file mode 100644 (file)
index 0000000..4003fba
--- /dev/null
@@ -0,0 +1,32 @@
+******** listing.amp
+!
+
+!
+
+!      .HEADING        " ""QUOTE"" "
+       .title  " "QUOTE" "
+!      .PAGE
+       .eject
+!      .PRINT LIST
+       .list
+!      foo             
+       foo             
+!      .PRINT NOLIST
+       .nolist
+!      foo
+       foo
+!
+
+!
+
+!      .FORM   LIN=12
+       .psize 12,132
+!      .FORM   COL=90
+       .psize 60,90
+!      .FORM   LIN=123 COL=23
+       .psize 123,23
+!      
+       
+!      .END
+End of file not at start of line.
+.END missing from end of file.
diff --git a/gas/testsuite/gasp/macro.asm b/gas/testsuite/gasp/macro.asm
new file mode 100644 (file)
index 0000000..dfb16bf
--- /dev/null
@@ -0,0 +1,102 @@
+       .MACRO  SUM FROM=0, TO=9
+       ; \FROM \TO
+       MOV     R\FROM,R10
+COUNT  .ASSIGNA        \FROM+1
+       .AWHILE \&COUNT LE \TO
+       MOV     R\&COUNT,R10
+COUNT  .ASSIGNA        \&COUNT+1
+       .AENDW
+       .ENDM
+
+       SUM 0,5
+       SUM     TO=5
+       SUM     FROM=2, TO=5
+
+
+; hi this is a comment
+       .MACRO  BACK_SLASH_SET
+       \(MOV   #"\",R0) 
+       .ENDM
+       BACK_SLASH_SET
+       .MACRO  COMM
+       bar     ; this comment will get copied out
+       foo     \; this one will get dropped
+       .ENDM
+       COMM
+       BACK_SLASH_SET
+       .MACRO  PLUS2
+       ADD     #1,R\&V1
+       .SDATA  "\&V'1"
+       .ENDM
+V      .ASSIGNC        "R"
+V1     .ASSIGNA        1
+       PLUS2
+       .MACRO  PLUS1   P,P1
+       ADD     #1,\P1
+       .SDATA  "\P'1"
+       .ENDM
+       PLUS1   R,R1
+
+       .MACRO  SUM P1
+       MOV     R0,R10
+       ADD     R1,R10
+       ADD     R2,R10
+       \P1     
+       ADD     R3,R10
+       .ENDM
+
+       SUM     .EXITM
+
+       .MACRO foo bar=a default=b
+       \bar
+       \default
+       bar
+       default
+       .ENDM
+       foo default=dog bar=cat
+       foo X Y
+       foo
+       foo bar=cat default=dog
+
+
+       .MACRO  foo bar
+       HI
+       HI \bar
+       HI
+       .ENDM
+
+       foo 1
+       foo 123
+       foo 1 2 3 4
+       foo
+
+       
+       .MACRO  PUSH Rn
+       MOV.L   \Rn,@-r15
+       .ENDM
+       PUSH    R0
+       PUSH    R1
+
+
+       .MACRO  RES_STR STR, Rn
+       MOV.L   #str\@,\Rn
+       BRA     end_str\@
+       NOP
+str\@  .SDATA "\STR"
+       .ALIGN  2
+end_str\@
+       .ENDM
+       
+       RES_STR "ONE",R0        
+       RES_STR "TWO",R1
+       RES_STR "THREE",R2
+
+
+
+       RES_STR STR=donkey Rn=R1
+       RES_STR donkey,R1
+       RES_STR donkey Rn=R1
+       .END
+
+
+
diff --git a/gas/testsuite/gasp/macro.is b/gas/testsuite/gasp/macro.is
new file mode 100644 (file)
index 0000000..57211cb
--- /dev/null
@@ -0,0 +1,375 @@
+******** macro.amp
+!      .MACRO  SUM FROM=0, TO=9
+!      ; \FROM \TO
+!      MOV     R\FROM,R10
+!COUNT .ASSIGNA        \FROM+1
+!      .AWHILE \&COUNT LE \TO
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      .ENDM
+!
+
+!      SUM 0,5
+!      ; 0 5
+       ; 0 5
+!      MOV     R0,R10
+       MOV     R0,R10
+!COUNT .ASSIGNA        0+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R1,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R2,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R3,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R4,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R5,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      SUM     TO=5
+!      ; 0 5
+       ; 0 5
+!      MOV     R0,R10
+       MOV     R0,R10
+!COUNT .ASSIGNA        0+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R1,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R2,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R3,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R4,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R5,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      SUM     FROM=2, TO=5
+!      ; 2 5
+       ; 2 5
+!      MOV     R2,R10
+       MOV     R2,R10
+!COUNT .ASSIGNA        2+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R3,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R4,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R5,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!
+
+!
+
+!; hi this is a comment
+       ; hi this is a comment
+!      .MACRO  BACK_SLASH_SET
+!      \(MOV   #"\",R0) 
+!      .ENDM
+!      BACK_SLASH_SET
+!      MOV     #"\",R0 
+       MOV     #"\",R0 
+!      .MACRO  COMM
+!      bar     ; this comment will get copied out
+!      foo     \; this one will get dropped
+!      .ENDM
+!      COMM
+!      bar     ; this comment will get copied out
+       bar     ; this comment will get copied out
+!      foo     
+       foo     
+!      BACK_SLASH_SET
+!      MOV     #"\",R0 
+       MOV     #"\",R0 
+!      .MACRO  PLUS2
+!      ADD     #1,R\&V1
+!      .SDATA  "\&V'1"
+!      .ENDM
+!V     .ASSIGNC        "R"
+!V1    .ASSIGNA        1
+!      PLUS2
+!      ADD     #1,R\&V1
+       ADD     #1,R1
+!      .SDATA  "\&V'1"
+       .byte   82,49
+!      .MACRO  PLUS1   P,P1
+!      ADD     #1,\P1
+!      .SDATA  "\P'1"
+!      .ENDM
+!      PLUS1   R,R1
+!      ADD     #1,R1
+       ADD     #1,R1
+!      .SDATA  "R1"
+       .byte   82,49
+!
+
+!      .MACRO  SUM P1
+!      MOV     R0,R10
+!      ADD     R1,R10
+!      ADD     R2,R10
+!      \P1     
+!      ADD     R3,R10
+!      .ENDM
+!
+
+!      SUM     .EXITM
+!      MOV     R0,R10
+       MOV     R0,R10
+!      ADD     R1,R10
+       ADD     R1,R10
+!      ADD     R2,R10
+       ADD     R2,R10
+!      .EXITM  
+!
+
+!      .MACRO foo bar=a default=b
+!      \bar
+!      \default
+!      bar
+!      default
+!      .ENDM
+!      foo default=dog bar=cat
+!      cat
+       cat
+!      dog
+       dog
+!      bar
+       bar
+!      default
+       default
+!      foo X Y
+!      X
+       X
+!      Y
+       Y
+!      bar
+       bar
+!      default
+       default
+!      foo
+!      a
+       a
+!      b
+       b
+!      bar
+       bar
+!      default
+       default
+!      foo bar=cat default=dog
+!      cat
+       cat
+!      dog
+       dog
+!      bar
+       bar
+!      default
+       default
+!
+
+!
+
+!      .MACRO  foo bar
+!      HI
+!      HI \bar
+!      HI
+!      .ENDM
+!
+
+!      foo 1
+!      HI
+       HI
+!      HI 1
+       HI 1
+!      HI
+       HI
+!      foo 123
+!      HI
+       HI
+!      HI 123
+       HI 123
+!      HI
+       HI
+!      foo 1 2 3 4
+!      foo
+!      HI
+       HI
+!      HI 
+       HI 
+!      HI
+       HI
+!
+
+!      
+       
+!      .MACRO  PUSH Rn
+!      MOV.L   \Rn,@-r15
+!      .ENDM
+!      PUSH    R0
+!      MOV.L   R0,@-r15
+       MOV.L   R0,@-r15
+!      PUSH    R1
+!      MOV.L   R1,@-r15
+       MOV.L   R1,@-r15
+!
+
+!
+
+!      .MACRO  RES_STR STR, Rn
+!      MOV.L   #str\@,\Rn
+!      BRA     end_str\@
+!      NOP
+!str\@ .SDATA "\STR"
+!      .ALIGN  2
+!end_str\@
+!      .ENDM
+!      
+       
+!      RES_STR "ONE",R0        
+!      MOV.L   #str00018,R0
+       MOV.L   #str00018,R0
+!      BRA     end_str00018
+       BRA     end_str00018
+!      NOP
+       NOP
+!str00018      .SDATA "ONE"
+str00018:      .byte   79,78,69
+!      .ALIGN  2
+       .align  2
+!end_str00018
+end_str00018:  
+!      RES_STR "TWO",R1
+!      MOV.L   #str00019,R1
+       MOV.L   #str00019,R1
+!      BRA     end_str00019
+       BRA     end_str00019
+!      NOP
+       NOP
+!str00019      .SDATA "TWO"
+str00019:      .byte   84,87,79
+!      .ALIGN  2
+       .align  2
+!end_str00019
+end_str00019:  
+!      RES_STR "THREE",R2
+!      MOV.L   #str00020,R2
+       MOV.L   #str00020,R2
+!      BRA     end_str00020
+       BRA     end_str00020
+!      NOP
+       NOP
+!str00020      .SDATA "THREE"
+str00020:      .byte   84,72,82,69,69
+!      .ALIGN  2
+       .align  2
+!end_str00020
+end_str00020:  
+!
+
+!
+
+!
+
+!      RES_STR STR=donkey Rn=R1
+!      MOV.L   #str00021,R1
+       MOV.L   #str00021,R1
+!      BRA     end_str00021
+       BRA     end_str00021
+!      NOP
+       NOP
+!str00021      .SDATA "donkey"
+str00021:      .byte   100,111,110,107,101,121
+!      .ALIGN  2
+       .align  2
+!end_str00021
+end_str00021:  
+!      RES_STR donkey,R1
+!      MOV.L   #str00022,R1
+       MOV.L   #str00022,R1
+!      BRA     end_str00022
+       BRA     end_str00022
+!      NOP
+       NOP
+!str00022      .SDATA "donkey"
+str00022:      .byte   100,111,110,107,101,121
+!      .ALIGN  2
+       .align  2
+!end_str00022
+end_str00022:  
+!      RES_STR donkey Rn=R1
+!      .END
+macro.amp:70 Too many positional arguments.
+macro.amp:98 Can't mix positional and keyword arguments.
diff --git a/gas/testsuite/gasp/macro.was b/gas/testsuite/gasp/macro.was
new file mode 100644 (file)
index 0000000..57211cb
--- /dev/null
@@ -0,0 +1,375 @@
+******** macro.amp
+!      .MACRO  SUM FROM=0, TO=9
+!      ; \FROM \TO
+!      MOV     R\FROM,R10
+!COUNT .ASSIGNA        \FROM+1
+!      .AWHILE \&COUNT LE \TO
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      .ENDM
+!
+
+!      SUM 0,5
+!      ; 0 5
+       ; 0 5
+!      MOV     R0,R10
+       MOV     R0,R10
+!COUNT .ASSIGNA        0+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R1,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R2,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R3,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R4,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R5,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      SUM     TO=5
+!      ; 0 5
+       ; 0 5
+!      MOV     R0,R10
+       MOV     R0,R10
+!COUNT .ASSIGNA        0+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R1,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R2,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R3,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R4,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R5,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      SUM     FROM=2, TO=5
+!      ; 2 5
+       ; 2 5
+!      MOV     R2,R10
+       MOV     R2,R10
+!COUNT .ASSIGNA        2+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R3,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R4,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!      MOV     R\&COUNT,R10
+       MOV     R5,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AWHILE \&COUNT LE 5
+!      MOV     R\&COUNT,R10
+!COUNT .ASSIGNA        \&COUNT+1
+!      .AENDW
+!
+
+!
+
+!; hi this is a comment
+       ; hi this is a comment
+!      .MACRO  BACK_SLASH_SET
+!      \(MOV   #"\",R0) 
+!      .ENDM
+!      BACK_SLASH_SET
+!      MOV     #"\",R0 
+       MOV     #"\",R0 
+!      .MACRO  COMM
+!      bar     ; this comment will get copied out
+!      foo     \; this one will get dropped
+!      .ENDM
+!      COMM
+!      bar     ; this comment will get copied out
+       bar     ; this comment will get copied out
+!      foo     
+       foo     
+!      BACK_SLASH_SET
+!      MOV     #"\",R0 
+       MOV     #"\",R0 
+!      .MACRO  PLUS2
+!      ADD     #1,R\&V1
+!      .SDATA  "\&V'1"
+!      .ENDM
+!V     .ASSIGNC        "R"
+!V1    .ASSIGNA        1
+!      PLUS2
+!      ADD     #1,R\&V1
+       ADD     #1,R1
+!      .SDATA  "\&V'1"
+       .byte   82,49
+!      .MACRO  PLUS1   P,P1
+!      ADD     #1,\P1
+!      .SDATA  "\P'1"
+!      .ENDM
+!      PLUS1   R,R1
+!      ADD     #1,R1
+       ADD     #1,R1
+!      .SDATA  "R1"
+       .byte   82,49
+!
+
+!      .MACRO  SUM P1
+!      MOV     R0,R10
+!      ADD     R1,R10
+!      ADD     R2,R10
+!      \P1     
+!      ADD     R3,R10
+!      .ENDM
+!
+
+!      SUM     .EXITM
+!      MOV     R0,R10
+       MOV     R0,R10
+!      ADD     R1,R10
+       ADD     R1,R10
+!      ADD     R2,R10
+       ADD     R2,R10
+!      .EXITM  
+!
+
+!      .MACRO foo bar=a default=b
+!      \bar
+!      \default
+!      bar
+!      default
+!      .ENDM
+!      foo default=dog bar=cat
+!      cat
+       cat
+!      dog
+       dog
+!      bar
+       bar
+!      default
+       default
+!      foo X Y
+!      X
+       X
+!      Y
+       Y
+!      bar
+       bar
+!      default
+       default
+!      foo
+!      a
+       a
+!      b
+       b
+!      bar
+       bar
+!      default
+       default
+!      foo bar=cat default=dog
+!      cat
+       cat
+!      dog
+       dog
+!      bar
+       bar
+!      default
+       default
+!
+
+!
+
+!      .MACRO  foo bar
+!      HI
+!      HI \bar
+!      HI
+!      .ENDM
+!
+
+!      foo 1
+!      HI
+       HI
+!      HI 1
+       HI 1
+!      HI
+       HI
+!      foo 123
+!      HI
+       HI
+!      HI 123
+       HI 123
+!      HI
+       HI
+!      foo 1 2 3 4
+!      foo
+!      HI
+       HI
+!      HI 
+       HI 
+!      HI
+       HI
+!
+
+!      
+       
+!      .MACRO  PUSH Rn
+!      MOV.L   \Rn,@-r15
+!      .ENDM
+!      PUSH    R0
+!      MOV.L   R0,@-r15
+       MOV.L   R0,@-r15
+!      PUSH    R1
+!      MOV.L   R1,@-r15
+       MOV.L   R1,@-r15
+!
+
+!
+
+!      .MACRO  RES_STR STR, Rn
+!      MOV.L   #str\@,\Rn
+!      BRA     end_str\@
+!      NOP
+!str\@ .SDATA "\STR"
+!      .ALIGN  2
+!end_str\@
+!      .ENDM
+!      
+       
+!      RES_STR "ONE",R0        
+!      MOV.L   #str00018,R0
+       MOV.L   #str00018,R0
+!      BRA     end_str00018
+       BRA     end_str00018
+!      NOP
+       NOP
+!str00018      .SDATA "ONE"
+str00018:      .byte   79,78,69
+!      .ALIGN  2
+       .align  2
+!end_str00018
+end_str00018:  
+!      RES_STR "TWO",R1
+!      MOV.L   #str00019,R1
+       MOV.L   #str00019,R1
+!      BRA     end_str00019
+       BRA     end_str00019
+!      NOP
+       NOP
+!str00019      .SDATA "TWO"
+str00019:      .byte   84,87,79
+!      .ALIGN  2
+       .align  2
+!end_str00019
+end_str00019:  
+!      RES_STR "THREE",R2
+!      MOV.L   #str00020,R2
+       MOV.L   #str00020,R2
+!      BRA     end_str00020
+       BRA     end_str00020
+!      NOP
+       NOP
+!str00020      .SDATA "THREE"
+str00020:      .byte   84,72,82,69,69
+!      .ALIGN  2
+       .align  2
+!end_str00020
+end_str00020:  
+!
+
+!
+
+!
+
+!      RES_STR STR=donkey Rn=R1
+!      MOV.L   #str00021,R1
+       MOV.L   #str00021,R1
+!      BRA     end_str00021
+       BRA     end_str00021
+!      NOP
+       NOP
+!str00021      .SDATA "donkey"
+str00021:      .byte   100,111,110,107,101,121
+!      .ALIGN  2
+       .align  2
+!end_str00021
+end_str00021:  
+!      RES_STR donkey,R1
+!      MOV.L   #str00022,R1
+       MOV.L   #str00022,R1
+!      BRA     end_str00022
+       BRA     end_str00022
+!      NOP
+       NOP
+!str00022      .SDATA "donkey"
+str00022:      .byte   100,111,110,107,101,121
+!      .ALIGN  2
+       .align  2
+!end_str00022
+end_str00022:  
+!      RES_STR donkey Rn=R1
+!      .END
+macro.amp:70 Too many positional arguments.
+macro.amp:98 Can't mix positional and keyword arguments.
diff --git a/gas/testsuite/gasp/reg.asm b/gas/testsuite/gasp/reg.asm
new file mode 100644 (file)
index 0000000..eb463ed
--- /dev/null
@@ -0,0 +1,9 @@
+
+
+foo    .REG    (r1)
+       add     foo,foo
+
+bar    .reg    (r2)
+       add     bar,foo
+
+       .END
diff --git a/gas/testsuite/gasp/reg.is b/gas/testsuite/gasp/reg.is
new file mode 100644 (file)
index 0000000..27f3d2b
--- /dev/null
@@ -0,0 +1,16 @@
+******** reg.amp
+!
+
+!
+
+!foo   .REG    (r1)
+!      add     foo,foo
+       add     r1,r1
+!
+
+!bar   .reg    (r2)
+!      add     bar,foo
+       add     r2,r1
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/reg.was b/gas/testsuite/gasp/reg.was
new file mode 100644 (file)
index 0000000..27f3d2b
--- /dev/null
@@ -0,0 +1,16 @@
+******** reg.amp
+!
+
+!
+
+!foo   .REG    (r1)
+!      add     foo,foo
+       add     r1,r1
+!
+
+!bar   .reg    (r2)
+!      add     bar,foo
+       add     r2,r1
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/rep.asm b/gas/testsuite/gasp/rep.asm
new file mode 100644 (file)
index 0000000..027ac47
--- /dev/null
@@ -0,0 +1,13 @@
+       .AREPEAT        5
+       FIVE
+       .AREPEAT        2
+       TWO
+       .AENDR
+       .AREPEAT        3
+       THREE
+       .AREPEAT        2
+       TWO     
+       .AENDR
+       .AENDR
+       .AENDR
+       .END
diff --git a/gas/testsuite/gasp/rep.is b/gas/testsuite/gasp/rep.is
new file mode 100644 (file)
index 0000000..5271b3e
--- /dev/null
@@ -0,0 +1,392 @@
+******** rep.amp
+!      .AREPEAT        5
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        4
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        3
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .END
diff --git a/gas/testsuite/gasp/rep.was b/gas/testsuite/gasp/rep.was
new file mode 100644 (file)
index 0000000..5271b3e
--- /dev/null
@@ -0,0 +1,392 @@
+******** rep.amp
+!      .AREPEAT        5
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        4
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        3
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      .AENDR
+!      FIVE
+       FIVE
+!      .AREPEAT        2
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        1
+!      TWO
+!      .AENDR
+!      TWO
+       TWO
+!      .AREPEAT        3
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        2
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      .AENDR
+!      THREE
+       THREE
+!      .AREPEAT        2
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .AREPEAT        1
+!      TWO     
+!      .AENDR
+!      TWO     
+       TWO     
+!      .END
diff --git a/gas/testsuite/gasp/repeat.asm b/gas/testsuite/gasp/repeat.asm
new file mode 100644 (file)
index 0000000..7a85da3
--- /dev/null
@@ -0,0 +1,14 @@
+
+       .AREPEAT        10
+       TEN
+       .AREPEAT        2       
+       TWENTY
+       .AENDR
+       .AENDR
+
+       .AREPEAT        3
+       ROTCL   R2
+       DIV1    R0,R1
+       .AENDR
+
+       .END
diff --git a/gas/testsuite/gasp/repeat.is b/gas/testsuite/gasp/repeat.is
new file mode 100644 (file)
index 0000000..eb6c967
--- /dev/null
@@ -0,0 +1,212 @@
+******** repeat.amp
+!
+
+!      .AREPEAT        10
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        9
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        8
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        7
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        6
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        5
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        4
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        3
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        2
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!
+
+!      .AREPEAT        3
+!      ROTCL   R2
+!      DIV1    R0,R1
+!      .AENDR
+!      ROTCL   R2
+       ROTCL   R2
+!      DIV1    R0,R1
+       DIV1    R0,R1
+!      .AREPEAT        2
+!      ROTCL   R2
+!      DIV1    R0,R1
+!      .AENDR
+!      ROTCL   R2
+       ROTCL   R2
+!      DIV1    R0,R1
+       DIV1    R0,R1
+!      .AREPEAT        1
+!      ROTCL   R2
+!      DIV1    R0,R1
+!      .AENDR
+!      ROTCL   R2
+       ROTCL   R2
+!      DIV1    R0,R1
+       DIV1    R0,R1
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/repeat.was b/gas/testsuite/gasp/repeat.was
new file mode 100644 (file)
index 0000000..eb6c967
--- /dev/null
@@ -0,0 +1,212 @@
+******** repeat.amp
+!
+
+!      .AREPEAT        10
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        9
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        8
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        7
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        6
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        5
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        4
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        3
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        2
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      .AENDR
+!      TEN
+       TEN
+!      .AREPEAT        2       
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!      .AREPEAT        1
+!      TWENTY
+!      .AENDR
+!      TWENTY
+       TWENTY
+!
+
+!      .AREPEAT        3
+!      ROTCL   R2
+!      DIV1    R0,R1
+!      .AENDR
+!      ROTCL   R2
+       ROTCL   R2
+!      DIV1    R0,R1
+       DIV1    R0,R1
+!      .AREPEAT        2
+!      ROTCL   R2
+!      DIV1    R0,R1
+!      .AENDR
+!      ROTCL   R2
+       ROTCL   R2
+!      DIV1    R0,R1
+       DIV1    R0,R1
+!      .AREPEAT        1
+!      ROTCL   R2
+!      DIV1    R0,R1
+!      .AENDR
+!      ROTCL   R2
+       ROTCL   R2
+!      DIV1    R0,R1
+       DIV1    R0,R1
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/reperr.asm b/gas/testsuite/gasp/reperr.asm
new file mode 100644 (file)
index 0000000..60882b2
--- /dev/null
@@ -0,0 +1,2 @@
+
+       .REPEAT 10
diff --git a/gas/testsuite/gasp/reperr1.asm b/gas/testsuite/gasp/reperr1.asm
new file mode 100644 (file)
index 0000000..2d987e4
--- /dev/null
@@ -0,0 +1,3 @@
+
+       .AREPEAT        10
+       .END
diff --git a/gas/testsuite/gasp/reperr1.is b/gas/testsuite/gasp/reperr1.is
new file mode 100644 (file)
index 0000000..72ae1bb
--- /dev/null
@@ -0,0 +1,6 @@
+******** reperr1.amp
+!
+
+!      .AREPEAT        10
+!      .END
+!End of file whilst inside .AREPEAT, started on line 3.
diff --git a/gas/testsuite/gasp/reperr1.was b/gas/testsuite/gasp/reperr1.was
new file mode 100644 (file)
index 0000000..72ae1bb
--- /dev/null
@@ -0,0 +1,6 @@
+******** reperr1.amp
+!
+
+!      .AREPEAT        10
+!      .END
+!End of file whilst inside .AREPEAT, started on line 3.
diff --git a/gas/testsuite/gasp/reperr2.asm b/gas/testsuite/gasp/reperr2.asm
new file mode 100644 (file)
index 0000000..de06a71
--- /dev/null
@@ -0,0 +1,6 @@
+
+       .AREPEAT        5
+       .AENDR          
+       .AENDR
+       .END
+
diff --git a/gas/testsuite/gasp/reperr2.is b/gas/testsuite/gasp/reperr2.is
new file mode 100644 (file)
index 0000000..bbcd1bf
--- /dev/null
@@ -0,0 +1,16 @@
+******** reperr2.amp
+!
+
+!      .AREPEAT        5
+!      .AENDR          
+!      .AREPEAT        4
+!      .AENDR
+!      .AREPEAT        3
+!      .AENDR
+!      .AREPEAT        2
+!      .AENDR
+!      .AREPEAT        1
+!      .AENDR
+!      .AENDR
+!      .END
+reperr2.amp:4 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/reperr2.was b/gas/testsuite/gasp/reperr2.was
new file mode 100644 (file)
index 0000000..bbcd1bf
--- /dev/null
@@ -0,0 +1,16 @@
+******** reperr2.amp
+!
+
+!      .AREPEAT        5
+!      .AENDR          
+!      .AREPEAT        4
+!      .AENDR
+!      .AREPEAT        3
+!      .AENDR
+!      .AREPEAT        2
+!      .AENDR
+!      .AREPEAT        1
+!      .AENDR
+!      .AENDR
+!      .END
+reperr2.amp:4 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/reperr3.asm b/gas/testsuite/gasp/reperr3.asm
new file mode 100644 (file)
index 0000000..464bc79
--- /dev/null
@@ -0,0 +1,21 @@
+       .AREPEAT        4
+       .AREPEAT        4
+       .AREPEAT        4
+       .AREPEAT        4
+       stuff
+       .AENDR          
+       which
+       .AENDR  
+       will
+       .AENDR  
+       get
+       .AENDR  
+       repetaed
+       .AENDR  
+
+       .AENDR  
+       .AENDR  
+       .AENDR  
+       .AENDR  
+       .AENDR  
+       .END
diff --git a/gas/testsuite/gasp/reperr3.is b/gas/testsuite/gasp/reperr3.is
new file mode 100644 (file)
index 0000000..8bb555e
--- /dev/null
@@ -0,0 +1,2042 @@
+******** reperr3.amp
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      get
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      get
+       get
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      get
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      get
+       get
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      get
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      get
+       get
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      get
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      get
+       get
+!      repetaed
+       repetaed
+!      .AENDR  
+!
+
+!      .AENDR  
+!      .AENDR  
+!      .AENDR  
+!      .AENDR  
+!      .AENDR  
+!      .END
+reperr3.amp:14 AENDR without a AREPEAT.
+reperr3.amp:16 AENDR without a AREPEAT.
+reperr3.amp:17 AENDR without a AREPEAT.
+reperr3.amp:18 AENDR without a AREPEAT.
+reperr3.amp:19 AENDR without a AREPEAT.
+reperr3.amp:20 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/reperr3.was b/gas/testsuite/gasp/reperr3.was
new file mode 100644 (file)
index 0000000..8bb555e
--- /dev/null
@@ -0,0 +1,2042 @@
+******** reperr3.amp
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      get
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      get
+       get
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      get
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      get
+       get
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      get
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      get
+       get
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      get
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR  
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      will
+!      .AENDR
+!      .AREPEAT        4
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR  
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        3
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        2
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      .AREPEAT        1
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      which
+!      .AENDR
+!      .AREPEAT        4
+!      stuff
+!      .AENDR          
+!      stuff
+       stuff
+!      .AREPEAT        3
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        2
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      .AREPEAT        1
+!      stuff
+!      .AENDR
+!      stuff
+       stuff
+!      which
+       which
+!      will
+       will
+!      get
+       get
+!      repetaed
+       repetaed
+!      .AENDR  
+!
+
+!      .AENDR  
+!      .AENDR  
+!      .AENDR  
+!      .AENDR  
+!      .AENDR  
+!      .END
+reperr3.amp:14 AENDR without a AREPEAT.
+reperr3.amp:16 AENDR without a AREPEAT.
+reperr3.amp:17 AENDR without a AREPEAT.
+reperr3.amp:18 AENDR without a AREPEAT.
+reperr3.amp:19 AENDR without a AREPEAT.
+reperr3.amp:20 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/sdata.asm b/gas/testsuite/gasp/sdata.asm
new file mode 100644 (file)
index 0000000..d6bd23c
--- /dev/null
@@ -0,0 +1,24 @@
+
+
+       .SDATA  "HI","STEVE"
+       .SDATA  "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
+
+       .SDATA  "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
+
+
+
+       .SDATA  "SHOULD NOT FAIL" "HERE" 
+       .SDATA  "SHOULD FAIL"  foo "HERE" 
+
+       .SDATAB 8,"BOINK"
+
+       ; examples from book
+
+       .SDATAB 2,"AAAAA"
+       .SDATAB 2,"""BBB"""
+       .SDATAB 2,"AABB"<H'07>
+
+
+a1:    .SDATAZ "HI"
+a2:    .SDATAC "HI"
+a3:    .SDATA  "HI"
diff --git a/gas/testsuite/gasp/sdata.is b/gas/testsuite/gasp/sdata.is
new file mode 100644 (file)
index 0000000..57eef2f
--- /dev/null
@@ -0,0 +1,62 @@
+******** sdata.amp
+!
+
+!
+
+!      .SDATA  "HI","STEVE"
+       .byte   72,73,83,84,69,86,69
+!      .SDATA  "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
+       .byte   72,73,83,84,69,86,69,72,73,83,69,86,69
+!
+
+!      .SDATA  "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
+       .byte   72,34,73,83,84,69,86,69,72,73,83,69,86,69
+!
+
+!
+
+!
+
+!      .SDATA  "SHOULD NOT FAIL" "HERE" 
+       .byte   83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,72,69,82,69
+!      .SDATA  "SHOULD FAIL"  foo "HERE" 
+       .byte   83,72,79,85,76,68,32,70,65,73,76
+
+!
+
+!      .SDATAB 8,"BOINK"
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+!
+
+!      ; examples from book
+       ; examples from book
+!
+
+!      .SDATAB 2,"AAAAA"
+       .byte   65,65,65,65,65
+       .byte   65,65,65,65,65
+!      .SDATAB 2,"""BBB"""
+       .byte   34,66,66,66,34
+       .byte   34,66,66,66,34
+!      .SDATAB 2,"AABB"<H'07>
+       .byte   65,65,66,66,7
+       .byte   65,65,66,66,7
+!
+
+!
+
+!a1:   .SDATAZ "HI"
+a1:    .byte   72,73,0
+!a2:   .SDATAC "HI"
+a2:    .byte   2,72,73
+!a3:   .SDATA  "HI"
+a3:    .byte   72,73
+!sdata.amp:11 illegal character in SDATA line (0x66).
+.END missing from end of file.
diff --git a/gas/testsuite/gasp/sdata.was b/gas/testsuite/gasp/sdata.was
new file mode 100644 (file)
index 0000000..57eef2f
--- /dev/null
@@ -0,0 +1,62 @@
+******** sdata.amp
+!
+
+!
+
+!      .SDATA  "HI","STEVE"
+       .byte   72,73,83,84,69,86,69
+!      .SDATA  "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
+       .byte   72,73,83,84,69,86,69,72,73,83,69,86,69
+!
+
+!      .SDATA  "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
+       .byte   72,34,73,83,84,69,86,69,72,73,83,69,86,69
+!
+
+!
+
+!
+
+!      .SDATA  "SHOULD NOT FAIL" "HERE" 
+       .byte   83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,72,69,82,69
+!      .SDATA  "SHOULD FAIL"  foo "HERE" 
+       .byte   83,72,79,85,76,68,32,70,65,73,76
+
+!
+
+!      .SDATAB 8,"BOINK"
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+       .byte   66,79,73,78,75
+!
+
+!      ; examples from book
+       ; examples from book
+!
+
+!      .SDATAB 2,"AAAAA"
+       .byte   65,65,65,65,65
+       .byte   65,65,65,65,65
+!      .SDATAB 2,"""BBB"""
+       .byte   34,66,66,66,34
+       .byte   34,66,66,66,34
+!      .SDATAB 2,"AABB"<H'07>
+       .byte   65,65,66,66,7
+       .byte   65,65,66,66,7
+!
+
+!
+
+!a1:   .SDATAZ "HI"
+a1:    .byte   72,73,0
+!a2:   .SDATAC "HI"
+a2:    .byte   2,72,73
+!a3:   .SDATA  "HI"
+a3:    .byte   72,73
+!sdata.amp:11 illegal character in SDATA line (0x66).
+.END missing from end of file.
diff --git a/gas/testsuite/gasp/sfunc.asm b/gas/testsuite/gasp/sfunc.asm
new file mode 100644 (file)
index 0000000..b59949a
--- /dev/null
@@ -0,0 +1,26 @@
+
+       .MACRO  RESERVE_STR P1=0 P2
+       .SDATA  .SUBSTR("ABCDEFG",\P1,\P2)
+       .ENDM
+
+       RESERVE_STR     2,2
+       RESERVE_STR     ,3
+
+
+       .MACRO FIND_STR P1
+       .DATA.W .INSTR("ABCDEFG","\P1", 0)
+       .ENDM
+
+       FIND_STR        CDE
+       FIND_STR        H
+
+       .MACRO  RESERVE_LENGTH P1
+       .ALIGN  4
+       .SRES   .LEN("\P1")
+       .ENDM
+
+       RESERVE_LENGTH  ABCDEF
+       RESERVE_LENGTH  ABC
+
+       .END
+
diff --git a/gas/testsuite/gasp/sfunc.is b/gas/testsuite/gasp/sfunc.is
new file mode 100644 (file)
index 0000000..98e80d5
--- /dev/null
@@ -0,0 +1,50 @@
+******** sfunc.amp
+!
+
+!      .MACRO  RESERVE_STR P1=0 P2
+!      .SDATA  .SUBSTR("ABCDEFG",\P1,\P2)
+!      .ENDM
+!
+
+!      RESERVE_STR     2,2
+!      .SDATA  .SUBSTR("ABCDEFG",2,2)
+       .byte   67,68
+!      RESERVE_STR     ,3
+!      .SDATA  .SUBSTR("ABCDEFG",0,3)
+       .byte   65,66,67
+!
+
+!
+
+!      .MACRO FIND_STR P1
+!      .DATA.W .INSTR("ABCDEFG","\P1", 0)
+!      .ENDM
+!
+
+!      FIND_STR        CDE
+!      .DATA.W .INSTR("ABCDEFG","CDE", 0)
+       .short  2
+!      FIND_STR        H
+!      .DATA.W .INSTR("ABCDEFG","H", 0)
+       .short  -1
+!
+
+!      .MACRO  RESERVE_LENGTH P1
+!      .ALIGN  4
+!      .SRES   .LEN("\P1")
+!      .ENDM
+!
+
+!      RESERVE_LENGTH  ABCDEF
+!      .ALIGN  4
+       .align  4
+!      .SRES   .LEN("ABCDEF")
+       .space  24
+!      RESERVE_LENGTH  ABC
+!      .ALIGN  4
+       .align  4
+!      .SRES   .LEN("ABC")
+       .space  12
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/sfunc.was b/gas/testsuite/gasp/sfunc.was
new file mode 100644 (file)
index 0000000..98e80d5
--- /dev/null
@@ -0,0 +1,50 @@
+******** sfunc.amp
+!
+
+!      .MACRO  RESERVE_STR P1=0 P2
+!      .SDATA  .SUBSTR("ABCDEFG",\P1,\P2)
+!      .ENDM
+!
+
+!      RESERVE_STR     2,2
+!      .SDATA  .SUBSTR("ABCDEFG",2,2)
+       .byte   67,68
+!      RESERVE_STR     ,3
+!      .SDATA  .SUBSTR("ABCDEFG",0,3)
+       .byte   65,66,67
+!
+
+!
+
+!      .MACRO FIND_STR P1
+!      .DATA.W .INSTR("ABCDEFG","\P1", 0)
+!      .ENDM
+!
+
+!      FIND_STR        CDE
+!      .DATA.W .INSTR("ABCDEFG","CDE", 0)
+       .short  2
+!      FIND_STR        H
+!      .DATA.W .INSTR("ABCDEFG","H", 0)
+       .short  -1
+!
+
+!      .MACRO  RESERVE_LENGTH P1
+!      .ALIGN  4
+!      .SRES   .LEN("\P1")
+!      .ENDM
+!
+
+!      RESERVE_LENGTH  ABCDEF
+!      .ALIGN  4
+       .align  4
+!      .SRES   .LEN("ABCDEF")
+       .space  24
+!      RESERVE_LENGTH  ABC
+!      .ALIGN  4
+       .align  4
+!      .SRES   .LEN("ABC")
+       .space  12
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/t1.asm b/gas/testsuite/gasp/t1.asm
new file mode 100644 (file)
index 0000000..df54c6c
--- /dev/null
@@ -0,0 +1,3 @@
+
+       test for eof in middle of line
+       .END
diff --git a/gas/testsuite/gasp/t1.is b/gas/testsuite/gasp/t1.is
new file mode 100644 (file)
index 0000000..63ba4af
--- /dev/null
@@ -0,0 +1,6 @@
+******** t1.amp
+!
+
+!      test for eof in middle of line
+       test for eof in middle of line
+!      .END
diff --git a/gas/testsuite/gasp/t1.was b/gas/testsuite/gasp/t1.was
new file mode 100644 (file)
index 0000000..63ba4af
--- /dev/null
@@ -0,0 +1,6 @@
+******** t1.amp
+!
+
+!      test for eof in middle of line
+       test for eof in middle of line
+!      .END
diff --git a/gas/testsuite/gasp/t2.asm b/gas/testsuite/gasp/t2.asm
new file mode 100644 (file)
index 0000000..38a351a
--- /dev/null
@@ -0,0 +1,8 @@
+
+
+       test
++ continued
++ lines
+
+
+       .END
diff --git a/gas/testsuite/gasp/t2.is b/gas/testsuite/gasp/t2.is
new file mode 100644 (file)
index 0000000..3df17e0
--- /dev/null
@@ -0,0 +1,14 @@
+******** t2.amp
+!
+
+!
+
+!      test
+!+continued
+!+lines
+       testcontinuedlines
+!
+
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/t2.was b/gas/testsuite/gasp/t2.was
new file mode 100644 (file)
index 0000000..3df17e0
--- /dev/null
@@ -0,0 +1,14 @@
+******** t2.amp
+!
+
+!
+
+!      test
+!+continued
+!+lines
+       testcontinuedlines
+!
+
+!
+
+!      .END
diff --git a/gas/testsuite/gasp/t3.asm b/gas/testsuite/gasp/t3.asm
new file mode 100644 (file)
index 0000000..27702db
--- /dev/null
@@ -0,0 +1,12 @@
+
+       test base convertions
+
+       B'1001000
+       Q'210
+       D'136
+       H'88
+
+       FOOB'1001000BAR
+       FOOQ'210BAR
+       FOOD'136BAR
+       FOOH'88BAR
diff --git a/gas/testsuite/gasp/t3.is b/gas/testsuite/gasp/t3.is
new file mode 100644 (file)
index 0000000..a16b5e8
--- /dev/null
@@ -0,0 +1,26 @@
+******** t3.amp
+!
+
+!      test base convertions
+       test base convertions
+!
+
+!      B'1001000
+       72
+!      Q'210
+       136
+!      D'136
+       136
+!      H'88
+       136
+!
+
+!      FOOB'1001000BAR
+       FOOB'1001000BAR
+!      FOOQ'210BAR
+       FOOQ'210BAR
+!      FOOD'136BAR
+       FOOD'136BAR
+!      FOOH'88BAR
+       FOOH'88BAR
+!.END missing from end of file.
diff --git a/gas/testsuite/gasp/t3.was b/gas/testsuite/gasp/t3.was
new file mode 100644 (file)
index 0000000..a16b5e8
--- /dev/null
@@ -0,0 +1,26 @@
+******** t3.amp
+!
+
+!      test base convertions
+       test base convertions
+!
+
+!      B'1001000
+       72
+!      Q'210
+       136
+!      D'136
+       136
+!      H'88
+       136
+!
+
+!      FOOB'1001000BAR
+       FOOB'1001000BAR
+!      FOOQ'210BAR
+       FOOQ'210BAR
+!      FOOD'136BAR
+       FOOD'136BAR
+!      FOOH'88BAR
+       FOOH'88BAR
+!.END missing from end of file.
diff --git a/gas/testsuite/gasp/while.asm b/gas/testsuite/gasp/while.asm
new file mode 100644 (file)
index 0000000..09143cc
--- /dev/null
@@ -0,0 +1,18 @@
+       donkey
+bar    .ASSIGNA        0
+       .AWHILE \&bar LT 5      
+       HI BAR IS \&bar
+foo    .ASSIGNA        0
+       .AWHILE \&foo LT 2
+       HI BEFORE
+       .AREPEAT        2
+       HI MEDIUM       \&foo \&bar
+       .AENDR
+       HI AFTER
+foo    .ASSIGNA        \&foo + 1       
+       .AENDW
+bar    .ASSIGNA        \&bar + 1       
+       AND ITS NOW \&bar
+       .AENDW
+       .END
+
diff --git a/gas/testsuite/gasp/while.is b/gas/testsuite/gasp/while.is
new file mode 100644 (file)
index 0000000..d33fbc4
--- /dev/null
@@ -0,0 +1,389 @@
+******** while.amp
+!      donkey
+       donkey
+!bar   .ASSIGNA        0
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 0
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 0
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 0
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 0
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 0
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 1
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 1
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 1
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 1
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 1
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 1
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 2
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 2
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 2
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 2
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 2
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 2
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 3
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 3
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 3
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 3
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 3
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 3
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 4
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 4
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 4
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 4
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 4
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 4
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 5
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      .END
diff --git a/gas/testsuite/gasp/while.was b/gas/testsuite/gasp/while.was
new file mode 100644 (file)
index 0000000..d33fbc4
--- /dev/null
@@ -0,0 +1,389 @@
+******** while.amp
+!      donkey
+       donkey
+!bar   .ASSIGNA        0
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 0
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 0
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 0
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 0
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 0
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 1
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 1
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 1
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 1
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 1
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 1
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 2
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 2
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 2
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 2
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 2
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 2
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 3
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 3
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 3
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 3
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 3
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 3
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 4
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      HI BAR IS \&bar
+       HI BAR IS 4
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 4
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       0 4
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!      HI BEFORE
+       HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 4
+!      .AREPEAT        1
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI MEDIUM       \&foo \&bar
+       HI MEDIUM       1 4
+!      HI AFTER
+       HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+       AND ITS NOW 5
+!      .AWHILE \&bar LT 5      
+!      HI BAR IS \&bar
+!foo   .ASSIGNA        0
+!      .AWHILE \&foo LT 2
+!      HI BEFORE
+!      .AREPEAT        2
+!      HI MEDIUM       \&foo \&bar
+!      .AENDR
+!      HI AFTER
+!foo   .ASSIGNA        \&foo + 1       
+!      .AENDW
+!bar   .ASSIGNA        \&bar + 1       
+!      AND ITS NOW \&bar
+!      .AENDW
+!      .END