⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 new_mkconf.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
📖 第 1 页 / 共 3 页
字号:
	1, 2, -1,	"\t../ovsys/acct.o \\",	"main",	1, 2, -1,	"\t../ovsys/main.o \\",	"machdep",	1, 2, -1,	"\t../ovsys/machdep.o \\",	"sig",	1, 2, -1,	"\t../ovsys/sig.o \\",	"bio",	1, 2, -1,	"\t../ovdev/bio.o \\",/* *	overlay 3 * This overlay has the big disk drivers and the * disk sort routines. These drivers may not be * configured, but in any case this overlay will * get as much as possible of the overflow from * overlays 1 & 2. * * If all three disk drivers are configured (hp, hk, & hm) * this overlay would overflow, in that case "hm" is * changed to overlay 8 on the fly and loaded where ever it * will fit on the next pass. */	"hp",	0, 3, -1,	"\t../ovdev/hp.o \\",	"hk",	0, 3, -1,	"\t../ovdev/hk.o \\",	"hm",	0, 3, -1,	"\t../ovdev/hm.o \\",	"dsort",	0, 3, -1,	"\t../ovdev/dsort.o \\",	"dkleave",	0, 3, -1,	"\t../ovdev/dkleave.o \\",/* *	overlay 4 * Initially empty, will be filled in with * overflow from previous overlays. *//* *	overlay 5 * The overlay holds most of the tty drivers and * associated routines, not much room for fill. */	"tty",	1, 5, -1,	"\t../ovdev/tty.o \\",	"sys",	1, 5, -1,	"\t../ovdev/sys.o \\",	"kl",	1, 5, -1,	"\t../ovdev/kl.o \\",	"dz",	0, 5, -1,	"\t../ovdev/dz.o \\",	"dhdm",	0, 5, -1,	"\t../ovdev/dhdm.o \\",	"dh",	0, 5, -1,	"\t../ovdev/dh.o \\",	"dhfdm",	0, 5, -1,	"\t../ovdev/dhfdm.o \\",	"partab",	1, 5, -1,	"\t../ovdev/partab.o \\",	"prim",	1, 5, -1,	"\t../ovsys/prim.o \\",/* *	overlay 6 * Contains the packet driver stuff. * It could hold overflow from previous * overlays if necessary. */	"pk0",	0, 6, -1,	"\t../ovdev/pk0.o \\",	"pk1",	0, 6, -1,	"\t../ovdev/pk1.o \\",	"pk2",	0, 6, -1,	"\t../ovdev/pk2.o \\",	"pk3",	0, 6, -1,	"\t../ovdev/pk3.o \\",/* *	overlay 7 * Contains the multiplexed files stuff. * could also hold overflow. */	"mx1",	0, 7, -1,	"\t../ovdev/mx1.o \\",	"mx2",	0, 7, -1,	"\t../ovdev/mx2.o \\",/* *	overlay 8 * This is not a real overlay, all of the * modules here will be used to fill out * overlays 1 thru 7. * Contains the mem driver, the HM disk driver, * and the magtape drivers. */	"mem",	1, 8, -1,	"\t../ovdev/mem.o \\",	"ts",	0, 8, -1,	"\t../ovdev/ts.o \\",	"ht",	0, 8, -1,	"\t../ovdev/ht.o \\",	"tm",	0, 8, -1,	"\t../ovdev/tm.o \\",	"tc",	0, 8, -1,	"\t../ovdev/tc.o \\",/* *	overlay 9 * Again not a real overlay, used to fill others. * Contains all smaller disk drivers. */	"ml",	0, 9, -1,	"\t../ovdev/ml.o \\",	"hs",	0, 9, -1,	"\t../ovdev/hs.o \\",	"rp",	0, 9, -1,	"\t../ovdev/rp.o \\",	"rx2",	0, 9, -1,	"\t../ovdev/rx2.o \\",	"rl",	0, 9, -1,	"\t../ovdev/rl.o \\",	"rk",	0, 9, -1,	"\t../ovdev/rk.o \\",	"rf",	0, 9, -1,	"\t../ovdev/rf.o \\",/* *	overlay 10 * Also not a real overlay, used to fill others. * Contains LP driver and misc. comm. device drivers. */	"lp",	0, 10, -1,	"\t../ovdev/lp.o \\",	"du",	0, 10, -1,	"\t../ovdev/du.o \\",	"dn",	0, 10, -1,	"\t../ovdev/dn.o \\",	"dc",	0, 10, -1,	"\t../ovdev/dc.o \\",	"cat",	0, 10, -1,	"\t../ovdev/cat.o \\",	"vp",	0, 10, -1,	"\t../ovdev/vp.o \\",	"vs",	0, 10, -1,	"\t../ovdev/vs.o \\",	0};/* * The ovdtab is an array of structures which * describe the actual overlays as they will * appear in the "ovload" overlay load file. * The first structure (overlay 0) is never used. */struct	ovdes{	int	nentry;		/* number of modules in this overlay */	int	size;		/* total size of this overlay in bytes */	char	*omns[12];	/* pointers to module pathname strings */} ovdtab [8];char	*stra40[] ={	"/ low core",	"",	0};char	*stra70[] ={	"/ low core",	"",	".data",	0};char	*stra[] ={	"ZERO:",	"",	"br4 = 200",	"br5 = 240",	"br6 = 300",	"br7 = 340",	"",	". = ZERO+0",	"	br	1f",	"	4",	"",	"/ trap vectors",	"	trap; br7+0.		/ bus error",	"	trap; br7+1.		/ illegal instruction",	"	trap; br7+2.		/ bpt-trace trap",	"	trap; br7+3.		/ iot trap",	"	trap; br7+4.		/ power fail",	"	trap; br7+5.		/ emulator trap",	"	start;br7+6.		/ system  (overlaid by 'trap')",	"",	". = ZERO+40",	".globl	start, dump",	"1:	jmp	start",	"",	0,};char	*strb[] ={	"",	". = ZERO+240",	"	trap; br7+7.		/ programmed interrupt",	"	trap; br7+8.		/ floating point",	"	trap; br7+9.		/ segmentation violation",	0};char	*strc[] ={	"",	"/ floating vectors",	". = ZERO+300",	0,};char	*strov[] ={	"",	"/ overlay descriptor tables",	"",	".globl ova, ovd, ovend",	"ova:\t.=.+16.\t/ overlay addresses",	"ovd:\t.=.+16.\t/ overlay sizes",	"ovend:\t.=.+2\t/ end of overlays",	0};char	*sizcmd = {"size ../ovsys/*.o ../ovdev/*.o > text.sizes"};char	*cmcmd = {"chmod 744 ovload"};char	*strovh[] ={	"covld -X -n -o unix_ov l.o mch_ov.o c_ov.o \\",	0,};char	*strovl[] ={	"-L \\",	"\t../ovsys/LIB1_ov",	0,};char	*strovz[] ={	"-Z \\",	0,};char	*strd[] ={	"",	"//////////////////////////////////////////////////////",	"/		interface code to C",	"//////////////////////////////////////////////////////",	"",	".text",	".globl	call, trap",	0};char	*stre[] ={	"#include \"../h/param.h\"",	"#include \"../h/systm.h\"",	"#include \"../h/buf.h\"",	"#include \"../h/tty.h\"",	"#include \"../h/conf.h\"",	"#include \"../h/proc.h\"",	"#include \"../h/text.h\"",	"#include \"../h/dir.h\"",	"#include \"../h/user.h\"",	"#include \"../h/file.h\"",	"#include \"../h/inode.h\"",	"#include \"../h/acct.h\"",	"",	"int	nulldev();",	"int	nodev();",	0};char	*stre1[] ={	"struct	bdevsw	bdevsw[] =",	"{",	0,};char	*strf[] ={	"	0",	"};",	"",	0,};char	*strf1[] ={	"",	"struct	cdevsw	cdevsw[] =",	"{",	0,};char	strg[] ={"	0\n\};\n\int	rootdev	= makedev(%d, %d);\n\int	swapdev	= makedev(%d, %d);\n\int	pipedev = makedev(%d, %d);\n\int	nldisp = %d;\n\daddr_t	swplo	= %ld;\n\int	nswap	= %l;\n\"};char	strg1[] ={"	\n\struct	buf	buf[NBUF];\n\struct	file	file[NFILE];\n\struct	inode	inode[NINODE];\n"};char	*strg1a[] ={	"#ifdef\tMX",	"int	mpxchan();",	"int	(*ldmpx)() = mpxchan;",	"#endif\tMX",	0};char	strg2[] ={"struct	proc	proc[NPROC];\n\struct	text	text[NTEXT];\n\struct	buf	bfreelist;\n\struct	acct	acctbuf;\n\struct	inode	*acctp;\n"};char	*strg3[] ={	"",	"/*",	" * The following locations are used by commands",	" * like ps & pstat to free them from param.h",	" */",	"",	"int	nproc	NPROC;",	"int	ninode	NINODE;",	"int	ntext	NTEXT;",	"int	nofile	NOFILE;",	"int	nsig	NSIG;",	"int	nfile	NFILE;",	0};char	*strh[] ={	"	0",	"};",	"",	"int	ttyopen(), ttyclose(), ttread(), ttwrite(), ttyinput(), ttstart();",	0};char	*stri[] ={	"int	pkopen(), pkclose(), pkread(), pkwrite(), pkioctl(), pkrint(), pkxint();",	0};char	*strj[] ={	"struct	linesw	linesw[] =",	"{",	"	ttyopen, nulldev, ttread, ttwrite, nodev, ttyinput, ttstart, /* 0 */",	0};char	*strk[] ={	"	pkopen, pkclose, pkread, pkwrite, pkioctl, pkrint, pkxint, /* 1 */",	0};int	mpx;int	ov;int	nsid;int	nfp;int	dump;int	cdcsr;int	rootmaj = -1;int	rootmin;int	swapmaj = -1;int	swapmin;int	pipemaj = -1;int	pipemin;long	swplo	= 4000;int	nswap = 872;int	pack;int	nldisp = 1;char	trash[100];char	omn[20];char	mtsize[20];main(){	register struct tab *p;	struct	ovtab	*otp;	struct	ovdes	*ovdp;	register char *q;	char	*c;	int i, n, ev, nkl;	int flagf, flagb;	int dumpht, dumptm, dumpts;	int fi, ovcnt;	while(input());/* * pass1 -- create interrupt vectors */	fprintf(stderr, "\n");	if(ov)		fprintf(stderr, "(overlay kernel specified)\n");	if(ov && nsid)		fprintf(stderr, "(ov & nsid specified, nsid ignored)\n");	else if(nsid)		fprintf(stderr, "(non-separate I/D space CPU specified)\n");	if(nfp)		fprintf(stderr, "(floating point support excluded)\n");	nkl = 0;	flagf = flagb = 1;	freopen("l.s", "w", stdout);	if(!ov && !nsid)		puke(stra70);	else		puke(stra40);	puke(stra);	ev = 0;	for(p=table; p->name; p++)	if(p->count != 0 && p->key & INTR) {		if(p->address>240 && flagb) {			flagb = 0;			puke(strb);		}		if(p->address >= 300) {			if(flagf) {				ev = 0;				flagf = 0;				puke(strc);			}			if(p->key & EVEN && ev & 07) {				printf("	.=.+4\n");				ev += 4;			}			printf("/%s %o\n", p->name, 0300+ev);		} else			printf("\n. = ZERO+%d\n", p->address);		n = p->count;		if(n < 0)			n = -n;		for(i=0; i<n; i++) {			if(p->key & KL) {				printf(p->codea, nkl, nkl);				nkl++;			} else				printf(p->codea, i, i);			if (p->address<300) {				fprintf(stderr, "%s at %d", p->name, p->address+4*i);				if (equal(p->name, "ts"))					fprintf(stderr, "   (TS auto-config)");				fprintf(stderr, "\n");			} else				fprintf(stderr, "%s at %o\n", p->name, 0300+ev);			ev += p->address - 300;		}	}	if(flagb)		puke(strb);/* * TS11 auto vector select * * Text must not be allowed to start at * an address that is less than 0300. * The vector at 0260 must be initialized to * zero for the TS11 auto vector * select to function. * With the advent of v7m 2.0, text does not * ever start before 1000. */	printf("\n. = ZERO+1000\n");	printf("\n\tjmp\tdump\t/ jump to core dump code\n");	if(ov)		puke(strov);	puke(strd);	for(p=table; p->name; p++)	if(p->count != 0 && p->key & INTR)		printf("\n%s%s", p->codeb, p->codec);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -