From 13fa31a3bcb6f304a8cc0e26de4af0f6e75ac5e3 Mon Sep 17 00:00:00 2001 From: Greg King Date: Mon, 4 Mar 2019 10:19:27 -0500 Subject: [PATCH] Refactorred a CBM screen-code macro, so that we can use it as an operand. For example: lda #scrbyte 'B' --- asminc/cbm.mac | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/asminc/cbm.mac b/asminc/cbm.mac index b2bfe5992..6d7ac7e8d 100644 --- a/asminc/cbm.mac +++ b/asminc/cbm.mac @@ -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 @@ -38,13 +42,9 @@ ; 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 - -