Files
Arquivotheca.SunOS-4.1.4/usr.etc/fpa/microassembler/main.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

105 lines
2.1 KiB
C

/* @(#)main.c 1.1 94/10/31 SMI */
/*
* Micro-assembler -- main driver
* main.c 1.1 31 May 1984
*/
#include "micro.h"
#include <stdio.h>
char * curfilename = "<stdin>";
short curaddr;
int curlineno;
Boolean dflag = False;
Boolean waserror = False;
Boolean Scanning = False;
NODE n[NNODE];
RAMNODE ram[NINST];
NODE *curnode = n-1;
main(argc, argv)
int argc;
char **argv;
{
int c;
char *ap;
FILE *bout_stream = NULL;
FILE *tbl_stream = NULL;
for (c=1; c<argc; c++) {
ap = argv[c];
if (ap[0] == '-') {
switch (ap[1]) {
case 'o':
if (freopen(argv[++c], "w", stdout) == NULL)
fatal("could not open file %s",argv[c]);
continue;
case 'b':
if ((bout_stream = fopen(argv[++c], "w")) == NULL)
fatal("could not open file %s",argv[c]);
continue;
case 'r':
if ((tbl_stream = fopen(argv[++c], "w")) == NULL)
fatal("could not open file %s",argv[c]);
continue;
default:
fatal("bad option %s", argv[c]);
}
} else {
curfilename = argv[c];
if (freopen(argv[c], "r", stdin) == NULL)
fatal("could not open file %s",argv[c]);
}
}
Scanning = True;
curaddr = 0;
init_symtab();
resw_hash(); /* hash keywords */
init_assm();
scanprog();
Scanning = False;
/* if (waserror) exit(1); */
resolve_addrs();
restrict(); /* rectriction checking */
output(bout_stream, tbl_stream);
if (waserror) exit(1);
exit(0);
/* NOTREACHED */
}
fatal(s, a)
char *s, *a;
{
if (Scanning) {
printf("File %s, line %d: %s\n", curfilename, curlineno, s);
}
printf(s, a);
printf("\n");
exit(1);
/*_cleanup();
abort();*/
}
error(s, a, b, c, d, e, f)
char *s;
{
if (Scanning) {
printf("File %s, line %d: ", curfilename, curlineno);
}
printf(s, a, b, c, d, e, f);
printf("\n");
waserror = True;
}
warn(s, a, b, c, d, e, f)
char *s;
{
printf("Warning:");
if ( Scanning) {
printf(" file %s, line %d: ", curfilename, curlineno);
}
printf(s, a, b, c, d, e, f);
printf("\n");
}