*BSD News Article 98849


Return to BSD News archive

Newsgroups: comp.bugs.2bsd
Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.edu.au!cs.mu.OZ.AU!munnari.OZ.AU!news.Hawaii.Edu!news.caldera.com!enews.sgi.com!news.sgi.com!news-west.sprintlink.net!news-peer.sprintlink.net!news.sprintlink.net!Sprint!news.maxwell.syr.edu!news.new-york.net!wlbr!moe.2bsd.com!sms
From: sms@moe.2bsd.com (Steven M. Schultz)
Subject: Utility to calculate DEC standard Vectors/CSRs (#376)
Organization: 2BSD, Simi Valley CA USA
Message-ID: <ECK3y7.Mo7@moe.2bsd.com>
Date: Sun, 29 Jun 1997 21:34:54 GMT
Lines: 712
Xref: euryale.cc.adfa.oz.au comp.bugs.2bsd:807

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 <stdio.h>
XZ#include <unistd.h>
XZ#include <string.h>
XZ#include <ctype.h>
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