/*
 * DEVINFO: device information for MAKEDEV
 *
 * MANY THANKS to those who have sent in corrections - I don't have most
 * of the hardware listed in here, so it won't get fixed if nobody tells me.
 * Mail to: David A. Holland <dholland@hcs.harvard.edu>
 *
 * Version 1.5: 1-Feb-97   Updated for kernel 2.0.x:
 *                         Added random, urandom.
 *                         Added ram0-7 and initrd instead of /dev/ram.
 *                         Added new ptys (ptyp-ptye) and ttys (ttyp-ttye).
 *                         Rearranged floppies yet again; remove "oldfloppies"
 *                           to nuke obsolete names for floppy devices.
 *                         Include major no. 7 for vcs/loop.
 *                         SCSI disks go up to sdp now.
 *                         Added temperature, watchdog, rtc, etc.
 *                         Added amigamouse, atarimouse, sunmouse.
 *                         Added alternate names for qic tape.
 *                         Added: gs4500 gscd ttyH* cuh* optcd sjcd double*
 *                           hitcd ttyD* cud* ttyE* cue* staliomem* wvisfgrab
 *                           slm* ad* fb* cm205cd cm206cd mpu401* rom* flash*
 *                           ttyX* cux* hd[efgh] scc* midi* smpte* route skip
 *                           ed* ht* z2ram mlanai* ml16* mmetfgrab ez* yamm
 *                           ttyI* cui* isdn* ttyR* cur* ttyL* cul* bc* kbd
 *                           djs* dos_cd* dos_hd* st*[lma]
 *                         SCSI cdroms are /dev/sr* as well as /dev/scd*.
 *                         Fixed /dev/pcsp (was 13,3, now 13,1), add pcsp16.
 *                         Corrected /dev/spx (was 30,2, now 30,1).
 * Version 1.4: 21-Feb-95  Corrected proc entry for ibcs2.
 *              27-Feb-95  Make 12 VCs by default.
 *              25-Mar-95  Correct the "1994" dates in the version history.
 *                         Added batches "serial-all" and "vts-all".
 *                         Also, "cyclades" only makes 8 now; use 
 *                         "cyclades-all" to get all 32 entries.
 *                         Added QIC tape entries for default capacity setting.
 *              20-Apr-95  Corrected the minor numbers for cyclades2.
 *		3-Jun-95   Corrected group name for scsi cds
 *                         Added "pty" batch to make all ptys
 *                         Removed old entries with hd[a-d] and hda1[a-d]
 *                         Added "hd2", an alias for "hd1", and "hd-all", to 
 *                         be consistent with the cyclades and vts usage.
 *                         Added "ide0" and "ide1" entries for shell MAKEDEV
 *                         compatibility. 
 *                         Retrieve /proc/devices entries ide0 and ide1 for
 *                         hd and h1 groups.
 *                         Make vcs and vcsa devices along with tty0-63.
 *                         Made the "make 12 VCs by default" above work right.
 *                         Added new names for busmice.
 *                         Added lots more floppy modes and fd[4-7].
 *                         Commented out idecd as it's rather obsolete.
 *                         Added md[0-3].
 *
 * Version 1.3: 14-Feb-95  Corrections from perusing the 1.1.91 source tree.
 *                           hd1[a-b] becomes hd[c-d]; see comments below.
 *                           Corrected idecd entry. 
 *                           Added entry for Aztech cdrom.
 *                           Corrected sbpcd entries. 
 *                           Invented new [and better] names for the 
 *                           QIC tape entries.
 *                           There appear to be up to 32 cyclades devices 
 *                           supported in 1.1.91.
 *
 * Version 1.2: 14-Feb-95  Revisions snarfed from shell MAKEDEV 2.1.
 *                           Added cyclades, idecd, apm, dcf.
 *                           Added /proc entry for joysticks.
 *                           Scanner becomes logiscan/m105scan/ac4096.
 *                           Some new audio devices.
 *                           More high-number floppy entries.
 *                           Scsi tapes+cds now go 0-7.
 *                           Removed default major numbers for 
 *                             cdu31a, pcaudio, ibcs2.
 *                         Corrected a comment erroneously indicating 
 *                         fd4 was possible.
 *
 * Version 1.1: 13-Feb-95  Corrected scsi tapes (which were totally wrong)
 * Version 1.0: 11-Dec-94  Initial version
 */

/* ignore when /proc/devices mentions these: */
/* (this is how it was before; couldn't we use mem? */
ignore { mem, tty, pcmcia }

/* make a batch called generic, standard set of stuff */
batch generic {
      std, misc, ibcs2, consoles,
      hda, hdb, xda, xdb, sda, sdb, loop,
      fd, 
      printers, 
      busmice, 
      vts, 
      serial,
      ptyp, ptyq
}


/********************************  BASICS ***********************************/

// The "std" group - basic devices */
char (std, 1) {
	mem (kmem): 1
	kmem (kmem): 2
	null (public) : 3
	port (kmem) : 4
       	zero (public) : 5
	core -> "/proc/kcore"
	full (public) : 7
	random (publicro) : 8
	urandom (publicro) : 9
}
block (std, 1) {
	initrd (disk) : 250
}
char (std, 5) {
	tty (public) : 0
}
block(ram, 1) {
	ram[0-7] (disk) : 0
}

/* Assorted other devices */
char (misc=misc, 10) {
	beep (audio)         : 128
	modreq (system)      : 129
	watchdog (system)    : 130
	temperature (system) : 131
	hwtrap (system)      : 132
	exttrp (system)      : 133
	apm_bios (system)    : 134
	rtc (system)         : 135
	qcam[0-2] (video)    : 136
}

// We now also make the vcs devices (virtual console screens)
// along with the vts (virtual console ttys)

/* the "consoles" group - system console */
char (consoles,4) {
	console (cons) : 0       # /dev/console
	tty0 (cons) : 0          # tty0 == console
}
char (consoles=vcs,7) {
	vcs0 (vcs) : 0
	vcsa (vcs) : 128
}

/* VTs tty1-tty63 (tty0 is special) */
/* group "vts" is tty1-8; "vts2" is the rest; "vts-all" is all */

char (vts, 4) tty[1-12] (tty) : 1
char (vts=vcs,7) {
	vcs[1-12] (vcs) : 1
	vcsa[1-12] (vcs) : 128 + 1
}

char (vts2, 4) tty [13-63] (tty) : 13
char (vts2=vcs,7) { 
	vcs[13-63] (vcs) : 13
	vcsa[13-63] (vcs) : 128 + 13
}

batch vts-all { vts, vts2 }

// for shell MAKEDEV compatibility (approximately)
batch console { vts, consoles }

/* New ptys: pty[pqrstuvwxyzabcde][0-f] */
/* The names "ptyp", etc. make these and the corresponding ttys */
char (pptyp, 2) ptyp[0x0-f] (pty) : 0
char (pptyq, 2) ptyq[0x0-f] (pty) : 16
char (pptyr, 2) ptyr[0x0-f] (pty) : 32
char (pptys, 2) ptys[0x0-f] (pty) : 48
char (pptyt, 2) ptyt[0x0-f] (pty) : 64
char (pptyu, 2) ptyu[0x0-f] (pty) : 80
char (pptyv, 2) ptyv[0x0-f] (pty) : 96
char (pptyw, 2) ptyw[0x0-f] (pty) : 112
char (pptyx, 2) ptyx[0x0-f] (pty) : 128
char (pptyy, 2) ptyy[0x0-f] (pty) : 144
char (pptyz, 2) ptyz[0x0-f] (pty) : 160
char (pptya, 2) ptya[0x0-f] (pty) : 176
char (pptyb, 2) ptyb[0x0-f] (pty) : 192
char (pptyc, 2) ptyc[0x0-f] (pty) : 208
char (pptyd, 2) ptyd[0x0-f] (pty) : 224
char (pptye, 2) ptye[0x0-f] (pty) : 240

/* New pty ttys */
char (ttyp, 3) ttyp[0x0-f] (tty) : 0
char (ttyq, 3) ttyq[0x0-f] (tty) : 16
char (ttyr, 3) ttyr[0x0-f] (tty) : 32
char (ttys, 3) ttys[0x0-f] (tty) : 48
char (ttyt, 3) ttyt[0x0-f] (tty) : 64
char (ttyu, 3) ttyu[0x0-f] (tty) : 80
char (ttyv, 3) ttyv[0x0-f] (tty) : 96
char (ttyw, 3) ttyw[0x0-f] (tty) : 112
char (ttyx, 3) ttyx[0x0-f] (tty) : 128
char (ttyy, 3) ttyy[0x0-f] (tty) : 144
char (ttyz, 3) ttyz[0x0-f] (tty) : 160
char (ttya, 3) ttya[0x0-f] (tty) : 176
char (ttyb, 3) ttyb[0x0-f] (tty) : 192
char (ttyc, 3) ttyc[0x0-f] (tty) : 208
char (ttyd, 3) ttyd[0x0-f] (tty) : 224
char (ttye, 3) ttye[0x0-f] (tty) : 240

/* Batch rules for grouping master/slave ends */
batch ptyp { pptyp ttyp }
batch ptyq { pptyq ttyq }
batch ptyr { pptyr ttyr }
batch ptys { pptys ttys }
batch ptyt { pptyt ttyt }
batch ptyu { pptyu ttyu }
batch ptyv { pptyv ttyv }
batch ptyw { pptyw ttyw }
batch ptyx { pptyx ttyx }
batch ptyy { pptyy ttyy }
batch ptyz { pptyz ttyz }
batch ptya { pptya ttya }
batch ptyb { pptyb ttyb }
batch ptyc { pptyc ttyc }
batch ptyd { pptyd ttyd }
batch ptye { pptye ttye }

/* This usage is consistent with other stuff */
batch pty { ptyp ptyq ptyr ptys }
batch pty2 { ptyt ptyu ptyv ptyw ptyx ptyy ptyz ptya ptyb ptyc ptyd ptye }
batch pty-all { pty pty2 }


/* old ptys: pty[pqrs][0-9a-f] and tty[pqrs][0-9][a-f] */
/* grouped as oldptyp, oldptyq, oldptyr, and oldptys */
char (oldptyp, 4) {
        ptyp[0x0-f] (pty) : 128+0*16
        ttyp[0x0-f] (tty) : 192+0*16
}
char (oldptyq, 4) {
        ptyq[0x0-f] (pty) : 128+1*16
        ttyq[0x0-f] (tty) : 192+1*16
}
char (oldptyr, 4) {
        ptyr[0x0-f] (pty) : 128+2*16
        ttyr[0x0-f] (tty) : 192+2*16
}
char (oldptys, 4) {
        ptys[0x0-f] (pty) : 128+3*16
        ttys[0x0-f] (tty) : 192+3*16
}
batch oldpty { oldptyp oldptyq oldptyr oldptys }


/****************************** SERIAL *************************************/

/* serial ports, ttyS0-ttyS63 and cua0-cua63 */
/* group "serial" is just ttyS0-3 and cua0-3; "serial2" is the rest */
// serial-all builds all serial devices
char (serial, 4) ttyS[0-3]  (tty)     : 64
char (serial2,4) ttyS[4-63] (tty)     : 64+4
char (serial, 5) cua[0-3]   (dialout) : 64
char (serial2,5) cua[4-63]  (dialout) : 64 + 4
batch serial-all { serial, serial2 }

/* cyclades serial multiplexer */
// cyclades just the first board's worth of devices.
// cyclades-all builds them all.
char (cyclades=ttyC, 19) {
	ttyC[0-7] (tty) : 32
}
char (cyclades=cub, 20) {
	cub[0-7] (dialout) : 32
}
char (cyclades2=ttyC, 19) {
	ttyC[8-31] (tty) : 32+8
}
char (cyclades2=cub, 20) {
	cub[8-31] (dialout) : 32+8
}
batch cyclades-all { cyclades, cyclades2 }

/* Digiboard serial card (how many ports?) */
char (digiboard, 22) {
	ttyD[0-31] (tty) : 0
}
char (digiboard, 23) {
	cud[0-31] (dialout) : 0
}

/* Stallion serial card */
char (stallion, 24) {
	ttyE[0-255] (tty) : 0
}
char (stallion, 25) {
	cue[0-255] (dialout) : 0
}
char (stallion, 28) {
	/* WARNING, this overlaps with slm*. 
	   Don't make those if you have this. */
	staliomem[0-3] (system) : 0
}

/* Specialix serial card (how many ports?) */
char (specialix, 32) {
	ttyX[0-31] (tty) : 0
}
char (specialix, 33) {
	cux[0-31] (dialout) : 0
}

/* Chase serial card (how many ports?) */
char (chase, 17) {
	ttyH[0-7] (tty) : 0
}
char (chase, 18) {
	cuh[0-7] (dialout) : 0
}

/* ISDN virtual modems */
char (isdn4linux, 43) {
	ttyI[0-63] (tty) : 0
}
char (isdn4linux, 44) {
	cui[0-63] (callout) : 0
}
char (isdn4linux, 45) {
	isdn[0-63] (system) : 0
	isdnctrl[0-63] (system) : 64
	ippp[0-63] (system) : 128
	isdninfo (system) : 255
}

/* Comtrol Rocketport serial card (how many ports?) */
char (rocketport, 46) {
	ttyR[0-63] (tty) : 0
}
char (rocketport, 47) {
	cur[0-63] (dialout) : 0
}

/* SDL RISCom serial card (how many ports?) */
char (riscom, 48) {
	ttyL[0-63] (tty) : 0
}
char (riscom, 49) {
	cul[0-63] (dialout) : 0
}

/* Baycom radio modem */
char (baycom, 51) {
	bc[0-7] (dialout) : 0
}

/******************************* PRINTERS *********************************/

/* parallel ports par0-3 and printers lp0-3 (which are merely aliases) */
/* group is "printers" */
/* does "lp3" exist? */
char (printers=lp, 6) {
	par[0-3] (printer) : 0
	lp[0-3] (printer) : 0
}

/* WARNING this overlaps with stallion memory devices. */
/* Don't make this if you have those. */
/* Atari SLM laser printer - m68k/atarist only */
char (slm, 28) {
	slm[0-3] (printer) : 0
}

/*************************** MICE and JOYSTICKS ****************************/

/* busmice: logibm, psaux, inportbm, atibm */
/* Major number 10 is now known as "misc", not "mouse" */
char (busmice=misc, 10) {
	logibm      (mouse) : 0
	logimouse   (mouse) : 0
	psaux       (mouse) : 1
	psmouse     (mouse) : 1
	inportbm    (mouse) : 2
	msmouse     (mouse) : 2
	atibm       (mouse) : 3
	atimouse    (mouse) : 3
	# sejin     (mouse) : 4
	jmouse      (mouse) : 4
	jbm         (mouse) : 4
	amigamouse  (mouse) : 4
	atarimouse  (mouse) : 5
	sunmouse    (mouse) : 6
	amigamouse1 (mouse) : 7
}

/* joysticks: js0, js1; group "js" */
char (js=Joystick) {
	js[0-1] (mouse) : 0
	djs[0-1] (mouse) : 128
}

/* Raw keyboard (sparc only) */
char (kbd,11) kbd (system) : 0


/*************************** FLOPPY DISKS **********************************/

/* floppies: fd0-3, and 4-7, with lots of modes */
/* there really ought to be a cleaner way of doing this...*/
block (floppies=fd, 2) {
	fd[0-3]       (floppy) : 0
	fd[4-7]       (floppy) : 128 + 0
	fd[0-3]d360   (floppy) : 4
	fd[4-7]d360   (floppy) : 128 + 4
	fd[0-3]h1200  (floppy) : 8
	fd[4-7]h1200  (floppy) : 128 + 8
	fd[0-3]u360   (floppy) : 12
	fd[4-7]u360   (floppy) : 128 + 12
	fd[0-3]h360   (floppy) : 20
	fd[4-7]h360   (floppy) : 128 + 20
	fd[0-3]h720   (floppy) : 24
	fd[4-7]h720   (floppy) : 128 + 24
	fd[0-3]u1440  (floppy) : 28
	fd[4-7]u1440  (floppy) : 128 + 28
	fd[0-3]u2880  (floppy) : 32
	fd[4-7]u2880  (floppy) : 128 + 32
	fd[0-3]CompaQ (floppy) : 36
	fd[4-7]CompaQ (floppy) : 128 + 36
	fd[0-3]h1440  (floppy) : 40
	fd[4-7]h1440  (floppy) : 128 + 40
	fd[0-3]u1680  (floppy) : 44
	fd[4-7]u1680  (floppy) : 128 + 44
	fd[0-3]h410   (floppy) : 48
	fd[4-7]h410   (floppy) : 128 + 48
	fd[0-3]u820   (floppy) : 52
	fd[4-7]u820   (floppy) : 128 + 52
	fd[0-3]h1476  (floppy) : 56
	fd[4-7]h1476  (floppy) : 128 + 56
	fd[0-3]u1722  (floppy) : 60
	fd[4-7]u1722  (floppy) : 128 + 60
	fd[0-3]h420   (floppy) : 64
	fd[4-7]h420   (floppy) : 128 + 64
	fd[0-3]u830   (floppy) : 68
	fd[4-7]u830   (floppy) : 128 + 68
	fd[0-3]h1494  (floppy) : 72
	fd[4-7]h1494  (floppy) : 128 + 72
	fd[0-3]u1743  (floppy) : 76
	fd[4-7]u1743  (floppy) : 128 + 76
	fd[0-3]h880   (floppy) : 80
	fd[4-7]h880   (floppy) : 128 + 80
	fd[0-3]u1040  (floppy) : 84
	fd[4-7]u1040  (floppy) : 128 + 84
	fd[0-3]u1120  (floppy) : 88
	fd[4-7]u1120  (floppy) : 128 + 88
	fd[0-3]h1600  (floppy) : 92
	fd[4-7]h1600  (floppy) : 128 + 92
	fd[0-3]u1760  (floppy) : 96
	fd[4-7]u1760  (floppy) : 128 + 96
	fd[0-3]u1920  (floppy) : 100
	fd[4-7]u1920  (floppy) : 128 + 100
	fd[0-3]u3200  (floppy) : 104
	fd[4-7]u3200  (floppy) : 128 + 104
	fd[0-3]u3520  (floppy) : 108
	fd[4-7]u3520  (floppy) : 128 + 108
	fd[0-3]u3840  (floppy) : 112
	fd[4-7]u3840  (floppy) : 128 + 112
	fd[0-3]u1840  (floppy) : 116
	fd[4-7]u1840  (floppy) : 128 + 116
	fd[0-3]u800   (floppy) : 120
	fd[4-7]u800   (floppy) : 128 + 120
	fd[0-3]u1600  (floppy) : 124
	fd[4-7]u1600  (floppy) : 128 + 124
}

/* Various old names for floppy devices. */
/* This is recommended to be used for removing them only. */
block (oldfloppies=fd, 2) {
	fd[0-3]D360   (floppy) : 12
	fd[4-7]D360   (floppy) : 128 + 12
	fd[0-3]H360   (floppy) : 12
	fd[4-7]H360   (floppy) : 128 + 12
	fd[0-3]D720   (floppy) : 16
	fd[4-7]D720   (floppy) : 128 + 16
	fd[0-3]H720   (floppy) : 16
	fd[4-7]H720   (floppy) : 128 + 16
	fd[0-3]H1440  (floppy) : 28
	fd[4-7]H1440  (floppy) : 128 + 28
	fd[0-3]H2880  (floppy) : 32
	fd[4-7]H2880  (floppy) : 128 + 32
	fd[0-3]H1680  (floppy) : 44
	fd[4-7]H1680  (floppy) : 128 + 44
	fd[0-3]H820   (floppy) : 52
	fd[4-7]H820   (floppy) : 128 + 52
	fd[0-3]H1476  (floppy) : 56
	fd[4-7]H1476  (floppy) : 128 + 56
	fd[0-3]H1722  (floppy) : 60
	fd[4-7]H1722  (floppy) : 128 + 60
	fd[0-3]h830   (floppy) : 68
	fd[4-7]h830   (floppy) : 128 + 68
	fd[0-3]h1743  (floppy) : 76
	fd[4-7]h1743  (floppy) : 128 + 76
	fd[0-3]D1040  (floppy) : 84
	fd[4-7]D1040  (floppy) : 128 + 84
	fd[0-3]D1120  (floppy) : 88
	fd[4-7]D1120  (floppy) : 128 + 88
	fd[0-3]H1760  (floppy) : 96
	fd[4-7]H1760  (floppy) : 128 + 96
	fd[0-3]H1920  (floppy) : 100
	fd[4-7]H1920  (floppy) : 128 + 100
	fd[0-3]E3200  (floppy) : 104
	fd[4-7]E3200  (floppy) : 128 + 104
	fd[0-3]E3520  (floppy) : 108
	fd[4-7]E3520  (floppy) : 128 + 108
	fd[0-3]E3840  (floppy) : 112
	fd[4-7]E3840  (floppy) : 128 + 112
	fd[0-3]H1840  (floppy) : 116
	fd[4-7]H1840  (floppy) : 128 + 116
	fd[0-3]D800   (floppy) : 120
	fd[4-7]D800   (floppy) : 128 + 120
	fd[0-3]H1600  (floppy) : 124
	fd[4-7]H1600  (floppy) : 128 + 124
}

/******************************* HARD DISKS *********************************/

// Newer kernels stick 'ide0' in /proc/devices instead of 'hd'. 
// We really ought to look in /proc/devices for 'hd' as well as 'ide0'.
// However, 'hd' has always, to my knowledge, been 3. So we shall punt,
// instead of adding code to permit searching for multiple names.

/* AT hard disks hda-b (partitions 1-8 and main) */
block(hd=ide0,3) hd[a-b] 8/64
/* and 2nd controller */
block(hd2=ide1,22) hd[c-d] 8/64
/* and 3rd controller */
block(hd3, 33) hd[e-f] 8/64
/* and 4th controller */
block(hd4, 34) hd[g-h] 8/64

// Ordinarily, the use of the syntax above would automatically create
// these batches. Because of the way it's done (this is a bug, and hopefully
// will be fixed in a future release) the batch for the hd[2-4] devices is
// also created as "hd". This cannot be accessed, but does no harm as
// long as the order of the above two declarations isn't reversed. sigh.
// Anyway, this line works around the problem.
batch hd1 { hda hdb }
batch hd2 { hdc hdd }
batch hd3 { hde hdf }
batch hd4 { hdg hdh }

// For consistency with the other setups above (cyclades, vts, etc.)
batch hd-all { hd hd2 hd3 hd4 }

// For compatibility with the shell MAKEDEV
batch ide0 { hda hdb }
batch ide1 { hdc hdd }
batch ide2 { hde hdf }
batch ide3 { hdg hdh }

/* XT hard drives */
block(xd=xd,13) xd[a-d] 8/64

/* BIOS hard drives */
block(doshd,14) dos_hd[a-d] 8/64
batch dos_hd { doshd }

/* scsi hard disks sda-sdp */
block(sd=sd,8) sd[a-p] 8/16

/* loopback disk devices; group "loop" */
block(loop=loop,7) loop[0-7] (disk) : 0

/* disk striping: "metadisk" */
block(md=md) md[0-3] (disk) : 0

/* Compressed disks */
block (double, 19) {
	double[0-7] (disk) : 0
	cdouble[0-7] (disk) : 128
}

/* Atari ST ASCI disks */
/* Warning, these overlap sbpcd[12-15]. */
block(ad,28) ad[a-p] 8/16

/* ESDI MCA disks */
block(ed,36) ed[a-d] 8/64

/* Zorro 2 ramdisk */
block(z2ram, 37) z2ram (disk) : 0

/* Syquest EZ135 removable drive */
block(ez, 40) ez[a-d] 8/64

/********************************** TAPES **********************************/

/* scsi tapes st0-7 */
char(st=st, 9) {
	st[0-7] (tape) : 0
	st[0-7]l (tape) : 32
	st[0-7]m (tape) : 64
	st[0-7]a (tape) : 96
	nst[0-7] (tape) : 128
	nst[0-7]l (tape) : 128 + 32
	nst[0-7]m (tape) : 128 + 64
	nst[0-7]a (tape) : 128 + 96
}

/* qic tapes - group "qic" */
// The following is what came with the shell MAKEDEV.
//char (qic=tpqic02, 12) {
//	rmt8       (tape) : 6
//	rmt16      (tape) : 8
//	tape-d     (tape) : 136
//	tape-reset (tape) : 255
//}
// This, on the other hand, appears to be more correct.

/*
 *  By the authority vested in me as the maintainer of this file, 
 *  I have made up the device names. The "n" versions don't rewind,
 *  as with other tape devices. The number specifies the model/capacity.
 *  There's not really room left for unit numbers, but I suppose there
 *  probably aren't many people with multiple QIC drives either...
 */
char (qic=tpqic02, 12) {
	nqt	(tape) : 0
	qt	(tape) : 1
	nqt11    (tape) : 2
	ntpqic11 (tape) : 2
	qt11	 (tape) : 3
	tpqic11  (tape) : 3
	nqt24	 (tape) : 4
	ntpqic24 (tape) : 4
	qt24	 (tape) : 5
	tpqic24  (tape) : 5
	nqt120	  (tape) : 6
	ntpqic120 (tape) : 6
	qt120	  (tape) : 7
	tpqic120  (tape) : 7
	nqt150	  (tape) : 8
	ntpqic150 (tape) : 8
	qt150	  (tape) : 9
	tpqic150  (tape) : 9
	qt-reset (tape) : 255
}

/* ftapes - group ftape */
char (ftape=mt, 27) {
	rft[0-3]  (tape) : 0
	nrft[0-3] (tape) : 4
	ftape -> rft0
	nftape -> nrft0
}

/* ide tape */
char (ht, 37) {
	ht0 (tape) : 0
	nht0 (tape) : 128
}
batch idetape { ht }

/********************************* CDROMS ***********************************/


/* scsi cd */
/* /dev/scd* is the better name, /dev/sr* is used also */
block(scd=sr, 11) {
	scd[0-7] (cdrom) : 0
	sr[0-7] (cdrom) : 0
}
batch sr { scd }

/* MSCDEX CD-ROM callback support */
block (doscd, 12) {
	dos_cd[0-7] (cdrom) : 0
}
batch dos_cd { doscd }

/* sony cd */
block(sonycd=cdu31a, 15) sonycd (cdrom) : 0

/* mitsumi cd */
block(mcd=mcd, 23) mcd (cdrom) : 0

/* Sony cdu535 */
block(cdu535="cdu-535", 24) cdu535 (cdrom) : 0

/* LMS/Philips CD player */
block(lmscd, 30) {   // was 24
//	lmscd (cdrom) : 0     // old name
	cm205cd (cdrom) : 0
}
block(cm206, 32) {
	cm206cd (cdrom) : 0
}

/* Aztech CDROM */
block(aztcd, 29) aztcd0 (cdrom) : 0

/* GoldStar CDROM */
block(gscd, 16) gscd (cdrom) : 0

/* Optics Storage cdrom */
block(optcd, 17) optcd (cdrom) : 0

/* Sanyo CDROM */
block(sjcd, 18) sjcd (cdrom) : 0

/* Hitachi CDROM */
block(hitcd, 20) hitcd (cdrom) : 0

/* soundblaster CD, 1st controller */
block(sbpcd=sbpcd, 25) {
	sbpcd      (cdrom) : 0
	sbpcd[0-3] (cdrom) : 0
}
/* 2nd, 3rd, 4th */
block(sbpcd=sbpcd2, 26) sbpcd[4-7] (cdrom) : 0
block(sbpcd=sbpcd3, 27) sbpcd[8-11] (cdrom) : 0
block(sbpcd=sbpcd4, 28) sbpcd[12-15] (cdrom) : 0
/* warning, sbpcd4 overlaps ad*. */

/* ide cd */
// OBSOLETE
//block (idecd=idecd) {
//	idecd	(cdrom) : 0
//}

/******************************* SCANNERS ************************************/

/* Logitech scanner */
char (logiscan=logiscan) {
	logiscan (scanner) : 0
}

/* Genius 4500 scanner */
char (geniusscan, 16) {
	gs4500 (scanner) : 0
}

char (m105scan=m105) {
	m105scan (scanner) : 0
}

char (ac4096=ac4096) {
	ac4096 (scanner) : 0
}

// this is apparently obsolete?
//char (scan=Scanner) {
//	scan  (scanner) : 0
//	scand (scanner) : 1
//}

/* Quanta WinVision frame grabber */
char (wvisfgrab, 26) {
	wvisfgrab (video) : 0
}

/* Matrox Meteor frame grabber */
char (mmetfgrab, 40) {
	mmetfgrab (video) : 0
}

/******************************** AUDIO **********************************/

/* audio */
char (audio=sound, 14) {
	mixer	  (audio) : 0
	sequencer (audio) : 1
	midi00	  (audio) : 2
	midi -> midi00
	dsp	  (audio) : 3
	audio	  (audio) : 4
	sndstat	  (audio) : 6
	sequencer2(audio) : 8
	mixer1	  (audio) : 16
	patmgr0   (audio) : 17
	midi01	  (audio) : 18
	dsp1	  (audio) : 19
	audio1	  (audio) : 20
	patmgr1	  (audio) : 33
	midi02	  (audio) : 34
	midi03	  (audio) : 50
}

/* pc speaker */
char (pcaudio=pcsp) {
	pcmixer (audio) : 0
	pcsp    (audio) : 1  /* This used to be 3...? */
	pcaudio (audio) : 4
	pcsb16  (audio) : 5
}

/* mpu401 midi */
char (mpu401, 31) {
	mpu401data (audio) : 0
	mpu401stat (audio) : 1
}

/* tclmidi */
char (tclmidi, 35) {
	midi[0-3] (audio) : 0
	rmidi[0-3] (audio) : 64
	smpte[0-3] (audio) : 128
}

/****************************** FRAMEBUFFERS *********************************/

char (fb, 29) {
	fb0           (video) : 0
	fb0current    (video) : 0
	fb0autodetect (video) : 1
	fb0user[0-7]  (video) : 24
	fb1           (video) : 32 + 0
	fb1current    (video) : 32 + 0
	fb1autodetect (video) : 32 + 1
	fb1user[0-7]  (video) : 32 + 24
}
batch framebuffer { fb }

/********************************** MISC *************************************/

/* ROM and flash RAM cards */
block (rom, 31) {
	rom[0-7] (disk) : 0
	rrom[0-7] (disk) : 8
}
block (flash, 31) {
	flash[0-7] (disk) : 16
	rflash[0-7] (disk) : 24
}

/* Z8530 HDLC driver (what is this? how many nodes?) */
char (scc, 34) {
	scc[0-7] (system) : 0
}

/* sg: generic scsi devices */
/* The names sg[a-h] are obsolete */
char (sg=sg, 21) {
	sg[0-7] (scsi) : 0
}

/* fd: file descriptors */
char (fd, 0) {  // the 0 is not used - there are only links in here!
	fd     -> "/proc/self/fd"
	stdin  -> "fd/0"
	stdout -> "fd/1"
	stderr -> "fd/2"
}

/* ibcs2: coff emulation stuff */
char (ibcs2=socksys, 30) {
	socksys (ibcs2) : 0
	spx     (ibcs2) : 1  /* was 2? */
	nfsd -> socksys
	XOR -> null
}

/* netlink support */
char (netlink, 36) {
	route (system) : 0
	skip (system) : 1
}

/* Myricom PCI Myrinet board */
char (mlanai, 38) {
	mlanai[0-3] (system) : 0
}

/* ML-16P experimental I/O board */
char (ml16, 39) {
	ml16pa-a[0-15] (system) : 0
	ml16pa-d       (system) : 16
        ml16pa-c[0-2]  (system) : 17
	ml16pb-a[0-15] (system) : 32 + 0
	ml16pb-d       (system) : 32 + 16
        ml16pb-c[0-2]  (system) : 32 + 17
}

/* Obsolete? */
// char (apm=apm_bios) {
//	apm (system) : 0
// }

char (dcf=dcf) {
	dcf (system) : 0
}

/* device for "yamm" */
char (yamm, 41) {
	yamm (system) : 0
}

/* demo device for module stuff */
char (hw=hw) {
	helloworld (public) : 0
}

