Subject: Utility to calculate DEC standard Vectors/CSRs (#376) Index: usr.sbin/sysgen 2.11BSD Description: Configuring a system's devices to the DEC standard addresses has been difficult due to the lack of a 'sysgen' utility. Repeat-By: N/A Fix: Tom Helbekkmo (tih@Mamartun.Priv.NO) contributed a 'sysgen' program recently. The manpage documentation is sketchy so the best documentation is the 'devices.h' include file. A sample sysgen run: barsoom% cat IN tsv05 dhv11 delqa tk50 rqdx3 kda50 barsoom% sysgen < IN TSV05: CSR 772520 vector 0224 DHV11: CSR 760500* vector 0310* DELQA: CSR 774440 vector 0120 TK50: CSR 774500 vector 0260 RQDX3: CSR 772150 vector 0154 KDA50: CSR 760334* vector 0300* To install the kit below cut where indicated saving to a file (/tmp/376) and then: cd /tmp sh 376 sh 376.shar patch -p0 < 376.patch cd /usr/src/usr.sbin/sysgen make make install make clean cd /tmp rm 376 376.patch 376.shar As always this and previous updates to 2.11BSD are available via anonymous FTP to either FTP.IIPO.GTEGSC.COM or MOE.2BSD.COM in the directory /pub/2.11BSD. ------------------------------cut here--------------------------- #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create: # 376.patch # 376.shar # This archive created: Sun Jun 29 14:27:21 1997 export PATH; PATH=/bin:/usr/bin:$PATH if test -f '376.patch' then echo shar: "will not over-write existing file '376.patch'" else sed 's/^X//' << \SHAR_EOF > '376.patch' X*** /usr/src/usr.sbin/Makefile.old Sun Dec 1 17:51:36 1996 X--- /usr/src/usr.sbin/Makefile Fri Jun 27 21:35:43 1997 X*************** X*** 1,7 **** X # X # Public domain - 1996/10/24 - sms X # X! # @(#)Makefile 1.1 (2.11BSD) 1996/11/13 X # X DESTDIR= X CFLAGS= -O X--- 1,7 ---- X # X # Public domain - 1996/10/24 - sms X # X! # @(#)Makefile 1.2 (2.11BSD) 1997/6/27 X # X DESTDIR= X CFLAGS= -O X*************** X*** 10,16 **** X SUBDIR= ac accton arff arp bad144 catman chown chroot config cron dev_mkdb \ X diskpart edquota flcopy gettable htable implog implogd inetd kgmon \ X lpr makewhatis mkhosts mklost+found mkproto named ntp pstat quot \ X! quotaon repquota rmt rwhod rxformat sa sendmail syslogd timed \ X traceroute trpt update vipw X X # This is broken and doesn't compile - thus it is not included in SUBDIR above. X--- 10,16 ---- X SUBDIR= ac accton arff arp bad144 catman chown chroot config cron dev_mkdb \ X diskpart edquota flcopy gettable htable implog implogd inetd kgmon \ X lpr makewhatis mkhosts mklost+found mkproto named ntp pstat quot \ X! quotaon repquota rmt rwhod rxformat sa sendmail sysgen syslogd timed \ X traceroute trpt update vipw X X # This is broken and doesn't compile - thus it is not included in SUBDIR above. X*** /VERSION.old Fri Jun 27 20:24:54 1997 X--- /VERSION Sun Jun 29 13:47:31 1997 X*************** X*** 1,5 **** X! Current Patch Level: 375 X! Date: June 27, 1997 X X 2.11 BSD X ============ X--- 1,5 ---- X! Current Patch Level: 376 X! Date: June 29, 1997 X X 2.11 BSD X ============ SHAR_EOF fi if test -f '376.shar' then echo shar: "will not over-write existing file '376.shar'" else sed 's/^X//' << \SHAR_EOF > '376.shar' X#! /bin/sh X# This is a shell archive, meaning: X# 1. Remove everything above the #! /bin/sh line. X# 2. Save the resulting text in a file. X# 3. Execute the file with /bin/sh (not csh) to create: X# /usr/src/usr.sbin/sysgen X# This archive created: Sun Jun 29 13:48:11 1997 Xexport PATH; PATH=/bin:/usr/bin:$PATH Xif test ! -d '/usr/src/usr.sbin/sysgen' Xthen X mkdir '/usr/src/usr.sbin/sysgen' Xfi Xcd '/usr/src/usr.sbin/sysgen' Xif test -f 'Makefile' Xthen X echo shar: "will not over-write existing file 'Makefile'" Xelse Xsed 's/^Z//' << \SHAR_EOF > 'Makefile' XZ# SYSGEN -- an imitation of the CONFIG command of VMS SYSGEN. XZ# XZ# $Id: Makefile,v 1.5 1997/06/08 12:35:38 tih Exp $ XZ XZPROG= sysgen XZCFLAGS = -O XZSEPFLAG= -i XZSRCS= sysgen.c XZOBJS= sysgen.o XZMAN= sysgen.0 XZ XZDISTFILES = Makefile sysgen.c devices.h sysgen.1 XZ XZ.SUFFIXES: .0 .1 XZ XZ.1.0: XZ /usr/man/manroff $*.1 > $@ XZ XZall: sysgen ${MAN} XZ XZsysgen: sysgen.o devices.h XZ cc ${CFLAGS} ${SEPFLAG} -o $@ ${OBJS} XZ XZinstall: sysgen sysgen.0 XZ install -c -s ${PROG} ${DESTDIR}/usr/sbin/${PROG} XZ install -m 444 ${MAN} ${DESTDIR}/usr/man/cat8/${MAN} XZ XZclean: XZ rm -f ${OBJS} ${MAN} ${PROG} tags XZ XZdepend: ${SRCS} XZ mkdep ${CFLAGS} ${SRCS} XZ XZlint: ${SRCS} XZ lint -hax ${SRCS} XZ XZtags: ${SRCS} XZ ctags ${SRCS} XZ# DO NOT DELETE THIS LINE -- mkdep uses it. XZ# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. XSHAR_EOF Xchmod 644 'Makefile' Xfi Xif test -f 'sysgen.c' Xthen X echo shar: "will not over-write existing file 'sysgen.c'" Xelse Xsed 's/^Z//' << \SHAR_EOF > 'sysgen.c' XZ/* XZ * SYSGEN -- an imitation of the CONFIG command of VMS SYSGEN. XZ * XZ * $Id: sysgen.c,v 1.9 1997/06/08 12:12:59 tih Exp $ XZ */ XZ XZ#include XZ#include XZ#include XZ#include XZ XZ#include "devices.h" XZ XZstruct userdev { XZ char username[DEVNAMLEN]; XZ char name[DEVNAMLEN]; XZ int vector; XZ long csr; XZ}; XZ XZstruct userdev usertab[MAXDEVS]; XZ XZ#define roundup(value,align) (value+align-1-((value+align-1)%align)) XZ XZint main(argc, argv) XZ int argc; XZ char **argv; XZ{ XZ int i, j, k, n; XZ int vecbase = VECBASE; XZ long csrbase = CSRBASE; XZ char userdev[DEVNAMLEN]; XZ char useralias[DEVNAMLEN]; XZ int userdevs = 0; XZ char inputline[BUFSIZ]; XZ char scanformat[32]; XZ XZ if (isatty(fileno(stdin))) { XZ fprintf(stderr, "Type device names one per line, optionally followed\n"); XZ fprintf(stderr, "by a comma and a repeat count. Finish with EOF.\n"); XZ } XZ XZ sprintf(scanformat, "%%%d[A-Za-z0-9],%%d", DEVNAMLEN - 1); XZ while (fgets(inputline, BUFSIZ, stdin)) { XZ for (i = 0; i < strlen(inputline); i++) XZ if (inputline[i] == '\n') XZ inputline[i] = '\0'; XZ else if (islower(inputline[i])) XZ inputline[i] = toupper(inputline[i]); XZ n = sscanf(inputline, scanformat, userdev, &k); XZ if (n == 0) XZ continue; XZ if (n == 1) XZ k = 1; XZ strcpy(useralias, userdev); XZ for (i = 0; i < ALIASTABLEN; i++) XZ if (!strcmp(aliastab[i].alias, userdev)) XZ strcpy(useralias, aliastab[i].name); XZ for (i = 0; i < DEVTABLEN; i++) XZ if (!strcmp(devtab[i].name, useralias)) XZ break; XZ if (i >= DEVTABLEN) { XZ fprintf(stderr, "sysgen: %s: unrecognized device name; ignored\n", XZ useralias); XZ continue; XZ } XZ while (k--) { XZ usertab[userdevs].vector = 0; XZ usertab[userdevs].csr = 0; XZ strcpy(usertab[userdevs].username, userdev); XZ strcpy(usertab[userdevs++].name, useralias); XZ } XZ } XZ XZ for (i = 0; i < DEVTABLEN; i++) { XZ if (devtab[i].csr == FLOAT) XZ csrbase = roundup(csrbase + CSRLEN, devtab[i].csralign); XZ for (j = 0; j < userdevs; j++) { XZ if ((!strcmp(devtab[i].name, usertab[j].name)) && XZ (usertab[j].csr == 0)) { XZ if ((devtab[i].vector == FLOAT) && (devtab[i].csr == FLOAT)) { XZ vecbase = roundup(vecbase, devtab[i].vecalign); XZ usertab[j].vector = vecbase; XZ vecbase = vecbase + devtab[i].numvecs * VECLEN; XZ usertab[j].csr = csrbase; XZ csrbase = roundup(csrbase + devtab[i].csralign, devtab[i].csralign); XZ continue; XZ } XZ if (devtab[i].vector == FLOAT) { XZ vecbase = roundup(vecbase, devtab[i].vecalign); XZ usertab[j].vector = vecbase; XZ vecbase = vecbase + devtab[i].numvecs * VECLEN; XZ } else { XZ usertab[j].vector = devtab[i].vector; XZ } XZ if (devtab[i].csr == FLOAT) { XZ usertab[j].csr = csrbase; XZ } else { XZ usertab[j].csr = devtab[i].csr; XZ } XZ break; XZ } XZ } XZ } XZ XZ for (i = 0; i < userdevs; i++) { XZ if (usertab[i].csr == 0) XZ fprintf(stderr, "sysgen: %s: too many units; ignored\n", XZ usertab[i].username); XZ } XZ XZ printf("Table of standard DEC assignments for configuration:\n\n"); XZ XZ printf(" DEVICE CSR VECTOR\n-------------------------\n"); XZ for (i = 0; i < userdevs; i++) { XZ if (usertab[i].csr == 0) XZ continue; XZ printf("%8s %06lo%c %04o%c\n", XZ usertab[i].username, XZ usertab[i].csr, (usertab[i].csr < 0764000) ? '*' : ' ', XZ usertab[i].vector, (usertab[i].vector < 0300) ? ' ' : '*'); XZ } XZ printf("\nCSRs and vectors marked '*' are in floating space.\n"); XZ XZ return 0; XZ} XZ XZ/* XZ * eof XZ */ XSHAR_EOF Xchmod 644 'sysgen.c' Xfi Xif test -f 'devices.h' Xthen X echo shar: "will not over-write existing file 'devices.h'" Xelse Xsed 's/^Z//' << \SHAR_EOF > 'devices.h' XZ/* XZ * SYSGEN -- an imitation of the CONFIG command of VMS SYSGEN. XZ * XZ * $Id: devices.h,v 1.4 1997/06/08 08:32:13 tih Exp $ XZ */ XZ XZ#define NA 0 /* identifies irrelevant alignments */ XZ#define FLOAT 0 /* identifies floating vectors or CSRs */ XZ XZ#define DEVNAMLEN 8 /* maximum length of a device name */ XZ#define MAXDEVS 64 /* max number of configuration devices */ XZ XZ#define VECLEN 4 /* address space footprint of a vector */ XZ#define CSRLEN 2 /* address space footprint of a register */ XZ XZ#define VECBASE 0300 /* floating vectors start with this one */ XZ#define CSRBASE 0760000L /* floating CSRs start _above_ this point */ XZ XZstruct device { XZ char *name; /* device name */ XZ int vector; /* fixed vector number or FLOAT */ XZ int numvecs; /* number of vectors used by device */ XZ int vecalign; /* alignment requirement for vector number */ XZ long csr; /* fixed csr address or FLOAT */ XZ int csralign; /* alignment requirement for csr address */ XZ}; XZ XZ/* sorted (prioritized) table of DEC Q22-bus or UNIBUS vectors and CSRs */ XZ XZstruct device devtab[] = { XZ { "CR11", 0230, 1, NA, 0777160, NA }, XZ { "RK611", 0210, 1, NA, 0777440, NA }, XZ { "LP11", 0200, 1, NA, 0777514, NA }, XZ { "LP11", 0170, 1, NA, 0764004, NA }, XZ { "LP11", 0174, 1, NA, 0764014, NA }, XZ { "LP11", 0270, 1, NA, 0764024, NA }, XZ { "LP11", 0274, 1, NA, 0764034, NA }, XZ { "RL11", 0160, 1, NA, 0774400, NA }, XZ { "TS11", 0224, 1, NA, 0772520, NA }, XZ { "RX211", 0264, 1, NA, 0777170, NA }, XZ { "RB730", 0250, 1, NA, 0775606, NA }, XZ { "UDA", 0154, 1, NA, 0772150, NA }, XZ { "TU81", 0260, 1, NA, 0774500, NA }, XZ { "UNA", 0120, 1, NA, 0774510, NA }, XZ { "QNA", 0120, 1, NA, 0774440, NA }, XZ { "DC11", FLOAT, 2, 8, 0774000, NA }, XZ { "DC11", FLOAT, 2, 8, 0774010, NA }, XZ { "DC11", FLOAT, 2, 8, 0774020, NA }, XZ { "DC11", FLOAT, 2, 8, 0774030, NA }, XZ { "DC11", FLOAT, 2, 8, 0774040, NA }, XZ { "DC11", FLOAT, 2, 8, 0774050, NA }, XZ { "DC11", FLOAT, 2, 8, 0774060, NA }, XZ { "DC11", FLOAT, 2, 8, 0774070, NA }, XZ { "DC11", FLOAT, 2, 8, 0774100, NA }, XZ { "DC11", FLOAT, 2, 8, 0774110, NA }, XZ { "DC11", FLOAT, 2, 8, 0774120, NA }, XZ { "DC11", FLOAT, 2, 8, 0774130, NA }, XZ { "DC11", FLOAT, 2, 8, 0774140, NA }, XZ { "DC11", FLOAT, 2, 8, 0774150, NA }, XZ { "DC11", FLOAT, 2, 8, 0774160, NA }, XZ { "DC11", FLOAT, 2, 8, 0774170, NA }, XZ { "DC11", FLOAT, 2, 8, 0774200, NA }, XZ { "DC11", FLOAT, 2, 8, 0774210, NA }, XZ { "DC11", FLOAT, 2, 8, 0774220, NA }, XZ { "DC11", FLOAT, 2, 8, 0774230, NA }, XZ { "DC11", FLOAT, 2, 8, 0774240, NA }, XZ { "DC11", FLOAT, 2, 8, 0774250, NA }, XZ { "DC11", FLOAT, 2, 8, 0774260, NA }, XZ { "DC11", FLOAT, 2, 8, 0774270, NA }, XZ { "DC11", FLOAT, 2, 8, 0774300, NA }, XZ { "DC11", FLOAT, 2, 8, 0774310, NA }, XZ { "DC11", FLOAT, 2, 8, 0774320, NA }, XZ { "DC11", FLOAT, 2, 8, 0774330, NA }, XZ { "DC11", FLOAT, 2, 8, 0774340, NA }, XZ { "DC11", FLOAT, 2, 8, 0774350, NA }, XZ { "DC11", FLOAT, 2, 8, 0774360, NA }, XZ { "DC11", FLOAT, 2, 8, 0774370, NA }, XZ { "TU58", FLOAT, 2, 8, 0776500, NA }, XZ { "TU58", FLOAT, 2, 8, 0776510, NA }, XZ { "TU58", FLOAT, 2, 8, 0776520, NA }, XZ { "TU58", FLOAT, 2, 8, 0776530, NA }, XZ { "TU58", FLOAT, 2, 8, 0776540, NA }, XZ { "TU58", FLOAT, 2, 8, 0776550, NA }, XZ { "TU58", FLOAT, 2, 8, 0776560, NA }, XZ { "TU58", FLOAT, 2, 8, 0776570, NA }, XZ { "TU58", FLOAT, 2, 8, 0776600, NA }, XZ { "TU58", FLOAT, 2, 8, 0776610, NA }, XZ { "TU58", FLOAT, 2, 8, 0776620, NA }, XZ { "TU58", FLOAT, 2, 8, 0776630, NA }, XZ { "TU58", FLOAT, 2, 8, 0776640, NA }, XZ { "TU58", FLOAT, 2, 8, 0776650, NA }, XZ { "TU58", FLOAT, 2, 8, 0776660, NA }, XZ { "TU58", FLOAT, 2, 8, 0776670, NA }, XZ { "DN11", FLOAT, 1, 4, 0775200, NA }, XZ { "DN11", FLOAT, 1, 4, 0775210, NA }, XZ { "DN11", FLOAT, 1, 4, 0775220, NA }, XZ { "DN11", FLOAT, 1, 4, 0775230, NA }, XZ { "DN11", FLOAT, 1, 4, 0775240, NA }, XZ { "DN11", FLOAT, 1, 4, 0775250, NA }, XZ { "DN11", FLOAT, 1, 4, 0775260, NA }, XZ { "DN11", FLOAT, 1, 4, 0775270, NA }, XZ { "DN11", FLOAT, 1, 4, 0775300, NA }, XZ { "DN11", FLOAT, 1, 4, 0775310, NA }, XZ { "DN11", FLOAT, 1, 4, 0775320, NA }, XZ { "DN11", FLOAT, 1, 4, 0775330, NA }, XZ { "DN11", FLOAT, 1, 4, 0775340, NA }, XZ { "DN11", FLOAT, 1, 4, 0775350, NA }, XZ { "DN11", FLOAT, 1, 4, 0775360, NA }, XZ { "DN11", FLOAT, 1, 4, 0775370, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770500, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770510, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770520, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770530, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770540, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770550, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770560, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770570, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770600, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770610, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770620, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770630, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770640, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770650, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770660, NA }, XZ { "DM11B", FLOAT, 1, 4, 0770670, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767600, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767570, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767560, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767550, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767540, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767530, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767520, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767510, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767500, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767470, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767460, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767450, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767440, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767430, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767420, NA }, XZ { "DR11C", FLOAT, 2, 8, 0767410, NA }, XZ { "PR611", FLOAT, 1, 8, 0772600, NA }, XZ { "PR611", FLOAT, 1, 8, 0772604, NA }, XZ { "PR611", FLOAT, 1, 8, 0772610, NA }, XZ { "PR611", FLOAT, 1, 8, 0772614, NA }, XZ { "PR611", FLOAT, 1, 8, 0772620, NA }, XZ { "PR611", FLOAT, 1, 8, 0772624, NA }, XZ { "PR611", FLOAT, 1, 8, 0772630, NA }, XZ { "PR611", FLOAT, 1, 8, 0772634, NA }, XZ { "PP611", FLOAT, 1, 8, 0772700, NA }, XZ { "PP611", FLOAT, 1, 8, 0772704, NA }, XZ { "PP611", FLOAT, 1, 8, 0772710, NA }, XZ { "PP611", FLOAT, 1, 8, 0772714, NA }, XZ { "PP611", FLOAT, 1, 8, 0772720, NA }, XZ { "PP611", FLOAT, 1, 8, 0772724, NA }, XZ { "PP611", FLOAT, 1, 8, 0772730, NA }, XZ { "PP611", FLOAT, 1, 8, 0772734, NA }, XZ { "DT11", FLOAT, 2, 8, 0777420, NA }, XZ { "DT11", FLOAT, 2, 8, 0777422, NA }, XZ { "DT11", FLOAT, 2, 8, 0777424, NA }, XZ { "DT11", FLOAT, 2, 8, 0777426, NA }, XZ { "DT11", FLOAT, 2, 8, 0777430, NA }, XZ { "DT11", FLOAT, 2, 8, 0777432, NA }, XZ { "DT11", FLOAT, 2, 8, 0777434, NA }, XZ { "DT11", FLOAT, 2, 8, 0777436, NA }, XZ { "DX11", FLOAT, 2, 8, 0776200, NA }, XZ { "DX11", FLOAT, 2, 8, 0776240, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775610, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775620, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775630, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775640, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775650, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775660, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775670, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775700, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775710, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775720, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775730, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775740, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775750, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775760, NA }, XZ { "DL11C", FLOAT, 2, 8, 0775770, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776000, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776010, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776020, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776030, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776040, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776050, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776060, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776070, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776100, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776110, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776120, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776130, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776140, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776150, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776160, NA }, XZ { "DL11C", FLOAT, 2, 8, 0776170, NA }, XZ { "DJ11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "DH11", FLOAT, 2, 8, FLOAT, 16 }, XZ { "GT40", FLOAT, 4, 8, 0772000, NA }, XZ { "GT40", FLOAT, 4, 8, 0772010, NA }, XZ { "LPS11", FLOAT, 6, 8, 0770400, NA }, XZ { "DQ11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "KW11W", FLOAT, 2, 8, 0772400, NA }, XZ { "DU11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "DV11", FLOAT, 3, 8, 0775000, NA }, XZ { "DV11", FLOAT, 3, 8, 0775040, NA }, XZ { "DV11", FLOAT, 3, 8, 0775100, NA }, XZ { "DV11", FLOAT, 3, 8, 0775140, NA }, XZ { "LK11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "DMC11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "DZ11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "KMC11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "LPP11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "VMV21", FLOAT, 2, 8, FLOAT, 8 }, XZ { "VMV31", FLOAT, 2, 8, FLOAT, 16 }, XZ { "DWR70", FLOAT, 2, 8, FLOAT, 8 }, XZ { "RL11", FLOAT, 1, 4, FLOAT, 8 }, XZ { "TS11", FLOAT, 1, 4, 0772524, NA }, XZ { "TS11", FLOAT, 1, 4, 0772530, NA }, XZ { "TS11", FLOAT, 1, 4, 0772534, NA }, XZ { "LPA11", FLOAT, 2, 8, 0770460, NA }, XZ { "LPA11", FLOAT, 2, 8, FLOAT, 16 }, XZ { "KW11C", FLOAT, 2, 8, FLOAT, 8 }, XZ { "?????", FLOAT, 0, NA, FLOAT, 8 }, /* missing in VMS docs */ XZ { "RX211", FLOAT, 1, 4, FLOAT, 8 }, XZ { "DR11W", FLOAT, 1, 4, FLOAT, 8 }, XZ { "DR11B", 0124, 1, NA, 0772410, NA }, XZ { "DR11B", FLOAT, 1, 4, 0772430, NA }, XZ { "DR11B", FLOAT, 1, 4, FLOAT, 8 }, XZ { "DMP11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "DPV11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "ISB11", FLOAT, 2, 8, FLOAT, 8 }, XZ { "DMV11", FLOAT, 2, 8, FLOAT, 16 }, XZ { "UNA", FLOAT, 1, 4, FLOAT, 8 }, XZ { "QNA", FLOAT, 1, 4, 0774460, NA }, XZ { "UDA", FLOAT, 1, 4, FLOAT, 4 }, XZ { "?????", FLOAT, 0, NA, FLOAT, 32 }, /* missing in VMS docs */ XZ { "KMS11", FLOAT, 3, 8, FLOAT, 16 }, XZ { "PCL11", FLOAT, 2, 8, 0764200, NA }, XZ { "PCL11", FLOAT, 2, 8, 0764240, NA }, XZ { "PCL11", FLOAT, 2, 8, 0764300, NA }, XZ { "PCL11", FLOAT, 2, 8, 0764340, NA }, XZ { "VS100", FLOAT, 1, 4, FLOAT, 16 }, XZ { "TU81", FLOAT, 1, 4, FLOAT, 4 }, XZ { "KMV11", FLOAT, 2, 8, FLOAT, 16 }, XZ { "KCT32", FLOAT, 2, 8, 0764400, NA }, XZ { "KCT32", FLOAT, 2, 8, 0764440, NA }, XZ { "KCT32", FLOAT, 2, 8, 0764500, NA }, XZ { "KCT32", FLOAT, 2, 8, 0764540, NA }, XZ { "IEQ11", FLOAT, 2, 8, 0764100, NA }, XZ { "DHV11", FLOAT, 2, 8, FLOAT, 16 }, XZ { "?????", FLOAT, 0, NA, FLOAT, 64 }, /* missing in VMS docs */ XZ { "TC11", 0214, 1, NA, 0777340, NA }, XZ { "VCB01", FLOAT, 2, 1, 0777200, NA }, XZ { "VCB01", FLOAT, 2, 1, FLOAT, 64 }, XZ { "LNV11", FLOAT, 1, 4, 0776200, NA }, XZ { "LNV21", FLOAT, 1, 4, FLOAT, 16 }, XZ { "QTA", FLOAT, 1, 4, 0772570, NA }, XZ { "QTA", FLOAT, 1, 4, FLOAT, 8 }, XZ { "DSV11", FLOAT, 1, 4, FLOAT, 8 }, XZ { "?????", FLOAT, 0, NA, FLOAT, 8 }, /* missing in VMS docs */ XZ { "ADV11C", FLOAT, 2, 8, FLOAT, 8 }, XZ { "AAV11", FLOAT, 0, NA, 0770440, NA }, XZ { "AAV11C", FLOAT, 0, NA, FLOAT, 8 }, XZ { "AXV11C", 0140, 2, NA, 0776400, NA }, XZ { "AXV11C", FLOAT, 2, 8, FLOAT, 8 }, XZ { "KWV11C", FLOAT, 2, 8, 0770420, NA }, XZ { "KWV11C", FLOAT, 2, 8, FLOAT, 4 }, XZ { "ADV11D", FLOAT, 2, 8, 0776410, NA }, XZ { "ADV11D", FLOAT, 2, 8, FLOAT, 8 }, /* VMS docs: CSR align 4 */ XZ { "AAV11D", FLOAT, 2, 8, 0776420, NA }, XZ { "AAV11D", FLOAT, 2, 8, FLOAT, 8 }, /* VMS docs: CSR align 4 */ XZ { "VCB02", FLOAT, 3, 16, 0777400, NA }, XZ { "VCB02", FLOAT, 3, 16, 0777402, NA }, XZ { "VCB02", FLOAT, 3, 16, 0777404, NA }, XZ { "VCB02", FLOAT, 3, 16, 0777406, NA }, XZ { "VCB02", FLOAT, 3, 16, 0777410, NA }, XZ { "VCB02", FLOAT, 3, 16, 0777412, NA }, XZ { "VCB02", FLOAT, 3, 16, 0777414, NA }, XZ { "VCB02", FLOAT, 3, 16, 0777416, NA }, XZ { "DRV11J", FLOAT, 16, 4, 0764160, NA }, XZ { "DRV11J", FLOAT, 16, 4, 0764140, NA }, XZ { "DRV11J", FLOAT, 16, 4, 0764120, NA }, XZ { "DRQ3B", FLOAT, 2, 8, FLOAT, 16 }, XZ { "VSV24", FLOAT, 1, 4, FLOAT, 8 }, XZ { "VSV21", FLOAT, 1, 4, FLOAT, 8 }, XZ { "IBQ01", FLOAT, 1, 4, FLOAT, 8 }, XZ { "?????", FLOAT, 0, NA, FLOAT, 8 }, /* missing in VMS docs */ XZ { "?????", FLOAT, 0, NA, FLOAT, 8 }, /* missing in VMS docs */ XZ { "?????", FLOAT, 0, NA, FLOAT, 8 }, /* missing in VMS docs */ XZ { "?????", FLOAT, 0, NA, FLOAT, 8 }, /* missing in VMS docs */ XZ { "?????", FLOAT, 0, NA, FLOAT, 8 }, /* missing in VMS docs */ XZ { "?????", FLOAT, 0, NA, FLOAT, 8 }, /* missing in VMS docs */ XZ { "MIRA", FLOAT, 2, 8, FLOAT, 8 }, XZ { "IEQ11", FLOAT, 2, 8, FLOAT, 16 }, XZ { "ADQ32", FLOAT, 2, 8, FLOAT, 32 }, XZ { "DTC04", FLOAT, 2, 8, FLOAT, 2 }, XZ { "DESNA", FLOAT, 1, 4, FLOAT, 32 }, XZ { "IGQ11", FLOAT, 2, 8, FLOAT, 4 }, XZ { "KMV1F", FLOAT, 2, 8, FLOAT, 32 }, XZ { "DIV32", FLOAT, 1, 8, FLOAT, 8 }, /* VMS docs: CSR align 4 */ XZ { "DTCN5", FLOAT, 2, 8, FLOAT, 4 }, XZ { "DTCO5", FLOAT, 2, 8, FLOAT, 4 }, XZ { "KWV32", FLOAT, 2, 8, FLOAT, 8 }, XZ { "QZA", FLOAT, 1, 4, FLOAT, 64 } XZ}; XZ XZ#define DEVTABLEN (sizeof(devtab) / sizeof(struct device)) XZ XZstruct aliastable { XZ char *alias; XZ char *name; XZ}; XZ XZ/* table of device names translations to aid lookup in the above table */ XZ XZstruct aliastable aliastab[] = { XZ { "DEQNA", "QNA" }, XZ { "DELQA", "QNA" }, XZ { "TMSCP", "TU81" }, XZ { "TK50", "TU81" }, XZ { "TK70", "TU81" }, XZ { "MSCP", "UDA" }, XZ { "RQDX", "UDA" }, XZ { "RQDX2", "UDA" }, XZ { "RQDX3", "UDA" }, XZ { "KDA50", "UDA" }, XZ { "TSV05", "TS11" } XZ}; XZ XZ#define ALIASTABLEN (sizeof(aliastab) / sizeof(struct aliastable)) XZ XZ/* XZ * eof XZ */ XSHAR_EOF Xchmod 644 'devices.h' Xfi Xif test -f 'sysgen.1' Xthen X echo shar: "will not over-write existing file 'sysgen.1'" Xelse Xsed 's/^Z//' << \SHAR_EOF > 'sysgen.1' XZ.\" SYSGEN -- an imitation of the CONFIG command of VMS SYSGEN. XZ.\" XZ.\" $Id: sysgen.1,v 1.5 1997/06/08 12:11:49 tih Exp $ XZ.\" XZ.TH SYSGEN 1 "June 8, 1997" XZ.SH NAME XZsysgen \- assign DEC standard CSR and vector addresses XZ.SH SYNOPSIS XZ.B sysgen XZ.SH DESCRIPTION XZThis filter reads DEC Qbus or UNIBUS device names from standard input, XZassigns CSR addresses and interrupt vectors to the devices according XZto the DEC standard algorithm for auto-configuration, and prints the XZresulting list of allocations to standard output. XZ.PP XZFloating CSRs and vectors are identified by a trailing asterisk. XZ.PP XZ.SH COMPATIBILITY XZThe program attempts to conform to the CONFIG command of the VMS XZSYSGEN program, but has simplified output. Specifically, it does XZnot print information about VMS device naming and support. XZ.SH BUGS XZMore device type aliases should be recognized. There should be a ``help'' XZcommand to list known devices so that cat'ing the \fIdevices.h\fP file XZis not necessary. XZ.\" XZ.\" eof XZ.\" XSHAR_EOF Xchmod 644 'sysgen.1' Xfi Xchmod 755 . Xcd .. Xexit 0 X# End of shell archive SHAR_EOF fi exit 0 # End of shell archive