From 8c60c8cf7acb3563b31d9d17ba1303efe3f0aa39 Mon Sep 17 00:00:00 2001 From: Astatin Date: Fri, 7 Mar 2025 23:54:34 +0900 Subject: add high/low paramters modifiers, parameters to macros & print symbols to stdout --- parameters.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'parameters.go') diff --git a/parameters.go b/parameters.go index ac17f70..21930c2 100644 --- a/parameters.go +++ b/parameters.go @@ -73,7 +73,26 @@ func Reg16(_ *Labels, lastAbsoluteLabel string, _ *Definitions, param string) (u return 0, fmt.Errorf("Invalid reg16") } -func Raw8(_ *Labels, lastAbsoluteLabel string, defs *Definitions, param string) (uint16, error) { +func Raw8( + labels *Labels, + lastAbsoluteLabel string, + defs *Definitions, + param string, +) (uint16, error) { + if strings.HasPrefix(param, "high(") && strings.HasSuffix(param, ")") { + v, err := Raw16(labels, lastAbsoluteLabel, defs, param[5:len(param)-1]) + if err != nil { + return 0, err + } + return uint16(v >> 8), nil + } + if strings.HasPrefix(param, "low(") && strings.HasSuffix(param, ")") { + v, err := Raw16(labels, lastAbsoluteLabel, defs, param[4:len(param)-1]) + if err != nil { + return 0, err + } + return uint16(v & 0xff), nil + } if strings.HasPrefix(param, "$") { param = strings.ToUpper(strings.TrimPrefix(param, "$")) if res, err := strconv.ParseUint(param, 16, 16); err == nil { -- cgit v1.2.3-70-g09d2