diff -u --recursive --new-file v1.3.78/linux/Documentation/Configure.help linux/Documentation/Configure.help
--- v1.3.78/linux/Documentation/Configure.help	Mon Mar 25 08:58:19 1996
+++ linux/Documentation/Configure.help	Tue Mar 26 10:10:17 1996
@@ -30,8 +30,6 @@
 # thanks to all the contributors.  Feel free to use these help texts
 # in your own kernel configuration tools. The texts are copyrighted
 # (c) 1995,1996 by Axel Boldt and governed by the GNU Public License.
-#
-# Send comments to Axel Boldt <boldt@math.ucsb.edu>.
 
 Kernel math emulation
 CONFIG_MATH_EMULATION
@@ -168,7 +166,7 @@
   or something similar.  Be sure to consult the drivers/block/ide-tape.c
   and README.ide files for usage information.
 
-Support removeable IDE interfaces (PCMCIA)
+Support removable IDE interfaces (PCMCIA)
 CONFIG_BLK_DEV_IDE_PCMCIA
   This option adds code to the IDE driver to handle hot insertion
   and removal of IDE interfaces and drives, under direction of an
@@ -593,7 +591,8 @@
   it can make sense to specify "Pentium" even if running a 486: the
   kernel will be smaller but slower. On the other hand, if you use a
   compiler before gcc 2.7 (say "gcc -v" to find out), then you have to
-  say "486" here even if running on a Pentium machine.
+  say "386" or "486" here even if running on a Pentium or PPro
+  machine. If you don't know what to do, say "386".
 
 Compile the kernel into the ELF object format 
 CONFIG_ELF_KERNEL
@@ -857,18 +856,17 @@
 
 Reverse ARP
 CONFIG_INET_RARP
-  Since you asked: if there are diskless machines on your local network 
-  that know their hardware ethernet address but don't know their IP
-  addresses upon startup, they send out a Reverse
-  Address Resolution Protocol request to find out their own IP
-  addresses. If you want your Linux box to be able to *answer* such
-  requests, say Y here; you'd use the program rarp ("man rarp"). 
-  Superior solutions to the same problem are given by the 
-  protocols BOOTP and DHCP. If you want to compile RARP support 
-  as a module ( = code which can be inserted
-  in and removed from the running kernel whenever you want), say M
-  here and read Documentation/modules.txt.  If you don't understand a
-  word, say N and rest in peace.
+  Since you asked: if there's a diskless machine on your local network
+  that know its hardware ethernet address but doesn't know its IP
+  address upon startup, it can send out a Reverse Address Resolution
+  Protocol request to find out its own IP address. If you want your
+  Linux box to be able to *answer* such requests, say Y here; you'd
+  have to run the program rarp ("man rarp") on your box.  Superior
+  solutions to the same problem are given by the protocols BOOTP and
+  DHCP. If you want to compile RARP support as a module ( = code which
+  can be inserted in and removed from the running kernel whenever you
+  want), say M here and read Documentation/modules.txt.  If you don't
+  understand a word, say N and rest in peace.
 
 Assume subnets are local
 CONFIG_INET_SNARL
@@ -938,8 +936,11 @@
   sunsite.unc.edu:/pub/Linux/system/Network/daemons/ or mars_nwe from
   linux01.gwdg.de:/pub/ncpfs. For more information, read the IPX-HOWTO
   in sunsite.unc.edu:/pub/Linux/docs/howto. The IPX driver would
-  enlarge your kernel by about 5 kB. Unless you want to integrate your
-  Linux box with a local Novell network, say N.
+  enlarge your kernel by about 5 kB. This driver is also available as
+  a module ( = code which can be inserted in and removed from the
+  running kernel whenever you want). If you want to compile it as a
+  module, say M here and read Documentation/modules.txt. Unless you
+  want to integrate your Linux box with a local Novell network, say N.
 
 Full internal IPX network
 CONFIG_IPX_INTERN
@@ -968,8 +969,11 @@
   http://www.cs.dartmouth.edu/~flowerpt/projects/linux-netatalk/ on
   the WWW for details (to browse the WWW, you need to have access to a
   machine on the Internet that has one of the programs lynx, netscape
-  or Mosaic). I hear that the GNU boycott of Apple is over, so even
-  politically correct people are allowed to say Y here.
+  or Mosaic). This driver is also available as a module ( = code which
+  can be inserted in and removed from the running kernel whenever you
+  want). If you want to compile it as a module, say M here and read
+  Documentation/modules.txt. I hear that the GNU boycott of Apple is
+  over, so even politically correct people are allowed to say Y here.
 
 Amateur Radio AX.25 Level 2
 CONFIG_AX25
@@ -1044,20 +1048,23 @@
 
 SCSI support?
 CONFIG_SCSI
-  If you want to use an SCSI harddisk, SCSI tapedrive, SCSI CDROM or
+  If you want to use a SCSI harddisk, SCSI tapedrive, SCSI CDROM or
   any other SCSI device under Linux, say Y and make sure that you know
   the name of your SCSI host adaptor (the card inside your computer
   that "speaks" the SCSI protocol), because you will be asked for
-  it. And read the SCSI-HOWTO, available via ftp (user: anonymous) in
-  sunsite.unc.edu:/pub/Linux/docs/HOWTO. This driver is also available
-  as a module ( = code which can be inserted in and removed from the
-  running kernel whenever you want). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt and
-  Documentation/scsi.txt. 
+  it. You also need to say Y here if you want support for the parallel
+  port version of the 100MB IOMEGA ZIP drive. Please read the
+  SCSI-HOWTO, available via ftp (user: anonymous) in
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO.  This driver is also
+  available as a module ( = code which can be inserted in and removed
+  from the running kernel whenever you want). If you want to compile
+  it as a module, say M here and read Documentation/modules.txt and
+  Documentation/scsi.txt.
 
 SCSI disk support
 CONFIG_BLK_DEV_SD
-  If you want to use an SCSI harddisk under Linux, say Y and read the
+  If you want to use a SCSI harddisk or the SCSI or parallel port
+  version of the IOMEGA ZIP drive under Linux, say Y and read the
   SCSI-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. This is NOT for SCSI
   CDROMs. This driver is also available as a module ( = code which can
@@ -1067,7 +1074,7 @@
   
 SCSI tape support
 CONFIG_CHR_DEV_ST
-  If you want to use an SCSI tapedrive under Linux, say Y and read the
+  If you want to use a SCSI tapedrive under Linux, say Y and read the
   SCSI-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO and drivers/scsi/README.st in
   the kernel source. This is NOT for SCSI CDROMs. This driver is also
@@ -1078,7 +1085,7 @@
 
 SCSI CDROM support
 CONFIG_BLK_DEV_SR
-  If you want to use an SCSI CDROM under Linux, say Y and read the
+  If you want to use a SCSI CDROM under Linux, say Y and read the
   SCSI-HOWTO and the CDROM-HOWTO from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. Also make sure to enable the
   ISO9660 filesystem later. This driver is also available as a module
@@ -1103,7 +1110,7 @@
 
 Probe all LUNs on each SCSI device
 CONFIG_SCSI_MULTI_LUN
-  If you have an SCSI device that supports more than one LUN (Logical
+  If you have a SCSI device that supports more than one LUN (Logical
   Unit Number), e.g. a CD jukebox, you should say Y here so that all
   will be found by the SCSI driver. An SCSI device with multiple LUNs
   acts logically like multiple SCSI devices. The vast majority of SCSI
@@ -1133,7 +1140,7 @@
 
 Adaptec AHA152X support
 CONFIG_SCSI_AHA152X
-  This is support for an SCSI host adaptor. It is explained in section
+  This is support for a SCSI host adaptor. It is explained in section
   3.3 of the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. If it doesn't work out of the
   box, you may have to change some settings in drivers/scsi/aha152x.h.
@@ -1144,7 +1151,7 @@
 
 Adaptec AHA1542 support
 CONFIG_SCSI_AHA1542
-  This is support for an SCSI host adaptor. It is explained in section
+  This is support for a SCSI host adaptor. It is explained in section
   3.4 of the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.unc.edu:/pub/Linux/docs/HOWTO.  Note that Trantor was
   recently purchased by Adaptec, and some former Trantor products are
@@ -1156,7 +1163,7 @@
  
 Adaptec AHA1740 support
 CONFIG_SCSI_AHA1740
-  This is support for an SCSI host adaptor. It is explained in section
+  This is support for a SCSI host adaptor. It is explained in section
   3.5 of the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.unc.edu:/pub/Linux/docs/HOWTO.  If it doesn't work out of
   the box, you may have to change some settings in
@@ -1188,7 +1195,7 @@
  
 EATA-DMA (DPT,NEC&ATT for ISA,EISA,PCI) support
 CONFIG_SCSI_EATA_DMA
-  This is support for an SCSI host adaptor. Please read the
+  This is support for a SCSI host adaptor. Please read the
   SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. If it doesn't work out of the
   box, you may have to change some settings in
@@ -1278,7 +1285,7 @@
  
 Always IN2000 SCSI support (test release)
 CONFIG_SCSI_IN2000
-  Believe it or not, there is an SCSI host adaptor of that name. It is
+  Believe it or not, there is a SCSI host adaptor of that name. It is
   explained in section 3.6 of the SCSI-HOWTO, available via ftp (user:
   anonymous) at sunsite.unc.edu:/pub/Linux/docs/HOWTO. If it doesn't
   work out of the box, you may have to change some settings in
@@ -1288,7 +1295,7 @@
 
 PAS16 SCSI support
 CONFIG_SCSI_PAS16
-  This is support for an SCSI host adaptor. It is explained in section
+  This is support for a SCSI host adaptor. It is explained in section
   3.10 of the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. If it doesn't work out of the
   box, you may have to change some settings in drivers/scsi/pas16.h.
@@ -1317,7 +1324,7 @@
 
 Trantor T128/T128F/T228 SCSI support
 CONFIG_SCSI_T128
-  This is support for an SCSI host adaptor. It is explained in section
+  This is support for a SCSI host adaptor. It is explained in section
   3.11 of the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.unc.edu:/pub/Linux/docs/HOWTO.  If it doesn't work out of
   the box, you may have to change some settings in
@@ -1380,14 +1387,17 @@
 IOMEGA Parallel Port ZIP drive SCSI support
 CONFIG_SCSI_PPA
   This driver supports the parallel port version of IOMEGA's ZIP
-  drive (a 100Mb removable media device).  For more infomation 
+  drive (a 100Mb removable media device).  For more information 
   about this driver and how to use it you should read the file
   drivers/scsi/README.ppa.  You should also read the SCSI-HOWTO,
   which is available via anonymous ftp from sunsite.unc.edu in
   the directory /pub/Linux/docs/HOWTO.  This driver is also available
   as a module which can be inserted in and removed from the
   running kernel whenever you want. If you want to compile it as a
-  module, say M here and read Documentation/modules.txt.
+  module, say M here and read Documentation/modules.txt. Note that 
+  you can say N here if you have the SCSI version of the ZIP drive: 
+  it will be supported automatically if you enabled the generic
+  "SCSI disk support", above.
 
 Network device support?
 CONFIG_NETDEVICES
@@ -1563,6 +1573,47 @@
   from the running kernel whenever you want). If you want to compile
   it as a module, say M here and read Documentation/modules.txt.
 
+FRAD (Frame Relay Access Device) support
+CONFIG_FRAD
+  This is support for the frame relay protocol; frame relay is a fast
+  low-cost way to connect to a remote internet access provider or to
+  form a private wide area network. The one physical line to your
+  local entry point or "switch" carries several logical
+  point-to-point connections to other sites connected to the frame
+  relay network. For a general explanation of the protocol, check out
+  http://frame-relay.indiana.edu/4000/4000index.html on the WWW. (To
+  browse the WWW, you need to have access to a machine on the Internet
+  that has one of the programs lynx, netscape or Mosaic.) To use frame
+  relay, you need supporting hardware (FRAD) and certain programs from
+  the net-tools package as explained in
+  Documentation/framerelay.txt. This driver is also available as a
+  module ( = code which can be inserted in and removed from the
+  running kernel whenever you want). If you want to compile it as a
+  module, say M here and read Documentation/modules.txt.
+
+Max open DLCI
+CONFIG_DLCI_COUNT 
+  This is the maximal number of logical point-to-point frame relay
+  connections (the identifiers of which are called DCLIs) that
+  the driver can handle. The default is probably fine.
+
+Max DLCI per device
+CONFIG_DLCI_MAX
+  You can specify here how many logical point-to-point frame relay
+  connections (the identifiers of which are called DCLIs) should be
+  handled by each of your hardware frame relay access devices. Go with
+  the default.
+
+Sangoma S502A FRAD support
+CONFIG_SDLA
+  Say Y here if you need a driver for the Sangoma S502A, S502E and
+  S508 Frame Relay Access Devices. These are multi-protocol
+  cards, but only frame relay is supported by the driver at this
+  time. Please read Documentation/framerelay.txt. This driver is also
+  available as a module ( = code which can be inserted in and removed
+  from the running kernel whenever you want). If you want to compile
+  it as a module, say M here and read Documentation/modules.txt.
+
 Sun LANCE Ethernet support
 CONFIG_SUN_LANCE
   This is support for lance ethernet cards on Sun workstations such as
@@ -1867,6 +1918,19 @@
   Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
+FMV-181/182 support
+CONFIG_FMV18X
+  If you have a Fujitsu FMV-181/182 network (ethernet) card, say Y and
+  read the Ethernet-HOWTO, available via ftp (user: anonymous) in
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO. This driver is also available
+  as a module ( = code which can be inserted in and removed from the
+  running kernel whenever you want). If you want to compile it as a
+  module, say M here and read Documentation/modules.txt as well as
+  Documentation/networking/net-modules.txt. If you plan to use more
+  than one network card under linux, read the
+  Multiple-Ethernet-mini-HOWTO, available from
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
+
 EtherExpressPro support
 CONFIG_EEXPRESS_PRO
   If you have a network (ethernet) card of this type, say Y and read
@@ -1885,14 +1949,11 @@
   If you have a network (ethernet) card of this type, say Y and read
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. Note that the Intel
-  EtherExpress16 card is generally regarded to be a very poor choice
-  and the driver is not very reliable. (Roger Wolff
-  (R.E.Wolff@et.tudelft.nl) is attempting to do something about
-  this. At the moment he could use 1) one or more etherexpress16 cards
-  to test locally 2) Alpha testers: people to try new versions of the
-  driver to see if things improve...)  If you want to compile this
-  driver as a module ( = code which can be inserted in and removed
-  from the running kernel whenever you want), say M here and read
+  EtherExpress16 card used to be regarded as a very poor choice
+  because the driver was very unreliable. We now have a new driver
+  that should do better. If you want to compile this driver as a
+  module ( = code which can be inserted in and removed from the
+  running kernel whenever you want), say M here and read
   Documentation/modules.txt as well as
   Documentation/networking/net-modules.txt. If you plan to use more
   than one network card under linux, read the
@@ -2573,16 +2634,17 @@
   and is often needed to run commercial software, most prominently
   WordPerfect. It's in tsx-11.mit.edu:/pub/linux/BETA). If you only
   intend to mount files from some other Unix over the network using
-  NFS, you don't need this (but you need nfs filesystem support
-  obviously). Note that this option is generally not needed for
-  floppies, since a good portable way to transport files between
-  unixes (and even to other operating systems) is given by the tar
-  program ("man tar").  Note also that this option has nothing to do
-  whatsoever with the option "System V IPC". Read about the System V
-  filesystem in Documentation/filesystems/sysv-fs.txt. This option
-  will enlarge your kernel by about 34 kB. If you want to compile this
-  as a module ( = code which can be inserted in and removed from the
-  running kernel whenever you want), say M here and read
+  NFS, you don't need the System V filesystem support (but you need
+  nfs filesystem support obviously). Note that this option is
+  generally not needed for floppies, since a good portable way to
+  transport files and directories between unixes (and even other
+  operating systems) is given by the tar program ("man tar").  Note
+  also that this option has nothing whatsoever to do with the option
+  "System V IPC". Read about the System V filesystem in
+  Documentation/filesystems/sysv-fs.txt. This option will enlarge your
+  kernel by about 34 kB. If you want to compile this as a module ( =
+  code which can be inserted in and removed from the running kernel
+  whenever you want), say M here and read
   Documentation/modules.txt. If you haven't heard about all of this
   before, it's safe to say N.
 
@@ -2601,18 +2663,18 @@
   information about how to connect Linux, Windows machines and Macs is
   on the WWW at http://eats.com/linux_mac_win.html (to browse the WWW,
   you need to have access to a machine on the Internet that has one of
-  the programs lynx, netscape or Mosaic).  If you want to compile this
-  as a module ( = code which can be inserted in and removed from the
-  running kernel whenever you want), say M here and read
-  Documentation/modules.txt. Most people say N, however.
+  the programs lynx, netscape or Mosaic).  If you want to compile the
+  SMB support as a module ( = code which can be inserted in and
+  removed from the running kernel whenever you want), say M here and
+  read Documentation/modules.txt. Most people say N, however.
 
 NCP filesystem support (to mount NetWare volumes)
 CONFIG_NCP_FS
   NCP (NetWare Core Protocol) is a protocol that runs over IPX and is
-  used by NetWare clients to talk to file servers. It is to IPX what
-  nfs is to tcp/ip, if that helps. Enabling this option allows you to
-  mount NetWare file server volumes and to access them just like any
-  other Unix directory. For details, please read the file
+  used by Novel NetWare clients to talk to file servers. It is to IPX
+  what nfs is to tcp/ip, if that helps. Enabling this option allows
+  you to mount NetWare file server volumes and to access them just
+  like any other Unix directory. For details, please read the file
   Documentation/filesystems/ncpfs.txt in the kernel source and the
   IPX-HOWTO on sunsite.unc.edu:/pub/Linux/docs/howto.  If you want to
   compile this as a module ( = code which can be inserted in and
@@ -2633,13 +2695,13 @@
 
 Cyclades async mux support
 CONFIG_CYCLADES
-  This is a card which gives you many serial ports. You would need
-  something like this to connect more than two modems to your linux
-  box, for instance in order to become a BBS. If you want to compile
-  this as a module ( = code which can be inserted in and removed from
-  the running kernel whenever you want), say M here and read
-  Documentation/modules.txt. If you haven't heard about it, it's safe
-  to say N.
+  This is a driver for a card that gives you many serial ports. You
+  would need something like this to connect more than two modems to
+  your linux box, for instance in order to become a BBS. If you want
+  to compile this as a module ( = code which can be inserted in and
+  removed from the running kernel whenever you want), say M here and
+  read Documentation/modules.txt. If you haven't heard about it, it's
+  safe to say N.
 
 Stallion multiport serial support 
 CONFIG_STALDRV
@@ -3038,4 +3100,5 @@
 # LocalWords:  ipppd syncppp RFC MPP VJ downloaded icn NICCY Creatix shmem ufr
 # LocalWords:  ibp md ARCnet ether encap NDIS arcether ODI Amigas AmiTCP NetBSD
 # LocalWords:  initrd tue util DES funet des OnNet BIOSP smc Travan Iomega CMS
-# LocalWords:  FC
+# LocalWords:  FC DC dc PPA IOMEGA's ppa RNFS FMV Fujitsu ARPD arpd loran layes
+# LocalWords:  FRAD indiana framerelay DLCI DCLIs Sangoma SDLA
diff -u --recursive --new-file v1.3.78/linux/Documentation/svga.txt linux/Documentation/svga.txt
--- v1.3.78/linux/Documentation/svga.txt	Wed Mar 20 16:49:01 1996
+++ linux/Documentation/svga.txt	Tue Mar 26 08:18:23 1996
@@ -1,4 +1,4 @@
-			Video Mode Selection Support 2.5
+			Video Mode Selection Support 2.6
 	      (c) 1995, 1996 Martin Mares, <mj@k332.feld.cvut.cz>
 --------------------------------------------------------------------------------
 
@@ -223,3 +223,5 @@
 		only with some loaders now.
 		Added a Tseng 132x60 mode.
 2.5 (19-Mar-96)	Fixed a VESA mode scanning bug introduced in 2.4.
+2.6 (25-Mar-96)	Some VESA BIOS errors not reported -- it fixes error reports on
+		several cards with broken VESA code (e.g., ATI VGA).
diff -u --recursive --new-file v1.3.78/linux/Makefile linux/Makefile
--- v1.3.78/linux/Makefile	Thu Mar 21 20:37:45 1996
+++ linux/Makefile	Mon Mar 25 12:55:08 1996
@@ -1,6 +1,6 @@
 VERSION = 1
 PATCHLEVEL = 3
-SUBLEVEL = 78
+SUBLEVEL = 79
 
 ARCH = i386
 
diff -u --recursive --new-file v1.3.78/linux/arch/i386/boot/video.S linux/arch/i386/boot/video.S
--- v1.3.78/linux/arch/i386/boot/video.S	Wed Mar 20 16:49:01 1996
+++ linux/arch/i386/boot/video.S	Tue Mar 26 08:18:23 1996
@@ -1,5 +1,5 @@
 !
-!	Display adapter & video mode setup, version 2.5 (19-Mar-96)
+!	Display adapter & video mode setup, version 2.6 (25-Mar-96)
 !
 !	Copyright (C) 1995, 1996 Martin Mares <mj@k332.feld.cvut.cz>
 !	Based on the original setup.S code (C) Linus Torvalds
@@ -779,7 +779,7 @@
 	add	bh,#VIDEO_FIRST_VESA>>8
 	pop	cx
 	cmp	ax,#0x004f
-	jnz	vesae
+	jnz	vesan		! Don't report errors (buggy BIOSES :-[ )
 	mov	al,(di)		! Check capabilities. We require
 	and	al,#0x19	! a color text mode.
 	cmp	al,#0x09
diff -u --recursive --new-file v1.3.78/linux/arch/i386/kernel/setup.c linux/arch/i386/kernel/setup.c
--- v1.3.78/linux/arch/i386/kernel/setup.c	Thu Mar 21 16:37:30 1996
+++ linux/arch/i386/kernel/setup.c	Mon Mar 25 13:34:39 1996
@@ -225,6 +225,16 @@
 	return NULL;
 }
 
+static const char * i686model(unsigned int nr)
+{
+	static const char *model[] = {
+		"PPro A-step", "Pentium Pro"
+	};
+	if (nr < sizeof(model)/sizeof(char *))
+		return model[nr];
+	return NULL;
+}
+
 static const char * getmodel(int x86, int model)
 {
         const char *p = NULL;
@@ -236,6 +246,9 @@
 		case 5:
 			p = i586model(model);
 			break;
+		case 6:
+			p = i686model(model);
+			break;
 	}
         if (p)
                 return p;
@@ -294,12 +307,15 @@
                                        "fdiv_bug\t: %s\n"
                                        "hlt_bug\t\t: %s\n"
                                        "fpu\t\t: %s\n"
+                                       "fpu_exception\t: %s\n"
                                        "cpuid\t\t: %s\n"
                                        "wp\t\t: %s\n"
                                        "flags\t\t:",
                                        CD(fdiv_bug) ? "yes" : "no",
                                        CD(hlt_works_ok) ? "no" : "yes",
                                        CD(hard_math) ? "yes" : "no",
+                                       (CD(hard_math) && ignore_irq13)
+                                         ? "yes" : "no",
                                        CD(have_cpuid) ? "yes" : "no",
                                        CD(wp_works_ok) ? "yes" : "no");
         
diff -u --recursive --new-file v1.3.78/linux/drivers/block/floppy.c linux/drivers/block/floppy.c
--- v1.3.78/linux/drivers/block/floppy.c	Sun Mar 24 18:57:04 1996
+++ linux/drivers/block/floppy.c	Tue Mar 26 18:00:17 1996
@@ -2597,7 +2597,7 @@
 	}
 
 	while(1){
-		if (!CURRENT || CURRENT_PLUGGED) {
+		if (!CURRENT) {
 			CLEAR_INTR;
 			unlock_fdc();
 			return;
diff -u --recursive --new-file v1.3.78/linux/drivers/block/ide.c linux/drivers/block/ide.c
--- v1.3.78/linux/drivers/block/ide.c	Sun Mar 24 18:57:04 1996
+++ linux/drivers/block/ide.c	Tue Mar 26 18:00:17 1996
@@ -1469,8 +1469,6 @@
 			 */
 			hwif = hwgroup->next_hwif;
 			do {
-				if (IS_PLUGGED(blk_dev + hwif->major))
-					continue;
 				rq = blk_dev[hwif->major].current_request;
 				if (rq != NULL && rq->rq_status != RQ_INACTIVE)
 					goto got_rq;
diff -u --recursive --new-file v1.3.78/linux/drivers/block/ll_rw_blk.c linux/drivers/block/ll_rw_blk.c
--- v1.3.78/linux/drivers/block/ll_rw_blk.c	Sun Mar 24 20:07:00 1996
+++ linux/drivers/block/ll_rw_blk.c	Tue Mar 26 18:26:09 1996
@@ -85,8 +85,9 @@
 
 	save_flags(flags);
 	cli();
-	if (dev->current_request)
-		(dev->request_fn)();
+	dev->current_request = dev->plug.next;
+	dev->plug.next = NULL;
+	(dev->request_fn)();
 	restore_flags(flags);
 }
 
@@ -94,11 +95,20 @@
  * "plug" the device if there are no outstanding requests: this will
  * force the transfer to start only after we have put all the requests
  * on the list.
+ *
+ * Note! We can do the check without interrupts off, because interrupts
+ * will never add a new request to the queue, only take requests off.. 
  */
 static inline void plug_device(struct blk_dev_struct * dev)
 {
-	if (!dev->current_request && !IS_PLUGGED(dev)) {
+	if (!dev->current_request) {
+		unsigned long flags;
+
+		save_flags(flags);
+		cli();
+		dev->current_request = &dev->plug;
 		queue_task_irq_off(&dev->plug_tq, &tq_scheduler);
+		restore_flags(flags);
 	}
 }
 
@@ -250,8 +260,7 @@
 	if (!(tmp = dev->current_request)) {
 		dev->current_request = req;
 		up (&request_lock);
-		if (!IS_PLUGGED(dev))
-			(dev->request_fn)();
+		(dev->request_fn)();
 		sti();
 		return;
 	}
@@ -266,7 +275,7 @@
 
 	up (&request_lock);
 /* for SCSI devices, call request_fn unconditionally */
-	if (!IS_PLUGGED(dev) && scsi_major(MAJOR(req->rq_dev)) && MAJOR(req->rq_dev)!=MD_MAJOR)
+	if (scsi_major(MAJOR(req->rq_dev)) && MAJOR(req->rq_dev)!=MD_MAJOR)
 		(dev->request_fn)();
 
 	sti();
@@ -609,6 +618,9 @@
 	for (dev = blk_dev + MAX_BLKDEV; dev-- != blk_dev;) {
 		dev->request_fn      = NULL;
 		dev->current_request = NULL;
+		dev->plug.rq_status  = RQ_INACTIVE;
+		dev->plug.cmd        = -1;
+		dev->plug.next       = NULL;
 		dev->plug_tq.routine = &unplug_device;
 		dev->plug_tq.data    = dev;
 	}
diff -u --recursive --new-file v1.3.78/linux/drivers/cdrom/cdu31a.c linux/drivers/cdrom/cdu31a.c
--- v1.3.78/linux/drivers/cdrom/cdu31a.c	Sun Mar 24 18:57:04 1996
+++ linux/drivers/cdrom/cdu31a.c	Tue Mar 26 18:00:17 1996
@@ -1525,7 +1525,7 @@
        * The beginning here is stolen from the hard disk driver.  I hope
        * it's right.
        */
-      if (!(CURRENT) || CURRENT_PLUGGED || CURRENT->rq_status == RQ_INACTIVE)
+      if (!(CURRENT) || CURRENT->rq_status == RQ_INACTIVE)
       {
          goto end_do_cdu31a_request;
       }
diff -u --recursive --new-file v1.3.78/linux/drivers/cdrom/sonycd535.c linux/drivers/cdrom/sonycd535.c
--- v1.3.78/linux/drivers/cdrom/sonycd535.c	Fri Mar  1 07:50:40 1996
+++ linux/drivers/cdrom/sonycd535.c	Tue Mar 26 09:20:10 1996
@@ -1654,7 +1654,7 @@
 	 * then call with io base of 0
 	 */
 	if (ints[0] > 0)
-		if (ints[0] != 0)
+		if (ints[1] != 0)
 			sony535_cd_base_io = ints[1];
 	if (ints[0] > 1)
 		sony535_irq_used = ints[2];
diff -u --recursive --new-file v1.3.78/linux/drivers/char/README.stallion linux/drivers/char/README.stallion
--- v1.3.78/linux/drivers/char/README.stallion	Mon Mar 11 11:20:32 1996
+++ linux/drivers/char/README.stallion	Mon Mar 25 12:54:42 1996
@@ -2,8 +2,8 @@
 Stallion Multiport Serial Drivers
 ---------------------------------
 
-Version: 1.0.6
-Date:    11MAR96
+Version: 1.0.8
+Date:    25MAR96
 Author:  Greg Ungerer (gerg@stallion.oz.au)
 
 
@@ -12,31 +12,31 @@
 There are two drivers that work with the different families of Stallion
 multiport serial boards. One is for the Stallion smart boards - that is
 EasyIO and EasyConnection 8/32, the other for the true Stallion intelligent
-multiport boards - Stallion, Brumby, ONboard and EasyConnection 8/64.
+multiport boards - EasyConnection 8/64, ONboard, Brumby and Stallion.
 
 If you are using any of the Stallion intelligent multiport boards (Brumby,
 ONboard, Stallion, EasyConnection 8/64) with Linux you will need to get the
 driver utility package. This package is available at most of the Linux
 archive sites (and on CD's that contain these archives). The file will be
 called stallion-X.X.X.tar.gz where X.X.X will be the version number. In
-particular this package contains the board embeded executable images that
+particular this package contains the board embedded executable images that
 are required for these boards. It also contains the downloader program.
 These boards cannot be used without this.
 
-The following ftp sites (and their mirrors) definately have the stallion
+The following ftp sites (and their mirrors) definitely have the stallion
 driver utility package: ftp.stallion.com, tsx-11.mit.edu, sunsite.unc.edu.
 
-ftp.stallion.com:/drivers/ata5/Linux/stallion-1.0.1.tar.gz
-tsx-11.mit.edu:/pub/linux/BETA/serial/stallion/stallion-1.0.1.tar.gz
-sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-1.0.1.tar.gz
+ftp.stallion.com:/drivers/ata5/Linux/stallion-1.0.7.tar.gz
+tsx-11.mit.edu:/pub/linux/BETA/serial/stallion/stallion-1.0.7.tar.gz
+sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-1.0.7.tar.gz
 
 If you are using the EasyIO or EasyConnection 8/32 boards then you don't
 need this package. Although it does have a handy script to create the
-/dev device nodes for these boards.
+/dev device nodes for these boards, and a serial stats display program.
 
 If you require DIP switch settings, EISA/MCA configuration files, or any
-other information related to Stallion boards then have a look at
-http://www.stallion.com.
+other information related to Stallion boards then have a look at Stallion's
+web pages at http://www.stallion.com.
 
 
 
@@ -265,13 +265,15 @@
 
 You can use both drivers at once if you have a mix of board types installed
 in a system. However to do this you will need to change the major numbers
-used by one of the drivers. Currently both drivers use major numbers 24 and
-25 for their port devices. Change one driver to use some other major numbers,
+used by one of the drivers. Currently both drivers use major numbers 24, 25
+and 28 for their devices. Change one driver to use some other major numbers,
 and then modify the mkdevnods script to make device nodes based on those new
-major numbers. For example, you could change the stallion.c driver to use
-major numbers 30 and 31 (don't use 28, it's used by istallion.c driver for its
-sio memory device!). You will also need to create device nodes with different
-names for the ports...
+major numbers. For example, you could change the istallion.c driver to use
+major numbers 60, 61 and 62. You will also need to create device nodes with
+different names for the ports, for example ttyF# and cuf#.
+
+The original Stallion board is no longer supported by Stallion Technologies.
+Although it is known to work with the istallion driver.
 
 Finding a free physical memory address range can be a problem. The older
 boards like the Stallion and ONboard need large areas (64K or even 128K), so
@@ -301,32 +303,14 @@
 ranges is the best option. Typically the 2Gb range is convenient for them,
 and gets them well out of the way.
 
-There is a new utility program in the stallion utility package called
-"stlstty". Most people will not need to use this. If you have an ONboard/16
-which has partial signals on the upper 12 ports then this program can be used
-to set the upper ports to have modem control instead of hardware flow control.
-Use the "mapcts maprts" flag options to this utility on the port(s) that you
-wish to do this mapping on, eg
-    ./stlstty maprts mapcts < /dev/cue0
-This enables RTS to act like DTR and CTS to act like DCD on the specified
-port.
-
 The ports of the EasyIO-8M board do not have DCD or DTR signals. So these
 ports cannot be used as real modem devices. Generally when using these
 ports you should only use the cueX devices.
 
-There is another new utility in this package that reports statistics on
-the serial ports. You will need to have the curses libray installed on
-your system to build it.
-
-To build the statistics display program type:
-    make stlstats
-Once compiled simply run it (you will need to be root) and it will display
-a port summary for the first board and panel installed. Use the digits to
-select different board numbers, or 'n' to cycle through the panels on a
-board. To look at detailed port information then hit 'p', that will display
-detailed port 0 information. Use the digits and letteres 'a' through 'f' to
-select the different ports (on this board and panel).
+The driver utility package contains a couple of very useful programs. One 
+is a serial port statistics collection and display program - very handy
+for solving serial port problems. The other is an extended option setting
+program that works with the intelligent boards.
 
 
 
diff -u --recursive --new-file v1.3.78/linux/drivers/char/istallion.c linux/drivers/char/istallion.c
--- v1.3.78/linux/drivers/char/istallion.c	Mon Mar 11 11:20:32 1996
+++ linux/drivers/char/istallion.c	Mon Mar 25 12:54:42 1996
@@ -180,7 +180,7 @@
  *	all the local structures required by a serial tty driver.
  */
 static char	*stli_drvname = "Stallion Intelligent Multiport Serial Driver";
-static char	*stli_drvversion = "1.0.6";
+static char	*stli_drvversion = "1.0.8";
 static char	*stli_serialname = "ttyE";
 static char	*stli_calloutname = "cue";
 
@@ -279,7 +279,6 @@
 	struct termios		normaltermios;
 	struct termios		callouttermios;
 	asysigs_t		asig;
-	comstats_t		stats;
 	unsigned long		addr;
 	unsigned long		rxoffset;
 	unsigned long		txoffset;
@@ -4351,48 +4350,48 @@
 	if (brdp == (stlibrd_t *) NULL)
 		return(-ENODEV);
 
-	portp->stats.state = portp->state;
-	portp->stats.flags = portp->flags;
-	if (portp->tty != (struct tty_struct *) NULL) {
-		portp->stats.ttystate = portp->tty->flags;
-		portp->stats.cflags = portp->tty->termios->c_cflag;
-		portp->stats.iflags = portp->tty->termios->c_iflag;
-		portp->stats.oflags = portp->tty->termios->c_oflag;
-		portp->stats.lflags = portp->tty->termios->c_lflag;
-		portp->stats.rxbuffered = portp->tty->flip.count;
-	} else {
-		portp->stats.ttystate = 0;
-		portp->stats.cflags = 0;
-		portp->stats.iflags = 0;
-		portp->stats.oflags = 0;
-		portp->stats.lflags = 0;
-		portp->stats.rxbuffered = 0;
-	}
-
 	if ((rc = stli_cmdwait(brdp, portp, A_GETSTATS, &stli_cdkstats, sizeof(asystats_t), 1)) < 0)
 		return(rc);
 
-	portp->stats.txtotal = stli_cdkstats.txchars;
-	portp->stats.rxtotal = stli_cdkstats.rxchars + stli_cdkstats.ringover;
-	portp->stats.txbuffered = stli_cdkstats.txringq;
-	portp->stats.rxbuffered += stli_cdkstats.rxringq;
-	portp->stats.rxoverrun = stli_cdkstats.overruns;
-	portp->stats.rxparity = stli_cdkstats.parity;
-	portp->stats.rxframing = stli_cdkstats.framing;
-	portp->stats.rxlost = stli_cdkstats.ringover;
-	portp->stats.rxbreaks = stli_cdkstats.rxbreaks;
-	portp->stats.txbreaks = stli_cdkstats.txbreaks;
-	portp->stats.txxon = stli_cdkstats.txstart;
-	portp->stats.txxoff = stli_cdkstats.txstop;
-	portp->stats.rxxon = stli_cdkstats.rxstart;
-	portp->stats.rxxoff = stli_cdkstats.rxstop;
-	portp->stats.rxrtsoff = stli_cdkstats.rtscnt / 2;
-	portp->stats.rxrtson = stli_cdkstats.rtscnt - portp->stats.rxrtsoff;
-	portp->stats.modem = stli_cdkstats.dcdcnt;
-	portp->stats.hwid = stli_cdkstats.hwid;
-	portp->stats.signals = stli_mktiocm(stli_cdkstats.signals);
+	stli_comstats.state = portp->state;
+	stli_comstats.flags = portp->flags;
+	if (portp->tty != (struct tty_struct *) NULL) {
+		stli_comstats.ttystate = portp->tty->flags;
+		stli_comstats.cflags = portp->tty->termios->c_cflag;
+		stli_comstats.iflags = portp->tty->termios->c_iflag;
+		stli_comstats.oflags = portp->tty->termios->c_oflag;
+		stli_comstats.lflags = portp->tty->termios->c_lflag;
+		stli_comstats.rxbuffered = portp->tty->flip.count;
+	} else {
+		stli_comstats.ttystate = 0;
+		stli_comstats.cflags = 0;
+		stli_comstats.iflags = 0;
+		stli_comstats.oflags = 0;
+		stli_comstats.lflags = 0;
+		stli_comstats.rxbuffered = 0;
+	}
+
+	stli_comstats.txtotal = stli_cdkstats.txchars;
+	stli_comstats.rxtotal = stli_cdkstats.rxchars + stli_cdkstats.ringover;
+	stli_comstats.txbuffered = stli_cdkstats.txringq;
+	stli_comstats.rxbuffered += stli_cdkstats.rxringq;
+	stli_comstats.rxoverrun = stli_cdkstats.overruns;
+	stli_comstats.rxparity = stli_cdkstats.parity;
+	stli_comstats.rxframing = stli_cdkstats.framing;
+	stli_comstats.rxlost = stli_cdkstats.ringover;
+	stli_comstats.rxbreaks = stli_cdkstats.rxbreaks;
+	stli_comstats.txbreaks = stli_cdkstats.txbreaks;
+	stli_comstats.txxon = stli_cdkstats.txstart;
+	stli_comstats.txxoff = stli_cdkstats.txstop;
+	stli_comstats.rxxon = stli_cdkstats.rxstart;
+	stli_comstats.rxxoff = stli_cdkstats.rxstop;
+	stli_comstats.rxrtsoff = stli_cdkstats.rtscnt / 2;
+	stli_comstats.rxrtson = stli_cdkstats.rtscnt - stli_comstats.rxrtsoff;
+	stli_comstats.modem = stli_cdkstats.dcdcnt;
+	stli_comstats.hwid = stli_cdkstats.hwid;
+	stli_comstats.signals = stli_mktiocm(stli_cdkstats.signals);
 
-	memcpy_tofs(cp, &portp->stats, sizeof(comstats_t));
+	memcpy_tofs(cp, &stli_comstats, sizeof(comstats_t));
 	return(0);
 }
 
@@ -4418,15 +4417,15 @@
 	if (brdp == (stlibrd_t *) NULL)
 		return(-ENODEV);
 
-	memset(&portp->stats, 0, sizeof(comstats_t));
-	portp->stats.brd = portp->brdnr;
-	portp->stats.panel = portp->panelnr;
-	portp->stats.port = portp->portnr;
-
 	if ((rc = stli_cmdwait(brdp, portp, A_CLEARSTATS, 0, 0, 0)) < 0)
 		return(rc);
 
-	memcpy_tofs(cp, &portp->stats, sizeof(comstats_t));
+	memset(&stli_comstats, 0, sizeof(comstats_t));
+	stli_comstats.brd = portp->brdnr;
+	stli_comstats.panel = portp->panelnr;
+	stli_comstats.port = portp->portnr;
+
+	memcpy_tofs(cp, &stli_comstats, sizeof(comstats_t));
 	return(0);
 }
 
diff -u --recursive --new-file v1.3.78/linux/drivers/char/stallion.c linux/drivers/char/stallion.c
--- v1.3.78/linux/drivers/char/stallion.c	Mon Mar 11 11:20:32 1996
+++ linux/drivers/char/stallion.c	Mon Mar 25 12:54:43 1996
@@ -145,7 +145,7 @@
  *	all the local structures required by a serial tty driver.
  */
 static char	*stl_drvname = "Stallion Multiport Serial Driver";
-static char	*stl_drvversion = "1.0.6";
+static char	*stl_drvversion = "1.0.8";
 static char	*stl_serialname = "ttyE";
 static char	*stl_calloutname = "cue";
 
diff -u --recursive --new-file v1.3.78/linux/drivers/net/ibmtr.c linux/drivers/net/ibmtr.c
--- v1.3.78/linux/drivers/net/ibmtr.c	Sun Mar 24 12:09:36 1996
+++ linux/drivers/net/ibmtr.c	Tue Mar 26 11:40:22 1996
@@ -153,7 +153,7 @@
 int tok_probe(struct device *dev);
 unsigned char get_sram_size(struct tok_info *adapt_info);
 
-static int  tok_init_card(struct device *dev);
+static void tok_init_card(unsigned long dev_addr);
 int trdev_init(struct device *dev);
 void tok_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 
diff -u --recursive --new-file v1.3.78/linux/drivers/scsi/scsi.h linux/drivers/scsi/scsi.h
--- v1.3.78/linux/drivers/scsi/scsi.h	Sun Mar 24 18:57:04 1996
+++ linux/drivers/scsi/scsi.h	Tue Mar 26 18:00:17 1996
@@ -514,7 +514,7 @@
  * turned off 
  */
 #define INIT_SCSI_REQUEST       \
-    if (!CURRENT || CURRENT_PLUGGED) {     \
+    if (!CURRENT) {             \
 	CLEAR_INTR;             \
 	restore_flags(flags);	\
 	return;                 \
diff -u --recursive --new-file v1.3.78/linux/fs/buffer.c linux/fs/buffer.c
--- v1.3.78/linux/fs/buffer.c	Wed Mar 13 13:52:45 1996
+++ linux/fs/buffer.c	Tue Mar 26 18:03:43 1996
@@ -103,7 +103,7 @@
 				   trim back the buffers */
 	} b_un;
 	unsigned int data[N_PARAM];
-} bdf_prm = {{25, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}};
+} bdf_prm = {{60, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}};
 
 /* The lav constant is set for 1 minute, as long as the update process runs
    every 5 seconds.  If you change the frequency of update, the time
diff -u --recursive --new-file v1.3.78/linux/fs/ncpfs/dir.c linux/fs/ncpfs/dir.c
--- v1.3.78/linux/fs/ncpfs/dir.c	Sun Mar 10 13:49:16 1996
+++ linux/fs/ncpfs/dir.c	Tue Mar 26 17:13:57 1996
@@ -393,7 +393,7 @@
 
 		if (ncp_get_volume_info_with_number(server, i, &info) != 0)
 		{
-			return total_count;
+			return (total_count - fpos);
 		}
 
 		if (strlen(info.volume_name) > 0)
diff -u --recursive --new-file v1.3.78/linux/fs/nfs/nfsroot.c linux/fs/nfs/nfsroot.c
--- v1.3.78/linux/fs/nfs/nfsroot.c	Thu Mar 21 08:56:46 1996
+++ linux/fs/nfs/nfsroot.c	Tue Mar 26 08:29:46 1996
@@ -65,8 +65,8 @@
 #include <linux/if.h>
 #include <linux/inet.h>
 #include <linux/net.h>
-#include <linux/if_arp.h>
 #include <linux/netdevice.h>
+#include <linux/if_arp.h>
 #ifdef CONFIG_AX25
 #include <net/ax25.h>	/* For AX25_P_IP */
 #endif
diff -u --recursive --new-file v1.3.78/linux/include/asm-alpha/posix_types.h linux/include/asm-alpha/posix_types.h
--- v1.3.78/linux/include/asm-alpha/posix_types.h	Sun Mar 24 13:16:29 1996
+++ linux/include/asm-alpha/posix_types.h	Tue Mar 26 16:56:52 1996
@@ -7,25 +7,29 @@
  * assume GCC is being used.
  */
 
-typedef unsigned int	__dev_t;
-typedef unsigned int	__ino_t;
-typedef unsigned int	__mode_t;
-typedef unsigned short	__nlink_t;
-typedef long		__off_t;
-typedef int		__pid_t;
-typedef unsigned int	__uid_t;
-typedef unsigned int	__gid_t;
-typedef unsigned long	__size_t;
-typedef long		__ssize_t;
-typedef long		__ptrdiff_t;
-typedef long		__time_t;
-typedef long		__clock_t;
-typedef int		__daddr_t;
-typedef char *		__caddr_t;
+typedef unsigned int	__kernel_dev_t;
+typedef unsigned int	__kernel_ino_t;
+typedef unsigned int	__kernel_mode_t;
+typedef unsigned short	__kernel_nlink_t;
+typedef long		__kernel_off_t;
+typedef int		__kernel_pid_t;
+typedef unsigned int	__kernel_uid_t;
+typedef unsigned int	__kernel_gid_t;
+typedef unsigned long	__kernel_size_t;
+typedef long		__kernel_ssize_t;
+typedef long		__kernel_ptrdiff_t;
+typedef long		__kernel_time_t;
+typedef long		__kernel_clock_t;
+typedef int		__kernel_daddr_t;
+typedef char *		__kernel_caddr_t;
+
+#ifdef __GNUC__
+typedef long long	__kernel_loff_t;
+#endif
 
 typedef struct {
 	int	val[2];
-} __fsid_t;
+} __kernel_fsid_t;
 
 #ifndef __GNUC__
 
@@ -33,14 +37,14 @@
 #define	__FD_CLR(d, set)	((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
 #define	__FD_ISSET(d, set)	((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
 #define	__FD_ZERO(set)	\
-  ((void) memset ((__ptr_t) (set), 0, sizeof (__fd_set)))
+  ((void) memset ((__ptr_t) (set), 0, sizeof (__kernel_fd_set)))
 
 #else /* __GNUC__ */
 
 /* With GNU C, use inline functions instead so args are evaluated only once: */
 
 #undef __FD_SET
-static __inline__ void __FD_SET(unsigned long fd, __fd_set *fdsetp)
+static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
 {
 	unsigned long _tmp = fd / __NFDBITS;
 	unsigned long _rem = fd % __NFDBITS;
@@ -48,7 +52,7 @@
 }
 
 #undef __FD_CLR
-static __inline__ void __FD_CLR(unsigned long fd, __fd_set *fdsetp)
+static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
 {
 	unsigned long _tmp = fd / __NFDBITS;
 	unsigned long _rem = fd % __NFDBITS;
@@ -56,7 +60,7 @@
 }
 
 #undef __FD_ISSET
-static __inline__ int __FD_ISSET(unsigned long fd, __fd_set *p)
+static __inline__ int __FD_ISSET(unsigned long fd, __kernel_fd_set *p)
 { 
 	unsigned long _tmp = fd / __NFDBITS;
 	unsigned long _rem = fd % __NFDBITS;
@@ -68,7 +72,7 @@
  * for a 256-bit fd_set)
  */
 #undef __FD_ZERO
-static __inline__ void __FD_ZERO(__fd_set *p)
+static __inline__ void __FD_ZERO(__kernel_fd_set *p)
 {
 	unsigned int *tmp = p->fds_bits;
 	int i;
diff -u --recursive --new-file v1.3.78/linux/include/asm-alpha/statfs.h linux/include/asm-alpha/statfs.h
--- v1.3.78/linux/include/asm-alpha/statfs.h	Sun Mar 24 12:09:37 1996
+++ linux/include/asm-alpha/statfs.h	Tue Mar 26 21:47:42 1996
@@ -5,7 +5,7 @@
 
 #include <linux/posix_types.h>
 
-typedef __fsid_t	fsid_t;
+typedef __kernel_fsid_t	fsid_t;
 
 #endif
 
@@ -23,7 +23,7 @@
 	int	f_bavail;
 	int	f_files;
 	int	f_ffree;
-	__fsid_t f_fsid;
+	__kernel_fsid_t f_fsid;
 	/* linux-specific entries start here.. */
 	int	f_namelen;
 };
diff -u --recursive --new-file v1.3.78/linux/include/asm-i386/posix_types.h linux/include/asm-i386/posix_types.h
--- v1.3.78/linux/include/asm-i386/posix_types.h	Sun Mar 24 13:15:27 1996
+++ linux/include/asm-i386/posix_types.h	Tue Mar 26 16:55:54 1996
@@ -7,21 +7,25 @@
  * assume GCC is being used.
  */
 
-typedef unsigned short	__dev_t;
-typedef unsigned long	__ino_t;
-typedef unsigned short	__mode_t;
-typedef unsigned short	__nlink_t;
-typedef long		__off_t;
-typedef int		__pid_t;
-typedef unsigned short	__uid_t;
-typedef unsigned short	__gid_t;
-typedef unsigned int	__size_t;
-typedef int		__ssize_t;
-typedef int		__ptrdiff_t;
-typedef long		__time_t;
-typedef long		__clock_t;
-typedef int		__daddr_t;
-typedef char *		__caddr_t;
+typedef unsigned short	__kernel_dev_t;
+typedef unsigned long	__kernel_ino_t;
+typedef unsigned short	__kernel_mode_t;
+typedef unsigned short	__kernel_nlink_t;
+typedef long		__kernel_off_t;
+typedef int		__kernel_pid_t;
+typedef unsigned short	__kernel_uid_t;
+typedef unsigned short	__kernel_gid_t;
+typedef unsigned int	__kernel_size_t;
+typedef int		__kernel_ssize_t;
+typedef int		__kernel_ptrdiff_t;
+typedef long		__kernel_time_t;
+typedef long		__kernel_clock_t;
+typedef int		__kernel_daddr_t;
+typedef char *		__kernel_caddr_t;
+
+#ifdef __GNUC__
+typedef long long	__kernel_loff_t;
+#endif
 
 #undef	__FD_SET
 #define __FD_SET(fd,fdsetp) \
diff -u --recursive --new-file v1.3.78/linux/include/linux/blk.h linux/include/linux/blk.h
--- v1.3.78/linux/include/linux/blk.h	Mon Mar 25 10:22:43 1996
+++ linux/include/linux/blk.h	Tue Mar 26 18:04:57 1996
@@ -319,8 +319,6 @@
 #define CURRENT (blk_dev[MAJOR_NR].current_request)
 #endif
 
-#define CURRENT_PLUGGED IS_PLUGGED(blk_dev+MAJOR_NR)
-
 #define CURRENT_DEV DEVICE_NR(CURRENT->rq_dev)
 
 #ifdef DEVICE_INTR
@@ -358,7 +356,7 @@
 #endif
 
 #define INIT_REQUEST \
-	if (!CURRENT || CURRENT_PLUGGED) {\
+	if (!CURRENT) {\
 		CLEAR_INTR; \
 		return; \
 	} \
diff -u --recursive --new-file v1.3.78/linux/include/linux/blkdev.h linux/include/linux/blkdev.h
--- v1.3.78/linux/include/linux/blkdev.h	Mon Mar 25 10:22:43 1996
+++ linux/include/linux/blkdev.h	Tue Mar 26 18:04:57 1996
@@ -36,10 +36,9 @@
 struct blk_dev_struct {
 	void (*request_fn)(void);
 	struct request * current_request;
+	struct request   plug;
 	struct tq_struct plug_tq;
 };
-
-#define IS_PLUGGED(dev) ((dev)->plug_tq.sync)
 
 struct sec_size {
 	unsigned block_size;
diff -u --recursive --new-file v1.3.78/linux/include/linux/posix_types.h linux/include/linux/posix_types.h
--- v1.3.78/linux/include/linux/posix_types.h	Sun Mar 24 14:39:10 1996
+++ linux/include/linux/posix_types.h	Tue Mar 26 16:58:39 1996
@@ -1,8 +1,6 @@
 #ifndef _LINUX_POSIX_TYPES_H
 #define _LINUX_POSIX_TYPES_H
 
-#define _GNU_TYPES_H
-
 /*
  * This file is generally used by user-level software, so you need to
  * be a little careful about namespace pollution etc.  Also, we cannot
@@ -45,15 +43,8 @@
 
 typedef struct fd_set {
 	unsigned int fds_bits [__FDSET_INTS];
-} __fd_set;
+} __kernel_fd_set;
 
 #include <asm/posix_types.h>
-
-/* bsd */
-
-typedef unsigned char	__u_char;
-typedef unsigned short	__u_short;
-typedef unsigned int	__u_int;
-typedef unsigned long	__u_long;
 
 #endif /* _LINUX_POSIX_TYPES_H */
diff -u --recursive --new-file v1.3.78/linux/include/linux/types.h linux/include/linux/types.h
--- v1.3.78/linux/include/linux/types.h	Mon Mar 25 10:22:30 1996
+++ linux/include/linux/types.h	Tue Mar 26 16:59:30 1996
@@ -6,23 +6,20 @@
 
 #ifndef _LINUX_TYPES_DONT_EXPORT
 
-typedef __fd_set	fd_set;
-typedef __dev_t		dev_t;
-typedef __ino_t		ino_t;
-typedef __mode_t	mode_t;
-typedef __nlink_t	nlink_t;
-typedef __off_t		off_t;
-typedef __pid_t		pid_t;
-typedef __uid_t		uid_t;
-typedef __gid_t		gid_t;
-typedef __daddr_t	daddr_t;
+typedef __kernel_fd_set		fd_set;
+typedef __kernel_dev_t		dev_t;
+typedef __kernel_ino_t		ino_t;
+typedef __kernel_mode_t		mode_t;
+typedef __kernel_nlink_t	nlink_t;
+typedef __kernel_off_t		off_t;
+typedef __kernel_pid_t		pid_t;
+typedef __kernel_uid_t		uid_t;
+typedef __kernel_gid_t		gid_t;
+typedef __kernel_daddr_t	daddr_t;
 
-/* bsd */
-
-typedef __u_char	u_char;
-typedef __u_short	u_short;
-typedef __u_int		u_int;
-typedef __u_long	u_long;
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+typedef __kernel_loff_t		loff_t;
+#endif
 
 /*
  * The following typedefs are also protected by individual ifdefs for
@@ -30,39 +27,45 @@
  */
 #ifndef _SIZE_T
 #define _SIZE_T
-typedef __size_t	size_t;
+typedef __kernel_size_t		size_t;
 #endif
 
 #ifndef _SSIZE_T
 #define _SSIZE_T
-typedef __ssize_t	ssize_t;
+typedef __kernel_ssize_t	ssize_t;
 #endif
 
 #ifndef _PTRDIFF_T
 #define _PTRDIFF_T
-typedef __ptrdiff_t	ptrdiff_t;
+typedef __kernel_ptrdiff_t	ptrdiff_t;
 #endif
 
 #ifndef _TIME_T
 #define _TIME_T
-typedef __time_t	time_t;
+typedef __kernel_time_t		time_t;
 #endif
 
 #ifndef _CLOCK_T
 #define _CLOCK_T
-typedef __clock_t	clock_t;
+typedef __kernel_clock_t	clock_t;
 #endif
 
 #ifndef _CADDR_T
 #define _CADDR_T
-typedef __caddr_t	caddr_t;
+typedef __kernel_caddr_t	caddr_t;
 #endif
 
+/* bsd */
+typedef unsigned char		u_char;
+typedef unsigned short		u_short;
+typedef unsigned int		u_int;
+typedef unsigned long		u_long;
+
 /* sysv */
-typedef unsigned char	unchar;
-typedef unsigned short	ushort;
-typedef unsigned int	uint;
-typedef unsigned long	ulong;
+typedef unsigned char		unchar;
+typedef unsigned short		ushort;
+typedef unsigned int		uint;
+typedef unsigned long		ulong;
 
 #endif /* _LINUX_TYPES_DONT_EXPORT */
 
@@ -71,22 +74,11 @@
  * any application/library that wants linux/types.h.
  */
 
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-
-typedef long long	__loff_t;
-
-#ifndef _LINUX_TYPES_DONT_EXPORT
-#define _LOFF_T
-typedef __loff_t	loff_t;
-#endif
-
-#endif
-
 struct ustat {
-	__daddr_t	f_tfree;
-	__ino_t		f_tinode;
-	char		f_fname[6];
-	char		f_fpack[6];
+	__kernel_daddr_t	f_tfree;
+	__kernel_ino_t		f_tinode;
+	char			f_fname[6];
+	char			f_fpack[6];
 };
 
 #endif /* _LINUX_TYPES_H */
diff -u --recursive --new-file v1.3.78/linux/kernel/ksyms.c linux/kernel/ksyms.c
--- v1.3.78/linux/kernel/ksyms.c	Mon Mar 25 08:58:23 1996
+++ linux/kernel/ksyms.c	Tue Mar 26 11:40:22 1996
@@ -346,11 +346,6 @@
 	X(aux_device_present),
 	X(kbd_read_mask),
 
-#ifdef CONFIG_TR
-	X(tr_setup),
-	X(tr_type_trans),
-#endif
-
 #ifdef CONFIG_BLK_DEV_IDE_PCMCIA
 	X(ide_register),
 	X(ide_unregister),
diff -u --recursive --new-file v1.3.78/linux/net/ipv4/rarp.c linux/net/ipv4/rarp.c
--- v1.3.78/linux/net/ipv4/rarp.c	Thu Feb 15 09:21:37 1996
+++ linux/net/ipv4/rarp.c	Tue Mar 26 09:23:25 1996
@@ -41,6 +41,7 @@
 #include <linux/socket.h>
 #include <linux/sockios.h>
 #include <linux/errno.h>
+#include <linux/netdevice.h>
 #include <linux/if_arp.h>
 #include <linux/in.h>
 #include <linux/config.h>
@@ -49,7 +50,6 @@
 #include <asm/segment.h>
 #include <stdarg.h>
 #include <linux/inet.h>
-#include <linux/netdevice.h>
 #include <linux/etherdevice.h>
 #include <net/ip.h>
 #include <net/route.h>
diff -u --recursive --new-file v1.3.78/linux/net/netsyms.c linux/net/netsyms.c
--- v1.3.78/linux/net/netsyms.c	Mon Mar 25 08:58:28 1996
+++ linux/net/netsyms.c	Tue Mar 26 11:40:22 1996
@@ -113,6 +113,11 @@
 	X(NS8390_init),
 #endif
 
+#ifdef CONFIG_TR
+        X(tr_setup),
+        X(tr_type_trans),
+#endif
+                          
 #ifdef CONFIG_NET_ALIAS
 #include <linux/net_alias.h>
 #endif
diff -u --recursive --new-file v1.3.78/linux/scripts/Menuconfig linux/scripts/Menuconfig
--- v1.3.78/linux/scripts/Menuconfig	Sun Mar 24 20:02:36 1996
+++ linux/scripts/Menuconfig	Tue Mar 26 17:49:18 1996
@@ -78,16 +78,13 @@
 	eval $2=\${$2:-'n'}  x=\$$2
 
 	case $x in
-	y|m) yes='ON' no='OFF' flag="*"
-	   ;;
-	n) yes='OFF' no='ON' flag=" "
-	   ;;
+	y|m)	flag="*" ;;
+	n)	flag=" " ;;
 	esac
 
 	echo -ne "'$2' '($flag) $1' " >>MCmenu
 
-	echo -e "function $2 () { l_bool '$1' '$yes' '$no' '$2' }\n" \
-		>>MCradiolists
+	echo -e "function $2 () { l_bool '$2' \"\$1\" }\n" >>MCradiolists
 }
 
 #
@@ -104,20 +101,15 @@
 		eval $2=\${$2:-'n'}  x=\$$2
 	
 		case $x in
-		y) yes='ON'  no='OFF' module='OFF' flag="*"
-   		;;
-		m) yes='OFF' no='OFF' module='ON' flag="M"
-   		;;
-		*) yes='OFF' no='ON'  module='OFF' flag=" "
-   		;;
+		y) flag="*" ;;
+		m) flag="M" ;;
+		*) flag=" " ;;
 		esac
 	
 		echo -ne "'$2' '<$flag> $1' " >>MCmenu
 	
 		echo -e "
-		function $2 () { \
-			l_tristate '$1' '$yes' '$no' '$module' '$2'
-		}"  >>MCradiolists
+		function $2 () { l_tristate '$2' \"\$1\" }" >>MCradiolists
 	fi
 }
 
@@ -155,7 +147,7 @@
 
 	echo -ne "'$2' '($x) $1' " >>MCmenu
 
-	echo -e "function $2 () { l_int '$1' '$2' '$3' '$x' }\n" >>MCradiolists
+	echo -e "function $2 () { l_int '$1' '$2' '$3' '$x' }" >>MCradiolists
 }
 
 #
@@ -166,7 +158,7 @@
 
 	echo -ne "'$2' '($x) $1' " >>MCmenu
 
-	echo -e "function $2 () { l_hex '$1' '$2' '$3' '$x' }\n" >>MCradiolists
+	echo -e "function $2 () { l_hex '$1' '$2' '$3' '$x' }" >>MCradiolists
 }
 
 #
@@ -203,9 +195,8 @@
 	echo -ne "'$firstchoice' '($current) $title' " >>MCmenu
 
 	echo -e "
-	function $firstchoice () {
-		l_choice '$title' \"$choices\" $current
-	}\n" >>MCradiolists
+	function $firstchoice () \
+		{ l_choice '$title' \"$choices\" $current }" >>MCradiolists
 }
 
 } # END load_functions()
@@ -236,12 +227,14 @@
 
      if [ -z "$text" ]
      then
-	  echo "There is no help available for this kernel option."
+          echo "There is no help available for this kernel option."
+	  return 1
      else
 	  echo "$text"
      fi
   else
 	 echo "There is no help available for this kernel option."
+         return 1
   fi
 }
 
@@ -263,7 +256,7 @@
 #
 # Show the README file.
 #
-function show_readme() {
+function show_readme () {
 	$DIALOG --backtitle "$backtitle" \
 		--textbox scripts/README.Menuconfig $LINES $COLS
 }
@@ -309,22 +302,15 @@
 # Handle a boolean (Yes/No) option.
 #
 function l_bool () {
-	while true
-	do
-		$DIALOG --title "$1" \
-			--backtitle "$backtitle" \
-			--radiolist "$radiolist_instructions" 12 70 2 \
-			'y' 'Yes' $2 'n' 'No' $3 2>MCdialog.out
-
-		case "$?" in
-		0) eval $4=`cat MCdialog.out`
-		   break ;;
-
-		1) help "$4" "$1" ;;
-
-		*) break ;;
+	if [ -n "$2" ]
+	then
+		case "$2" in
+		y|m)	eval $1=y ;;
+		*)	eval $1=n ;;
 		esac
-	done
+	else
+		echo -ne "\007"
+	fi
 }
 
 #
@@ -334,62 +320,44 @@
 	eval $2=\${$2:-'n'}  x=\$$2
 
 	case $x in
-	m) module='ON'  no='OFF' flag='M'
-	   ;;
-	*) module='OFF' no='ON'  flag=' '
-	   ;;
+	y|m) flag='M' ;;
+	*)   flag=' ' ;;
 	esac
 
 	echo -ne "'$2' '<$flag> $1' " >>MCmenu
 
-	echo -e "function $2 () { l_mod_bool '$1' '$module' '$no' '$2' }\n" \
-		>>MCradiolists
+	echo -e "function $2 () { l_mod_bool '$2' \"\$1\" }" >>MCradiolists
 }
 
 #
 # Same as l_bool() except options are (Module/No)
 #
 function l_mod_bool() {
-	while true
-	do
-		$DIALOG --title "$1" \
-			--backtitle "$backtitle" \
-			--radiolist "$radiolist_instructions" 12 70 2 \
-			'm' 'Module' $2 'n' 'No' $3 2>MCdialog.out
-
-		case "$?" in
-		0) eval $4=`cat MCdialog.out`
-		   break ;;
-
-		1) help "$4" "$1" ;;
-
-		*) break ;;
+	if [ -n "$2" ]
+	then
+		case "$2" in
+		y|m)	eval $1=m ;;
+		*)	eval $1=n ;;
 		esac
-			
-	done
+	else
+		echo -ne "\007"
+	fi
 }
 
 #
 # Handle a tristate (Yes/No/Module) option.
 #
 function l_tristate () {
-	while true
-	do
-		$DIALOG --title "$1" \
-			--backtitle "$backtitle" \
-			--radiolist "$radiolist_instructions" 13 70 3 \
-			'y' 'Yes' $2 'n' 'No' $3 'm' 'Module' $4 \
-			2>MCdialog.out
-
-		case "$?" in
-		0) eval $5=`cat MCdialog.out`
-		   break ;;
-
-		1) help "$5" "$1" ;;
-
-		*) break ;;
+	if [ -n "$2" ]
+	then
+		case "$2" in
+		y) eval $1=y ;;
+		m) eval $1=m ;;
+		*) eval $1=n ;;
 		esac
-	done
+	else
+		echo -ne "\007"
+	fi
 }
 
 #
@@ -401,7 +369,7 @@
 		if $DIALOG --title "$1" \
 			--backtitle "$backtitle" \
 			--inputbox "$inputbox_instructions_int" \
-			15 55 "$4" 2>MCdialog.out
+			10 75 "$4" 2>MCdialog.out
 		then
 			answer="`cat MCdialog.out`"
 			answer="${answer:-$3}"
@@ -433,7 +401,7 @@
 		if $DIALOG --title "$1" \
 			--backtitle "$backtitle" \
 			--inputbox "$inputbox_instructions_hex" \
-			15 55 "$4" 2>MCdialog.out
+			10 75 "$4" 2>MCdialog.out
 		then
 			answer="`cat MCdialog.out`"
 			answer="${answer:-$3}"
@@ -489,7 +457,7 @@
 		if $DIALOG --title "$title" \
 			--backtitle "$backtitle" \
 			--radiolist "$radiolist_instructions" \
-			22 70 11 $list 2>MCdialog.out
+			15 70 6 $list 2>MCdialog.out
 		then
 			choice=`cat MCdialog.out`
 			break
@@ -647,30 +615,37 @@
 # dialog commands or recursively call other menus.
 #
 function activate_menu () {
-
 	while true
 	do
-		comment_ctr=0
-		$1 "$default"		#Create the radiolists and dialog cmd
-		. MCradiolists		#Read in the dialog functions.
-
-		. MCmenu 2>MCdialog.out	#Activate this menu
-
-		case "$?" in
-		0)
-			defaults="`cat MCdialog.out`$defaults"  #psuedo stack
-			. MCdialog.out
+		comment_ctr=0		#So comment lines get unique tags
+
+		$1 "$default"		#Create the lxdialog menu & functions
+		. MCradiolists		#Source the menu's functions
+
+		. MCmenu 2>MCdialog.out	#Activate the lxdialog menu
+		ret=$?
+
+		read selection <MCdialog.out
+
+		case "$ret" in
+		0|3|4|5)
+			defaults="$selection$defaults"  #psuedo stack
+			case "$ret" in
+			0) eval $selection   ;;
+			3) eval $selection y ;;
+			4) eval $selection n ;;
+			5) eval $selection m ;;
+			esac
 			default="${defaults%%*}" defaults="${defaults#*}"
 			;;
 		2)	
-			echo >>MCdialog.out
-			read selection <MCdialog.out
 			default="${selection%% *}"
 
 			case "$selection" in
-			*"-->"*|\
-			*"alt_config"*) show_readme ;;
-			*)	 eval help $selection ;;
+			*"-->"*|*"alt_config"*)
+				show_readme ;;
+			*)
+				eval help $selection ;;
 			esac
 			;;
 		255|1)
@@ -876,8 +851,9 @@
          	m)
 			if [ "$CONFIG_MODULES" = "y" ]
 			then
-                		echo "$1=m"		>>$CONFIG
-                		echo "#undef  $1"	>>$CONFIG_H
+                		echo "$1=m"		   >>$CONFIG
+                		echo "#undef  $1"	   >>$CONFIG_H
+                		echo "#define $1_MODULE 1" >>$CONFIG_H
 			else
                 		echo "$1=y" 		>>$CONFIG
                 		echo "#define $1 1"	>>$CONFIG_H
@@ -1026,17 +1002,24 @@
 	COLS=75
 	;;
 esac
-	
+
+if [ $LINES -lt 15 -o $COLS -lt 75 ]
+then
+	echo -e "\n\007Your display is too small to run Menuconfig!\n"
+	echo "It is currently set to $LINES lines by $COLS columns."
+	echo "It must be at least 15 lines by 75 columns."
+	exit 0
+fi
+
 
 menu_instructions="\
-The Arrow keys navigate the menu.  \
+Arrow keys navigate the menu.  \
 Highlighted letters are hotkeys.  \
-Press the <Space Bar> to select an item.  \
-Press <Esc><Esc> to exit.  \
-Press <?> for Help.  \
-(*) options will be compiled into the kernel.  \
-(M) options will be modules.  \
-< > marks module capable options."
+Pressing <Y> includes a feature, <N> excludes it, <M> makes it modular.  \
+Press <Esc><Esc> to exit or <?> for Help.  \
+(*) shows built in features.  \
+(M) shows modules.  \
+< > features are module capable."
 
 radiolist_instructions="\
 Use the arrow keys to navigate this window or \
@@ -1047,11 +1030,11 @@
 inputbox_instructions_int="\
 Please enter a decimal value between 1 and 9999. \
 Fractions will not be accepted.  \
-Use the <TAB> key to move from the input field to buttons below it."
+Use the <TAB> key to move from the input field to the buttons below it."
 
 inputbox_instructions_hex="\
 Please enter a hexidecimal value. \
-Use the <TAB> key to move from the input field to buttons below it."
+Use the <TAB> key to move from the input field to the buttons below it."
 
 backtitle="Linux Kernel Configuration"
 
diff -u --recursive --new-file v1.3.78/linux/scripts/README.Menuconfig linux/scripts/README.Menuconfig
--- v1.3.78/linux/scripts/README.Menuconfig	Sun Mar 24 20:02:36 1996
+++ linux/scripts/README.Menuconfig	Tue Mar 26 17:49:18 1996
@@ -3,25 +3,46 @@
 require X Windows.  With this utility you can easily select a kernel
 option to modify without sifting through 100 other options.
 
-Some Menuconfig keyboard hints:
+Overview
+--------
+Some kernel features may be built directly into the kernel.
+Some may be made into loadable runtime modules.  Some features
+may be completely removed altogether.  There are also certain
+kernel parameters which are not really features, but must be 
+entered in as decimal or hexidecimal numbers or possibly text.
+
+Menu items beginning with (*), (M) or ( ) represent features 
+configured to be built in, modularized or removed respectively.
+Pointed brackets <> represent module capable features.
+                                                             more...
+
+To change any of these features, highlight it with the cursor 
+keys and press <Y> to build it in, <M> to make it a module or
+<N> to removed it.  (See keyboard hints below)
+
+Items beginning with numbers or other text within parenthesis can 
+be changed by highlighting the item and pressing <Enter>.  Then
+enter the new parameter into the dialog box that pops up.
+
+
+Some keyboard hints:
 
 Menus
 ----------
 o  Use the Up/Down arrow keys (cursor keys) to highlight the item 
-   or submenu you wish to select.  
+   you wish to change or submenu wish to select.  Submenus are
+   designated by "--->".
+
    Shortcut: Press the option's highlighted letter (hotkey).
              Pressing a hotkey more than once will sequence
-             through all items which use that hotkey.
+             through all visible items which use that hotkey.
 
    You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll
    unseen options into view.
 
-o  Use the cursor keys to highlight <Select> and press <ENTER>.  
-   Shortcut: Press the <SPACE BAR> or <S> if there is no item using
-             <S> as it's hotkey.
-
 o  To exit a menu use the cursor keys to highlight the <Exit> button
    and press <ENTER>.  
+
    Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey
              using those letters.  You may press a single <ESC>, but
              there is a delayed response which you may find annoying.
@@ -31,18 +52,21 @@
 
 o  To get help with an item, use the cursor keys to highlight <Help>
    and Press <ENTER>.
+
    Shortcut: Press <H> or <?>.
 
 
-Radiolists  (Yes/No/Module)
+Radiolists  (Choice lists)
 -----------
 o  Use the cursor keys to select the option you wish to set and press
    <S> or the <SPACE BAR>.
+
    Shortcut: Press the first letter of the option you wish to set then
              press <S> or <SPACE BAR>.
 
 o  To see available help for the item, use the cursor keys to highlight
    <Help> and Press <ENTER>.
+
    Shortcut: Press <H> or <?>.
 
    Also, the <TAB> and cursor keys will cycle between <Select> and
diff -u --recursive --new-file v1.3.78/linux/scripts/header.tk linux/scripts/header.tk
--- v1.3.78/linux/scripts/header.tk	Sun Mar 17 09:58:21 1996
+++ linux/scripts/header.tk	Tue Mar 26 08:37:08 1996
@@ -204,7 +204,8 @@
 		       puts $file2 "#undef $varname"} \
 	elseif { $variable == 2 || ($dep == 2 && $variable == 1) } \
 		then { puts $file1 "$varname=m"; \
-		       puts $file2 "#undef $varname"  } \
+		       puts $file2 "#undef $varname"; \
+		       puts $file2 "#define $varname_MODULE 1" } \
 	elseif { $variable == 1 && $dep != 2 } \
 		then { puts $file1 "$varname=y"; \
 		       puts $file2 "#define $varname 1" } \
diff -u --recursive --new-file v1.3.78/linux/scripts/lxdialog/menubox.c linux/scripts/lxdialog/menubox.c
--- v1.3.78/linux/scripts/lxdialog/menubox.c	Sat Mar 23 19:57:09 1996
+++ linux/scripts/lxdialog/menubox.c	Tue Mar 26 17:49:18 1996
@@ -197,19 +197,25 @@
     print_buttons (dialog, height, width, 0);
 
     while (key != ESC) {
-	key = wgetch (dialog);
+	key = wgetch(dialog);
 
+	if (isalpha(key)) key = tolower(key);
+
+	if (strchr("ynm", key))
+		i = max_choice;
+	else {
         for (i = choice+1; i < max_choice; i++) {
 		j = first_alpha(items[(scroll+i)*2+1]);
-		if (toupper(key) == toupper(items[(scroll+i)*2+1][j]))
+		if (key == tolower(items[(scroll+i)*2+1][j]))
                 	break;
 	}
 	if (i == max_choice)
        		for (i = 0; i < max_choice; i++) {
 			j = first_alpha(items[(scroll+i)*2+1]);
-			if (toupper(key) == toupper(items[(scroll+i)*2+1][j]))
+			if (key == tolower(items[(scroll+i)*2+1][j]))
                 		break;
 		}
+	}
 
 	if (i < max_choice || 
             key == KEY_UP || key == KEY_DOWN ||
@@ -302,30 +308,31 @@
 	    print_buttons(dialog, height, width, button);
 	    wrefresh (dialog);
 	    break;
-	case ' ':
-	case 'S':
 	case 's':
+	case 'y':
+	case 'n':
+	case 'm':
 	    delwin (dialog);
-            fprintf(stderr, items[(scroll + choice) * 2]);
+            fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
+            if (key == 'y') return 3;
+            if (key == 'n') return 4;
+            if (key == 'm') return 5;
 	    return 0;
-	case 'H':
 	case 'h':
 	case '?':
 	    button = 2;
 	case '\n':
 	    delwin (dialog);
 	    if (button == 2) 
-            	fprintf(stderr, "%s \"%s\"", 
+            	fprintf(stderr, "%s \"%s\"\n", 
 			items[(scroll + choice) * 2],
 			items[(scroll + choice) * 2 + 1] +
 			first_alpha(items[(scroll + choice) * 2 + 1]));
 	    else
-            	fprintf(stderr, items[(scroll + choice) * 2]);
+            	fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
 
 	    return button;
-	case 'E':
 	case 'e':
-	case 'X':
 	case 'x':
 	    key = ESC;
 	case ESC:
diff -u --recursive --new-file v1.3.78/linux/scripts/lxdialog/util.c linux/scripts/lxdialog/util.c
--- v1.3.78/linux/scripts/lxdialog/util.c	Wed Mar 13 08:38:53 1996
+++ linux/scripts/lxdialog/util.c	Tue Mar 26 17:49:18 1996
@@ -342,13 +342,16 @@
 int
 first_alpha(const char *string)
 {
-	int i, in_paren=0;
+	int i, in_paren=0, c;
 
 	for (i = 0; i < strlen(string); i++) {
-		if (string[i] == '(') ++in_paren;
-		if (string[i] == ')') --in_paren;
+		c = tolower(string[i]);
 
-		if ((! in_paren) && isalpha(string[i]))
+		if (c == '(') ++in_paren;
+		if (c == ')') --in_paren;
+
+		if ((! in_paren) && isalpha(c) && 
+		     strchr("nNyYmM", c) == 0)
 			return i;
 	}
 
diff -u --recursive --new-file v1.3.78/linux/scripts/patch-kernel linux/scripts/patch-kernel
--- v1.3.78/linux/scripts/patch-kernel	Thu Mar 21 08:55:34 1996
+++ linux/scripts/patch-kernel	Tue Mar 26 21:22:14 1996
@@ -43,11 +43,11 @@
         echo "failed.  Clean up yourself."
         break
     fi
-    if [ "`find $sourcedir -follow '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ]
+    if [ "`find $sourcedir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ]
     then
         echo "Aborting.  Reject files found."
         break
     fi
     # Remove backup files
-    find $sourcedir -follow '(' -name '*.orig' -o -name '.*.orig' ')' -print | xargs rm -f
+    find $sourcedir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \;
 done
