?? new_mkconf.c
字號:
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 + -