From c8138a0fc5353dc9017fc32fb5ef12a6fe780415 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Fri, 24 Apr 2026 16:26:08 +0200 Subject: Add the .version pseudo-variable 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 | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'lib/xixanta/src/assembler.rs') diff --git a/lib/xixanta/src/assembler.rs b/lib/xixanta/src/assembler.rs index cf11de1..646b072 100644 --- a/lib/xixanta/src/assembler.rs +++ b/lib/xixanta/src/assembler.rs @@ -2385,6 +2385,7 @@ impl<'a> Assembler<'a> { NodeType::Control(ControlType::Hibyte) => self.evaluate_byte(node, true), NodeType::Control(ControlType::Lobyte) => self.evaluate_byte(node, false), NodeType::Control(ControlType::Defined) => self.evaluate_defined(node), + NodeType::Control(ControlType::Version) => self.evaluate_version(node), _ => Err(Error { line: node.value.line, message: format!( @@ -2421,6 +2422,38 @@ impl<'a> Assembler<'a> { Ok(bundle) } + // Returns a bundle which is just the version from this library. + fn evaluate_version(&mut self, node: &PNode) -> Result { + let Ok(major) = env!("CARGO_PKG_VERSION_MAJOR").parse::() else { + return Err(Error { + line: node.value.line, + message: "bad version number".to_string(), + source: self.source_for(node), + expanded_from: self.macro_context.clone(), + global: false, + }); + }; + let Ok(minor) = env!("CARGO_PKG_VERSION_MINOR").parse::() else { + return Err(Error { + line: node.value.line, + message: "bad version number".to_string(), + source: self.source_for(node), + expanded_from: self.macro_context.clone(), + global: false, + }); + }; + + Ok(Bundle { + bytes: [minor, major, 0x00], + size: 2, + address: 0, + cycles: 0, + affected_on_page: false, + resolved: true, + negative: false, + }) + } + // Returns a bundle containing a boolean value on whether the symbol // referenced in the given `node` is actually defined on this context or // not. -- cgit v1.2.3