diff -u +recursive +new-file ALPHA-1.0/linux/CHANGES linux/CHANGES
--- ALPHA-1.0/linux/CHANGES	Wed Dec  1 14:44:15 1993
+++ linux/CHANGES	Mon Mar 14 00:25:31 1994
@@ -1,3 +1,13 @@
+CHANGES since 0.99 patchlevel 15:
+
+ - removed all the bugs, of course.
+ - networking fixes.
+ - more changes than I really wanted..
+
+CHANGES since 0.99 patchlevel 14:
+
+ - too many to count, really.  Besides, I've lost my notes. 
+
 CHANGES since 0.99 patchlevel 13:
 
  - new kernel source layout: drivers separated
diff -u +recursive +new-file ALPHA-1.0/linux/CREDITS linux/CREDITS
--- ALPHA-1.0/linux/CREDITS
+++ linux/CREDITS	Sun Mar 13 23:59:52 1994
@@ -0,0 +1,605 @@
+	This is at least a partial credits-file of people that have
+	contributed to the linux project.  It is sorted by name, and
+	formatted in a format that allows for easy grepping and
+	beautification by scripts.  The fields are: name (N), email (E),
+	description (D) and snail-mail address (S).  Thanks,
+
+			Linus
+----------
+
+N: Krishna Balasubramanian
+E: balasub@cis.ohio-state.edu
+D: Wrote SYS V IPC (part of standard kernel since 0.99.10)
+
+N: Arindam Banerji
+E: axb@cse.nd.edu
+D: Contributed ESDI driver routines needed to port LINUX to the PS/2 MCA.
+S: Department of Computer Science & Eng.
+S: University of Notre Dame
+S: Notre Dame, Indiana
+S: USA
+
+N: Peter Bauer
+E: 100136.3530@compuserve.com
+D: Driver for depca-ethernet-board
+S: 69259 Wilhemsfeld
+S: Rainweg 15
+S: Germany
+
+N: Fred Baumgarten
+E: dc6iq@insu1.etec.uni-karlsruhe.de
+D: NET-2 & netstat(8)
+S: Kandelstrasse 27
+S: 76297 Stutensee
+S: Germany
+
+N: Donald Becker
+E: becker@super.org
+D: General low-level networking hacker
+D: Most of the ethercard drivers
+D: Original author of the NFS server
+S: 17100 Science Drive
+S: Bowie, Maryland 20715
+S: USA
+
+N: Stephen R. van den Berg (AKA BuGless)
+E: berg@pool.informatik.rwth-aachen.de
+D: General kernel, gcc, and libc hacker
+D: Specialisation: tweaking, ensuring portability, tweaking, cleaning,
+D: tweaking and occasionally debugging :-)
+S: Bouwensstraat 22
+S: 6369 BG  Simpelveld
+S: The Netherlands
+
+N: Hennus Bergman
+E: hennus@sky.nl.mugnet.org  [My uucp-fed Linux box at home]
+E: csg279@wing.rug.nl        [Alternate address]
+D: Author and maintainer of the QIC-02 tape driver
+S: The Netherlands
+
+N: Ross Biro
+E: bir7@leland.Stanford.Edu
+D: Original author of the Linux networking code
+
+N: Bill Bogstad
+E: bogstad@cs.jhu.edu
+D: Wrote /proc/self patch
+S: Johns Hopkins University
+S: Computer Science Department
+S: Baltimore, Maryland 21218
+S: USA
+
+N: John Boyd
+E: boyd@cis.ohio-state.edu
+D: Co-author of wd7000 SCSI driver
+S: 101 Curl Drive #591
+S: Columbus, Ohio 43210 
+S: USA
+
+N: Andries Brouwer
+E: aeb@cwi.nl
+D: International character handling for keyboard and console
+S: Bessemerstraat 21
+S: Amsterdam
+S: The Netherlands
+
+N: Remy Card
+E: Remy.Card@masi.ibp.fr
+D: Extended file system designer and developer
+D: Second extended file system designer and developer
+S: Institut Blaise Pascal
+S: 4 Place Jussieu, 75252 Paris Cedex 05
+S: France
+
+N: Ed Carp
+E: ecarp@netcom.com
+D: uucp, elm, pine, pico port
+D: cron, at(1) developer
+S: 48287 Sawleaf
+S: Fremont, California  94539
+S: USA
+
+N: Raymond Chen
+E: raymondc@microsoft.com
+D: Author of Configure script
+S: 14509 NE 39th St, #1096
+S: Bellevue WA 98007
+S: USA
+
+N: Alan Cox
+E: iiitac@pyr.swan.ac.uk
+E: gw4pts@gw4pts.ampr.org
+E: GW4PTS@GB7SWN (packet radio)
+D: NET2Debugged author
+D: Network layer debugging
+D: AX.25 & IPX alpha releases
+S: <No>
+
+N: Laurence Culhane
+E: loz@holmes.demon.co.uk
+D: Wrote the initial alpha SLIP code
+S: 81 Hood Street
+S: Northampton
+S: NN1 3QT
+S: England
+
+N: Wayne Davison
+E: davison@borland.com
+D: Second extended file system co-designer
+
+N: Thomas Dunbar
+E: tdunbar@vtaix.cc.vt.edu
+D: TeX & METAFONT hacking/maintainence
+S: Dean, Graduate School
+S: Virginia Tech
+S: Blacksburg, Virginia 24061
+S: USA
+
+N: Torsten Duwe
+E: Torsten.Duwe@informatik.uni-erlangen.de
+D: Part-time kernel hacker
+D: The Linux Support Team Erlangen
+S: Grevenbroicher Str. 17
+S: 47807 Krefeld
+S: Germany
+
+N: Drew Eckhardt
+E: drew@cs.Colorado.EDU
+D: SCSI code
+D: Assorted snippets elsewhere
+D: Boot sector "..." printing
+S: 538 West Laurell Court
+S: Louisville, Colorado 80027
+S: USA
+
+N: Bjorn Ekwall
+E: bj0rn@blox.se
+D: Driver for the D-Link parallel port Ethernet adapter
+S: Myrstuguv. 83
+S: S-143 32  VARBY
+S: Sweden
+
+N: Doug Evans
+E: dje@cygnus.com
+D: Wrote Xenix FS (part of standard kernel since 0.99.15)
+
+N: Rik Faith
+E: faith@cs.unc.edu
+D: Future Domain TMC-16x0 SCSI driver
+
+N: Juergen Fischer
+E: fischer@server.et-inf.fho-emden.de
+D: Author of Adaptec AHA-152x scsi driver
+S: Schulstrasse 18
+S: 26506 Norden
+S: Germany
+
+N: Jeremy Fitzhardinge
+E: jeremy@sw.oz.au
+D: Improved mmap and munmap handling
+D: General mm minor tidyups
+S: 99 Albermarle Street
+S: Newtown 2042
+S: Australia
+
+N: Ralf Flaxa
+E: rfflaxa@immd4.informatik.uni-erlangen.de
+D: The Linux Support Team Erlangen
+
+N: Nigel Gamble
+E: nigel%gamble.uucp@gate.net
+D: Interrupt-driven printer driver
+S: 301 Norwood Terrace, Apartment N226
+S: Boca Raton, Florida 33431-6588
+S: USA
+
+N: Philip Gladstone
+E: philipg@onsett.com
+D: Kernel / timekeeping stuff
+
+N: Bruno Haible
+E: haible@ma2s2.mathematik.uni-karlsruhe.de
+D: Unified SysV FS based on Xenix FS (part of standard kernel since 0.99.15)
+S: Augartenstrasse 40
+S: D - 76137 Karlsruhe
+S: Germany
+
+N: Andrew Haylett
+E: ajh@gec-mrc.co.uk
+D: Selection mechanism
+S: GEC-Marconi Research Centre
+S: West Hanningfield Road
+S: Great Baddow, Essex CM2 8HN
+S: UK
+
+N: Dirk Hohndel
+E: hohndel@informatik.uni-wuerzburg.de
+D: XFree86
+S: Universit"at W"urzburg, LS Informatik I
+S: Am Hubland, 97218 W"urzburg
+S: Germany
+
+N: Nick Holloway
+E: alfie@dcs.warwick.ac.uk
+D: Small patches for kernel, libc
+D: Makedev
+S: Department of Computer Science
+S: University of Warwick
+S: Coventry
+S: CV4 7AL
+S: UK
+
+N: Ron Holt
+E: ron@novell.com
+D: Kernel development
+D: Contributed to kernel Wabi/Wine support
+S: Novell, Inc.
+S: 1700 South 122 East, Mailstop CP-1
+S: Provo, Utah 84606
+S: USA
+
+N: Rob W. W. Hooft
+E: hooft@EMBL-Heidelberg.DE
+D: Shared libs for graphics-tools and for the f2c compiler
+D: Some kernel programming on the floppy and sounddrivers in early days
+D: Some other hacks to get different kinds of programs to work for linux
+S: Panoramastrasse 18
+S: D-69126 Heidelberg
+S: Germany
+
+N: Michael K. Johnson
+E: johnsonm@sunsite.unc.edu
+D: The Linux Documentation Project
+D: Kernel Hackers' Guide
+D: Procps
+D: Proc filesystem
+D: Maintain tsx-11.mit.edu
+D: LP driver
+S: 201 Howell Street, Apartment 1C
+S: Chapel Hill, North Carolina 27514-4818
+S: USA
+
+N: Fred N. van Kempen
+E: waltje@uwalt.nl.mugnet.org
+D: NET-2
+D: Drivers
+D: Kernel cleanups
+S: Hoefbladhof 27
+S: 2215 DV  Voorhout
+S: The Netherlands
+
+N: Olaf Kirch
+E: okir@monad.swb.de
+D: Author of the Linux Network Administrators' Guide
+S: Kattreinstr 38
+S: D-64295
+S: Germany
+
+N: Ian Kluft
+E: ikluft@thunder.sbay.org
+D: Smail binary packages for Slackware and Debian
+S: 2200 Monroe Street #1509
+S: Santa Clara, California 95050-3452
+S: USA
+
+N: Rudolf Koenig
+E: rfkoenig@immd4.informatik.uni-erlangen.de
+D: The Linux Support Team Erlangen
+
+N: Bas Laarhoven
+E: bas@vimec.nl
+D: Loadable modules and ftape driver
+S: Mr. v. Boemellaan 39
+S: NL-5237 KA  's-Hertogenbosch
+S: The Netherlands
+
+N: Warner Losh
+E: imp@boulder.parcplace.com
+D: Provided OI/OB for Linux, general hacker
+S: 4909 Pearl East Circle Suite 200
+S: Boulder, Colorado 80303
+S: USA
+
+N: H.J. Lu
+E: hjl@nynexst.com
+D: GCC + libraries hacker
+
+N: Tuomas J. Lukka
+E: Tuomas.Lukka@Helsinki.FI
+D: Original dual-monitor patches
+D: Console-mouse-tracking patches
+S: Puistokaari 1 E 18
+S: 00200 Helsinki
+S: Finland
+
+N: Kai M"akisara
+E: Kai.Makisara@vtt.fi
+D: SCSI Tape Driver
+
+N: James B. MacLean
+E: jmaclean@fox.nstn.ns.ca
+D: Coordinator of DOSEMU releases
+D: Program in DOSEMU
+S: PO BOX 220, HFX. CENTRAL
+S: Halifax, Nova Scotia
+S: Canada B3J 3C8
+
+N: Pat Mackinlay
+E: pat@it.com.au
+D: 8 bit XT hard disk driver
+D: Miscellaneous ST0x, TMC-8xx and other SCSI hacking
+S: 25 McMillan Street
+S: Victoria Park, 6100
+S: Western Australia
+
+N: John A. Martin
+E: jmartin@csc.com
+E: jam@acm.org
+E: j.a.martin@ieee.org
+D: FSSTND contributor
+D: Credit file compilator
+S: Computer Sciences Corporation
+S: 1100 West Street
+S: Laurel, Maryland 20707-3587
+S: USA
+
+N: Bradley McLean
+E: brad@bradpc.gaylord.com
+D: Device driver hacker
+D: General kernel debugger
+S: 249 Nichols Avenue
+S: Syracuse, New York 13206
+S: USA
+
+N: Craig Metz
+E: cmetz@tjhsst.edu
+D: Some of PAS 16 mixer & PCM support
+S: 12305 Country Ridge Lane
+S: Fairfax, Virginia 22033
+S: USA
+
+N: William (Bill) Metzenthen
+E: billm@vaxc.cc.monash.edu.au
+E: billm@jacobi.maths.monash.edu.au
+D: Author of the FPU emulator.
+D: Minor kernel hacker for other lost causes (Hercules mono, etc).
+S: 22 Parker Street
+S: Ormond
+S: Victoria 3163
+S: Australia
+
+N: Rick Miller
+E: rick@discus.mil.wi.us
+D: Linux Device Registrar (Major/minor numbers), "au-play", "bwBASIC"
+S: S78 W16203 Woods Road
+S: Muskego, Wisconsin 53150
+S: USA
+
+N: Corey Minyard
+E: minyard@wf-rch.cirr.com
+D: Sony CDU31A CDROM Driver
+S: 1805 Marquette
+S: Richardson, Texas 75081
+S: USA
+
+N: Eberhard Moenkeberg
+E: emoenke@gwdg.de
+D: CDROM driver "sbpcd" (Matsushita/Panasonic/Soundblaster)
+S: Reinholdstrasse 14
+S: D-37083 Goettingen
+S: Germany
+
+N: Ian A. Murdock
+E: imurdock@shell.portal.com
+D: Creator of Debian distribution
+S: 30 White Tail Lane
+S: Lafayette, Indiana 47906
+S: USA
+
+N: Johan Myreen
+E: jem@vipunen.hut.fi
+D: PS/2 mouse driver writer etc.
+S: Dragonvagen 1 A 13
+S: FIN-00330 Helsingfors
+S: Finland
+
+N: Stefan Probst
+E: snprobst@immd4.informatik.uni-erlangen.de
+D: The Linux Support Team Erlangen
+
+N: Daniel Quinlan
+E: quinlan@bucknell.edu
+D: FSSTND Coordinator
+S: Box C3529
+S: Bucknell University
+S: Lewisburg, Pennsylvania 17837
+S: USA
+
+N: Florian La Roche
+E: rzsfl@rz.uni-sb.de
+E: flla@stud.uni-sb.de
+D: Net programs and kernel net hacker
+S: Gaildorfer Str. 27
+S: 7000 Stuttgart 50
+S: Germany
+
+N: Robert Sanders
+E: gt8134b@prism.gatech.edu
+D: Dosemu
+
+N: Peter De Schrijver
+E: stud11@cc4.kuleuven.ac.be
+D: Mitsumi CD-ROM driver patches March version
+S: Molenbaan 29
+S: B2240 Zandhoven
+S: Belgium
+
+N: Darren Senn
+E: sinster@scintilla.santa-clara.ca.us
+D: Whatever I notice needs doing (so far: itimers, /proc)
+S: 620 Park View Drive #206
+S: Santa Clara, California 95054
+S: USA
+
+N: Chris Smith
+E: csmith@convex.com
+D: HPFS filesystem
+S: Richardson, Texas
+S: USA
+
+N: Drew Sullivan
+E: drew@lethe.north.net
+D: iBCS2 developer
+S: 22 Irvington Cres.
+S: Willowdale, Ontario
+S: Canada, M2N 2Z1
+
+N: Tommy Thorn
+E: Tommy.Thorn@daimi.aau.dk
+D: Device driver hacker (aha1542 & plip)
+S: Aarhus University
+S: Computer Science Department
+S: Ny Munkegade 116
+S: DK-8000 Aarhus C
+S: Denmark
+
+N: Jon Tombs
+E: jon@gtex02.us.es
+D: NFS mmap()
+D: XF86_S3
+D: Kernel modules
+S: C/ Teodosio 43
+S: Portal 6 1-A
+S: Sevilla 41002
+S: Spain
+
+N: Linus Torvalds
+E: Linus.Torvalds@Helsinki.FI
+D: General kernel hacker
+S: Kalevankatu 55 B 37
+S: 00180 Helsinki
+S: Finland
+
+N: Theodore Ts'o
+E: tytso@mit.edu
+D: Random Linux hacker
+D: Maintainer of tsx-11.mit.edu ftp archive
+D: Maintainer of c.o.l.* Usenet<->mail gateway
+D: Author of serial driver
+D: Author of the new e2fsck
+D: Author of job control and system call restart code
+D: Author of ramdisk device driver
+D: Author of loopback device driver
+S: MIT Room E40-343
+S: 1 Amherst Street
+S: Cambridge, Massachusetts 02139
+S: USA
+
+N: Simmule Turner
+E: simmy@digex.com
+D: Added swapping to filesystem
+S: 8504 16th Street #406
+S: Silver Spring, Maryland 20910
+S: USA
+
+N: Stephen Tweedie
+E: sct@dcs.ed.ac.uk
+D: Second extended file system developer
+D: General filesystem hacker
+S: Dept. of Computer Science
+S: University of Edinburgh
+S: JCMB, The King's Buildings
+S: Mayfield Road
+S: Edinburgh EH9 3JZ
+S: Scotland, UK
+
+N: Thomas Uhl
+E: uhl@sun1.rz.fh-heilbronn.de
+D: Application programmer
+D: Linux promoter
+D: Author of a German book on Linux
+S: Obere Heerbergstrasse 17
+S: 97078 Wuerzburg
+S: Germany
+
+N: Juergen Weigert
+E: jnweiger@immd4.informatik.uni-erlangen.de
+D: The Linux Support Team Erlangen
+
+N: Matt Welsh
+E: mdw@sunsite.unc.edu
+D: Linux Documentation Project coordinator
+D: Author, Linux Installation and Getting Started
+D: HOWTO coordinator and writer
+D: Maintainer of sunsite.unc.edu Linux doc archives
+D: Moderator, comp.os.linux.announce
+S: 205 Gray Street NE
+S: Wilson, North Caroilina 27893 
+S: USA
+
+
+N: Marco van Wieringen
+E: mvw@mercury.mcs.nl.mugnet.org
+D: Author of acct and quota
+S: Breeburgsingel 12
+S: 2135 CN Hoofddorp
+S: The Netherlands
+
+N: Stephen D. Williams
+E: sdw@lig.net
+E: sdw@meaddata.com
+D: Consultant, entrepreneur, developer
+S: 2464 Rosina Drive
+S: Dayton, Ohio 45342-6430
+S: USA
+
+N: G\"unter Windau
+E: gunter@mbfys.kun.nl
+D: Some bug fixes in the polling printer driver (lp.c)
+S: University of Nijmegen
+S: Geert-Grooteplein Noord 21
+S: 6525 EZ  Nijmegen
+S: The Netherlands
+
+N: Lars Wirzenius
+E: lars.wirzenius@helsinki.fi
+D: Linux System Administrator's Guide
+D: Co-moderator, comp.os.linux.announce
+D: Original sprintf in kernel
+D: Personal information about Linus
+D: Original kernel README
+D: Linux News (electronic magazine)
+D: Meta-FAQ, originator
+D: INFO-SHEET, former maintainer
+S: Ohratie 16 C 198
+S: sf-01370 Vantaa
+S: Finland
+
+N: Roger E. Wolff
+E: wolff@dutecai.et.tudelft.nl
+D: Written kmalloc/kfree
+S: Oosterstraat 23 
+S: 2611 TT  Delft
+S: The Netherlands
+
+N: Frank Xia
+E: qx@math.columbia.edu
+D: Xiafs filesystem
+S: 542 West 112th Street, 5N
+S: New York, New York 10025
+S: USA
+
+N: Eric Youngdale
+E: eric@tantalus.nrl.navy.mil
+D: General kernel hacker
+D: SCSI iso9660 and ELF
+S: 17 Canterbury Square #101
+S: Alexandria, Virginia 22304
+S: USA
+
+N: Orest Zborowski
+E: orestz@microsoft.com
+D: XFree86 and kernel development
+S: 1507 145th Place SE #B5
+S: Bellevue, Washington 98007
+S: USA
diff -u +recursive +new-file ALPHA-1.0/linux/Makefile linux/Makefile
--- ALPHA-1.0/linux/Makefile	Sun Mar  6 16:06:19 1994
+++ linux/Makefile	Mon Mar 14 00:38:57 1994
@@ -1,4 +1,4 @@
-VERSION = pre-1
+VERSION = 1
 PATCHLEVEL = 0
 ALPHA =
 
@@ -149,7 +149,7 @@
 	$(CC) $(CFLAGS) $(PROFILING) -c -o $*.o $<
 
 tools/system:	boot/head.o init/main.o tools/version.o linuxsubdirs
-	$(LD) $(LDFLAGS) -T 1000 boot/head.o init/main.o tools/version.o \
+	$(LD) $(LDFLAGS) -Ttext 1000 boot/head.o init/main.o tools/version.o \
 		$(ARCHIVES) \
 		$(FILESYSTEMS) \
 		$(DRIVERS) \
@@ -194,7 +194,7 @@
 	if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
 
 tools/zSystem:	boot/head.o init/main.o tools/version.o linuxsubdirs
-	$(LD) $(LDFLAGS) -T 100000 boot/head.o init/main.o tools/version.o \
+	$(LD) $(LDFLAGS) -Ttext 100000 boot/head.o init/main.o tools/version.o \
 		$(ARCHIVES) \
 		$(FILESYSTEMS) \
 		$(DRIVERS) \
diff -u +recursive +new-file ALPHA-1.0/linux/README linux/README
--- ALPHA-1.0/linux/README	Tue Mar  1 18:05:00 1994
+++ linux/README	Mon Mar 14 00:11:20 1994
@@ -1,30 +1,44 @@
 
-	Linux kernel release 0.99 patchlevel 15
+	Linux kernel release 1.0
 
-These are the release notes for linux version 0.99.15.  Read them
-carefully, as they tell you what's new, explain how to install the
+These are the release notes for linux version 1.0.  Read them carefully,
+as they tell you what this is all about, explain how to install the
 kernel, and what to do if something goes wrong. 
 
+WHAT IS LINUX?
+
+  Linux is a Unix clone for 386/486-based PCs written from scratch by
+  Linus Torvalds with assistance from a loosely-knit team of hackers
+  across the Net.  It aims towards POSIX compliance. 
+
+  It has all the features you would expect in a modern fully-fledged
+  Unix, including true multitasking, virtual memory, shared libraries,
+  demand loading, shared copy-on-write executables, proper memory
+  management and TCP/IP networking. 
+
+  It is distributed under the GNU General Public License - see the
+  accompanying COPYING file for more details. 
+
 INSTALLING the kernel:
 
- - if you install by patching, you need a *clean* 0.99.14 source tree,
+ - If you install the full sources, do a
+
+		cd /usr/src
+		tar xvf linux-1.0.tar
+
+   to get it all put in place.
+
+ - if you install by patching, you need a *clean* 0.99.15 source tree,
    which presumably exists in /usr/src/linux.  If so, to get the kernel
    patched, just do a
 
 		cd /usr/src
-		patch -p0 < linux-0.99.patch15
+		patch -p0 < linux-1.0.patch
 
    and you should be ok.  You may want to remove the backup files (xxx~
    or xxx.orig), and make sure that there are no failed patches (xxx# or
    xxx.rej).
 
- - If you install the full sources, do a
-
-		cd /usr/src
-		tar xvf linux-0.99.15.tar
-
-   to get it all put in place.
-
  - make sure your /usr/include/linux and /usr/include/asm directories
    are just symlinks to the kernel sources:
 
@@ -48,6 +62,9 @@
    /bin/sh (in that order), so hopefully one of those is correct. 
 
 	NOTES on "make config":
+	- having unnecessary drivers will make the kernel bigger, and can
+	  under some circumstances lead to problems: probing for a
+	  nonexistent controller card may confuse your other controllers
 	- compiling the kernel with "-m486" for a number of 486-specific
 	  will result in a kernel that still works on a 386: it may be
 	  slightly larger and possibly slower by an insignificant amount,
@@ -74,10 +91,10 @@
 
 COMPILING the kernel:
 
- - make sure you have gcc-2.4.5 or newer available with g++.  It seems
-   older gcc versions can have problems compiling linux 0.99.10 and
-   newer versions.  If you upgrade, remember to get the new binutils
-   package too (for as/ld/nm and company)
+ - make sure you have gcc-2.4.5 or newer available.  It seems older gcc
+   versions can have problems compiling newer versions of linux.  If you
+   upgrade your compiler, remember to get the new binutils package too
+   (for as/ld/nm and company)
 
  - do a "make zImage" to create a compressed kernel image.  If you want
    to make a bootdisk (without root filesystem or lilo), insert a floppy
@@ -94,12 +111,13 @@
    For some, this is on a floppy disk, in which case you can "cp
    /usr/src/linux/zImage /dev/fd0" to make a bootable floppy. 
 
-   If you boot Linux from the hard drive, chances are you use LILO uses
-   the kernel image as specified in the file /etc/lilo/config.  The
-   kernel image file is usually /vmlinux, or /Image, or /etc/Image.  To
-   use the new kernel, copy the new image over the old one (save a
-   backup of the original!).  Then, you MUST REINSTALL LILO!! If you
-   don't, you won't be able to boot the new kernel image. 
+   If you boot Linux from the hard drive, chances are you use LILO which
+   uses the kernel image as specified in the file /etc/lilo/config.  The
+   kernel image file is usually /vmlinuz, or /zImage, or /etc/zImage. 
+   To use the new kernel, copy the new image over the old one (save a
+   backup of the original!).  Then, you MUST RERUN LILO to update the
+   loading map!! If you don't, you won't be able to boot the new kernel
+   image. 
 
    Reinstalling LILO is usually a matter of running /etc/lilo/install. 
    You may wish to edit /etc/lilo/config to specify an entry for your
diff -u +recursive +new-file ALPHA-1.0/linux/config.in linux/config.in
--- ALPHA-1.0/linux/config.in	Fri Mar  4 22:13:58 1994
+++ linux/config.in	Sun Mar 13 02:17:37 1994
@@ -106,7 +106,7 @@
 *
 #bool 'Keyboard meta-key sends ESC-prefix' CONFIG_KBD_META y
 #bool 'Keyboard Num Lock on by default' CONFIG_KBD_NUML y
-bool 'Parallel printer support' CONFIG_PRINTER y
+bool 'Parallel printer support' CONFIG_PRINTER n
 bool 'Logitech busmouse support' CONFIG_BUSMOUSE n
 bool 'PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE y
 if [ "$CONFIG_PSMOUSE" = "y" ]
@@ -114,7 +114,7 @@
 fi
 bool 'Microsoft busmouse support' CONFIG_MS_BUSMOUSE n
 bool 'ATIXL busmouse support' CONFIG_ATIXL_BUSMOUSE n
-bool 'Selection (cut and paste for virtual consoles)' CONFIG_SELECTION y
+bool 'Selection (cut and paste for virtual consoles)' CONFIG_SELECTION n
 bool 'QIC-02 tape support' CONFIG_TAPE_QIC02 n
 bool 'QIC-117 tape support' CONFIG_FTAPE n
 if [ "$CONFIG_FTAPE" = "y" ]
diff -u +recursive +new-file ALPHA-1.0/linux/drivers/char/serial.c linux/drivers/char/serial.c
--- ALPHA-1.0/linux/drivers/char/serial.c	Fri Feb 18 10:03:44 1994
+++ linux/drivers/char/serial.c	Sun Mar 13 22:20:21 1994
@@ -462,7 +462,7 @@
 
 static inline void figure_RS_timer(void)
 {
-	int	timeout = 6000;	/* 60 seconds; really big :-) */
+	int	timeout = jiffies + 60*HZ; /* 60 seconds; really big :-) */
 	int	i, mask;
 	
 	if (!IRQ_active)
@@ -473,7 +473,7 @@
 		if (IRQ_timer[i] < timeout)
 			timeout = IRQ_timer[i];
 	}
-	timer_table[RS_TIMER].expires = jiffies + timeout;
+	timer_table[RS_TIMER].expires = timeout;
 	timer_active |= 1 << RS_TIMER;
 }
 
diff -u +recursive +new-file ALPHA-1.0/linux/drivers/net/3c509.c linux/drivers/net/3c509.c
--- ALPHA-1.0/linux/drivers/net/3c509.c	Fri Feb 25 14:44:38 1994
+++ linux/drivers/net/3c509.c	Tue Mar  8 07:40:10 1994
@@ -13,7 +13,7 @@
 	C/O Supercomputing Research Ctr., 17100 Science Dr., Bowie MD 20715
 */
 
-static char *version = "3c509.c:pl15i 2/23/94 becker@super.org\n";
+static char *version = "3c509.c:pl15k 3/5/94 becker@super.org\n";
 
 #include <linux/config.h>
 #include <linux/kernel.h>
@@ -190,7 +190,7 @@
 
 	{
 		char *if_names[] = {"10baseT", "AUI", "undefined", "BNC"};
-		printk("%s: 3c509 at %#3.3x	 tag %d, %s port, address ",
+		printk("%s: 3c509 at %#3.3x tag %d, %s port, address ",
 			   dev->name, dev->base_addr, current_tag, if_names[dev->if_port]);
 	}
 
@@ -477,10 +477,12 @@
 		if (++i > 10) {
 			printk("%s: Infinite loop in interrupt, status %4.4x.\n",
 				   dev->name, status);
+			/* Clear all interrupts we have handled. */
+			outw(0x68FF, ioaddr + EL3_CMD);
 			break;
 		}
-		/* Clear the other interrupts we have handled. */
-		outw(0x6899, ioaddr + EL3_CMD); /* Ack IRQ */
+		/* Acknowledge the IRQ. */
+		outw(0x6891, ioaddr + EL3_CMD); /* Ack IRQ */
 	}
 
 	if (el3_debug > 4) {
diff -u +recursive +new-file ALPHA-1.0/linux/drivers/net/slip.c linux/drivers/net/slip.c
--- ALPHA-1.0/linux/drivers/net/slip.c	Fri Mar  4 09:52:08 1994
+++ linux/drivers/net/slip.c	Sun Mar 13 15:47:58 1994
@@ -243,9 +243,9 @@
 	
 	DPRINTF((DBG_SLIP,"SLIP: mtu changed!\n"));
 	
-	tb= (unsigned char *) kmalloc(l + 4, GFP_KERNEL);
-	rb= (unsigned char *) kmalloc(l + 4, GFP_KERNEL);
-	cb= (unsigned char *) kmalloc(l + 4, GFP_KERNEL);
+	tb= (unsigned char *) kmalloc(l + 4, GFP_ATOMIC);
+	rb= (unsigned char *) kmalloc(l + 4, GFP_ATOMIC);
+	cb= (unsigned char *) kmalloc(l + 4, GFP_ATOMIC);
 	
 	if(tb==NULL || rb==NULL || cb==NULL)
 	{
diff -u +recursive +new-file ALPHA-1.0/linux/drivers/scsi/scsi.c linux/drivers/scsi/scsi.c
--- ALPHA-1.0/linux/drivers/scsi/scsi.c	Fri Feb 11 10:10:16 1994
+++ linux/drivers/scsi/scsi.c	Thu Mar 10 09:11:50 1994
@@ -127,10 +127,12 @@
 static struct blist blacklist[] = 
 {
    {"DENON","DRD-25X","V"},   /* A cdrom that locks up when probed at lun != 0 */
-   {"MAXTOR","XT-3280","PR02"},  /* Locks-up when LUN>0 polled. */
-   {"MAXTOR","XT-4380S","B3C"},  /* Locks-up when LUN>0 polled. */
+   {"IMS", "CDD521/10","2.06"},   /* Locks-up when LUN>0 polled. */
+   {"MAXTOR","XT-3280","PR02"},   /* Locks-up when LUN>0 polled. */
+   {"MAXTOR","XT-4380S","B3C"},   /* Locks-up when LUN>0 polled. */
    {"MAXTOR","MXT-1240S","I1.2"}, /* Locks up when LUN > 0 polled */
-   {"MAXTOR","XT-4170S","B5A"},  /* Locks-up sometimes when LUN>0 polled. */
+   {"MAXTOR","XT-4170S","B5A"},   /* Locks-up sometimes when LUN>0 polled. */
+   {"MAXTOR","XT-8760S","B7B"},   /* guess what? */
    {"NEC","CD-ROM DRIVE:841","1.0"},  /* Locks-up when LUN>0 polled. */
    {"RODIME","RO3000S","2.33"},  /* Locks up if polled for lun != 0 */
    {"SEAGATE", "ST157N", "\004|j"}, /* causes failed REQUEST SENSE on lun 1 for aha152x
diff -u +recursive +new-file ALPHA-1.0/linux/fs/buffer.c linux/fs/buffer.c
--- ALPHA-1.0/linux/fs/buffer.c	Fri Feb 18 11:29:51 1994
+++ linux/fs/buffer.c	Thu Mar 10 14:20:55 1994
@@ -748,16 +748,14 @@
 	bh = create_buffers(address, size);
 	if (!bh)
 		return 0;
+	/* do any of the buffers already exist? punt if so.. */
 	p = b;
 	for (offset = 0 ; offset < PAGE_SIZE ; offset += size) {
 		block = *(p++);
 		if (!block)
 			goto not_aligned;
-		tmp = get_hash_table(dev, block, size);
-		if (tmp) {
-			brelse(tmp);
+		if (find_buffer(dev, block, size))
 			goto not_aligned;
-		}
 	}
 	tmp = bh;
 	p = b;
diff -u +recursive +new-file ALPHA-1.0/linux/fs/ext2/CHANGES linux/fs/ext2/CHANGES
--- ALPHA-1.0/linux/fs/ext2/CHANGES	Sun Jan  9 16:47:20 1994
+++ linux/fs/ext2/CHANGES	Thu Mar 10 18:48:35 1994
@@ -1,3 +1,14 @@
+Changes from version 0.4b to version 0.5
+========================================
+	- New superblock fields: s_lastcheck and s_checkinterval added
+	  by Uwe Ohse <uwe@tirka.gun.de> to implement timedependent checks
+	  of the file system
+	- Real random numbers for secure rm added by Pierre del Perugia
+	  <delperug@gla.ecoledoc.ibp.fr>
+	- The mount warnings related to the state of a fs are not printed
+	  if the fs is mounted read-only, idea by Nick Holloway
+	  <alfie@dcs.warwick.ac.uk>
+
 Changes from version 0.4a to version 0.4b
 =========================================
 	- Copyrights changed to include the name of my laboratory.
diff -u +recursive +new-file ALPHA-1.0/linux/fs/ext2/super.c linux/fs/ext2/super.c
--- ALPHA-1.0/linux/fs/ext2/super.c	Mon Feb 21 17:26:35 1994
+++ linux/fs/ext2/super.c	Thu Mar 10 18:48:35 1994
@@ -267,21 +267,21 @@
 static void ext2_setup_super (struct super_block * sb,
 			      struct ext2_super_block * es)
 {
-	if (!(sb->u.ext2_sb.s_mount_state & EXT2_VALID_FS))
-		printk ("EXT2-fs warning: mounting unchecked fs, "
-			"running e2fsck is recommended\n");
-	else if ((sb->u.ext2_sb.s_mount_state & EXT2_ERROR_FS))
-		printk ("EXT2-fs warning: mounting fs with errors, "
-			"running e2fsck is recommended\n");
-	else if (es->s_max_mnt_count >= 0 &&
-	         es->s_mnt_count >= (unsigned short) es->s_max_mnt_count)
-		printk ("EXT2-fs warning: maximal mount count reached, "
-			"running e2fsck is recommended\n");
-	else if (es->s_checkinterval &&
-		(es->s_lastcheck + es->s_checkinterval <= CURRENT_TIME))
-		printk ("EXT2-fs warning: checktime reached, "
-			"running e2fsck is recommended\n");
 	if (!(sb->s_flags & MS_RDONLY)) {
+		if (!(sb->u.ext2_sb.s_mount_state & EXT2_VALID_FS))
+			printk ("EXT2-fs warning: mounting unchecked fs, "
+				"running e2fsck is recommended\n");
+		else if ((sb->u.ext2_sb.s_mount_state & EXT2_ERROR_FS))
+			printk ("EXT2-fs warning: mounting fs with errors, "
+				"running e2fsck is recommended\n");
+		else if (es->s_max_mnt_count >= 0 &&
+		         es->s_mnt_count >= (unsigned short) es->s_max_mnt_count)
+			printk ("EXT2-fs warning: maximal mount count reached, "
+				"running e2fsck is recommended\n");
+		else if (es->s_checkinterval &&
+			(es->s_lastcheck + es->s_checkinterval <= CURRENT_TIME))
+			printk ("EXT2-fs warning: checktime reached, "
+				"running e2fsck is recommended\n");
 		es->s_state &= ~EXT2_VALID_FS;
 		if (!es->s_max_mnt_count)
 			es->s_max_mnt_count = EXT2_DFL_MAX_MNT_COUNT;
diff -u +recursive +new-file ALPHA-1.0/linux/fs/isofs/inode.c linux/fs/isofs/inode.c
--- ALPHA-1.0/linux/fs/isofs/inode.c	Sat Jan 29 14:55:06 1994
+++ linux/fs/isofs/inode.c	Sun Mar 13 20:39:14 1994
@@ -344,7 +344,7 @@
 	if (!(bh=bread(inode->i_dev,block, bufsize))) {
 	  printk("unable to read i-node block");
 	  goto fail;
-	};
+	}
 	
 	pnt = ((unsigned char *) bh->b_data
 	       + (inode->i_ino & (bufsize - 1)));
@@ -353,18 +353,23 @@
 
 	if ((inode->i_ino & (bufsize - 1)) + *pnt > bufsize){
 		cpnt = kmalloc(1 << ISOFS_BLOCK_BITS, GFP_KERNEL);
+		if (cpnt == NULL) {
+			printk(KERN_INFO "NoMem ISO inode %d\n",inode->i_ino);
+			brelse(bh);
+			goto fail;
+		}
 		memcpy(cpnt, bh->b_data, bufsize);
 		brelse(bh);
 		if (!(bh = bread(inode->i_dev,++block, bufsize))) {
-		        kfree_s (cpnt, 1 << ISOFS_BLOCK_BITS);
+			kfree_s(cpnt, 1 << ISOFS_BLOCK_BITS);
 			printk("unable to read i-node block");
 			goto fail;
-		      };
+		}
 		memcpy((char *)cpnt + bufsize, bh->b_data, bufsize);
 		pnt = ((unsigned char *) cpnt
 		       + (inode->i_ino & (bufsize - 1)));
 		raw_inode = ((struct iso_directory_record *) pnt);
-	};
+	}
 
 	inode->i_mode = S_IRUGO; /* Everybody gets to read the file. */
 	inode->i_nlink = 1;
@@ -383,7 +388,7 @@
 				break;
 		if(i == raw_inode->name_len[0] || raw_inode->name[i] == ';') 
 			inode->i_mode |= S_IXUGO; /* execute permission */
-	};
+	}
 	inode->i_uid = 0;
 	inode->i_gid = 0;
 	inode->i_size = isonum_733 (raw_inode->size);
@@ -394,7 +399,7 @@
 	    inode->i_sb->u.isofs_sb.s_cruft == 'n') {
 	  printk("Warning: defective cdrom.  Enabling \"cruft\" mount option.\n");
 	  inode->i_sb->u.isofs_sb.s_cruft = 'y';
-	};
+	}
 
 /* Some dipshit decided to store some other bit of information in the high
    byte of the file length.  Catch this and holler.  WARNING: this will make
@@ -404,12 +409,12 @@
 	   inode->i_size & 0xff000000){
 /*	  printk("Illegal format on cdrom.  Pester manufacturer.\n"); */
 	  inode->i_size &= 0x00ffffff;
-	};
+	}
 	
 	if (raw_inode->interleave[0]) {
 		printk("Interleaved files not (yet) supported.\n");
 		inode->i_size = 0;
-	};
+	}
 
 #ifdef DEBUG
 	/* I have no idea what extended attributes are used for, so
@@ -458,8 +463,7 @@
 	case 'm':
 	  inode->u.isofs_i.i_file_format = ISOFS_FILE_TEXT_M; /* File type */
 	  break;
-	};
-	
+	}
 
 /* Now test for possible Rock Ridge extensions which will override some of
    these numbers in the inode structure. */
@@ -472,11 +476,6 @@
 #endif
 	brelse(bh);
 	
-	if (cpnt) {
-		kfree_s (cpnt, 1 << ISOFS_BLOCK_BITS);
-		cpnt = NULL;
-	};
-	
 	inode->i_op = NULL;
 	if (inode->i_sb->u.isofs_sb.s_cruft != 'y' && 
 	    isonum_723 (raw_inode->volume_sequence_number) != 1) {
@@ -494,6 +493,10 @@
 	    inode->i_op = &blkdev_inode_operations;
 	  else if (S_ISFIFO(inode->i_mode))
 	    init_fifo(inode);
+	}
+	if (cpnt) {
+		kfree_s (cpnt, 1 << ISOFS_BLOCK_BITS);
+		cpnt = NULL;
 	}
 	return;
       fail:
diff -u +recursive +new-file ALPHA-1.0/linux/fs/proc/link.c linux/fs/proc/link.c
--- ALPHA-1.0/linux/fs/proc/link.c	Thu Feb  3 14:47:55 1994
+++ linux/fs/proc/link.c	Fri Mar 11 11:28:10 1994
@@ -111,6 +111,10 @@
 	unsigned int dev,ino;
 	char buf[64];
 
+	if (!S_ISLNK(inode->i_mode)) {
+		iput(inode);
+		return -EINVAL;
+	}
 	i = proc_follow_link(NULL, inode, 0, 0, &inode);
 	if (i)
 		return i;
diff -u +recursive +new-file ALPHA-1.0/linux/include/linux/ext2_fs.h linux/include/linux/ext2_fs.h
--- ALPHA-1.0/linux/include/linux/ext2_fs.h	Mon Feb 21 17:26:36 1994
+++ linux/include/linux/ext2_fs.h	Thu Mar 10 18:48:36 1994
@@ -52,8 +52,8 @@
 /*
  * The second extended file system version
  */
-#define EXT2FS_DATE		"94/01/08"
-#define EXT2FS_VERSION		"0.4b"
+#define EXT2FS_DATE		"94/03/10"
+#define EXT2FS_VERSION		"0.5"
 
 /*
  * Debug code
diff -u +recursive +new-file ALPHA-1.0/linux/include/linux/interrupt.h linux/include/linux/interrupt.h
--- ALPHA-1.0/linux/include/linux/interrupt.h	Wed Dec  1 14:44:15 1993
+++ linux/include/linux/interrupt.h	Mon Mar  7 14:34:14 1994
@@ -24,17 +24,17 @@
 
 extern inline void mark_bh(int nr)
 {
-	__asm__ __volatile__("btsl %1,%0":"=m" (bh_active):"ir" (nr));
+	__asm__ __volatile__("orl %1,%0":"=m" (bh_active):"ir" (1<<nr));
 }
 
 extern inline void disable_bh(int nr)
 {
-	__asm__ __volatile__("btcl %1,%0":"=m" (bh_mask):"ir" (nr));
+	__asm__ __volatile__("andl %1,%0":"=m" (bh_mask):"ir" (~(1<<nr)));
 }
 
 extern inline void enable_bh(int nr)
 {
-	__asm__ __volatile__("btsl %1,%0":"=m" (bh_mask):"ir" (nr));
+	__asm__ __volatile__("orl %1,%0":"=m" (bh_mask):"ir" (1<<nr));
 }
 
 #endif
diff -u +recursive +new-file ALPHA-1.0/linux/kernel/traps.c linux/kernel/traps.c
--- ALPHA-1.0/linux/kernel/traps.c	Wed Feb 23 16:01:14 1994
+++ linux/kernel/traps.c	Wed Mar  9 11:10:40 1994
@@ -101,12 +101,12 @@
 	printk("ds: %04x   es: %04x   fs: %04x   gs: %04x   ss: %04x\n",
 		regs->ds, regs->es, regs->fs, regs->gs, ss);
 	store_TR(i);
-	printk("Pid: %d, process nr: %d (%s)\nCode: ", current->pid, 0xffff & i, current->comm);
-	for(i=0;i<20;i++)
-		printk("%02x ",0xff & get_seg_byte(regs->cs,(i+(char *)regs->eip)));
-	printk("\nStack: ");
+	printk("Pid: %d, process nr: %d (%s)\nStack: ", current->pid, 0xffff & i, current->comm);
 	for(i=0;i<5;i++)
 		printk("%08lx ", get_seg_long(ss,(i+(unsigned long *)esp)));
+	printk("\nCode: ");
+	for(i=0;i<20;i++)
+		printk("%02x ",0xff & get_seg_byte(regs->cs,(i+(char *)regs->eip)));
 	printk("\n");
 	do_exit(SIGSEGV);
 }
diff -u +recursive +new-file ALPHA-1.0/linux/mm/kmalloc.c linux/mm/kmalloc.c
--- ALPHA-1.0/linux/mm/kmalloc.c	Wed Dec  1 14:44:15 1993
+++ linux/mm/kmalloc.c	Thu Mar 10 19:54:34 1994
@@ -151,8 +151,14 @@
 	int order,tries,i,sz;
 	struct block_header *p;
 	struct page_descriptor *page;
+	extern unsigned long intr_count;
 
 /* Sanity check... */
+	if (intr_count && priority != GFP_ATOMIC) {
+		printk("kmalloc called nonatomically from interrupt %08lx\n",
+			((unsigned long *)&size)[-1]);
+		priority = GFP_ATOMIC;
+	}
 if (size > MAX_KMALLOC_K * 1024) 
      {
      printk ("kmalloc: I refuse to allocate %d bytes (for now max = %d).\n",
diff -u +recursive +new-file ALPHA-1.0/linux/mm/swap.c linux/mm/swap.c
--- ALPHA-1.0/linux/mm/swap.c	Tue Feb  1 09:03:52 1994
+++ linux/mm/swap.c	Thu Mar 10 19:54:09 1994
@@ -585,6 +585,7 @@
  */
 unsigned long __get_free_page(int priority)
 {
+	extern unsigned long intr_count;
 	unsigned long result, flag;
 	static unsigned long index = 0;
 
@@ -593,6 +594,11 @@
 	   sections of code have interrupts disabled. -RAB
 	   Is this code reentrant? */
 
+	if (intr_count && priority != GFP_ATOMIC) {
+		printk("gfp called nonatomically from interrupt %08lx\n",
+			((unsigned long *)&priority)[-1]);
+		priority = GFP_ATOMIC;
+	}
 	save_flags(flag);
 repeat:
 	REMOVE_FROM_MEM_QUEUE(free_page_list,nr_free_pages);
diff -u +recursive +new-file ALPHA-1.0/linux/net/inet/ip.c linux/net/inet/ip.c
--- ALPHA-1.0/linux/net/inet/ip.c	Fri Mar  4 09:14:17 1994
+++ linux/net/inet/ip.c	Thu Mar 10 21:28:17 1994
@@ -1041,7 +1041,7 @@
  							len, len + hlen));
  
  		/* Allocate buffer. */
- 		if ((skb2 = alloc_skb(sizeof(struct sk_buff) + len + hlen,GFP_KERNEL)) == NULL) 
+ 		if ((skb2 = alloc_skb(sizeof(struct sk_buff) + len + hlen,GFP_ATOMIC)) == NULL) 
  		{
  			printk("IP: frag: no memory for new fragment!\n");
  			return;
diff -u +recursive +new-file ALPHA-1.0/linux/net/inet/route.c linux/net/inet/route.c
--- ALPHA-1.0/linux/net/inet/route.c	Mon Feb 14 17:58:03 1994
+++ linux/net/inet/route.c	Sun Mar 13 16:20:59 1994
@@ -276,6 +276,20 @@
 	mask = ((struct sockaddr_in *) &r->rt_genmask)->sin_addr.s_addr;
 	gw = ((struct sockaddr_in *) &r->rt_gateway)->sin_addr.s_addr;
 
+/* BSD emulation: Permits route add someroute gw one-of-my-addresses
+   to indicate which iface. Not as clean as the nice Linux dev technique
+   but people keep using it... */
+	if (!dev && (flags & RTF_GATEWAY)) {
+		struct device *dev2;
+		for (dev2 = dev_base ; dev2 != NULL ; dev2 = dev2->next) {
+			if ((dev2->flags & IFF_UP) && dev2->pa_addr == gw) {
+				flags &= ~RTF_GATEWAY;
+				dev = dev2;
+				break;
+			}
+		}
+	}
+
 	if (bad_mask(mask, daddr))
 		mask = 0;
 
diff -u +recursive +new-file ALPHA-1.0/linux/net/inet/skbuff.c linux/net/inet/skbuff.c
--- ALPHA-1.0/linux/net/inet/skbuff.c	Tue Mar  1 13:12:27 1994
+++ linux/net/inet/skbuff.c	Thu Mar 10 21:15:09 1994
@@ -425,7 +425,15 @@
 
 struct sk_buff *alloc_skb(unsigned int size,int priority)
 {
-	struct sk_buff *skb=(struct sk_buff *)kmalloc(size,priority);
+	struct sk_buff *skb;
+	extern unsigned long intr_count;
+
+	if (intr_count && priority != GFP_ATOMIC) {
+		printk("alloc_skb called nonatomically from interrupt %08lx\n",
+			((unsigned long *)&size)[-1]);
+		priority = GFP_ATOMIC;
+	}
+	skb=(struct sk_buff *)kmalloc(size,priority);
 	if(skb==NULL)
 		return NULL;
 	skb->free= 2;	/* Invalid so we pick up forgetful users */
diff -u +recursive +new-file ALPHA-1.0/linux/net/inet/sock.c linux/net/inet/sock.c
--- ALPHA-1.0/linux/net/inet/sock.c	Wed Mar  2 11:11:51 1994
+++ linux/net/inet/sock.c	Fri Mar 11 16:27:03 1994
@@ -982,9 +982,13 @@
 	while(sk->state != TCP_CLOSE && current->timeout>0) {
 		interruptible_sleep_on(sk->sleep);
 		if (current->signal & ~current->blocked) {
+			break;
+#if 0
+			/* not working now - closes can't be restarted */
 			sti();
 			current->timeout=0;
 			return(-ERESTARTSYS);
+#endif
 		}
 	}
 	current->timeout=0;
@@ -1855,7 +1859,7 @@
   struct inet_protocol *p;
   int i;
 
-  printk("Swansea University Computer Society Net2Debugged [1.27]\n");
+  printk("Swansea University Computer Society Net2Debugged [1.30]\n");
   /* Set up our UNIX VFS major device. */
   if (register_chrdev(AF_INET_MAJOR, "af_inet", &inet_fops) < 0) {
 	printk("%s: cannot register major device %d!\n",
diff -u +recursive +new-file ALPHA-1.0/linux/net/inet/tcp.c linux/net/inet/tcp.c
--- ALPHA-1.0/linux/net/inet/tcp.c	Fri Mar  4 08:52:32 1994
+++ linux/net/inet/tcp.c	Sun Mar 13 16:03:36 1994
@@ -3552,7 +3552,9 @@
   if (sk->zapped)
 	return;	/* Afer a valid reset we can send no more */
 
-  if (sk -> state != TCP_ESTABLISHED && sk->state != TCP_CLOSE_WAIT) return;
+  if (sk -> state != TCP_ESTABLISHED && sk->state != TCP_CLOSE_WAIT &&
+      sk -> state != TCP_FIN_WAIT1 && sk->state != TCP_FIN_WAIT2)
+	return;
 
   buff = sk->prot->wmalloc(sk,MAX_ACK_SIZE,1, GFP_ATOMIC);
   if (buff == NULL) return;
@@ -3602,99 +3604,25 @@
   sk->prot->queue_xmit(sk, dev, buff, 1);
 }
 
-/*
- * This routine probes a zero window.  It makes a copy of the first
- * packet in the write queue, but with just one byte of data.
- */
 void
 tcp_send_probe0(struct sock *sk)
 {
-  unsigned char *raw;
-  struct iphdr *iph;
-  struct sk_buff *skb2, *skb;
-  int len, hlen, data;
-  struct tcphdr *t1;
-  struct device *dev;
-
-  if (sk->zapped)
-	return;	/* Afer a valid reset we can send no more */
-
-  if (sk -> state != TCP_ESTABLISHED && sk->state != TCP_CLOSE_WAIT &&
-      sk -> state != TCP_FIN_WAIT1 && sk->state != TCP_FIN_WAIT2)
-  	return;
-
-  skb = sk->wfront;
-  if (skb == NULL)
-        return;
-
-  dev = skb->dev;
-  /* I know this can't happen but as it does.. */
-  if(dev==NULL)
-    {
-      printk("tcp_send_probe0: NULL device bug!\n");
-      return;
-    }
-  IS_SKB(skb);
+	if (sk->zapped)
+		return;		/* Afer a valid reset we can send no more */
 
-  raw = skb->data;
-  iph = (struct iphdr *) (raw + dev->hard_header_len);
+	tcp_write_wakeup(sk);
 
-  hlen = (iph->ihl * sizeof(unsigned long)) + dev->hard_header_len;
-  data = skb->len - hlen - sizeof(struct tcphdr);
-  len = hlen + sizeof(struct tcphdr) + (data ? 1 : 0);
- 	
-  /* Allocate buffer. */
-  if ((skb2 = alloc_skb(sizeof(struct sk_buff) + len, GFP_ATOMIC)) == NULL) {
-/*    printk("alloc failed raw %x th %x hlen %d data %d len %d\n",
-	   raw, skb->h.th, hlen, data, len); */
-    reset_timer (sk, TIME_PROBE0, 10);  /* try again real soon */
-    return;
-  }
-
-  skb2->arp = skb->arp;
-  skb2->len = len;
-  skb2->h.raw = (char *)(skb2->data);
- 
-  sk->wmem_alloc += skb2->mem_len;
- 
-  /* Copy the packet header into the new buffer. */
-  memcpy(skb2->h.raw, raw, len);
- 
-  skb2->h.raw += hlen;  /* it's now h.th -- pointer to the tcp header */
-  t1 = skb2->h.th;
- 
-/* source, dest, seq, from existing packet */
-  t1->ack_seq = ntohl(sk->acked_seq);
-  t1->res1 = 0;
-/* doff, fin, from existing packet.  Fin is safe because Linux always
- * sends fin in a separate packet
- * syn, rst, had better be zero in original */
-  t1->ack = 1;
-  t1->res2 = 0;
-  t1->window = ntohs(tcp_select_window(sk)/*sk->prot->rspace(sk)*/);
-  tcp_send_check(t1, sk->saddr, sk->daddr, len - hlen, sk);
-  /* Send it and free it.
-   * This will prevent the timer from automatically being restarted.
-   */
-  sk->prot->queue_xmit(sk, dev, skb2, 1);
-  sk->backoff++;
-  /*
-   * in the case of retransmissions, there's good reason to limit
-   * rto to 120 sec, as that's the maximum legal RTT on the Internet.
-   * For probes it could reasonably be longer.  However making it
-   * much longer could cause unacceptable delays in some situation,
-   * so we might as well use the same value
-   */
-  sk->rto = min(sk->rto << 1, 120*HZ);
-  reset_timer (sk, TIME_PROBE0, sk->rto);
-  sk->retransmits++;
-  sk->prot->retransmits ++;
+	sk->backoff++;
+	sk->rto = min(sk->rto << 1, 120*HZ);
+	reset_timer (sk, TIME_PROBE0, sk->rto);
+	sk->retransmits++;
+	sk->prot->retransmits ++;
 }
 
+
 /*
  *	Socket option code for TCP. 
- */
-  
+ */  
 int tcp_setsockopt(struct sock *sk, int level, int optname, char *optval, int optlen)
 {
 	int val,err;
diff -u +recursive +new-file ALPHA-1.0/linux/zBoot/Makefile linux/zBoot/Makefile
--- ALPHA-1.0/linux/zBoot/Makefile	Thu Feb 17 09:43:30 1994
+++ linux/zBoot/Makefile	Wed Mar  9 11:11:16 1994
@@ -18,7 +18,7 @@
 all:	zSystem
 
 zSystem:	piggy.o $(zOBJECTS)
-		$(LD) $(LDFLAGS) -o zSystem -T 1000 $(zOBJECTS) piggy.o
+		$(LD) $(LDFLAGS) -o zSystem -Ttext 1000 $(zOBJECTS) piggy.o
 
 head.o:	head.s
 
