Browse code

Minor cleanup

neauoire authored on 14/03/2021 20:47:09
Showing 2 changed files
... ...
@@ -256,12 +256,6 @@ int
256 256
 walktoken(char *w)
257 257
 {
258 258
 	Macro *m;
259
-	if((m = findmacro(w))) {
260
-		int i, res = 0;
261
-		for(i = 0; i < m->len; ++i)
262
-			res += walktoken(m->items[i]);
263
-		return res;
264
-	}
265 259
 	if(findopcode(w) || scmp(w, "BRK", 4))
266 260
 		return 1;
267 261
 	switch(w[0]) {
... ...
@@ -274,6 +268,12 @@ walktoken(char *w)
274 268
 	case '-':           /* signed negative */
275 269
 	case '#': return (slen(w + 1) == 2 ? 2 : 3);
276 270
 	}
271
+	if((m = findmacro(w))) {
272
+		int i, res = 0;
273
+		for(i = 0; i < m->len; ++i)
274
+			res += walktoken(m->items[i]);
275
+		return res;
276
+	}
277 277
 	return error("Unknown label in first pass", w);
278 278
 }
279 279
 
... ...
@@ -293,38 +293,32 @@ parsetoken(char *w)
293 293
 		pushbyte((Sint8)(l->addr - p.ptr - 3), 1);
294 294
 		l->refs++;
295 295
 		return 1;
296
-	}
297
-	if(w[0] == '=' && (l = findlabel(w + 1))) {
296
+	} else if(w[0] == '=' && (l = findlabel(w + 1))) {
298 297
 		if(!findlabellen(w + 1) || findlabellen(w + 1) > 2)
299
-			return error("Invalid load helper", w);
298
+			return error("Invalid store helper", w);
300 299
 		pushshort(findlabeladdr(w + 1), 1);
301 300
 		pushbyte(findopcode(findlabellen(w + 1) == 2 ? "STR2" : "STR"), 0);
302 301
 		l->refs++;
303 302
 		return 1;
304
-	}
305
-	if(w[0] == '~' && (l = findlabel(w + 1))) {
303
+	} else if(w[0] == '~' && (l = findlabel(w + 1))) {
306 304
 		if(!findlabellen(w + 1) || findlabellen(w + 1) > 2)
307 305
 			return error("Invalid load helper", w);
308 306
 		pushshort(findlabeladdr(w + 1), 1);
309 307
 		pushbyte(findopcode(findlabellen(w + 1) == 2 ? "LDR2" : "LDR"), 0);
310 308
 		l->refs++;
311 309
 		return 1;
312
-	}
313
-	if((op = findopcode(w)) || scmp(w, "BRK", 4)) {
310
+	} else if((op = findopcode(w)) || scmp(w, "BRK", 4)) {
314 311
 		pushbyte(op, 0);
315 312
 		return 1;
316
-	}
317
-	if(w[0] == '.' && (l = findlabel(w + 1))) {
313
+	} else if(w[0] == '.' && (l = findlabel(w + 1))) {
318 314
 		pushshort(findlabeladdr(w + 1), 0);
319 315
 		l->refs++;
320 316
 		return 1;
321
-	}
322
-	if(w[0] == ',' && (l = findlabel(w + 1))) {
317
+	} else if(w[0] == ',' && (l = findlabel(w + 1))) {
323 318
 		pushshort(findlabeladdr(w + 1), 1);
324 319
 		l->refs++;
325 320
 		return 1;
326
-	}
327
-	if(w[0] == '#' && sihx(w + 1)) {
321
+	} else if(w[0] == '#' && sihx(w + 1)) {
328 322
 		if(slen(w + 1) == 2)
329 323
 			pushbyte(shex(w + 1), 1);
330 324
 		else if(slen(w + 1) == 4)
... ...
@@ -332,18 +326,14 @@ parsetoken(char *w)
332 326
 		else
333 327
 			return 0;
334 328
 		return 1;
335
-	}
336
-
337
-	if(w[0] == '+' && sihx(w + 1)) {
329
+	} else if(w[0] == '+' && sihx(w + 1)) {
338 330
 		if(slen(w + 1) == 2)
339 331
 			pushbyte((Sint8)shex(w + 1), 1);
340 332
 		else if(slen(w + 1) == 4)
341 333
 			pushshort((Sint16)shex(w + 1), 1);
342 334
 		else
343 335
 			return 0;
344
-	}
345
-
346
-	if(w[0] == '-' && sihx(w + 1)) {
336
+	} else if(w[0] == '-' && sihx(w + 1)) {
347 337
 		if(slen(w + 1) == 2)
348 338
 			pushbyte((Sint8)(shex(w + 1) * -1), 1);
349 339
 		else if(slen(w + 1) == 4)
... ...
@@ -351,17 +341,13 @@ parsetoken(char *w)
351 341
 		else
352 342
 			return 0;
353 343
 		return 1;
354
-	}
355
-
356
-	if((m = findmacro(w))) {
357
-		int i, res = 0;
358
-		for(i = 0; i < m->len; ++i) {
344
+	} else if((m = findmacro(w))) {
345
+		int i;
346
+		for(i = 0; i < m->len; ++i)
359 347
 			if(!parsetoken(m->items[i]))
360 348
 				return 0;
361
-		}
362 349
 		return 1;
363 350
 	}
364
-
365 351
 	return 0;
366 352
 }
367 353
 
... ...
@@ -399,9 +385,8 @@ pass1(FILE *f)
399 385
 			if(shex(w + 1) < addr)
400 386
 				return error("Memory Overwrite", w);
401 387
 			addr = shex(w + 1);
402
-		} else {
388
+		} else
403 389
 			addr += walktoken(w);
404
-		}
405 390
 	}
406 391
 	rewind(f);
407 392
 	return 1;
... ...
@@ -20,5 +20,5 @@ cc -std=c89 -DDEBUG -Wall -Wno-unknown-pragmas -Wpedantic -Wshadow -Wextra -Werr
20 20
 # cc uxn.c emulator.c -std=c89 -Os -DNDEBUG -g0 -s -Wall -Wno-unknown-pragmas -L/usr/local/lib -lSDL2 -o bin/emulator
21 21
 
22 22
 # run
23
-./bin/assembler projects/software/left.usm bin/boot.rom
23
+./bin/assembler projects/software/nasu.usm bin/boot.rom
24 24
 ./bin/emulator bin/boot.rom