From 14b1fc9b3ea5520a3e9c5a7a457a7a03660bc910 Mon Sep 17 00:00:00 2001 From: Astatin Date: Wed, 18 Jun 2025 16:44:10 +0200 Subject: Fix .PADTO in macro & allow to use current_address in .DEFINE --- macros.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'macros.go') diff --git a/macros.go b/macros.go index 44b72a2..a923082 100644 --- a/macros.go +++ b/macros.go @@ -176,14 +176,16 @@ func MacroParse( return fmt.Errorf("Defined variable \"%s\" is also valid hexadecimal", name) } + current_address := uint32(uint(len(*result)) + offset) + var definedValue any - if v, err := Raw8Indirect(&state.Labels, LastAbsoluteLabel, &state.Defs, 0xffffffff, words[2]); err == nil { + if v, err := Raw8Indirect(&state.Labels, LastAbsoluteLabel, &state.Defs, current_address, words[2]); err == nil { definedValue = Indirect8b(v) - } else if v, err := Raw16Indirect(&state.Labels, LastAbsoluteLabel, &state.Defs, 0xffffffff, words[2]); err == nil { + } else if v, err := Raw16Indirect(&state.Labels, LastAbsoluteLabel, &state.Defs, current_address, words[2]); err == nil { definedValue = Indirect16b(v) - } else if v, err := Raw8(&state.Labels, LastAbsoluteLabel, &state.Defs, 0xffffffff, words[2]); err == nil { + } else if v, err := Raw8(&state.Labels, LastAbsoluteLabel, &state.Defs, current_address, words[2]); err == nil { definedValue = Raw8b(v) - } else if v, err := Raw16(&state.Labels, LastAbsoluteLabel, &state.Defs, 0xffffffff, words[2]); err == nil { + } else if v, err := Raw16(&state.Labels, LastAbsoluteLabel, &state.Defs, current_address, words[2]); err == nil { definedValue = Raw16b(v) } else { return fmt.Errorf("\"%s\" could not be parsed as a .DEFINE argument", words[2]) -- cgit v1.2.3-70-g09d2