| ... | ... |
@@ -301,8 +301,7 @@ parsetoken(char *w) |
| 301 | 301 |
return 0; |
| 302 | 302 |
} |
| 303 | 303 |
pushbyte((Sint8)(l->addr - p.ptr - 3), 1); |
| 304 |
- l->refs++; |
|
| 305 |
- return 1; |
|
| 304 |
+ return ++l->refs; |
|
| 306 | 305 |
} else if(w[0] == '=' && (l = findlabel(w + 1))) {
|
| 307 | 306 |
if(!findlabellen(w + 1) || findlabellen(w + 1) > 2) |
| 308 | 307 |
return error("Invalid store helper", w);
|
| ... | ... |
@@ -313,8 +312,7 @@ parsetoken(char *w) |
| 313 | 312 |
pushshort(findlabeladdr(w + 1), 1); |
| 314 | 313 |
pushbyte(findopcode(findlabellen(w + 1) == 2 ? "STR2" : "POK2"), 0); |
| 315 | 314 |
} |
| 316 |
- l->refs++; |
|
| 317 |
- return 1; |
|
| 315 |
+ return ++l->refs; |
|
| 318 | 316 |
} else if(w[0] == '~' && (l = findlabel(w + 1))) {
|
| 319 | 317 |
if(!findlabellen(w + 1) || findlabellen(w + 1) > 2) |
| 320 | 318 |
return error("Invalid load helper", w);
|
| ... | ... |
@@ -325,18 +323,15 @@ parsetoken(char *w) |
| 325 | 323 |
pushshort(findlabeladdr(w + 1), 1); |
| 326 | 324 |
pushbyte(findopcode(findlabellen(w + 1) == 2 ? "LDR2" : "PEK2"), 0); |
| 327 | 325 |
} |
| 328 |
- l->refs++; |
|
| 329 |
- return 1; |
|
| 330 |
- } else if((op = findopcode(w)) || scmp(w, "BRK", 4)) {
|
|
| 331 |
- pushbyte(op, 0); |
|
| 332 |
- return 1; |
|
| 326 |
+ return ++l->refs; |
|
| 333 | 327 |
} else if(w[0] == '.' && (l = findlabel(w + 1))) {
|
| 334 | 328 |
pushshort(findlabeladdr(w + 1), 0); |
| 335 |
- l->refs++; |
|
| 336 |
- return 1; |
|
| 329 |
+ return ++l->refs; |
|
| 337 | 330 |
} else if(w[0] == ',' && (l = findlabel(w + 1))) {
|
| 338 | 331 |
pushshort(findlabeladdr(w + 1), 1); |
| 339 |
- l->refs++; |
|
| 332 |
+ return ++l->refs; |
|
| 333 |
+ } else if((op = findopcode(w)) || scmp(w, "BRK", 4)) {
|
|
| 334 |
+ pushbyte(op, 0); |
|
| 340 | 335 |
return 1; |
| 341 | 336 |
} else if(w[0] == '#') {
|
| 342 | 337 |
if(slen(w + 1) == 1) |
| ... | ... |
@@ -425,9 +420,8 @@ pass2(FILE *f) |
| 425 | 420 |
scpy(w + 1, scope, 64); |
| 426 | 421 |
continue; |
| 427 | 422 |
} |
| 428 |
- if(w[1] == '$') {
|
|
| 423 |
+ if(w[1] == '$') |
|
| 429 | 424 |
scpy(sublabel(subw, scope, w + 2), w + 1, 64); |
| 430 |
- } |
|
| 431 | 425 |
if(skipblock(w, &cbits, '[', ']')) {
|
| 432 | 426 |
if(w[0] == '[' || w[0] == ']') { continue; }
|
| 433 | 427 |
if(slen(w) == 4 && sihx(w)) |
| ... | ... |
@@ -436,9 +430,8 @@ pass2(FILE *f) |
| 436 | 430 |
pushbyte(shex(w), 0); |
| 437 | 431 |
else |
| 438 | 432 |
pushtext(w, 0); |
| 439 |
- } else if(!parsetoken(w)) {
|
|
| 433 |
+ } else if(!parsetoken(w)) |
|
| 440 | 434 |
return error("Unknown label in second pass", w);
|
| 441 |
- } |
|
| 442 | 435 |
} |
| 443 | 436 |
return 1; |
| 444 | 437 |
} |
| ... | ... |
@@ -460,18 +453,12 @@ int |
| 460 | 453 |
main(int argc, char *argv[]) |
| 461 | 454 |
{
|
| 462 | 455 |
FILE *f; |
| 463 |
- if(argc < 3) {
|
|
| 464 |
- error("Input", "Missing");
|
|
| 465 |
- return 1; |
|
| 466 |
- } |
|
| 467 |
- if(!(f = fopen(argv[1], "r"))) {
|
|
| 468 |
- error("Open", "Failed");
|
|
| 469 |
- return 1; |
|
| 470 |
- } |
|
| 471 |
- if(!pass1(f) || !pass2(f)) {
|
|
| 472 |
- error("Assembly", "Failed");
|
|
| 473 |
- return 1; |
|
| 474 |
- } |
|
| 456 |
+ if(argc < 3) |
|
| 457 |
+ return !error("Input", "Missing");
|
|
| 458 |
+ if(!(f = fopen(argv[1], "r"))) |
|
| 459 |
+ return !error("Open", "Failed");
|
|
| 460 |
+ if(!pass1(f) || !pass2(f)) |
|
| 461 |
+ return !error("Assembly", "Failed");
|
|
| 475 | 462 |
fwrite(p.data + OFFSET, p.ptr - OFFSET, 1, fopen(argv[2], "wb")); |
| 476 | 463 |
fclose(f); |
| 477 | 464 |
cleanup(argv[2]); |