|
|
Power 6/32 Unix version 1.2b
static char sccsid[] = "@(#)init.c 2.9";
#include "cdb.h"
#include "macdefs.h"
char *strrchr();
export pFDR vrgFd; /* file descriptors */
export int vifdMac, vifd, vifdNil, vifdTemp;
export pPDR vrgPd; /* procedure descriptors */
export int vipdMac, vipd;
export ADRT vadrStart; /* AFTER initialization, BEFORE user's code */
export ADRT vadrMain; /* same as vadrStart for C, different for Pascal */
static MODER amode;
export pMODER vmode;
/* I N I T A L L */
local void InitAll()
{
/* setup the default display record */
vmode = &amode;
vmode->cnt = 1;
vmode->len = CBINT;
vmode->df = dfDecimal;
vmode->imap = 0;
vimap = 0; /* kludgey alternate map selector */
/* break point table stuff */
vibpTemp = 0; /* we use as a stash for commands of temp bp's */
vibpMac = 1; /* we never explicitly assign to 0 */
vrgBp = (pBPR) malloc(vibpMax*cbBPR); /* allocate bp table */
vcbTot += vibpMax * cbBPR;
/* random things */
vcaseMod = 040; /* start out with case INsensitive searches */
vdot = 0;
vfRecord = false;
vfnDecl = fnNil; /* the declarations file */
#ifdef ONYX
vcBadMax = 12; /* obscure - see IbpFSingle code in single.c */
#endif
#ifdef M68000
vcBadMax = 12; /* obscure - see IbpFSingle code in single.c */
#endif
#ifdef SUN
vcBadMax = 12; /* obscure - see IbpFSingle code in single.c */
#endif
#ifdef TAHOE
vcBadMax = 10; /* obscure - see IbpFSingle code in single.c */
#endif
#ifdef VAX
vcBadMax = 1000; /* obscure - see IbpFSingle code in single.c */
#endif
InitSymfile(vsbSymfile);
#ifdef BSD41
InitSs();
#endif
InitCorefile(vsbCorefile);
InitTy(); /* variable typing stuff */
InitFdPd(); /* setup symbol stuff */
InitSpc(); /* init special (debugger resident) variables */
InitSa(); /* set default signal handling */
InitAssert(); /* assertions table */
/* now this one is weird. If there IS a core file, you can look in
* u.u_ar0 and you will find, at least on the Onyx, 03742. But
* if you do NOT have a core file, and you need this for doing
* accesses into the live child process, how the hell are you
* going to find out??? I don't know!
*/
v_ar0 = adrReg0; /* from macdefs.h */
if (vfnCore != fnNil) {
GetState(); /* to make process globals be correct */
#ifdef ONYX
vpc -= 2; /* so we have true address of error */
#endif
} /* if */
#ifdef BSD41
vadrStart = AdrFLabel("program");
vadrMain = AdrFLabel("main");
if (vadrStart != adrNil) {
/* looks like Pascal */
OpenIpd(IpdFName("program"), true);
if (!vfPascal)
vadrStart = adrNil; /* filename did NOT end with '.p' */
else if (vadrMain == adrNil)
vadrMain = vadrStart;
}
if (vadrStart == adrNil) {
if (vadrMain != adrNil) {
/* not a Pascal program, maybe C? */
OpenIpd(IpdFName("main"), true);
}
else {
Panic("It's not C, it's not Pascal - what is it????");
}
}
#else
OpenIpd(IpdFName("main"), true);
#endif
vadrStart = AdrFIfdLn(vifd, viln);
#ifdef VAX
vadrBreak = AdrFLabel("vadrBreak");
vadrCall = AdrFLabel("vadrCall");
#endif
#ifdef TAHOE
vadrBreak = AdrFLabel("vadrBreak");
vadrCall = AdrFLabel("vadrCall");
#else
vadrBreak = AdrFLabel("_end_");
#endif
} /* InitAll */
/* M I N */
export int Min(x, y)
int x, y;
{
return((x<y) ? x : y);
} /* Min */
/* M A X */
export int Max(x, y)
int x, y;
{
return((x>y) ? x : y);
} /* Max */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.