2.11BSD/src/usr.sbin/sysgen/devices.h

/*
 *	SYSGEN -- an imitation of the CONFIG command of VMS SYSGEN.
 *
 *	$Id: devices.h,v 1.4 1997/06/08 08:32:13 tih Exp $
 */

#define NA 0			/* identifies irrelevant alignments */
#define FLOAT 0			/* identifies floating vectors or CSRs */

#define DEVNAMLEN 8		/* maximum length of a device name */
#define MAXDEVS 64		/* max number of configuration devices */

#define VECLEN 4		/* address space footprint of a vector */
#define CSRLEN 2		/* address space footprint of a register */

#define VECBASE 0300		/* floating vectors start with this one */
#define CSRBASE 0760000L	/* floating CSRs start _above_ this point */

struct device {
  char *name;			/* device name */
  int vector;			/* fixed vector number or FLOAT */
  int numvecs;			/* number of vectors used by device */
  int vecalign;			/* alignment requirement for vector number */
  long csr;			/* fixed csr address or FLOAT */
  int csralign;			/* alignment requirement for csr address */
};

/* sorted (prioritized) table of DEC Q22-bus or UNIBUS vectors and CSRs */

struct device devtab[] = {
  { "CR11",    0230,  1, NA, 0777160, NA },
  { "RK611",   0210,  1, NA, 0777440, NA },
  { "LP11",    0200,  1, NA, 0777514, NA },
  { "LP11",    0170,  1, NA, 0764004, NA },
  { "LP11",    0174,  1, NA, 0764014, NA },
  { "LP11",    0270,  1, NA, 0764024, NA },
  { "LP11",    0274,  1, NA, 0764034, NA },
  { "RL11",    0160,  1, NA, 0774400, NA },
  { "TS11",    0224,  1, NA, 0772520, NA },
  { "RX211",   0264,  1, NA, 0777170, NA },
  { "RB730",   0250,  1, NA, 0775606, NA },
  { "UDA",     0154,  1, NA, 0772150, NA },
  { "TU81",    0260,  1, NA, 0774500, NA },
  { "UNA",     0120,  1, NA, 0774510, NA },
  { "QNA",     0120,  1, NA, 0774440, NA },
  { "DC11",   FLOAT,  2,  8, 0774000, NA },
  { "DC11",   FLOAT,  2,  8, 0774010, NA },
  { "DC11",   FLOAT,  2,  8, 0774020, NA },
  { "DC11",   FLOAT,  2,  8, 0774030, NA },
  { "DC11",   FLOAT,  2,  8, 0774040, NA },
  { "DC11",   FLOAT,  2,  8, 0774050, NA },
  { "DC11",   FLOAT,  2,  8, 0774060, NA },
  { "DC11",   FLOAT,  2,  8, 0774070, NA },
  { "DC11",   FLOAT,  2,  8, 0774100, NA },
  { "DC11",   FLOAT,  2,  8, 0774110, NA },
  { "DC11",   FLOAT,  2,  8, 0774120, NA },
  { "DC11",   FLOAT,  2,  8, 0774130, NA },
  { "DC11",   FLOAT,  2,  8, 0774140, NA },
  { "DC11",   FLOAT,  2,  8, 0774150, NA },
  { "DC11",   FLOAT,  2,  8, 0774160, NA },
  { "DC11",   FLOAT,  2,  8, 0774170, NA },
  { "DC11",   FLOAT,  2,  8, 0774200, NA },
  { "DC11",   FLOAT,  2,  8, 0774210, NA },
  { "DC11",   FLOAT,  2,  8, 0774220, NA },
  { "DC11",   FLOAT,  2,  8, 0774230, NA },
  { "DC11",   FLOAT,  2,  8, 0774240, NA },
  { "DC11",   FLOAT,  2,  8, 0774250, NA },
  { "DC11",   FLOAT,  2,  8, 0774260, NA },
  { "DC11",   FLOAT,  2,  8, 0774270, NA },
  { "DC11",   FLOAT,  2,  8, 0774300, NA },
  { "DC11",   FLOAT,  2,  8, 0774310, NA },
  { "DC11",   FLOAT,  2,  8, 0774320, NA },
  { "DC11",   FLOAT,  2,  8, 0774330, NA },
  { "DC11",   FLOAT,  2,  8, 0774340, NA },
  { "DC11",   FLOAT,  2,  8, 0774350, NA },
  { "DC11",   FLOAT,  2,  8, 0774360, NA },
  { "DC11",   FLOAT,  2,  8, 0774370, NA },
  { "TU58",   FLOAT,  2,  8, 0776500, NA },
  { "TU58",   FLOAT,  2,  8, 0776510, NA },
  { "TU58",   FLOAT,  2,  8, 0776520, NA },
  { "TU58",   FLOAT,  2,  8, 0776530, NA },
  { "TU58",   FLOAT,  2,  8, 0776540, NA },
  { "TU58",   FLOAT,  2,  8, 0776550, NA },
  { "TU58",   FLOAT,  2,  8, 0776560, NA },
  { "TU58",   FLOAT,  2,  8, 0776570, NA },
  { "TU58",   FLOAT,  2,  8, 0776600, NA },
  { "TU58",   FLOAT,  2,  8, 0776610, NA },
  { "TU58",   FLOAT,  2,  8, 0776620, NA },
  { "TU58",   FLOAT,  2,  8, 0776630, NA },
  { "TU58",   FLOAT,  2,  8, 0776640, NA },
  { "TU58",   FLOAT,  2,  8, 0776650, NA },
  { "TU58",   FLOAT,  2,  8, 0776660, NA },
  { "TU58",   FLOAT,  2,  8, 0776670, NA },
  { "DN11",   FLOAT,  1,  4, 0775200, NA },
  { "DN11",   FLOAT,  1,  4, 0775210, NA },
  { "DN11",   FLOAT,  1,  4, 0775220, NA },
  { "DN11",   FLOAT,  1,  4, 0775230, NA },
  { "DN11",   FLOAT,  1,  4, 0775240, NA },
  { "DN11",   FLOAT,  1,  4, 0775250, NA },
  { "DN11",   FLOAT,  1,  4, 0775260, NA },
  { "DN11",   FLOAT,  1,  4, 0775270, NA },
  { "DN11",   FLOAT,  1,  4, 0775300, NA },
  { "DN11",   FLOAT,  1,  4, 0775310, NA },
  { "DN11",   FLOAT,  1,  4, 0775320, NA },
  { "DN11",   FLOAT,  1,  4, 0775330, NA },
  { "DN11",   FLOAT,  1,  4, 0775340, NA },
  { "DN11",   FLOAT,  1,  4, 0775350, NA },
  { "DN11",   FLOAT,  1,  4, 0775360, NA },
  { "DN11",   FLOAT,  1,  4, 0775370, NA },
  { "DM11B",  FLOAT,  1,  4, 0770500, NA },
  { "DM11B",  FLOAT,  1,  4, 0770510, NA },
  { "DM11B",  FLOAT,  1,  4, 0770520, NA },
  { "DM11B",  FLOAT,  1,  4, 0770530, NA },
  { "DM11B",  FLOAT,  1,  4, 0770540, NA },
  { "DM11B",  FLOAT,  1,  4, 0770550, NA },
  { "DM11B",  FLOAT,  1,  4, 0770560, NA },
  { "DM11B",  FLOAT,  1,  4, 0770570, NA },
  { "DM11B",  FLOAT,  1,  4, 0770600, NA },
  { "DM11B",  FLOAT,  1,  4, 0770610, NA },
  { "DM11B",  FLOAT,  1,  4, 0770620, NA },
  { "DM11B",  FLOAT,  1,  4, 0770630, NA },
  { "DM11B",  FLOAT,  1,  4, 0770640, NA },
  { "DM11B",  FLOAT,  1,  4, 0770650, NA },
  { "DM11B",  FLOAT,  1,  4, 0770660, NA },
  { "DM11B",  FLOAT,  1,  4, 0770670, NA },
  { "DR11C",  FLOAT,  2,  8, 0767600, NA },
  { "DR11C",  FLOAT,  2,  8, 0767570, NA },
  { "DR11C",  FLOAT,  2,  8, 0767560, NA },
  { "DR11C",  FLOAT,  2,  8, 0767550, NA },
  { "DR11C",  FLOAT,  2,  8, 0767540, NA },
  { "DR11C",  FLOAT,  2,  8, 0767530, NA },
  { "DR11C",  FLOAT,  2,  8, 0767520, NA },
  { "DR11C",  FLOAT,  2,  8, 0767510, NA },
  { "DR11C",  FLOAT,  2,  8, 0767500, NA },
  { "DR11C",  FLOAT,  2,  8, 0767470, NA },
  { "DR11C",  FLOAT,  2,  8, 0767460, NA },
  { "DR11C",  FLOAT,  2,  8, 0767450, NA },
  { "DR11C",  FLOAT,  2,  8, 0767440, NA },
  { "DR11C",  FLOAT,  2,  8, 0767430, NA },
  { "DR11C",  FLOAT,  2,  8, 0767420, NA },
  { "DR11C",  FLOAT,  2,  8, 0767410, NA },
  { "PR611",  FLOAT,  1,  8, 0772600, NA },
  { "PR611",  FLOAT,  1,  8, 0772604, NA },
  { "PR611",  FLOAT,  1,  8, 0772610, NA },
  { "PR611",  FLOAT,  1,  8, 0772614, NA },
  { "PR611",  FLOAT,  1,  8, 0772620, NA },
  { "PR611",  FLOAT,  1,  8, 0772624, NA },
  { "PR611",  FLOAT,  1,  8, 0772630, NA },
  { "PR611",  FLOAT,  1,  8, 0772634, NA },
  { "PP611",  FLOAT,  1,  8, 0772700, NA },
  { "PP611",  FLOAT,  1,  8, 0772704, NA },
  { "PP611",  FLOAT,  1,  8, 0772710, NA },
  { "PP611",  FLOAT,  1,  8, 0772714, NA },
  { "PP611",  FLOAT,  1,  8, 0772720, NA },
  { "PP611",  FLOAT,  1,  8, 0772724, NA },
  { "PP611",  FLOAT,  1,  8, 0772730, NA },
  { "PP611",  FLOAT,  1,  8, 0772734, NA },
  { "DT11",   FLOAT,  2,  8, 0777420, NA },
  { "DT11",   FLOAT,  2,  8, 0777422, NA },
  { "DT11",   FLOAT,  2,  8, 0777424, NA },
  { "DT11",   FLOAT,  2,  8, 0777426, NA },
  { "DT11",   FLOAT,  2,  8, 0777430, NA },
  { "DT11",   FLOAT,  2,  8, 0777432, NA },
  { "DT11",   FLOAT,  2,  8, 0777434, NA },
  { "DT11",   FLOAT,  2,  8, 0777436, NA },
  { "DX11",   FLOAT,  2,  8, 0776200, NA },
  { "DX11",   FLOAT,  2,  8, 0776240, NA },
  { "DL11C",  FLOAT,  2,  8, 0775610, NA },
  { "DL11C",  FLOAT,  2,  8, 0775620, NA },
  { "DL11C",  FLOAT,  2,  8, 0775630, NA },
  { "DL11C",  FLOAT,  2,  8, 0775640, NA },
  { "DL11C",  FLOAT,  2,  8, 0775650, NA },
  { "DL11C",  FLOAT,  2,  8, 0775660, NA },
  { "DL11C",  FLOAT,  2,  8, 0775670, NA },
  { "DL11C",  FLOAT,  2,  8, 0775700, NA },
  { "DL11C",  FLOAT,  2,  8, 0775710, NA },
  { "DL11C",  FLOAT,  2,  8, 0775720, NA },
  { "DL11C",  FLOAT,  2,  8, 0775730, NA },
  { "DL11C",  FLOAT,  2,  8, 0775740, NA },
  { "DL11C",  FLOAT,  2,  8, 0775750, NA },
  { "DL11C",  FLOAT,  2,  8, 0775760, NA },
  { "DL11C",  FLOAT,  2,  8, 0775770, NA },
  { "DL11C",  FLOAT,  2,  8, 0776000, NA },
  { "DL11C",  FLOAT,  2,  8, 0776010, NA },
  { "DL11C",  FLOAT,  2,  8, 0776020, NA },
  { "DL11C",  FLOAT,  2,  8, 0776030, NA },
  { "DL11C",  FLOAT,  2,  8, 0776040, NA },
  { "DL11C",  FLOAT,  2,  8, 0776050, NA },
  { "DL11C",  FLOAT,  2,  8, 0776060, NA },
  { "DL11C",  FLOAT,  2,  8, 0776070, NA },
  { "DL11C",  FLOAT,  2,  8, 0776100, NA },
  { "DL11C",  FLOAT,  2,  8, 0776110, NA },
  { "DL11C",  FLOAT,  2,  8, 0776120, NA },
  { "DL11C",  FLOAT,  2,  8, 0776130, NA },
  { "DL11C",  FLOAT,  2,  8, 0776140, NA },
  { "DL11C",  FLOAT,  2,  8, 0776150, NA },
  { "DL11C",  FLOAT,  2,  8, 0776160, NA },
  { "DL11C",  FLOAT,  2,  8, 0776170, NA },
  { "DJ11",   FLOAT,  2,  8,   FLOAT,  8 },
  { "DH11",   FLOAT,  2,  8,   FLOAT, 16 },
  { "GT40",   FLOAT,  4,  8, 0772000, NA },
  { "GT40",   FLOAT,  4,  8, 0772010, NA },
  { "LPS11",  FLOAT,  6,  8, 0770400, NA },
  { "DQ11",   FLOAT,  2,  8,   FLOAT,  8 },
  { "KW11W",  FLOAT,  2,  8, 0772400, NA },
  { "DU11",   FLOAT,  2,  8,   FLOAT,  8 },
  { "DV11",   FLOAT,  3,  8, 0775000, NA },
  { "DV11",   FLOAT,  3,  8, 0775040, NA },
  { "DV11",   FLOAT,  3,  8, 0775100, NA },
  { "DV11",   FLOAT,  3,  8, 0775140, NA },
  { "LK11",   FLOAT,  2,  8,   FLOAT,  8 },
  { "DMC11",  FLOAT,  2,  8,   FLOAT,  8 },
  { "DZ11",   FLOAT,  2,  8,   FLOAT,  8 },
  { "KMC11",  FLOAT,  2,  8,   FLOAT,  8 },
  { "LPP11",  FLOAT,  2,  8,   FLOAT,  8 },
  { "VMV21",  FLOAT,  2,  8,   FLOAT,  8 },
  { "VMV31",  FLOAT,  2,  8,   FLOAT, 16 },
  { "DWR70",  FLOAT,  2,  8,   FLOAT,  8 },
  { "RL11",   FLOAT,  1,  4,   FLOAT,  8 },
  { "TS11",   FLOAT,  1,  4, 0772524, NA },
  { "TS11",   FLOAT,  1,  4, 0772530, NA },
  { "TS11",   FLOAT,  1,  4, 0772534, NA },
  { "LPA11",  FLOAT,  2,  8, 0770460, NA },
  { "LPA11",  FLOAT,  2,  8,   FLOAT, 16 },
  { "KW11C",  FLOAT,  2,  8,   FLOAT,  8 },
  { "?????",  FLOAT,  0, NA,   FLOAT,  8 }, /* missing in VMS docs */
  { "RX211",  FLOAT,  1,  4,   FLOAT,  8 },
  { "DR11W",  FLOAT,  1,  4,   FLOAT,  8 },
  { "DR11B",   0124,  1, NA, 0772410, NA },
  { "DR11B",  FLOAT,  1,  4, 0772430, NA },
  { "DR11B",  FLOAT,  1,  4,   FLOAT,  8 },
  { "DMP11",  FLOAT,  2,  8,   FLOAT,  8 },
  { "DPV11",  FLOAT,  2,  8,   FLOAT,  8 },
  { "ISB11",  FLOAT,  2,  8,   FLOAT,  8 },
  { "DMV11",  FLOAT,  2,  8,   FLOAT, 16 },
  { "UNA",    FLOAT,  1,  4,   FLOAT,  8 },
  { "QNA",    FLOAT,  1,  4, 0774460, NA },
  { "UDA",    FLOAT,  1,  4,   FLOAT,  4 },
  { "?????",  FLOAT,  0, NA,   FLOAT, 32 }, /* missing in VMS docs */
  { "KMS11",  FLOAT,  3,  8,   FLOAT, 16 },
  { "PCL11",  FLOAT,  2,  8, 0764200, NA },
  { "PCL11",  FLOAT,  2,  8, 0764240, NA },
  { "PCL11",  FLOAT,  2,  8, 0764300, NA },
  { "PCL11",  FLOAT,  2,  8, 0764340, NA },
  { "VS100",  FLOAT,  1,  4,   FLOAT, 16 },
  { "TU81",   FLOAT,  1,  4,   FLOAT,  4 },
  { "KMV11",  FLOAT,  2,  8,   FLOAT, 16 },
  { "KCT32",  FLOAT,  2,  8, 0764400, NA },
  { "KCT32",  FLOAT,  2,  8, 0764440, NA },
  { "KCT32",  FLOAT,  2,  8, 0764500, NA },
  { "KCT32",  FLOAT,  2,  8, 0764540, NA },
  { "IEQ11",  FLOAT,  2,  8, 0764100, NA },
  { "DHV11",  FLOAT,  2,  8,   FLOAT, 16 },
  { "?????",  FLOAT,  0, NA,   FLOAT, 64 }, /* missing in VMS docs */
  { "TC11",    0214,  1, NA, 0777340, NA },
  { "VCB01",  FLOAT,  2,  1, 0777200, NA },
  { "VCB01",  FLOAT,  2,  1,   FLOAT, 64 },
  { "LNV11",  FLOAT,  1,  4, 0776200, NA },
  { "LNV21",  FLOAT,  1,  4,   FLOAT, 16 },
  { "QTA",    FLOAT,  1,  4, 0772570, NA },
  { "QTA",    FLOAT,  1,  4,   FLOAT,  8 },
  { "DSV11",  FLOAT,  1,  4,   FLOAT,  8 },
  { "?????",  FLOAT,  0, NA,   FLOAT,  8 }, /* missing in VMS docs */
  { "ADV11C", FLOAT,  2,  8,   FLOAT,  8 },
  { "AAV11",  FLOAT,  0, NA, 0770440, NA },
  { "AAV11C", FLOAT,  0, NA,   FLOAT,  8 },
  { "AXV11C",  0140,  2, NA, 0776400, NA },
  { "AXV11C", FLOAT,  2,  8,   FLOAT,  8 },
  { "KWV11C", FLOAT,  2,  8, 0770420, NA },
  { "KWV11C", FLOAT,  2,  8,   FLOAT,  4 },
  { "ADV11D", FLOAT,  2,  8, 0776410, NA },
  { "ADV11D", FLOAT,  2,  8,   FLOAT,  8 }, /* VMS docs: CSR align 4 */
  { "AAV11D", FLOAT,  2,  8, 0776420, NA },
  { "AAV11D", FLOAT,  2,  8,   FLOAT,  8 }, /* VMS docs: CSR align 4 */
  { "VCB02",  FLOAT,  3, 16, 0777400, NA },
  { "VCB02",  FLOAT,  3, 16, 0777402, NA },
  { "VCB02",  FLOAT,  3, 16, 0777404, NA },
  { "VCB02",  FLOAT,  3, 16, 0777406, NA },
  { "VCB02",  FLOAT,  3, 16, 0777410, NA },
  { "VCB02",  FLOAT,  3, 16, 0777412, NA },
  { "VCB02",  FLOAT,  3, 16, 0777414, NA },
  { "VCB02",  FLOAT,  3, 16, 0777416, NA },
  { "DRV11J", FLOAT, 16,  4, 0764160, NA },
  { "DRV11J", FLOAT, 16,  4, 0764140, NA },
  { "DRV11J", FLOAT, 16,  4, 0764120, NA },
  { "DRQ3B",  FLOAT,  2,  8,   FLOAT, 16 },
  { "VSV24",  FLOAT,  1,  4,   FLOAT,  8 },
  { "VSV21",  FLOAT,  1,  4,   FLOAT,  8 },
  { "IBQ01",  FLOAT,  1,  4,   FLOAT,  8 },
  { "?????",  FLOAT,  0, NA,   FLOAT,  8 }, /* missing in VMS docs */
  { "?????",  FLOAT,  0, NA,   FLOAT,  8 }, /* missing in VMS docs */
  { "?????",  FLOAT,  0, NA,   FLOAT,  8 }, /* missing in VMS docs */
  { "?????",  FLOAT,  0, NA,   FLOAT,  8 }, /* missing in VMS docs */
  { "?????",  FLOAT,  0, NA,   FLOAT,  8 }, /* missing in VMS docs */
  { "?????",  FLOAT,  0, NA,   FLOAT,  8 }, /* missing in VMS docs */
  { "MIRA",   FLOAT,  2,  8,   FLOAT,  8 },
  { "IEQ11",  FLOAT,  2,  8,   FLOAT, 16 },
  { "ADQ32",  FLOAT,  2,  8,   FLOAT, 32 },
  { "DTC04",  FLOAT,  2,  8,   FLOAT,  2 },
  { "DESNA",  FLOAT,  1,  4,   FLOAT, 32 },
  { "IGQ11",  FLOAT,  2,  8,   FLOAT,  4 },
  { "KMV1F",  FLOAT,  2,  8,   FLOAT, 32 }, 
  { "DIV32",  FLOAT,  1,  8,   FLOAT,  8 }, /* VMS docs: CSR align 4 */
  { "DTCN5",  FLOAT,  2,  8,   FLOAT,  4 },
  { "DTCO5",  FLOAT,  2,  8,   FLOAT,  4 },
  { "KWV32",  FLOAT,  2,  8,   FLOAT,  8 },
  { "QZA",    FLOAT,  1,  4,   FLOAT, 64 }
};

#define DEVTABLEN (sizeof(devtab) / sizeof(struct device))

struct aliastable {
  char *alias;
  char *name;
};

/* table of device names translations to aid lookup in the above table */

struct aliastable aliastab[] = {
  { "DEQNA", "QNA" },
  { "DELQA", "QNA" },
  { "TMSCP", "TU81" },
  { "TK50",  "TU81" },
  { "TK70",  "TU81" },
  { "MSCP",  "UDA"  },
  { "RQDX",  "UDA"  },
  { "RQDX2", "UDA"  },
  { "RQDX3", "UDA"  },
  { "KDA50", "UDA"  },
  { "TSV05", "TS11" }
};

#define ALIASTABLEN (sizeof(aliastab) / sizeof(struct aliastable))

/*
 *	eof
 */