| # MACRO: outc | |
| # Write byte to stdout | |
| .macro outc ch | |
| ldi r16, \ch | |
| out 0x32, r16 | |
| .endm | |
| # MACRO: exit | |
| .macro exit nr | |
| ldi r16, \nr | |
| out 0x2f, r16 | |
| .endm | |
| # MACRO: pass | |
| # Write 'pass' to stdout and quit | |
| .macro pass | |
| outc 'p' | |
| outc 'a' | |
| outc 's' | |
| outc 's' | |
| outc '\n' | |
| exit 0 | |
| .endm | |
| # MACRO: fail | |
| # Write 'fail' to stdout and quit | |
| .macro fail | |
| outc 'f' | |
| outc 'a' | |
| outc 'i' | |
| outc 'l' | |
| outc '\n' | |
| exit 1 | |
| .endm | |
| # MACRO: start | |
| # All assembler tests should start with a call to "start" | |
| .macro start | |
| .text | |
| .global _start | |
| _start: | |
| .endm |