| ... | ... |
@@ -30,7 +30,7 @@ typedef struct {
|
| 30 | 30 |
|
| 31 | 31 |
typedef struct {
|
| 32 | 32 |
Uint8 data[256 * 256], llen, mlen; |
| 33 |
- Uint16 ptr; |
|
| 33 |
+ Uint16 ptr, length; |
|
| 34 | 34 |
Label labels[256]; |
| 35 | 35 |
Macro macros[256]; |
| 36 | 36 |
} Program; |
| ... | ... |
@@ -64,6 +64,7 @@ pushbyte(Uint8 b, int lit) |
| 64 | 64 |
{
|
| 65 | 65 |
if(lit) pushbyte(0x01, 0); |
| 66 | 66 |
p.data[p.ptr++] = b; |
| 67 |
+ p.length = p.ptr; |
|
| 67 | 68 |
} |
| 68 | 69 |
|
| 69 | 70 |
void |
| ... | ... |
@@ -338,7 +339,7 @@ void |
| 338 | 339 |
cleanup(char *filename) |
| 339 | 340 |
{
|
| 340 | 341 |
int i; |
| 341 |
- printf("Assembled %s(%d bytes), %d labels, %d macros.\n\n", filename, (p.ptr - TRIM), p.llen, p.mlen);
|
|
| 342 |
+ printf("Assembled %s(%d bytes), %d labels, %d macros.\n\n", filename, (p.length - TRIM), p.llen, p.mlen);
|
|
| 342 | 343 |
for(i = 0; i < p.llen; ++i) |
| 343 | 344 |
if(!p.labels[i].refs) |
| 344 | 345 |
printf("--- Unused label: %s\n", p.labels[i].name);
|
| ... | ... |
@@ -357,7 +358,7 @@ main(int argc, char *argv[]) |
| 357 | 358 |
return !error("Open", "Failed");
|
| 358 | 359 |
if(!pass1(f) || !pass2(f)) |
| 359 | 360 |
return !error("Assembly", "Failed");
|
| 360 |
- fwrite(p.data + TRIM, p.ptr - TRIM, 1, fopen(argv[2], "wb")); |
|
| 361 |
+ fwrite(p.data + TRIM, p.length - TRIM, 1, fopen(argv[2], "wb")); |
|
| 361 | 362 |
fclose(f); |
| 362 | 363 |
cleanup(argv[2]); |
| 363 | 364 |
return 0; |