From 7657996ad68689b437f742516f0f285e53e8f0e3 Mon Sep 17 00:00:00 2001 From: Astatin Date: Thu, 26 Sep 2024 16:12:49 +0900 Subject: Add inline macros --- parameters.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'parameters.go') diff --git a/parameters.go b/parameters.go index 8a3174b..5e234f5 100644 --- a/parameters.go +++ b/parameters.go @@ -120,7 +120,7 @@ func Raw16(labels *Labels, defs *Definitions, param string) (uint16, error) { return uint16(res), nil } - if strings.HasPrefix(param, "=") { + if strings.HasPrefix(param, "=") && !strings.HasPrefix(param, "=$") { if labels == nil { return 0, nil } @@ -144,6 +144,23 @@ func Raw16(labels *Labels, defs *Definitions, param string) (uint16, error) { return uint16(res), err } +func MacroLabel(labels *Labels, defs *Definitions, param string) (uint16, error) { + if strings.HasPrefix(param, "=$") { + if labels == nil { + return 0, nil + } + + label := strings.ToUpper(strings.TrimPrefix(param, "=")) + labelValue, ok := (*labels)[label] + if !ok { + return 0, fmt.Errorf("Label \"%s\" not found", label) + } + + return uint16(labelValue), nil + } + return 0, fmt.Errorf("Invalid macro label") +} + func Reg16Indirect(_ *Labels, _ *Definitions, param string) (uint16, error) { switch param { case "(BC)": @@ -202,7 +219,6 @@ func Raw16Indirect(labels *Labels, defs *Definitions, param string) (uint16, err if !ok { return 0, fmt.Errorf("$%s is of type %T but Indirect16b expected", param, res) } - fmt.Println("YOU CAN LOOSE YOUR MIND NOW ! IT OFFICIALLY DOESN'T MAKE SENSE", param, res) return uint16(res), nil } if len(param) < 2 || param[0] != '(' || param[len(param)-1] != ')' { -- cgit v1.2.3-70-g09d2