diff options
| -rw-r--r-- | lib/xixanta/src/assembler.rs | 20 |
1 files changed, 20 insertions, 0 deletions
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, @@ -3095,6 +3096,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( r#" |
