File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / usr / src / bin / cdb / init.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v12b, v121, HEAD
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 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.