aboutsummaryrefslogtreecommitdiff
path: root/parameters.go
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-09-26 16:12:49 +0900
committerAstatin <astatin@redacted>2024-09-26 16:12:49 +0900
commit7657996ad68689b437f742516f0f285e53e8f0e3 (patch)
tree9f22f50c30dfe174200a388c2a6c5c7a5b848741 /parameters.go
parent0b44780a7b142147d25f0f436159b876f95f17f7 (diff)
Add inline macros
Diffstat (limited to 'parameters.go')
-rw-r--r--parameters.go20
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] != ')' {