diff options
author | Astatin <[email protected]> | 2024-09-26 16:12:49 +0900 |
---|---|---|
committer | Astatin <astatin@redacted> | 2024-09-26 16:12:49 +0900 |
commit | 7657996ad68689b437f742516f0f285e53e8f0e3 (patch) | |
tree | 9f22f50c30dfe174200a388c2a6c5c7a5b848741 /parameters.go | |
parent | 0b44780a7b142147d25f0f436159b876f95f17f7 (diff) |
Add inline macros
Diffstat (limited to 'parameters.go')
-rw-r--r-- | parameters.go | 20 |
1 files changed, 18 insertions, 2 deletions
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] != ')' { |