]> git.sur5r.net Git - cc65/commitdiff
Refactorred a CBM screen-code macro, so that we can use it as an operand.
authorGreg King <gregdk@users.sf.net>
Mon, 4 Mar 2019 15:19:27 +0000 (10:19 -0500)
committerGreg King <gregdk@users.sf.net>
Mon, 4 Mar 2019 15:23:47 +0000 (10:23 -0500)
For example: lda #scrbyte 'B'

asminc/cbm.mac

index b2bfe5992420fc422b65c268cbbdef3a67e333ab..6d7ac7e8ddb00bc6d793ceed98571d42e08a7c29 100644 (file)
@@ -1,9 +1,13 @@
 ; Convert characters to screen codes
 
-; Helper macro that converts and outputs one character
+; Macro that converts one character.
+; scrbyte() can be used as an instruction operand
+.define scrbyte(code)   (<(.strat ("h@dbdlhh", code >> 5) << 4) ^ code)
+
+; Helper macro that stores one character
 .macro _scrcode char
         .if (char < 256)
-                .byte   <(.strat ("h@dbdlhh", char >> 5) << 4) ^ char
+                .byte   scrbyte {char}
         .else
                 .error  "scrcode: Character constant out of range"
         .endif
 
         ; 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
-
-