+# MACRO: exit
+ .macro exit nr
+ ldd # \nr
+ # The debug insn class.
+ .byte 0xcd
+ # The exit utility function.
+ .byte 0x03
+ .endm
+
+# MACRO: pass
+# Write 'pass' to stdout and quit
+ .macro pass
+ # Point to the string.
+ # NB: See comment above _pass below.
+ ldx #0x8000
+ # Number of bytes to write.
+ ldd #5
+ # The debug insn class.
+ .byte 0xcd
+ # The write utility function.
+ .byte 0x01
+ exit 0
+ .endm
+
+# MACRO: ffail
+# Write 'ffail' to stdout and quit
+# Normally this would be 'fail', but m68k has a pseudo "fail" op.
+ .macro ffail
+ # Point to the string.
+ ldx #0x8006
+ # Number of bytes to write.
+ ldd #5
+ # The debug insn class.
+ .byte 0xcd
+ # The write utility function.
+ .byte 0x01
+ exit 0
+ .endm
+
+# MACRO: start
+# All assembler tests should start with a call to "start"
+ .macro start
+ .text
+# These need to be at the start of text as it's the only stable address.
+# The sim will load all sections starting at the .text address and ignore
+# the addresses for the other sections.
+_pass:
+ .asciz "pass\n"
+_fail:
+ .asciz "fail\n"
+.global _start
+_start:
+ .endm