From 0673cbed98bd1a58005f6cb82da817bb41ffb9b4 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Mon, 25 Mar 2024 19:52:29 -0700 Subject: [PATCH] Connected line reporting --- src/uxnasm.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/uxnasm.c b/src/uxnasm.c index 333b2f0..0e6c56b 100644 --- a/src/uxnasm.c +++ b/src/uxnasm.c @@ -36,7 +36,7 @@ typedef struct { typedef struct { Uint8 data[LENGTH]; Uint8 lambda_stack[0x100], lambda_ptr, lambda_len; - Uint16 ptr, length, label_len, macro_len, refs_len; + Uint16 ptr, line, length, label_len, macro_len, refs_len; char scope[0x40], lambda_name[0x05], *location; Label labels[0x400]; Macro macros[0x100]; @@ -81,7 +81,7 @@ error_top(const char *name, const char *msg) static int error_asm(const char *name) { - fprintf(stderr, "%s: %s in @%s, %s:%d.\n", name, token, p.scope, p.location, 123); + fprintf(stderr, "%s: %s in @%s, %s:%d.\n", name, token, p.scope, p.location, p.line); return 0; } @@ -89,6 +89,7 @@ static char * setlocation(char *name) { p.location = name; + p.line = 0; return name; } @@ -284,8 +285,6 @@ parse(char *w, FILE *f) char word[0x40], subw[0x40], c; Label *l; Macro *m; - if(slen(w) >= 63) - return error_asm("Invalid token"); switch(w[0]) { case '(': /* comment */ if(slen(w) != 1) fprintf(stderr, "-- Malformed comment: %s\n", w); @@ -464,6 +463,8 @@ assemble(FILE *f) char c = (char)buf; if(c < 0x21) { *cptr++ = 0x00; + if(c == 0x0a) + p.line++; if(token[0]) if(!parse(token, f)) return 0;