int list_fd; // File to write listing to
int regbank; // RISC register bank
int segpadsize; // Segment padding size
-int in_main; // In main memory flag for GPUMAIN
+//int in_main; // In main memory flag for GPUMAIN
int endian; // Host processor endianess
char * objfname; // Object filename pointer
char * firstfname; // First source filename
{
char * p;
- if (amount & 1) // Keep word alignment
- ++amount;
+// if (amount & 1) // Keep word alignment
+// amount++;
+ amount = (amount + 1) & ~(0x01); // Keep word alignment
+ // Honor *small* request (< 64 bytes)
if (amount < A_THRESH)
- { // Honor *small* request
+ {
if (a_amount < amount)
{
- a_ptr = amem(A_AMOUNT);
+ a_ptr = amem(A_AMOUNT); // Allocate 4K bytes
a_amount = A_AMOUNT;
}
}
else
{
- amemtot += amount; // Bump total alloc
- p = (char *)malloc(amount); // Get memory from malloc
+ amemtot += amount; // Bump total alloc
+ p = (char *)malloc(amount); // Get memory from malloc
- if ((LONG)p == (LONG)NULL)
- fatal("memory exhausted");
+ if (p == NULL)
+ fatal("Memory exhausted!");
memset(p, 0, amount);
}
orgwarning = 0; // No ORG warning issued
a_amount = 0;
segpadsize = 2; // Initialise segment padding size
- in_main = 0;
+// in_main = 0;
// Initialise modules
- init_sym(); // Symbol table
+ InitSymbolTable(); // Symbol table
init_token(); // Tokenizer
init_procln(); // Line processor
init_expr(); // Expression analyzer
init_sect(); // Section manager / code generator
init_mark(); // Mark tape-recorder
- init_macro(); // Macro processor
+ InitMacro(); // Macro processor
init_list(); // Listing generator
// Process command line arguments and assemble source files
- for(argno = 0; argno < argc; ++argno)
+ for(argno=0; argno<argc; ++argno)
{
if (*argv[argno] == '-')
{
if (sy == NULL)
{
- sy = newsym(argv[argno] + 2, LABEL, 0);
+ sy = NewSymbol(argv[argno] + 2, LABEL, 0);
sy->svalue = 0;
}
break;
default:
printf("-f: unknown object format specified\n");
- ++errcnt;
+ errcnt++;
return errcnt;
}
break;
list_fname = argv[argno] + 2;
listing = 1;
list_flag = 1;
- ++lnsave;
+ lnsave++;
break;
case 'o': // Direct object file output
case 'O':
if (++argno >= argc)
{
printf("Missing argument to -o");
- ++errcnt;
+ errcnt++;
return errcnt;
}
objfname = argv[argno];
firstfname = defname;
include(0, "(stdin)");
- assemble();
+ Assemble();
break;
case 'h': // Display command line usage
case 'H':
case '?':
display_version();
display_help();
- ++errcnt;
+ errcnt++;
break;
default:
display_version();
printf("Unknown switch: %s\n\n", argv[argno]);
display_help();
- ++errcnt;
+ errcnt++;
break;
}
}
if (fd < 0)
{
printf("Cannot open: %s\n", fnbuf);
- ++errcnt;
+ errcnt++;
continue;
}
include(fd, fnbuf);
- assemble();
+ Assemble();
}
}
// (`lo68' format, extended (postfix) format....)
// (2) generate the output file image and symbol table;
// (3) generate relocation information from left-over fixups.
- fixups(); // Do all fixups
- stopmark(); // Stop mark tape-recorder
+ ResolveAllFixups(); // Do all fixups
+ stopmark(); // Stop mark tape-recorder
if (errcnt == 0)
{