mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 18:04:07 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
#include "stdio.h"
|
||||
/*
|
||||
* Changed to use the Standard I/O library 9/13/82 FZ
|
||||
*/
|
||||
#include "acom.h"
|
||||
|
||||
/*
|
||||
* Version Z.1, 4/5/83. Added external declarations of segflg and oflag.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Version 3.2, 5/27/82. Added uext (-u) switch.
|
||||
*/
|
||||
static char ident[] = "@(#)a.init.c 3.2";
|
||||
|
||||
extern char segflg;
|
||||
extern char oflag;
|
||||
|
||||
/*
|
||||
* badpre - Issues a fatal error for a bad PREDEF file.
|
||||
*/
|
||||
badpre() {
|
||||
|
||||
fprintf(ERROR,"PREDEF file error at line %u\n",infp->in_seq);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
* getdat - Gets the date and time and puts them into datstr.
|
||||
* Disabled in CP/M version.
|
||||
*/
|
||||
getdat() {
|
||||
}
|
||||
#define BinFile 1
|
||||
#define AscFile 0
|
||||
|
||||
extern char putfile[];
|
||||
extern char optfile[];
|
||||
/*
|
||||
* init - Performs assembler initialization.
|
||||
*/
|
||||
init(argc,argv) int argc; char *argv[]; {
|
||||
|
||||
char **av;
|
||||
char *ap;
|
||||
char *ep;
|
||||
char *sp;
|
||||
char fname[15];
|
||||
int fd;
|
||||
FILE *newfile();
|
||||
|
||||
phytop = phylim = sbrk(0); /* needed only for monitoring */
|
||||
getdat();
|
||||
prname = "asz8k";
|
||||
while((ap = *++argv) && ap!=-1) { /* read command line arguments */
|
||||
if(*ap == '-') { /* switches */
|
||||
while(*++ap) switch(*ap) {
|
||||
|
||||
case 'l':
|
||||
lflag = 1;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
oflag = 1;
|
||||
if ((**argv == '\0') || (*argv == NULL))
|
||||
{printf("called from case 'o'\n");
|
||||
usage();}
|
||||
strcpy(optfile,*++argv);
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
pflag = 1;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
segflg = 1;
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
uext = 1;
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
xflag = lflag = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("error case\n");
|
||||
usage();
|
||||
|
||||
}
|
||||
} else { /* file name */
|
||||
if(srcfile) {printf("srcfile != 0\n"); usage();}
|
||||
srcfile = ap;
|
||||
}
|
||||
}
|
||||
if(!srcfile) {printf("no srcfile\n"); usage();}
|
||||
if((sp = rindex(srcfile,'/')) == 0) sp = srcfile; else sp++;
|
||||
if(strlen(sp) > 14) sp[14] = '\0';
|
||||
strcpy(titl1,srcfile);
|
||||
strcpy(fname,sp);
|
||||
if((ep = rindex(fname,'.')) == 0)
|
||||
usage();
|
||||
else
|
||||
ep++;
|
||||
if( segflg ) { /* Prog name must end with "8ks". */
|
||||
if( strcmp (ep,"8ks") != 0) {
|
||||
printf("Segmented source file must end with '.8ks'\n");
|
||||
usage();
|
||||
}
|
||||
}
|
||||
else /* Prog name must end in "8kn". */
|
||||
if( strcmp (ep,"8kn") != 0) {
|
||||
printf("Nonsegmented source file must end with '.8kn'\n");
|
||||
usage();
|
||||
}
|
||||
if((fd = opena(srcfile,0)) == -1) {
|
||||
fprintf(ERROR,"Cannot open %s\n",srcfile);
|
||||
exit(1);
|
||||
}
|
||||
strcpy(ep,"obj"); OBJECT = newfile(fname,BinFile);
|
||||
strcpy(putfile,fname);
|
||||
if(lflag) {
|
||||
strcpy(ep,"lst"); LIST = newfile(fname,AscFile);
|
||||
}
|
||||
vinit();
|
||||
predef();
|
||||
}
|
||||
|
||||
/*
|
||||
* newfile - Creates a new file of the specified name,
|
||||
* and returns the file descriptor.
|
||||
*/
|
||||
FILE *
|
||||
newfile(s,asci) char *s; char asci; {
|
||||
|
||||
FILE *fd;
|
||||
|
||||
if((fd = _fopen(s,"w",asci)) == NULL) {
|
||||
fprintf(ERROR,"Cannot create %s\n",s);
|
||||
exit(1);
|
||||
}
|
||||
return(fd);
|
||||
}
|
||||
|
||||
/*
|
||||
* preget - Gets a token, issues a fatal error if it is not the specified
|
||||
* type, and returns the token's value.
|
||||
*/
|
||||
preget(typ) int typ; {
|
||||
|
||||
if(token() != typ) badpre();
|
||||
return(tokval);
|
||||
}
|
||||
|
||||
/*
|
||||
* usage - Issues a fatal error for an illegal command line.
|
||||
*/
|
||||
usage() {
|
||||
|
||||
fprintf(ERROR,"Usage: asz8k [-o outfile] [-luxs] file.8k{n|s}\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user