Refactorred a CBM screen-code macro, so that we can use it as an operand.

For example: lda #scrbyte 'B'
This commit is contained in:
Greg King 2019-03-04 10:19:27 -05:00
parent cc6559c3f6
commit 13fa31a3bc
1 changed files with 6 additions and 6 deletions

View 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
@ -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