aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite/gasp
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>1999-05-03 07:29:11 +0000
committerRichard Henderson <rth@redhat.com>1999-05-03 07:29:11 +0000
commit252b5132c753830d5fd56823373aed85f2a0db63 (patch)
tree1af963bfd8d3e55167b81def4207f175eaff3a56 /gas/testsuite/gasp
downloadgdb-252b5132c753830d5fd56823373aed85f2a0db63.zip
gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.gz
gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.bz2
19990502 sourceware importbinu_ss_19990502
Diffstat (limited to 'gas/testsuite/gasp')
-rw-r--r--gas/testsuite/gasp/INC1.H3
-rw-r--r--gas/testsuite/gasp/INC2.H2
-rw-r--r--gas/testsuite/gasp/assign.asm13
-rw-r--r--gas/testsuite/gasp/assign.err1
-rw-r--r--gas/testsuite/gasp/assign.out22
-rw-r--r--gas/testsuite/gasp/condass.asm129
-rw-r--r--gas/testsuite/gasp/condass.err0
-rw-r--r--gas/testsuite/gasp/condass.out155
-rw-r--r--gas/testsuite/gasp/crash.asm22
-rw-r--r--gas/testsuite/gasp/crash.err1
-rw-r--r--gas/testsuite/gasp/crash.out3059
-rw-r--r--gas/testsuite/gasp/crash1.asm13
-rw-r--r--gas/testsuite/gasp/crash1.err0
-rw-r--r--gas/testsuite/gasp/crash1.out24
-rw-r--r--gas/testsuite/gasp/crash2.asm41
-rw-r--r--gas/testsuite/gasp/crash2.err0
-rw-r--r--gas/testsuite/gasp/crash2.out69
-rw-r--r--gas/testsuite/gasp/data.asm23
-rw-r--r--gas/testsuite/gasp/data.err0
-rw-r--r--gas/testsuite/gasp/data.out45
-rw-r--r--gas/testsuite/gasp/exp.asm80
-rw-r--r--gas/testsuite/gasp/exp.err7
-rw-r--r--gas/testsuite/gasp/exp.out124
-rw-r--r--gas/testsuite/gasp/gasp.exp40
-rw-r--r--gas/testsuite/gasp/include.asm4
-rw-r--r--gas/testsuite/gasp/include.err0
-rw-r--r--gas/testsuite/gasp/include.out15
-rw-r--r--gas/testsuite/gasp/listing.asm15
-rw-r--r--gas/testsuite/gasp/listing.err0
-rw-r--r--gas/testsuite/gasp/listing.out28
-rw-r--r--gas/testsuite/gasp/macro.asm102
-rw-r--r--gas/testsuite/gasp/macro.err0
-rw-r--r--gas/testsuite/gasp/macro.out382
-rw-r--r--gas/testsuite/gasp/mdouble.asm47
-rw-r--r--gas/testsuite/gasp/mdouble.err0
-rw-r--r--gas/testsuite/gasp/mdouble.out68
-rw-r--r--gas/testsuite/gasp/mri/embed.asm5
-rw-r--r--gas/testsuite/gasp/mri/embed.out9
-rw-r--r--gas/testsuite/gasp/mri/exists.asm10
-rw-r--r--gas/testsuite/gasp/mri/exists.out24
-rw-r--r--gas/testsuite/gasp/mri/irp.asm4
-rw-r--r--gas/testsuite/gasp/mri/irp.out8
-rw-r--r--gas/testsuite/gasp/mri/irpc.asm3
-rw-r--r--gas/testsuite/gasp/mri/irpc.out8
-rw-r--r--gas/testsuite/gasp/mri/macro.asm8
-rw-r--r--gas/testsuite/gasp/mri/macro.out18
-rw-r--r--gas/testsuite/gasp/mri/narg.asm9
-rw-r--r--gas/testsuite/gasp/mri/narg.out38
-rw-r--r--gas/testsuite/gasp/mri/rept.asm3
-rw-r--r--gas/testsuite/gasp/mri/rept.out16
-rw-r--r--gas/testsuite/gasp/pl1.asm20
-rw-r--r--gas/testsuite/gasp/pl1.err1
-rw-r--r--gas/testsuite/gasp/pl1.out49
-rw-r--r--gas/testsuite/gasp/pl2.asm28
-rw-r--r--gas/testsuite/gasp/pl2.err0
-rw-r--r--gas/testsuite/gasp/pl2.out51
-rw-r--r--gas/testsuite/gasp/pl3.asm30
-rw-r--r--gas/testsuite/gasp/pl3.err0
-rw-r--r--gas/testsuite/gasp/pl3.out86
-rw-r--r--gas/testsuite/gasp/pl4.asm10
-rw-r--r--gas/testsuite/gasp/pl4.err0
-rw-r--r--gas/testsuite/gasp/pl4.out16
-rw-r--r--gas/testsuite/gasp/pl5.asm15
-rw-r--r--gas/testsuite/gasp/pl5.err0
-rw-r--r--gas/testsuite/gasp/pl5.out32
-rw-r--r--gas/testsuite/gasp/pl6.asm21
-rw-r--r--gas/testsuite/gasp/pl6.err0
-rw-r--r--gas/testsuite/gasp/pl6.out54
-rw-r--r--gas/testsuite/gasp/pl7.asm12
-rw-r--r--gas/testsuite/gasp/pl7.err1
-rw-r--r--gas/testsuite/gasp/pl7.out26
-rw-r--r--gas/testsuite/gasp/pl8.asm18
-rw-r--r--gas/testsuite/gasp/pl8.err0
-rw-r--r--gas/testsuite/gasp/pl8.out33
-rw-r--r--gas/testsuite/gasp/pr7583.asm3
-rw-r--r--gas/testsuite/gasp/pr7583.err0
-rw-r--r--gas/testsuite/gasp/pr7583.out5
-rw-r--r--gas/testsuite/gasp/reg.asm9
-rw-r--r--gas/testsuite/gasp/reg.err0
-rw-r--r--gas/testsuite/gasp/reg.out15
-rw-r--r--gas/testsuite/gasp/rep.asm13
-rw-r--r--gas/testsuite/gasp/rep.err0
-rw-r--r--gas/testsuite/gasp/rep.out391
-rw-r--r--gas/testsuite/gasp/repeat.asm14
-rw-r--r--gas/testsuite/gasp/repeat.err0
-rw-r--r--gas/testsuite/gasp/repeat.out211
-rw-r--r--gas/testsuite/gasp/reperr.asm2
-rw-r--r--gas/testsuite/gasp/reperr.err1
-rw-r--r--gas/testsuite/gasp/reperr.out5
-rw-r--r--gas/testsuite/gasp/reperr1.asm3
-rw-r--r--gas/testsuite/gasp/reperr1.err1
-rw-r--r--gas/testsuite/gasp/reperr1.out5
-rw-r--r--gas/testsuite/gasp/reperr2.asm6
-rw-r--r--gas/testsuite/gasp/reperr2.err1
-rw-r--r--gas/testsuite/gasp/reperr2.out14
-rw-r--r--gas/testsuite/gasp/reperr3.asm21
-rw-r--r--gas/testsuite/gasp/reperr3.err6
-rw-r--r--gas/testsuite/gasp/reperr3.out2035
-rw-r--r--gas/testsuite/gasp/sdata.asm24
-rw-r--r--gas/testsuite/gasp/sdata.err3
-rw-r--r--gas/testsuite/gasp/sdata.out59
-rw-r--r--gas/testsuite/gasp/sfunc.asm26
-rw-r--r--gas/testsuite/gasp/sfunc.err0
-rw-r--r--gas/testsuite/gasp/sfunc.out49
-rw-r--r--gas/testsuite/gasp/t1.asm3
-rw-r--r--gas/testsuite/gasp/t1.err0
-rw-r--r--gas/testsuite/gasp/t1.out5
-rw-r--r--gas/testsuite/gasp/t2.asm8
-rw-r--r--gas/testsuite/gasp/t2.err0
-rw-r--r--gas/testsuite/gasp/t2.out13
-rw-r--r--gas/testsuite/gasp/t3.asm12
-rw-r--r--gas/testsuite/gasp/t3.err1
-rw-r--r--gas/testsuite/gasp/t3.out25
-rw-r--r--gas/testsuite/gasp/while.asm18
-rw-r--r--gas/testsuite/gasp/while.err0
-rw-r--r--gas/testsuite/gasp/while.out388
116 files changed, 8595 insertions, 0 deletions
diff --git a/gas/testsuite/gasp/INC1.H b/gas/testsuite/gasp/INC1.H
new file mode 100644
index 0000000..0d37323
--- /dev/null
+++ b/gas/testsuite/gasp/INC1.H
@@ -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
index 0000000..083c3dc
--- /dev/null
+++ b/gas/testsuite/gasp/INC2.H
@@ -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
index 0000000..7f66718
--- /dev/null
+++ b/gas/testsuite/gasp/assign.asm
@@ -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.err b/gas/testsuite/gasp/assign.err
new file mode 100644
index 0000000..fe3733f
--- /dev/null
+++ b/gas/testsuite/gasp/assign.err
@@ -0,0 +1 @@
+assign.asm:8 Can't find preprocessor variable bar.
diff --git a/gas/testsuite/gasp/assign.out b/gas/testsuite/gasp/assign.out
new file mode 100644
index 0000000..85509ae
--- /dev/null
+++ b/gas/testsuite/gasp/assign.out
@@ -0,0 +1,22 @@
+!
+
+!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
diff --git a/gas/testsuite/gasp/condass.asm b/gas/testsuite/gasp/condass.asm
new file mode 100644
index 0000000..2bd9f07
--- /dev/null
+++ b/gas/testsuite/gasp/condass.asm
@@ -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.err b/gas/testsuite/gasp/condass.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/condass.err
diff --git a/gas/testsuite/gasp/condass.out b/gas/testsuite/gasp/condass.out
new file mode 100644
index 0000000..115cef5
--- /dev/null
+++ b/gas/testsuite/gasp/condass.out
@@ -0,0 +1,155 @@
+! .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
+ 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
index 0000000..a710cc5
--- /dev/null
+++ b/gas/testsuite/gasp/crash.asm
@@ -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
+
+
+
+
diff --git a/gas/testsuite/gasp/crash.err b/gas/testsuite/gasp/crash.err
new file mode 100644
index 0000000..1008802
--- /dev/null
+++ b/gas/testsuite/gasp/crash.err
@@ -0,0 +1 @@
+crash.asm:18 Unreasonable expansion (-u turns off check).
diff --git a/gas/testsuite/gasp/crash.out b/gas/testsuite/gasp/crash.out
new file mode 100644
index 0000000..6b948a3
--- /dev/null
+++ b/gas/testsuite/gasp/crash.out
@@ -0,0 +1,3059 @@
+!
+
+! 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
diff --git a/gas/testsuite/gasp/crash1.asm b/gas/testsuite/gasp/crash1.asm
new file mode 100644
index 0000000..d2b6b30
--- /dev/null
+++ b/gas/testsuite/gasp/crash1.asm
@@ -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.err b/gas/testsuite/gasp/crash1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/crash1.err
diff --git a/gas/testsuite/gasp/crash1.out b/gas/testsuite/gasp/crash1.out
new file mode 100644
index 0000000..725d078
--- /dev/null
+++ b/gas/testsuite/gasp/crash1.out
@@ -0,0 +1,24 @@
+!
+
+!
+
+! .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
diff --git a/gas/testsuite/gasp/crash2.asm b/gas/testsuite/gasp/crash2.asm
new file mode 100644
index 0000000..288a003
--- /dev/null
+++ b/gas/testsuite/gasp/crash2.asm
@@ -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/crash2.err b/gas/testsuite/gasp/crash2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/crash2.err
diff --git a/gas/testsuite/gasp/crash2.out b/gas/testsuite/gasp/crash2.out
new file mode 100644
index 0000000..0d1a2f7
--- /dev/null
+++ b/gas/testsuite/gasp/crash2.out
@@ -0,0 +1,69 @@
+!
+
+!foo: .ASSIGNA 1
+! \&foo+1
+ 1+1
+! \&foo+1
+ 1+1
+!foo: .ASSIGNC "foo"
+! \&foo+1
+ foo+1
+! \&foo+1
+ foo+1
+!
+
+!foo: .ASSIGNA 1
+! \&foo+1
+ 1+1
+! \&foo+1
+ 1+1
+!foo: .ASSIGNC "foo"
+! \&foo+1
+ foo+1
+! \&foo+1
+ foo+1
+!
+
+!foo: .ASSIGNA 1
+! \&foo+1
+ 1+1
+! \&foo+1
+ 1+1
+!foo: .ASSIGNC "foo"
+! \&foo+1
+ foo+1
+! \&foo+1
+ foo+1
+!
+
+!foo: .ASSIGNA 1
+! \&foo+1
+ 1+1
+! \&foo+1
+ 1+1
+!foo: .ASSIGNC "foo"
+! \&foo+1
+ foo+1
+! \&foo+1
+ foo+1
+!
+
+!foo: .ASSIGNA 1
+! \&foo+1
+ 1+1
+! \&foo+1
+ 1+1
+!foo: .ASSIGNC "foo"
+! \&foo+1
+ foo+1
+! \&foo+1
+ foo+1
+! foo
+ foo
+! foo foo
+ foo foo
+! 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
index 0000000..ba6b0a0
--- /dev/null
+++ b/gas/testsuite/gasp/data.asm
@@ -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.err b/gas/testsuite/gasp/data.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/data.err
diff --git a/gas/testsuite/gasp/data.out b/gas/testsuite/gasp/data.out
new file mode 100644
index 0000000..e96e1e5
--- /dev/null
+++ b/gas/testsuite/gasp/data.out
@@ -0,0 +1,45 @@
+!
+
+!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
index 0000000..041608a
--- /dev/null
+++ b/gas/testsuite/gasp/exp.asm
@@ -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.err b/gas/testsuite/gasp/exp.err
new file mode 100644
index 0000000..f41fd52
--- /dev/null
+++ b/gas/testsuite/gasp/exp.err
@@ -0,0 +1,7 @@
+exp.asm:56 can't add two relocatable expressions
+exp.asm:57 the * operator cannot take non-absolute arguments.
+exp.asm:58 the / operator cannot take non-absolute arguments.
+exp.asm:59 the | operator cannot take non-absolute arguments.
+exp.asm:60 the & operator cannot take non-absolute arguments.
+exp.asm:61 the ~ operator cannot take non-absolute arguments.
+exp.asm:62 the * operator cannot take non-absolute arguments.
diff --git a/gas/testsuite/gasp/exp.out b/gas/testsuite/gasp/exp.out
new file mode 100644
index 0000000..cecb9a8
--- /dev/null
+++ b/gas/testsuite/gasp/exp.out
@@ -0,0 +1,124 @@
+!
+
+!; 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
diff --git a/gas/testsuite/gasp/gasp.exp b/gas/testsuite/gasp/gasp.exp
new file mode 100644
index 0000000..2a72a6d
--- /dev/null
+++ b/gas/testsuite/gasp/gasp.exp
@@ -0,0 +1,40 @@
+# Test gasp.
+
+proc gasp_test { filename testname opt } {
+ global GASP
+ global srcdir
+ global host_triplet
+
+ send_log "$srcdir/lib/run $GASP -I$srcdir/gasp -s $opt $filename.asm -o gasp.out\n"
+ catch "exec $srcdir/lib/run $GASP -I$srcdir/gasp -s $opt $filename.asm -o gasp.out" errs
+ catch "exec diff gasp.out $filename.out" diffs
+ set diffs [prune_warnings $diffs]
+ if ![string match "" $diffs] {
+ send_log "$diffs\n"
+ verbose $diffs
+ fail $testname
+ return 0
+ } else {
+ pass $testname
+ }
+
+}
+
+foreach src [ lsort [ glob $srcdir/gasp/*.asm ] ] {
+ regsub -all ".asm" $src "" t
+ regsub "^.*/(\[^/\]*)$" $t "gasp \\1" testname
+ gasp_test $t $testname ""
+}
+
+foreach src [ lsort [ glob $srcdir/gasp/mri/*.asm ] ] {
+ regsub -all ".asm" $src "" t
+ regsub "^.*/(\[^/\]*)$" $t "gasp MRI \\1" testname
+ gasp_test $t $testname "-M"
+}
+
+# FIXME: this is here cause of a bug in DejaGnu 1.1.1. When it is no longer
+# in use, then this can be removed.
+if [info exists errorInfo] then {
+ unset errorInfo
+}
+
diff --git a/gas/testsuite/gasp/include.asm b/gas/testsuite/gasp/include.asm
new file mode 100644
index 0000000..69ed1dd
--- /dev/null
+++ b/gas/testsuite/gasp/include.asm
@@ -0,0 +1,4 @@
+ HI
+ .INCLUDE "INC1.H"
+ THERE
+ .END
diff --git a/gas/testsuite/gasp/include.err b/gas/testsuite/gasp/include.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/include.err
diff --git a/gas/testsuite/gasp/include.out b/gas/testsuite/gasp/include.out
new file mode 100644
index 0000000..d77a0df
--- /dev/null
+++ b/gas/testsuite/gasp/include.out
@@ -0,0 +1,15 @@
+! 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
index 0000000..2f14cfc
--- /dev/null
+++ b/gas/testsuite/gasp/listing.asm
@@ -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
diff --git a/gas/testsuite/gasp/listing.err b/gas/testsuite/gasp/listing.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/listing.err
diff --git a/gas/testsuite/gasp/listing.out b/gas/testsuite/gasp/listing.out
new file mode 100644
index 0000000..585bda2
--- /dev/null
+++ b/gas/testsuite/gasp/listing.out
@@ -0,0 +1,28 @@
+!
+
+!
+
+! .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
diff --git a/gas/testsuite/gasp/macro.asm b/gas/testsuite/gasp/macro.asm
new file mode 100644
index 0000000..dfb16bf
--- /dev/null
+++ b/gas/testsuite/gasp/macro.asm
@@ -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.err b/gas/testsuite/gasp/macro.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/macro.err
diff --git a/gas/testsuite/gasp/macro.out b/gas/testsuite/gasp/macro.out
new file mode 100644
index 0000000..0740732
--- /dev/null
+++ b/gas/testsuite/gasp/macro.out
@@ -0,0 +1,382 @@
+! .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 \; this one will get dropped
+ foo \; this one will get dropped
+! 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
+! MOV.L #str00023,R1
+ MOV.L #str00023,R1
+! BRA end_str00023
+ BRA end_str00023
+! NOP
+ NOP
+!str00023 .SDATA "donkey"
+str00023: .byte 100,111,110,107,101,121
+! .ALIGN 2
+ .align 2
+!end_str00023
+end_str00023:
+! .END
diff --git a/gas/testsuite/gasp/mdouble.asm b/gas/testsuite/gasp/mdouble.asm
new file mode 100644
index 0000000..dbb77b4
--- /dev/null
+++ b/gas/testsuite/gasp/mdouble.asm
@@ -0,0 +1,47 @@
+
+ .MACRO HI
+ A
+ \! this is hidden
+ B
+ ! this is not
+ C
+ .ENDM
+ Hello
+ HI
+ Emily
+
+
+ H'0f
+ 200+H'0F
+
+XX .ASSIGNA Q'100
+! Definition:
+ .MACRO GET X=100,Y,Z
+ MOV #\X+H'0F,@B
+ \Y
+\Z JMP @MAIN
+L\@ ADD #1,@HL
+ MOV #0,@C \! Clear C
+ ADD #2,@C
+ ADD #\&XX, @C
+ .ENDM
+
+ NOP
+
+!Call:
+ GET 200,"ADD #1,@B", ENTRY
+ .END
+
+ ; Definition:
+
+
+ NOP
+
+ ;Call:
+ MOV #200+0F,@B
+ ADD #1,@B
+ENTRY: JMP @MAIN
+L00000: ADD #1,@HL
+ MOV #0,@C
+ ADD #2,@C
+ ADD #0, @C
diff --git a/gas/testsuite/gasp/mdouble.err b/gas/testsuite/gasp/mdouble.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/mdouble.err
diff --git a/gas/testsuite/gasp/mdouble.out b/gas/testsuite/gasp/mdouble.out
new file mode 100644
index 0000000..9d9ad62
--- /dev/null
+++ b/gas/testsuite/gasp/mdouble.out
@@ -0,0 +1,68 @@
+!
+
+! .MACRO HI
+! A
+! \! this is hidden
+! B
+! ! this is not
+! C
+! .ENDM
+! Hello
+ Hello
+! HI
+! A
+ A
+!
+! B
+ B
+! ! this is not
+ ! this is not
+! C
+ C
+! Emily
+ Emily
+!
+!
+
+! H'0f
+ 15
+! 200+H'0F
+ 200+15
+!
+
+!XX .ASSIGNA Q'100
+!! Definition:
+ ! Definition:
+! .MACRO GET X=100,Y,Z
+! MOV #\X+H'0F,@B
+! \Y
+!\Z JMP @MAIN
+!L\@ ADD #1,@HL
+! MOV #0,@C \! Clear C
+! ADD #2,@C
+! ADD #\&XX, @C
+! .ENDM
+!
+
+! NOP
+ NOP
+!
+
+!!Call:
+ !Call:
+! GET 200,"ADD #1,@B", ENTRY
+! MOV #200+H'0F,@B
+ MOV #200+15,@B
+! ADD #1,@B
+ ADD #1,@B
+!ENTRY JMP @MAIN
+ENTRY: JMP @MAIN
+!L00001 ADD #1,@HL
+L00001: ADD #1,@HL
+! MOV #0,@C
+ MOV #0,@C
+! ADD #2,@C
+ ADD #2,@C
+! ADD #\&XX, @C
+ ADD #64, @C
+! .END
diff --git a/gas/testsuite/gasp/mri/embed.asm b/gas/testsuite/gasp/mri/embed.asm
new file mode 100644
index 0000000..f1b8f78
--- /dev/null
+++ b/gas/testsuite/gasp/mri/embed.asm
@@ -0,0 +1,5 @@
+embed macro label
+addr&&label dc.l label
+ endm
+
+ embed foo
diff --git a/gas/testsuite/gasp/mri/embed.out b/gas/testsuite/gasp/mri/embed.out
new file mode 100644
index 0000000..92d925f
--- /dev/null
+++ b/gas/testsuite/gasp/mri/embed.out
@@ -0,0 +1,9 @@
+;embed macro label
+;addr&&label dc.l label
+; endm
+;
+
+; embed foo
+;addrfoo dc.l foo
+addrfoo: dc.l foo
+; \ No newline at end of file
diff --git a/gas/testsuite/gasp/mri/exists.asm b/gas/testsuite/gasp/mri/exists.asm
new file mode 100644
index 0000000..87220c6
--- /dev/null
+++ b/gas/testsuite/gasp/mri/exists.asm
@@ -0,0 +1,10 @@
+exists macro arg1,arg2
+ ifne ==arg2
+ move arg1,arg2
+ elsec
+ push arg1
+ endc
+ endm
+
+ exists foo,bar
+ exists foo
diff --git a/gas/testsuite/gasp/mri/exists.out b/gas/testsuite/gasp/mri/exists.out
new file mode 100644
index 0000000..e75337d
--- /dev/null
+++ b/gas/testsuite/gasp/mri/exists.out
@@ -0,0 +1,24 @@
+;exists macro arg1,arg2
+; ifne ==arg2
+; move arg1,arg2
+; elsec
+; push arg1
+; endc
+; endm
+;
+
+; exists foo,bar
+; ifne -1
+; move foo,bar
+ move foo,bar
+; elsec
+; push foo
+; endc
+; exists foo
+; ifne 0
+; move foo,
+; elsec
+; push foo
+ push foo
+; endc
+; \ No newline at end of file
diff --git a/gas/testsuite/gasp/mri/irp.asm b/gas/testsuite/gasp/mri/irp.asm
new file mode 100644
index 0000000..cda21d9
--- /dev/null
+++ b/gas/testsuite/gasp/mri/irp.asm
@@ -0,0 +1,4 @@
+ irp param,arg1,arg2,arg3
+ dc.l param
+ endr
+ end quit
diff --git a/gas/testsuite/gasp/mri/irp.out b/gas/testsuite/gasp/mri/irp.out
new file mode 100644
index 0000000..9105620
--- /dev/null
+++ b/gas/testsuite/gasp/mri/irp.out
@@ -0,0 +1,8 @@
+; irp param,arg1,arg2,arg3
+; dc.l param
+; endr
+ dc.l arg1
+ dc.l arg2
+ dc.l arg3
+; end quit
+ end quit
diff --git a/gas/testsuite/gasp/mri/irpc.asm b/gas/testsuite/gasp/mri/irpc.asm
new file mode 100644
index 0000000..a51d687
--- /dev/null
+++ b/gas/testsuite/gasp/mri/irpc.asm
@@ -0,0 +1,3 @@
+ irpc dummy,1234
+ dc.l dummy
+ endr
diff --git a/gas/testsuite/gasp/mri/irpc.out b/gas/testsuite/gasp/mri/irpc.out
new file mode 100644
index 0000000..59f8824
--- /dev/null
+++ b/gas/testsuite/gasp/mri/irpc.out
@@ -0,0 +1,8 @@
+; irpc dummy,1234
+; dc.l dummy
+; endr
+ dc.l 1
+ dc.l 2
+ dc.l 3
+ dc.l 4
+; \ No newline at end of file
diff --git a/gas/testsuite/gasp/mri/macro.asm b/gas/testsuite/gasp/mri/macro.asm
new file mode 100644
index 0000000..b711bd0
--- /dev/null
+++ b/gas/testsuite/gasp/mri/macro.asm
@@ -0,0 +1,8 @@
+get macro arg1,arg2,arg3
+ dc.l arg1
+ arg2
+arg3 dc.l \4
+ move.\0 d0,d1
+ endm
+
+ get.b 1,<dc.l 2>,label,four
diff --git a/gas/testsuite/gasp/mri/macro.out b/gas/testsuite/gasp/mri/macro.out
new file mode 100644
index 0000000..86eeb94
--- /dev/null
+++ b/gas/testsuite/gasp/mri/macro.out
@@ -0,0 +1,18 @@
+;get macro arg1,arg2,arg3
+; dc.l arg1
+; arg2
+;arg3 dc.l \4
+; move.\0 d0,d1
+; endm
+;
+
+; get.b 1,<dc.l 2>,label,four
+; dc.l 1
+ dc.l 1
+; dc.l 2
+ dc.l 2
+;label dc.l four
+label: dc.l four
+; move.b d0,d1
+ move.b d0,d1
+; \ No newline at end of file
diff --git a/gas/testsuite/gasp/mri/narg.asm b/gas/testsuite/gasp/mri/narg.asm
new file mode 100644
index 0000000..114c940
--- /dev/null
+++ b/gas/testsuite/gasp/mri/narg.asm
@@ -0,0 +1,9 @@
+loop macro arg1,arg2,arg3
+ dc.l NARG
+ ifne NARG
+ dc.l arg1
+ loop arg2,arg3
+ endc
+ endm
+
+ loop 1,2,3
diff --git a/gas/testsuite/gasp/mri/narg.out b/gas/testsuite/gasp/mri/narg.out
new file mode 100644
index 0000000..723ebc1
--- /dev/null
+++ b/gas/testsuite/gasp/mri/narg.out
@@ -0,0 +1,38 @@
+;loop macro arg1,arg2,arg3
+; dc.l NARG
+; ifne NARG
+; dc.l arg1
+; loop arg2,arg3
+; endc
+; endm
+;
+
+; loop 1,2,3
+; dc.l 3
+ dc.l 3
+; ifne 3
+; dc.l 1
+ dc.l 1
+; loop 2,3
+; dc.l 2
+ dc.l 2
+; ifne 2
+; dc.l 2
+ dc.l 2
+; loop 3,
+; dc.l 1
+ dc.l 1
+; ifne 1
+; dc.l 3
+ dc.l 3
+; loop ,
+; dc.l 0
+ dc.l 0
+; ifne 0
+; dc.l
+; loop ,
+; endc
+; endc
+; endc
+; endc
+; \ No newline at end of file
diff --git a/gas/testsuite/gasp/mri/rept.asm b/gas/testsuite/gasp/mri/rept.asm
new file mode 100644
index 0000000..d563bb2
--- /dev/null
+++ b/gas/testsuite/gasp/mri/rept.asm
@@ -0,0 +1,3 @@
+ rept 3
+ dc.l 1
+ endr
diff --git a/gas/testsuite/gasp/mri/rept.out b/gas/testsuite/gasp/mri/rept.out
new file mode 100644
index 0000000..da4ed6b
--- /dev/null
+++ b/gas/testsuite/gasp/mri/rept.out
@@ -0,0 +1,16 @@
+; rept 3
+; dc.l 1
+; endr
+; dc.l 1
+ dc.l 1
+; REPT 2
+; dc.l 1
+; ENDR
+; dc.l 1
+ dc.l 1
+; REPT 1
+; dc.l 1
+; ENDR
+; dc.l 1
+ dc.l 1
+; \ No newline at end of file
diff --git a/gas/testsuite/gasp/pl1.asm b/gas/testsuite/gasp/pl1.asm
new file mode 100644
index 0000000..f38bfde
--- /dev/null
+++ b/gas/testsuite/gasp/pl1.asm
@@ -0,0 +1,20 @@
+
+ .ALTERNATE
+
+alloc MACRO val1,val2
+ DB val1
+ DB val2
+ ENDM
+
+ alloc "that's" 'show biz'
+ alloc 0,1
+ alloc 0 1
+ alloc 0 1
+ alloc ,1
+
+
+
+
+
+
+
diff --git a/gas/testsuite/gasp/pl1.err b/gas/testsuite/gasp/pl1.err
new file mode 100644
index 0000000..a1e3318
--- /dev/null
+++ b/gas/testsuite/gasp/pl1.err
@@ -0,0 +1 @@
+END missing from end of file.
diff --git a/gas/testsuite/gasp/pl1.out b/gas/testsuite/gasp/pl1.out
new file mode 100644
index 0000000..8b80f12
--- /dev/null
+++ b/gas/testsuite/gasp/pl1.out
@@ -0,0 +1,49 @@
+!
+! .ALTERNATE
+!
+
+!alloc MACRO val1,val2
+! DB val1
+! DB val2
+! ENDM
+!
+
+! alloc "that's" 'show biz'
+! DB "that's"
+ .byte 116,104,97,116,39,115
+! DB "show biz"
+ .byte 115,104,111,119,32,98,105,122
+! alloc 0,1
+! DB 0
+ .byte 0
+! DB 1
+ .byte 1
+! alloc 0 1
+! DB 0
+ .byte 0
+! DB 1
+ .byte 1
+! alloc 0 1
+! DB 0
+ .byte 0
+! DB 1
+ .byte 1
+! alloc ,1
+! DB
+ .byte
+! DB 1
+ .byte 1
+!
+
+!
+
+!
+!
+
+!
+
+!
+
+!
+
+! \ No newline at end of file
diff --git a/gas/testsuite/gasp/pl2.asm b/gas/testsuite/gasp/pl2.asm
new file mode 100644
index 0000000..2971137
--- /dev/null
+++ b/gas/testsuite/gasp/pl2.asm
@@ -0,0 +1,28 @@
+
+
+ .ALTERNATE
+
+ ! ok
+ !! also ok
+
+foo MACRO
+ ! you can see me
+ !! but not me
+ ! you can see me
+ !! but not me
+ but this "SHOULD !!BE OK"
+ ENDM
+
+ foo
+
+
+define MACRO val1,val2
+ DB val1 ! this comment will show up
+ DB val2 !! this on won't
+ ENDM
+
+ define 0,1
+
+
+ END
+
diff --git a/gas/testsuite/gasp/pl2.err b/gas/testsuite/gasp/pl2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/pl2.err
diff --git a/gas/testsuite/gasp/pl2.out b/gas/testsuite/gasp/pl2.out
new file mode 100644
index 0000000..cca6fa3
--- /dev/null
+++ b/gas/testsuite/gasp/pl2.out
@@ -0,0 +1,51 @@
+!
+
+!
+
+! .ALTERNATE
+!
+
+! ! ok
+ ! ok
+! !! also ok
+ !! also ok
+!
+
+!foo MACRO
+! ! you can see me
+! !! but not me
+! ! you can see me
+! !! but not me
+! but this "SHOULD !!BE OK"
+! ENDM
+!
+
+! foo
+! ! you can see me
+ ! you can see me
+!
+! ! you can see me
+ ! you can see me
+!
+! but this "SHOULD !!BE OK"
+ but this "SHOULD !!BE OK"
+!
+
+!
+
+!define MACRO val1,val2
+! DB val1 ! this comment will show up
+! DB val2 !! this on won't
+! ENDM
+!
+
+! define 0,1
+! DB 0 ! this comment will show up
+ .byte 0! this comment will show up
+! DB 1
+ .byte 1
+!
+
+!
+
+! END
diff --git a/gas/testsuite/gasp/pl3.asm b/gas/testsuite/gasp/pl3.asm
new file mode 100644
index 0000000..0131dcc
--- /dev/null
+++ b/gas/testsuite/gasp/pl3.asm
@@ -0,0 +1,30 @@
+ .ALTERNATE
+
+foo MACRO string
+ LOCAL lab1, lab2
+lab1: DATA.L lab2
+lab2: SDATA string
+ ENDM
+
+ foo "An example"
+ foo "using LOCAL"
+
+! test of LOCAL directive
+
+chk_err MACRO limit
+ LOCAL skip !! frob
+ LOCAL zap,dog,barf
+barf: cmp ax,limit !! check value against
+ !! limit
+ jle skip !! skip call if OK
+skip: call error
+ foo dog
+ zap dog
+ nop
+ ENDM
+
+ chk_err 5
+ chk_err 10
+
+
+ END
diff --git a/gas/testsuite/gasp/pl3.err b/gas/testsuite/gasp/pl3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/pl3.err
diff --git a/gas/testsuite/gasp/pl3.out b/gas/testsuite/gasp/pl3.out
new file mode 100644
index 0000000..066194c
--- /dev/null
+++ b/gas/testsuite/gasp/pl3.out
@@ -0,0 +1,86 @@
+! .ALTERNATE
+!
+
+!foo MACRO string
+! LOCAL lab1, lab2
+!lab1: DATA.L lab2
+!lab2: SDATA string
+! ENDM
+!
+
+! foo "An example"
+!
+!LL0001: DATA.L LL0002
+LL0001: .long LL0002
+!LL0002: SDATA "An example"
+LL0002: .byte 65,110,32,101,120,97,109,112,108,101
+! foo "using LOCAL"
+!
+!LL0003: DATA.L LL0004
+LL0003: .long LL0004
+!LL0004: SDATA "using LOCAL"
+LL0004: .byte 117,115,105,110,103,32,76,79,67,65,76
+!
+
+!! test of LOCAL directive
+ ! test of LOCAL directive
+!
+
+!chk_err MACRO limit
+! LOCAL skip !! frob
+! LOCAL zap,dog,barf
+!barf: cmp ax,limit !! check value against
+! !! limit
+! jle skip !! skip call if OK
+!skip: call error
+! foo dog
+! zap dog
+! nop
+! ENDM
+!
+
+! chk_err 5
+!
+!
+!LL0008: cmp ax,5
+LL0008: cmp ax,5
+!
+! jle LL0005
+ jle LL0005
+!LL0005: call error
+LL0005: call error
+! foo LL0007
+!
+!LL0009: DATA.L LL000a
+LL0009: .long LL000a
+!LL000a: SDATA LL0007
+LL000a: .byte 76,76,48,48,48,55
+! LL0006 LL0007
+ LL0006 LL0007
+! nop
+ nop
+! chk_err 10
+!
+!
+!LL000e: cmp ax,10
+LL000e: cmp ax,10
+!
+! jle LL000b
+ jle LL000b
+!LL000b: call error
+LL000b: call error
+! foo LL000d
+!
+!LL000f: DATA.L LL0010
+LL000f: .long LL0010
+!LL0010: SDATA LL000d
+LL0010: .byte 76,76,48,48,48,100
+! LL000c LL000d
+ LL000c LL000d
+! nop
+ nop
+!
+
+!
+
+! END
diff --git a/gas/testsuite/gasp/pl4.asm b/gas/testsuite/gasp/pl4.asm
new file mode 100644
index 0000000..f1dd3e8
--- /dev/null
+++ b/gas/testsuite/gasp/pl4.asm
@@ -0,0 +1,10 @@
+ .ALTERNATE
+! test of macro substitution around &s
+
+
+foo MACRO a,b
+ x&a&b
+ ENDM
+
+ foo 3 2
+ END
diff --git a/gas/testsuite/gasp/pl4.err b/gas/testsuite/gasp/pl4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/pl4.err
diff --git a/gas/testsuite/gasp/pl4.out b/gas/testsuite/gasp/pl4.out
new file mode 100644
index 0000000..35d1391
--- /dev/null
+++ b/gas/testsuite/gasp/pl4.out
@@ -0,0 +1,16 @@
+! .ALTERNATE
+!! test of macro substitution around &s
+ ! test of macro substitution around &s
+!
+
+!
+
+!foo MACRO a,b
+! x&a&b
+! ENDM
+!
+
+! foo 3 2
+! x32
+ x32
+! END
diff --git a/gas/testsuite/gasp/pl5.asm b/gas/testsuite/gasp/pl5.asm
new file mode 100644
index 0000000..16b999b
--- /dev/null
+++ b/gas/testsuite/gasp/pl5.asm
@@ -0,0 +1,15 @@
+! test of literal text operator
+ .ALTERNATE
+foop MACRO str1,str2
+ SDATA "str1"
+ SDATA str2
+ ENDM
+
+
+
+ foop this< is a <string> with angle brackets>
+ foop this< is a string with spaces>
+ foop this < is a string with a !>>
+
+
+ END
diff --git a/gas/testsuite/gasp/pl5.err b/gas/testsuite/gasp/pl5.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/pl5.err
diff --git a/gas/testsuite/gasp/pl5.out b/gas/testsuite/gasp/pl5.out
new file mode 100644
index 0000000..0aa488b
--- /dev/null
+++ b/gas/testsuite/gasp/pl5.out
@@ -0,0 +1,32 @@
+!! test of literal text operator
+ ! test of literal text operator
+! .ALTERNATE
+!foop MACRO str1,str2
+! SDATA "str1"
+! SDATA str2
+! ENDM
+!
+
+!
+
+!
+! foop this< is a <string> with angle brackets>
+! SDATA "this"
+ .byte 116,104,105,115
+! SDATA " is a <string> with angle brackets"
+ .byte 32,105,115,32,97,32,60,115,116,114,105,110,103,62,32,119,105,116,104,32,97,110,103,108,101,32,98,114,97,99,107,101,116,115
+! foop this< is a string with spaces>
+! SDATA "this"
+ .byte 116,104,105,115
+! SDATA " is a string with spaces"
+ .byte 32,105,115,32,97,32,115,116,114,105,110,103,32,119,105,116,104,32,115,112,97,99,101,115
+! foop this < is a string with a !>>
+! SDATA "this"
+ .byte 116,104,105,115
+! SDATA " is a string with a >"
+ .byte 32,105,115,32,97,32,115,116,114,105,110,103,32,119,105,116,104,32,97,32,62
+!
+
+!
+
+! END
diff --git a/gas/testsuite/gasp/pl6.asm b/gas/testsuite/gasp/pl6.asm
new file mode 100644
index 0000000..162d617
--- /dev/null
+++ b/gas/testsuite/gasp/pl6.asm
@@ -0,0 +1,21 @@
+ .ALTERNATE
+! test of expression operator
+define MACRO val, string
+ SDATA val
+ SDATA string
+ ENDM
+ define "1","99%of100" ! notice % within string
+ define %1 + 2, "=3"
+
+
+ define % 1 + 2 %3+4
+
+ define %3*4-2 <=10>
+
+ define %3*4-2 5
+
+ define %1 + 2,<is equal to %1 + 2, right?>
+
+ ! has no effect
+
+ end
diff --git a/gas/testsuite/gasp/pl6.err b/gas/testsuite/gasp/pl6.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/pl6.err
diff --git a/gas/testsuite/gasp/pl6.out b/gas/testsuite/gasp/pl6.out
new file mode 100644
index 0000000..dcd16cf
--- /dev/null
+++ b/gas/testsuite/gasp/pl6.out
@@ -0,0 +1,54 @@
+! .ALTERNATE
+!! test of expression operator
+ ! test of expression operator
+!define MACRO val, string
+! SDATA val
+! SDATA string
+! ENDM
+! define "1","99%of100" ! notice % within string
+! SDATA "1"
+ .byte 49
+! SDATA "99%of100"
+ .byte 57,57,37,111,102,49,48,48
+! define %1 + 2, "=3"
+! SDATA 3
+ .byte 51
+! SDATA "=3"
+ .byte 61,51
+!
+
+!
+
+! define % 1 + 2 %3+4
+! SDATA 3
+ .byte 51
+! SDATA 7
+ .byte 55
+!
+
+! define %3*4-2 <=10>
+! SDATA 10
+ .byte 49,48
+! SDATA "=10"
+ .byte 61,49,48
+!
+
+! define %3*4-2 5
+! SDATA 10
+ .byte 49,48
+! SDATA 5
+ .byte 53
+!
+
+! define %1 + 2,<is equal to %1 + 2, right?>
+! SDATA 3
+ .byte 51
+! SDATA "is equal to %1 + 2, right?"
+ .byte 105,115,32,101,113,117,97,108,32,116,111,32,37,49,32,43,32,50,44,32,114,105,103,104,116,63
+!
+
+! ! has no effect
+ ! has no effect
+!
+
+! end
diff --git a/gas/testsuite/gasp/pl7.asm b/gas/testsuite/gasp/pl7.asm
new file mode 100644
index 0000000..58a40af
--- /dev/null
+++ b/gas/testsuite/gasp/pl7.asm
@@ -0,0 +1,12 @@
+ .ALTERNATE
+! test of string operators
+define MACRO str1,str2
+ SDATA str1
+ SDATA "str2"
+ENDM
+ define one" way to get "spaces,0
+ define "lot's! of <special>,chars%", 0
+
+
+
+
diff --git a/gas/testsuite/gasp/pl7.err b/gas/testsuite/gasp/pl7.err
new file mode 100644
index 0000000..a1e3318
--- /dev/null
+++ b/gas/testsuite/gasp/pl7.err
@@ -0,0 +1 @@
+END missing from end of file.
diff --git a/gas/testsuite/gasp/pl7.out b/gas/testsuite/gasp/pl7.out
new file mode 100644
index 0000000..1519b34
--- /dev/null
+++ b/gas/testsuite/gasp/pl7.out
@@ -0,0 +1,26 @@
+! .ALTERNATE
+!! test of string operators
+ ! test of string operators
+!define MACRO str1,str2
+! SDATA str1
+! SDATA "str2"
+!ENDM
+! define one" way to get "spaces,0
+! SDATA one" way to get "spaces
+ .byte 111,110,101,34,32,119,97,121,32,116,111,32,103,101,116,32,34,115,112,97,99,101,115
+! SDATA "0"
+ .byte 48
+! define "lot's! of <special>,chars%", 0
+! SDATA "lot's of <special>,chars%"
+ .byte 108,111,116,39,115,32,111,102,32,60,115,112,101,99,105,97,108,62,44,99,104,97,114,115,37
+! SDATA "0"
+ .byte 48
+!
+
+!
+
+!
+
+!
+
+! \ No newline at end of file
diff --git a/gas/testsuite/gasp/pl8.asm b/gas/testsuite/gasp/pl8.asm
new file mode 100644
index 0000000..925b172
--- /dev/null
+++ b/gas/testsuite/gasp/pl8.asm
@@ -0,0 +1,18 @@
+
+ .ALTERNATE
+ SDATA %1+2+3
+ SDATA "5"
+
+
+
+ MACRO foo
+ SDATA "HI" !! this will go
+ SDATA "THERE ! this will stay
+ ENDM
+
+ foo
+
+
+ SDATA <!<this is <a wacky> example!>!!>
+ SDATA "<this is <a wacky> example>!"
+ END
diff --git a/gas/testsuite/gasp/pl8.err b/gas/testsuite/gasp/pl8.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/pl8.err
diff --git a/gas/testsuite/gasp/pl8.out b/gas/testsuite/gasp/pl8.out
new file mode 100644
index 0000000..3710412
--- /dev/null
+++ b/gas/testsuite/gasp/pl8.out
@@ -0,0 +1,33 @@
+!
+
+! .ALTERNATE
+! SDATA %1+2+3
+ .byte 37,49,43,50,43,51,32
+! SDATA "5"
+ .byte 53
+!
+
+!
+
+!
+
+! MACRO foo
+! SDATA "HI" !! this will go
+! SDATA "THERE ! this will stay
+! ENDM
+!
+
+! foo
+! SDATA "HI"
+ .byte 72,73
+! SDATA "THERE ! this will stay
+ .byte 84,72,69,82,69,9,32,116,104,105,115,32,119,105,108,108,32,115,116,97,121
+!
+
+!
+
+! SDATA <!<this is <a wacky> example!>!!>
+ .byte 60,116,104,105,115,32,105,115,32,60,97,32,119,97,99,107,121,62,32,101,120,97,109,112,108,101,62,33
+! SDATA "<this is <a wacky> example>!"
+ .byte 60,116,104,105,115,32,105,115,32,60,97,32,119,97,99,107,121,62,32,101,120,97,109,112,108,101,62,34
+! END
diff --git a/gas/testsuite/gasp/pr7583.asm b/gas/testsuite/gasp/pr7583.asm
new file mode 100644
index 0000000..c97caf5
--- /dev/null
+++ b/gas/testsuite/gasp/pr7583.asm
@@ -0,0 +1,3 @@
+
+ .sdata "v1.0000"
+ .end
diff --git a/gas/testsuite/gasp/pr7583.err b/gas/testsuite/gasp/pr7583.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/pr7583.err
diff --git a/gas/testsuite/gasp/pr7583.out b/gas/testsuite/gasp/pr7583.out
new file mode 100644
index 0000000..a5df1d7
--- /dev/null
+++ b/gas/testsuite/gasp/pr7583.out
@@ -0,0 +1,5 @@
+!
+
+! .sdata "v1.0000"
+ .byte 118,49,46,48,48,48,48
+! .end
diff --git a/gas/testsuite/gasp/reg.asm b/gas/testsuite/gasp/reg.asm
new file mode 100644
index 0000000..eb463ed
--- /dev/null
+++ b/gas/testsuite/gasp/reg.asm
@@ -0,0 +1,9 @@
+
+
+foo .REG (r1)
+ add foo,foo
+
+bar .reg (r2)
+ add bar,foo
+
+ .END
diff --git a/gas/testsuite/gasp/reg.err b/gas/testsuite/gasp/reg.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/reg.err
diff --git a/gas/testsuite/gasp/reg.out b/gas/testsuite/gasp/reg.out
new file mode 100644
index 0000000..79268a3
--- /dev/null
+++ b/gas/testsuite/gasp/reg.out
@@ -0,0 +1,15 @@
+!
+
+!
+
+!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
index 0000000..027ac47
--- /dev/null
+++ b/gas/testsuite/gasp/rep.asm
@@ -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.err b/gas/testsuite/gasp/rep.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/rep.err
diff --git a/gas/testsuite/gasp/rep.out b/gas/testsuite/gasp/rep.out
new file mode 100644
index 0000000..510d0e1
--- /dev/null
+++ b/gas/testsuite/gasp/rep.out
@@ -0,0 +1,391 @@
+! .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
index 0000000..7a85da3
--- /dev/null
+++ b/gas/testsuite/gasp/repeat.asm
@@ -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.err b/gas/testsuite/gasp/repeat.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/repeat.err
diff --git a/gas/testsuite/gasp/repeat.out b/gas/testsuite/gasp/repeat.out
new file mode 100644
index 0000000..705d8d8
--- /dev/null
+++ b/gas/testsuite/gasp/repeat.out
@@ -0,0 +1,211 @@
+!
+
+! .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
index 0000000..60882b2
--- /dev/null
+++ b/gas/testsuite/gasp/reperr.asm
@@ -0,0 +1,2 @@
+
+ .REPEAT 10
diff --git a/gas/testsuite/gasp/reperr.err b/gas/testsuite/gasp/reperr.err
new file mode 100644
index 0000000..a1e3318
--- /dev/null
+++ b/gas/testsuite/gasp/reperr.err
@@ -0,0 +1 @@
+END missing from end of file.
diff --git a/gas/testsuite/gasp/reperr.out b/gas/testsuite/gasp/reperr.out
new file mode 100644
index 0000000..2c9f8c6
--- /dev/null
+++ b/gas/testsuite/gasp/reperr.out
@@ -0,0 +1,5 @@
+!
+
+! .REPEAT 10
+ .REPEAT 10
+! \ No newline at end of file
diff --git a/gas/testsuite/gasp/reperr1.asm b/gas/testsuite/gasp/reperr1.asm
new file mode 100644
index 0000000..2d987e4
--- /dev/null
+++ b/gas/testsuite/gasp/reperr1.asm
@@ -0,0 +1,3 @@
+
+ .AREPEAT 10
+ .END
diff --git a/gas/testsuite/gasp/reperr1.err b/gas/testsuite/gasp/reperr1.err
new file mode 100644
index 0000000..536545b
--- /dev/null
+++ b/gas/testsuite/gasp/reperr1.err
@@ -0,0 +1 @@
+End of file whilst inside AREPEAT, started on line 3.
diff --git a/gas/testsuite/gasp/reperr1.out b/gas/testsuite/gasp/reperr1.out
new file mode 100644
index 0000000..dd82880
--- /dev/null
+++ b/gas/testsuite/gasp/reperr1.out
@@ -0,0 +1,5 @@
+!
+
+! .AREPEAT 10
+! .END
+! \ No newline at end of file
diff --git a/gas/testsuite/gasp/reperr2.asm b/gas/testsuite/gasp/reperr2.asm
new file mode 100644
index 0000000..de06a71
--- /dev/null
+++ b/gas/testsuite/gasp/reperr2.asm
@@ -0,0 +1,6 @@
+
+ .AREPEAT 5
+ .AENDR
+ .AENDR
+ .END
+
diff --git a/gas/testsuite/gasp/reperr2.err b/gas/testsuite/gasp/reperr2.err
new file mode 100644
index 0000000..840ccc5
--- /dev/null
+++ b/gas/testsuite/gasp/reperr2.err
@@ -0,0 +1 @@
+reperr2.asm:4 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/reperr2.out b/gas/testsuite/gasp/reperr2.out
new file mode 100644
index 0000000..df7a84d
--- /dev/null
+++ b/gas/testsuite/gasp/reperr2.out
@@ -0,0 +1,14 @@
+!
+
+! .AREPEAT 5
+! .AENDR
+! .AREPEAT 4
+! .AENDR
+! .AREPEAT 3
+! .AENDR
+! .AREPEAT 2
+! .AENDR
+! .AREPEAT 1
+! .AENDR
+! .AENDR
+! .END
diff --git a/gas/testsuite/gasp/reperr3.asm b/gas/testsuite/gasp/reperr3.asm
new file mode 100644
index 0000000..464bc79
--- /dev/null
+++ b/gas/testsuite/gasp/reperr3.asm
@@ -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.err b/gas/testsuite/gasp/reperr3.err
new file mode 100644
index 0000000..1be0dce
--- /dev/null
+++ b/gas/testsuite/gasp/reperr3.err
@@ -0,0 +1,6 @@
+reperr3.asm:14 AENDR without a AREPEAT.
+reperr3.asm:16 AENDR without a AREPEAT.
+reperr3.asm:17 AENDR without a AREPEAT.
+reperr3.asm:18 AENDR without a AREPEAT.
+reperr3.asm:19 AENDR without a AREPEAT.
+reperr3.asm:20 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/reperr3.out b/gas/testsuite/gasp/reperr3.out
new file mode 100644
index 0000000..9a3513b
--- /dev/null
+++ b/gas/testsuite/gasp/reperr3.out
@@ -0,0 +1,2035 @@
+! .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
diff --git a/gas/testsuite/gasp/sdata.asm b/gas/testsuite/gasp/sdata.asm
new file mode 100644
index 0000000..d6bd23c
--- /dev/null
+++ b/gas/testsuite/gasp/sdata.asm
@@ -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.err b/gas/testsuite/gasp/sdata.err
new file mode 100644
index 0000000..7544ccc
--- /dev/null
+++ b/gas/testsuite/gasp/sdata.err
@@ -0,0 +1,3 @@
+sdata.asm:19 Character code in string must be absolute expression.
+sdata.asm:19 Missing > for character code.
+END missing from end of file.
diff --git a/gas/testsuite/gasp/sdata.out b/gas/testsuite/gasp/sdata.out
new file mode 100644
index 0000000..e689d35
--- /dev/null
+++ b/gas/testsuite/gasp/sdata.out
@@ -0,0 +1,59 @@
+!
+
+!
+
+! .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,72,69,82,69
+! .SDATA "SHOULD FAIL" foo "HERE"
+ .byte 83,72,79,85,76,68,32,70,65,73,76,102,111,111,32,34,72,69,82,69,34,32
+!
+
+! .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,0
+ .byte 65,65,66,66,0
+!
+
+!
+
+!a1: .SDATAZ "HI"
+a1: .byte 72,73,0
+!a2: .SDATAC "HI"
+a2: .byte 2,72,73
+!a3: .SDATA "HI"
+a3: .byte 72,73
+! \ No newline at end of file
diff --git a/gas/testsuite/gasp/sfunc.asm b/gas/testsuite/gasp/sfunc.asm
new file mode 100644
index 0000000..b59949a
--- /dev/null
+++ b/gas/testsuite/gasp/sfunc.asm
@@ -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.err b/gas/testsuite/gasp/sfunc.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/sfunc.err
diff --git a/gas/testsuite/gasp/sfunc.out b/gas/testsuite/gasp/sfunc.out
new file mode 100644
index 0000000..50f694f
--- /dev/null
+++ b/gas/testsuite/gasp/sfunc.out
@@ -0,0 +1,49 @@
+!
+
+! .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
index 0000000..df54c6c
--- /dev/null
+++ b/gas/testsuite/gasp/t1.asm
@@ -0,0 +1,3 @@
+
+ test for eof in middle of line
+ .END
diff --git a/gas/testsuite/gasp/t1.err b/gas/testsuite/gasp/t1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/t1.err
diff --git a/gas/testsuite/gasp/t1.out b/gas/testsuite/gasp/t1.out
new file mode 100644
index 0000000..39230e1
--- /dev/null
+++ b/gas/testsuite/gasp/t1.out
@@ -0,0 +1,5 @@
+!
+
+! 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
index 0000000..38a351a
--- /dev/null
+++ b/gas/testsuite/gasp/t2.asm
@@ -0,0 +1,8 @@
+
+
+ test
++ continued
++ lines
+
+
+ .END
diff --git a/gas/testsuite/gasp/t2.err b/gas/testsuite/gasp/t2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/t2.err
diff --git a/gas/testsuite/gasp/t2.out b/gas/testsuite/gasp/t2.out
new file mode 100644
index 0000000..0c44e8b
--- /dev/null
+++ b/gas/testsuite/gasp/t2.out
@@ -0,0 +1,13 @@
+!
+
+!
+
+! test
+!+continued
+!+lines
+ testcontinuedlines
+!
+
+!
+
+! .END
diff --git a/gas/testsuite/gasp/t3.asm b/gas/testsuite/gasp/t3.asm
new file mode 100644
index 0000000..27702db
--- /dev/null
+++ b/gas/testsuite/gasp/t3.asm
@@ -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.err b/gas/testsuite/gasp/t3.err
new file mode 100644
index 0000000..a1e3318
--- /dev/null
+++ b/gas/testsuite/gasp/t3.err
@@ -0,0 +1 @@
+END missing from end of file.
diff --git a/gas/testsuite/gasp/t3.out b/gas/testsuite/gasp/t3.out
new file mode 100644
index 0000000..8ad150b
--- /dev/null
+++ b/gas/testsuite/gasp/t3.out
@@ -0,0 +1,25 @@
+!
+
+! 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
+! \ No newline at end of file
diff --git a/gas/testsuite/gasp/while.asm b/gas/testsuite/gasp/while.asm
new file mode 100644
index 0000000..09143cc
--- /dev/null
+++ b/gas/testsuite/gasp/while.asm
@@ -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.err b/gas/testsuite/gasp/while.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gas/testsuite/gasp/while.err
diff --git a/gas/testsuite/gasp/while.out b/gas/testsuite/gasp/while.out
new file mode 100644
index 0000000..128aeb1
--- /dev/null
+++ b/gas/testsuite/gasp/while.out
@@ -0,0 +1,388 @@
+! 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