uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit a252da617cc6161270b8457f61fc7fb49f75d587
parent 652bff0a9324fe46e8b7e8905b54dab87a8f6eb5
Author: Devine Lu Linvega <aliceffekt@gmail.com>
Date:   Wed, 27 Mar 2024 17:00:08 -0700

(uxnasm) Housekeeping

Diffstat:
Msrc/uxnasm.c | 14+++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/uxnasm.c b/src/uxnasm.c @@ -332,17 +332,17 @@ parse(char *w, FILE *f, Context *ctx) } static int -resolveref(Item *r) +writeref(Item *r) { - Uint16 a; + int rel; Uint8 *rom = data + r->addr; Item *l = findlabel(r->name); if(!l) return 0; switch(r->rune) { case '_': case ',': - *rom = (Sint8)(l->addr - r->addr - 2); - if((Sint8)data[r->addr] != (l->addr - r->addr - 2)) + *rom = rel = l->addr - r->addr - 2; + if((Sint8)data[r->addr] != rel) return error_top("Relative reference is too far", r->name); break; case '-': @@ -357,8 +357,8 @@ resolveref(Item *r) case '?': case '!': default: - a = l->addr - r->addr - 2; - *rom++ = a >> 8, *rom = a; + rel = l->addr - r->addr - 2; + *rom++ = rel >> 8, *rom = rel; break; } l->refs++; @@ -371,7 +371,7 @@ resolve(void) int i; for(i = 0; i < refs_len; i++) { Item *r = &refs[i]; - if(!resolveref(r)) return error_top("Unknown reference", r->name); + if(!writeref(r)) return error_top("Unknown reference", r->name); } return 1; }