-; Convert characters to screen codes
-
-; Helper macro that converts and outputs one character
-.macro _scrcode char
-.if 1
-        .if (char >= 96) .and (char <= 127)
-        .byte (char)
-        .else
-        .byte (char - 32)
-        .endif
-.else
-        .if (char >= 0) .and (char <= 31)
-                .byte   (char + 64)
-        .elseif (char >= 32) .and (char <= 95)
-                .byte   (char + 32)
-        .elseif (char >= 96) .and (char <= 127)
-                .byte   char
-        .elseif (char >= 128) .and (char <= 159)
-                .byte   (char + 64)
-        .elseif (char >= 160) .and (char <= 223)
-                .byte   (char - 32)
-        .elseif (char >= 224) .and (char <= 255)
-                .byte   char
-        .else
-                .error  "scrcode: Character constant out of range"
-        .endif
-.endif
-.endmacro
-
-.macro  scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9
-
-        ; Bail out if next argument is empty
-        .if     .blank (arg1)
-                .exitmacro
-        .endif
-
-        ; Check for a string
-        .if     .match ({arg1}, "")
-
-                ; Walk over all string chars
-                .repeat .strlen (arg1), i
-                        _scrcode        {.strat (arg1, i)}
-                .endrepeat
-
-        ; Check for a number
-        .elseif .match (.left (1, {arg1}), 0)
-
-                ; Just output the number
-                _scrcode        arg1
-
-        ; Check for a character
-        .elseif .match (.left (1, {arg1}), 'a')
-
-                ; Just output the character
-                _scrcode        arg1
-
-        ; Anything else is an error
-        .else
-
-                .error  "scrcode: invalid argument type"
-
-        .endif
-
-        ; Call the macro recursively with the remaining args
-        scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9
-.endmacro
+.include "atari.mac"