From e2c322ab3adb85976c15c7668128cf10f699f563 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Thu, 9 Jan 2025 22:13:01 +0100 Subject: Reset the literal mode on each macro argument MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- lib/xixanta/src/assembler.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib') diff --git a/lib/xixanta/src/assembler.rs b/lib/xixanta/src/assembler.rs index b147768..c59150c 100644 --- a/lib/xixanta/src/assembler.rs +++ b/lib/xixanta/src/assembler.rs @@ -690,6 +690,7 @@ impl<'a> Assembler<'a> { let mut margs = mcr.args.as_ref().unwrap().iter(); for arg in node.args.as_ref().unwrap().iter() { + self.literal_mode = None; let obj = Object { bundle: self.evaluate_node(arg)?, mapping: self.current_mapping, @@ -3094,6 +3095,25 @@ cpx #(4 * var2)"#, } } + #[test] + fn macro_variable_argument() { + let res = just_bundles( + r#".macro MACRO arg + lda arg +.endmacro + +Var1 = $20 + +MACRO Var1 +"#, + ); + + assert_eq!(res.len(), 1); + assert_eq!(res[0].size, 2); + assert_eq!(res[0].bytes[0], 0xA5); + assert_eq!(res[0].bytes[1], 0x20); + } + #[test] fn macro_unknown_arguments() { assert_error( -- cgit v1.2.3