add directory Linux-0.12

This commit is contained in:
gohigh
2024-02-19 00:21:02 -05:00
parent 26e015eb99
commit 059f8848b1
177 changed files with 15195 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,31 @@
Edpart.exe is a disk partition editor capable of managing up to four
partitions on PC/XT and AT hard disks. It specifically says "no
copyright", so I figured someone else might like to use it rather than
doing fdisk/diskfix pairs to create partitions.
There's no instruction file and no real on-line help, so here's a
summary:
EDPART.EXE maintains up to four hard disk partitions on either of two
hard drives. If it sees more than one hard drive, it will ask which
one to edit.
The commands are:
CREATE Create hard disk partitions
DELETE Delete hard disk partitions
STATUS Bootable partitions may have the following status:
ACTIVE This partition is the boot partition
READ/WRITE R/W, not the boot partition
Non-bootable partitions (``extensions'') may be any of:
READ/WRITE
READ-ONLY
INACCESSIBLE
TYPE There are four types; for Minix purposes, either "extension"
type will do to my knowledge.
DOS(4) Bootable For DOS 3.x
DOS(4) Extension
DOS(1) Bootable For DOS 2.x
DOS(1) Extension
The "Bootable" partitions are recognized by MS-DOS directly,
so I don't advise using either of them for Minix.

Binary file not shown.

View File

@@ -0,0 +1,79 @@
This stuff is mostly self explanatory, but:
part takes one optional argument, which is the disk number with
which to start (either 0 or 1. 0 is default).
286pd1.sys and 286pd2.sys are for driving partitions on your first
and second disks, respectively. They will only work on 80186 or higher
processors. For 8086/8088 computers, use pdisk1.sys, pdisk2.sys. They
are just a *wee* bit slower....
fdins is for use when you're short of free space in "low menory" --
i.e. free interrupt vectors. fdintins, on the other hand, doesn't
use up any application space memory. In either case, these programs
don't do *anything* directly -- you run them in order to create a
.COM program that does the dirty work. You get TBL1.com, TBL2.com,
TBL1INT.com, or TBL2INT.com, depending on whether you run fdins,
fdintins and specifiy disk 1 or 2 (== 0 or 1).
pformat is for when you want to be particularly destructive with your
new partition. You run "pformat <drive>:" where <drive> must be a
valid pdisk. It's good for marking newly developed bad sectors,
I guess. Be careful.
According to tests I ran with the PC Magazine benchmark program, disk access
to a pdisk is actually faster than the normal DOS driver (i.e. C: or a DOS
3.3/4.x extended DOS partition). (This may only be true using the 286 version,
and may be affected by your usage. The main point is that you certainly do
not take a performance *cut* by using my program.)
I am not including most of the COPYING file that comes with stuff from the
Free Software Foundation (Richard Stallman, et al.) because I don't know
if I'm allowed, but that's what I intend for this software. Specifically,
you can *give* away as many copies of this software as you like. You can
charge a *reasonable* handling fee. You can even incorporate parts of it
into other projects, as long as you distribute at least the source you got
from pdisk. I don't want money or contributions, I want plaudits. I hope
this software is helpful to you.
When you find the inevitable bug (there are *none* in the driver, but I
don't absolutely swear for the partitioning program), please try to
fix it yourself and let me know the solution. Failing that, drop me a
line describing the situation exactly, especially including DOS version and
all hardware, including fixed disk and controller type. I don;t promise
to do anything about it, but I might.
One thing I recommend from experience: my boot code will only work on some
IBM compatibles. It is best to use the manafacturer's (or generic) MSDOS
fdisk to set up the initial partition, then use "format c: /s" to set up
your bootable DOS partition. If you can get this working right with pdisk,
that would be nice.
have fun. Scott E. Garfinkle
smsdpg!seg@uunet.uu.net
<The following is taken from Project Gnu's AWK distribution, the COPYING
File. I hope I'm not violating their copyright, or anything.
>
NO WARRANTY
BECAUSE PDISK IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY NO
WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
WHEN OTHERWISE STATED IN WRITING, SCOTT GARFINKLE
AND/OR OTHER PARTIES PROVIDE PDISK "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF PDISK IS WITH YOU. SHOULD PDISK PROVE DEFECTIVE, YOU
ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL SCOTT GARFINKLE
AND/OR ANY OTHER PARTY
WHO MAY MODIFY AND REDISTRIBUTE PDISK AS PERMITTED ABOVE, BE LIABLE TO
YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A
FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) PDISK, EVEN
IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR
ANY CLAIM BY ANY OTHER PARTY.

View File

@@ -0,0 +1,182 @@
/*
rawrite.c Write a binary image to a 360K diskette.
By Mark Becker
Usage:
MS-DOS prompt> RAWRITE
And follow the prompts.
History
-------
1.0 - Initial release
1.1 - Beta test (fixing bugs) 4/5/91
Some BIOS's don't like full-track writes.
1.101 - Last beta release. 4/8/91
Fixed BIOS full-track write by only
writing 3 sectors at a time.
1.2 - Final code and documentation clean-ups. 4/9/91
*/
#include <alloc.h>
#include <bios.h>
#include <ctype.h>
#include <dir.h>
#include <dos.h>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#define FALSE 0
#define TRUE (!FALSE)
#define SECTORSIZE 512
#define RESET 0
#define LAST 1
#define READ 2
#define WRITE 3
#define VERIFY 4
#define FORMAT 5
int done;
/*
Catch ^C and ^Break.
*/
int handler(void)
{
done = TRUE;
return(0);
}
void msg(char (*s))
{
fprintf(stderr, "%s\n", s);
_exit(1);
}
/*
Identify the error code with a real error message.
*/
void Error(int (status))
{
switch (status) {
case 0x00: msg("Operation Successful"); break;
case 0x01: msg("Bad command"); break;
case 0x02: msg("Address mark not found"); break;
case 0x03: msg("Attempt to write on write-protected disk"); break;
case 0x04: msg("Sector not found"); break;
case 0x05: msg("Reset failed (hard disk)"); break;
case 0x06: msg("Disk changed since last operation"); break;
case 0x07: msg("Drive parameter activity failed"); break;
case 0x08: msg("DMA overrun"); break;
case 0x09: msg("Attempt to DMA across 64K boundary"); break;
case 0x0A: msg("Bad sector detected"); break;
case 0x0B: msg("Bad track detected"); break;
case 0x0C: msg("Unsupported track"); break;
case 0x10: msg("Bad CRC/ECC on disk read"); break;
case 0x11: msg("CRC/ECC corrected data error"); break;
case 0x20: msg("Controller has failed"); break;
case 0x40: msg("Seek operation failed"); break;
case 0x80: msg("Attachment failed to respond"); break;
case 0xAA: msg("Drive not ready (hard disk only"); break;
case 0xBB: msg("Undefined error occurred (hard disk only)"); break;
case 0xCC: msg("Write fault occurred"); break;
case 0xE0: msg("Status error"); break;
case 0xFF: msg("Sense operation failed"); break;
}
_exit(1);
}
/*
Identify what kind of diskette is installed in the specified drive.
Return the number of sectors per track assumed as follows:
9 - 360 K and 720 K 5.25".
15 - 1.2 M HD 5.25".
18 - 1.44 M 3.5".
*/
int nsects(int (drive))
{
static int nsect[] = {18, 15, 9};
char *buffer;
int i, status;
/*
Read sector 1, head 0, track 0 to get the BIOS running.
*/
buffer = (char *)malloc(SECTORSIZE);
biosdisk(RESET, drive, 0, 0, 0, 0, buffer);
status = biosdisk(READ, drive, 0, 10, 1, 1, buffer);
if (status == 0x06) /* Door signal change? */
status = biosdisk(READ, drive, 0, 0, 1, 1, buffer);
for (i=0; i < sizeof(nsect)/sizeof(int); ++i) {
biosdisk(RESET, drive, 0, 0, 0, 0, buffer);
status = biosdisk(READ, drive, 0, 0, nsect[i], 1, buffer);
if (status == 0x06)
status = biosdisk(READ, drive, 0, 0, nsect[i], 1, buffer);
if (status == 0x00) break;
}
if (i == sizeof(nsect)/sizeof(int)) {
msg("Can't figure out how many sectors/track for this diskette.");
}
free(buffer);
return(nsect[i]);
}
void main(void)
{
char fname[MAXPATH];
char *buffer, *pbuf;
int count, fdin, drive, head, track, status, spt, buflength, ns;
puts("RaWrite 1.2 - Write disk file to raw floppy diskette\n");
ctrlbrk(handler);
printf("Enter source file name: ");
scanf("%s", fname);
_fmode = O_BINARY;
if ((fdin = open(fname, O_RDONLY)) <= 0) {
perror(fname);
exit(1);
}
printf("Enter destination drive: ");
scanf("%s", fname);
drive = fname[0];
drive = (islower(drive) ? toupper(drive) : drive) - 'A';
printf("Please insert a formatted diskette into ");
printf("drive %c: and press -ENTER- :", drive + 'A');
while (bioskey(1) == 0) ; /* Wait... */
if ((bioskey(0) & 0x7F) == 3) exit(1); /* Check for ^C */
putchar('\n');
done = FALSE;
/*
* Determine number of sectors per track and allocate buffers.
*/
spt = nsects(drive);
buflength = spt * SECTORSIZE;
buffer = (char *)malloc(buflength);
printf("Number of sectors per track for this disk is %d\n", spt);
printf("Writing image to drive %c:. Press ^C to abort.\n", drive+'A');
/*
* Start writing data to diskette until there is no more data to write.
*/
head = track = 0;
while ((count = read(fdin, buffer, buflength)) > 0 && !done) {
pbuf = buffer;
for (ns = 1; count > 0 && !done; ns+=3) {
printf("Track: %02d Head: %2d Sector: %2d\r", track, head, ns);
status = biosdisk(WRITE, drive, head, track, ns, 3, pbuf);
if (status != 0) Error(status);
count -= (3*SECTORSIZE);
pbuf += (3*SECTORSIZE);
}
if ((head = (head + 1) & 1) == 0) ++track;
}
if (eof(fdin)) {
printf("\nDone.\n");
biosdisk(2, drive, 0, 0, 1, 1, buffer); /* Retract head */
}
} /* end main */

View File

@@ -0,0 +1,86 @@
RaWrite 1.2
-----------
Purpose
-------
Write a disk image file to a 360K floppy disk.
Equipment/Software Requirements
-------------------------------
PC/XT/AT with a floppy disk drive capable of reading and writing a 360K
diskette.
This program uses generic low-level BIOS diskette read/write functions. It
should be portable to nearly every PC in existance. PS/2's should be able
to run RawWrite but this has not been tested.
CAVEAT
------
This program will write ANY disk file to a floppy, overwriting any previous
information that may have been present. If you wish to re-use a diskette
under MS-DOS thats been written to by RawWrite then the disk will need to be
reformatted; all MS-DOS specific information will have been erased.
How to Compile
--------------
TCC rawrite.c
The source code is specific to Borland International's Turbo C 2.01 and has
been tested in all memory models.
Usage
-----
C> RAWRITE
And follow the prompts. All arguments are case-insensitive.
A sample run is shown below. The disk file being written, in this example,
is named DEMODISK and the destination - where the image is being written -
is the B: drive.
This program may be aborted at any time by typing ^C.
Sample Run
----------
C> RAWRITE
RaWrite 1.2 - Write disk file to raw floppy diskette
Enter source file name: DEMODISK
Enter destination drive: B
Please insert a formatted 360K diskette into drive B: and press -ENTER- :
Writing image to drive B:
Errors
------
RaWrite attempts to determine if the diskette is a 360K, 720K, 1.2M, or
1.44M diskette by reading specific sectors. If the inserted diskette is not
one of the mentioned types, then RaWrite will abort with a short error
message.
Errors such as write protect, door open, bad disk, bad sector, etc. cause a
program abort with a short error message.
History
-------
1.0 - Initial release
1.1 - Beta test (fixing bugs) 4/5/91
Some BIOS's don't like full-track writes.
1.101 - Last beta release. 4/8/91
Fixed BIOS full-track write by only only
writing 3 sectors at a time.
1.2 - Final code and documentation clean-ups. 4/9/91

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,6 @@
This is zoo and fiz from Rahul Dhesi compiled for Linux. It is a very
popular PD archiver in the Ms-Dog world.
Roger
cs89rdb@brunel.ac.uk

Binary file not shown.

View File

@@ -0,0 +1,58 @@
This is the latest release of BEAV. I am posting it to alt.sources
because I my posting to comp.sources.unix has not been released by the
moderator. It has sat in the mill for over 3 months. I would like
to find an archive for the source. If someone would like to archive it
and tell me where I would be most appreciative. If this is not propper
protocol please excuse me, I am reletively new to news.
This release 1.20 of BEAV (Binary Editor And Viewer),
a full featured binary file editor. Just about any operation that
you could want to do to a binary file is possible with BEAV. You
can insert or delete in the middle of a file thereby changing it's size.
You can display and edit data in hex, octal, decimal, binary, ascii,
or ebcdic formats. You can display data in byte, word, or long word
formats in either Intel or Motorola byte ordering. You can send the
formatted display mode to a file or printer.
Version 1.20 (3/10/91) of beav contains the following
fixes and enhancements;
* Under unix files are created with read/write
permissions.
* Fixed the bug in the terminal I/O routine that
caused beav to spin rather than give up control when
waiting for a character.
* Added the ANSI #define that was missing for MSDOS.
* Changed the D16 #define to a unsigned short.
* Called ttclose on error exit.
* Check and limit ncol and nrow to the actual screen
array size.
* Add the ability to load key bindings from a file
automatically under MSDOS and unix.
* Add delete current window command.
* Support VT100 type function keys.
BEAV is based on the source for emacs for display and keyboard handling
functions. The binary file handling and display formats are special
to BEAV. There is a full manual included in this release. There
are makefiles for unix, xenix 286, and MSC 5.1 under DOS. The old Wang PC
is supported. This has been tested on 286 and 386 PC's under SCO UNIX and
XENIX as well as under UNIX on a MIPS system.
I am willing to maintain BEAV and will entertain suggestions for
modifications and/or bug fixes. I can be reached at;
pvr@wang.com
or at;
Peter Reilley
19 Heritage Cir.
Hudson, N.H. 03051

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,24 @@
EMACS 18.57 patches for Linux 0.12:
These patches are in two parts:
1) two small kernel patches to fix some minor problems (fs-diff):
select.c: a pipe with no writer should select as readable to
allow detection of EOF
also, the kernel now silently corrects any attempts to
select more file descriptors than are supported (this
avoids the bit loss on left shift problem reported on
the activists list)
pipe.c: (I sent this to Linus for 0.12, but it didn't make it):
reads on a pipe should return partial results.
Otherwise, programs expecting to get such reads will
work weirdly.
2) patches to the EMACS 18.57 distribution to build it for Linux-0.12.
Shar & enjoy,
John Kohl
jtkohl@cs.berkeley.edu

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,11 @@
pmake.Z is the make from the bsd net release #2.
pm_supp.tar.Z is a tar file of some support "include" files used
by that version of make.
It may not completely correctly handle error conditions from children,
since I had to guess a bit on how to recode its abuse of the old
union wait.
John Kohl
jtkohl@cs.berkeley.edu
[sources on request; that's another kermit, though.]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,117 @@
LINUX INFORMATION SHEET
(last updated 13 Jan 1992)
1. WHAT IS LINUX 0.12
LINUX 0.12 is a freely distributable UNIX clone. It implements a
subset of System V and POSIX functionality. LINUX has been written
from scratch, and therefore does not contain any AT&T or MINIX
code--not in the kernel, the compiler, the utilities, or the libraries.
For this reason it can be made available with the complete source code
via anonymous FTP. LINUX runs only on 386/486 AT-bus machines; porting
to non-Intel architectures is likely to be difficult, as the kernel
makes extensive use of 386 memory management and task primitives.
Version 0.12 is still a beta release, but it already provides much
of the functionality of a System V.3 kernel. For example, various
users have been able to port programs such as bison/flex without having
to modify code at all. Another indication of its maturity is that
it is now possible to do LINUX kernel development using LINUX itself
and freely-available programming tools.
2. LINUX features
- System call compatible with a subset of System V and POSIX
- Full multiprogramming (multiple programs can run at once)
- Memory paging with copy-on-write
- Demand loading of executables
- Page sharing of executables
- Virtual memory: swapping to disk when out of RAM
- POSIX job control
- virtual consoles on EGA/VGA screens
- pty's
- some 387-emulation
- ANSI compliant C compiler (gcc)
- A complete set of compiler writing tools
(bison as yacc-replacement, flex as lex replacement)
- The GNU 'Bourne again' shell (bash)
- Micro emacs
- most utilities you need for development
(cat, cp, kermit, ls, make, etc.)
- Over 200 library procedures (atoi, fork, malloc, read, stdio, etc.)
- Currently 4 national keyboards: Finnish/US/German/French
- Full source code (in C) for the OS is freely distributable
- Full source code of the tools can be gotten from many anonymous ftp sites
(Almost the entire suite of GNU programs has been ported to Linux.)
- Runs in protected mode on 386 and above
- Support for extended memory up to 16M on 386 and above
- RS-232 serial line support with terminal emulation, kermit, zmodem, etc.
- Supports the real time clock
3. HARDWARE REQUIRED
- A 386 or 486 machine with an AT-bus. (EISA will probably work, also,
but you will need an AT-bus hard disk controller.)
Both DX and SX processors will work.
- A hard disk implementing the standard AT hard disk interface--
for example, an IDE drive. SCSI drives are not supported yet.
- A high-density disk drive--either 5.25" (1.2MB) or 3.5" (1.44MB).
- At least 2 megabytes of RAM. (LINUX will boot in 2 Mb. To use
gcc 4 MB is a good idea.)
- Any video card of the following: Hercules,CGA,EGA,VGA
In addition, LINUX supports
- Up to two serial lines
- A real time clock
4. PARTIAL LIST OF UTILITIES INCLUDED IN OR AVAILABLE FOR LINUX 0.12
- The MTOOLS package (reading/writing to DOS filesystems)
- The complete GNU filetools (ls, cat, cp, mv, ...)
- The GNU C compiler with GNU assembler, linker, ar, ...
- bison
- flex
- rcs
- pmake (BSD 4.3 Reno/BSD 4.4 make)
- kermit
- Micro emacs
- less
- mkfs
- fsck
- mount/umount
5. LINUX BINARIES
The LINUX binaries and sources are available at three
anonymous FTP sites. These are:
nic.funet.fi:/pub/OS/Linux
tsx-11.mit.edu:/pub/linux
tupac-amaru.informatik.rwth-aachen.de:/pub/msdos/replace
6. LEGAL STATUS OF LINUX
Although LINUX is supplied with the complete source code, it is
copyrighted software. Unlike MINIX, however, it is available for free,
provided you obey to the rules specified in the LINUX copyright.
7. NEWS ABOUT LINUX
Since LINUX's introduction to the public there has been a rapidly
growing mailing list, "linux-activists@niksula.hut.fi". To subscribe to
this list, mail to "linux-activists-request@niksula.hut.fi". If the
traffic in this lists increases further, there are plans to swap ( at
least partially ) over to comp.os.misc, so watch out for any LINUX
articles in this group. For the current status of LINUX, do "finger
torvalds@kruuna.helsinki.fi".
8. FUTURE PLANS
Work is underway on LINUX version 1.0, which will close some of the
gaps in the present implementation. Various people are currently working
on:
- A virtual filesystem layer
- STREAMS
- init/getty/login
- Interprocess communication
- IEEE POSIX P1003.1 / P1003.2 compatibility
- SCSI support
If you want to help, join the mailing list.

178
Linux-0.12/docs/README-0.12 Normal file
View File

@@ -0,0 +1,178 @@
% ~ftp/pub/OS/Linux/README
% arl@hut.fi ed.
% Created: Tue Jul 16 03:36:31 1991
% Last modified: Wed Jan 15 02:15:51 1992
-----------------------------------------------------------------------
Linux -- The free Minix like Un*x clone is here.
-----------------------------------------------------------------------
This file is updated constantly.
NOT to be published ... contains unreleased information.
-----------------------------------------------------------------------
For hackers only Linux version 0.12 code and sources
available here.
nic.funet.fi will also be site for Linux binaries,
Directory structure:
INSTALL contains everything you should
have to get Linux up and running.
bin binaries for /bin, /usr/bin and
/usr/contrib/bin
doc documents and man pages
images boot and root images etc.
kernel kernel and driver sources
lib lib sources
tools tools for hackers, not for common
use
xtra community contributed diffs and
utilities.
incoming you can FTP 'put' your stuff here,
see next section for putting.
Check file 'ls-laR', which contains "ls -laR" listing.
Eh ... for people having question 'but my site doesn't
have FTP' ...
Just mail to 'mailserver@nic.funet.fi' and put
command "help" to mail _body_ (body is the part
where you write your messages/text and is not
related to mail header, which contains lines
like 'To: foobar').
Mailserver is not official .. it's under testing,
to it might work or not, but don't flame me about
it ... I take only 'thanks' mails (nice to get them
for work you didn't do ;-)
-----------------------------------------------------------------------
Putting Linux stuff to nic.funet.fi ...
Please use directory /pub/OS/Linux/incoming
Please use FTP command "binary" for binary i.e.
stuff like *.tar, *.tar.Z, or runable binaries etc.
Our FTP is _hacked_, so you or anybody won't
see the stuff in there, until I enable it. I try
to check directories constantly, but you might
also want to throw me a mail ?-)
-----------------------------------------------------------------------
If you are willing to support Linux development,
please "mail arl@hut.fi" .. and tell what goodies
you are willing to do - I try to organize.
Or you might use mailing list ...
Or you might want to send mail directly to
'torvalds@cs.helsinki.fi'
-----------------------------------------------------------------------
Linux mailing list (is _MANUALLY_ kept) addresses:
For subscribing and unsubscribing:
linux-activists-request@niksula.hut.fi
For mailing real articles:
linux-activists@niksula.hut.fi
Please, do NOT send subscribe/unsubscribe mails to
linus-activist@niksula.hut.fi, or I and other people
will *flame* you, and you'll notice, how your mailbox
filled up ;-). You even might get dozens of copies
of netiquette from net users ...
How to find out, who's on the list ?
Just "telnet joker.cs.hut.fi 25" ('25' or 'smtp')
tell our smtp, you want to "vrfy linux-activists", then
you have the list of users. Say "quit" to quit.
-----------------------------------------------------------------------
current status can be asked with "finger torvalds@kruuna.helsinki.fi"
here's sample entry:
Free UNIX for the 386 - coming 4QR 91 or 1QR 92.
Most system calls are now implemented (including mount/umount), and they
are almost POSIX, so porting programs to it is relatively easy. The
official version has still no floppy support, but that will be out next
week (and there is a update already, though not official). It still
needs minix to be installed (stand-alone boot-floppy coming this month).
Linux can now be gotten by anonymous ftp from 'nic.funet.fi' in the
directory '/pub/OS/Linux'. The same directory also contains some binary
files to run under Linux. Currently gcc, bash, update, uemacs, tar,
make and fileutils. Several people with minix have gotten a running
system, but it's still a hackers kernel.
There is also a mailing list set up 'Linux-activists@niksula.hut.fi'.
To join, mail a request to 'Linux-activists-request@niksula.hut.fi'.
Mail for more info.
Linus (torvalds@kruuna.helsinki.FI)
-----------------------------------------------------------------------
At HUT (Helsinki University of Technology) I try to
use students for programming work to make Linux better.
So could you, if you are teacher. Linux might be
even more suitable for teaching purposes than Minix.
My experiencies with Minix are not promising, I got about
1/3 of given projects back i.e. 2/3 were unfinished.
Projects were like 'create symlinks to Minix' or
'do a device driver for XX adapter'.
-----------------------------------------------------------------------
Some of the features I'd like to have (maybe I'll also
code them):
o adding some features from my own OS.
- STREAMS I/O, now only subset
- Kernel development environment
Should be like configuring
BSD kernel.
o Socket stuff from BSD.
o BSD net stuff or Xkernel.
o Mach. I try to check what's usable in Mach.
I took keyboard stuff from Mach
to my own OS, but floppy stuff
was too complicated (spaghetti-code),
so I coded it again.
Maybe some parts of kernel is also usable.
o Portability
o Modularity
Like device drivers should have
multiple levels; high/medium for
abstraction and low level for
specific card/chip support.
-----------------------------------------------------------------------
More info from:
torvalds@kruuna.helsinki.fi
arl

View File

@@ -0,0 +1,191 @@
RELEASE NOTES FOR LINUX v0.12
This is file mostly contains info on changed features of Linux, and
using old versions as a help-reference might be a good idea.
COPYRIGHT
The Linux copyright will change: I've had a couple of requests to make
it compatible with the GNU copyleft, removing the "you may not
distribute it for money" condition. I agree. I propose that the
copyright be changed so that it confirms to GNU - pending approval of
the persons who have helped write code. I assume this is going to be no
problem for anybody: If you have grievances ("I wrote that code assuming
the copyright would stay the same") mail me. Otherwise The GNU copyleft
takes effect as of the first of February. If you do not know the gist
of the GNU copyright - read it.
INSTALLATION
This is a SHORT install-note. The installation is very similar to 0.11,
so read that (INSTALL-0.11) too. There are a couple of programs you will
need to install linux: something that writes disk images (rawrite.exe or
NU or...) and something that can create harddisk partitions (fdisk under
xenix or older versions of dos, edpart.exe or something like that).
NOTE! Repartitioning your harddisk will destroy all data on it (well,
not exactly, but if you know enough to get back the data you probably
didn't need this warning). So be careful.
READ THIS THROUGH, THEN READ INSTALL-0.11, AND IF YOU ARE SURE YOU KNOW
WHAT YOU ARE DOING, CONTINUE. OTHERWISE, PANIC. OR WRITE ME FOR
EXPLANATIONS. OR DO ANYTHING BUT INSTALL LINUX - IT'S VERY SIMPLE, BUT
IF YOU DON'T KNOW WHAT YOU ARE DOING YOU'LL PROBABLY BE SORRY. I'D
RATHER ANSWER A FEW UNNECESSARY MAILS THAN GET MAIL SAYING "YOU KILLED
MY HARDDISK, BASTARD. I'M GOING TO FIND YOU, AND YOU'LL BE SORRY WHEN I
DO".
1) back up everything you have on your harddisk - linux-0.12 is still in
beta and might do weird things. The only thing I guarantee is that
it has worked fine on /my/ machine - for all I know it might eat your
harddisk and spit it out in small pieces on any other hardware.
2) Test out the linux boot-disk with the root file system. If it
doesn't work, check the hardware requirements, and mail me if you
still think it should work. I might not be able to help you, but
your bug-report would still be appreciated.
Test that linux can read your harddisk at least partly: run the fdisk
program on the root-disk, and see if it barfs. If it tells you about
any partitions at all, linux can successfully read at least part of
your harddisk.
3) Make sure that you have a free /primary/ partition. There can be 4
primary partitions per drive: newer DOS fdisks seem to be able to
create only 2 (one primary and one extended). In that case use some
other partitioning software: edpart.exe etc. Linux fdisk currently
only tells you the partition info - it doesn't write to the disk.
Remember to check how big your partition was, as that can be used to
tell which device Linux thinks it is.
4) Boot up linux again, fdisk to make sure you now have the new
partition, and use mkfs to make a filesystem on one of the partitions
fdisk reports. Write "mkfs -c /dev/hdX nnn" where X is the device
number reported by linux fdisk, and nnn is the size - also reported
by fdisk. nnn is the size in /blocks/, ie kilobytes. You should be
able to use the size info to determine which partition is represented
by which device name.
5) Mount the new disk partition: "mount /dev/hdX /user". Copy over the
root filesystem to the harddisk, eg like this:
# for i in bin dev etc usr tmp
# do
# cp +recursive /$i /user
# done
You caanot use just "cp +recursive / /user", as that will result in a
loop.
6) Sync the filesystem after you have played around enough, and reboot.
# sync
<wait for it to sync>
ctrl-alt-del
The folklore says you should do this three times before rebooting:
once should be enough, but I admit I do it three times anyway :) THIS
IS IMPORTANT! NEVER EVER FORGET TO SYNC BEFORE KILLING THE MACHINE.
7) Change the bootdisk to understand which partition it should use as a
root filesystem. See INSTALL-0.11: it's still the word at offset
508 into the image. You should be up and running.
That's it. Go back and read the INSTALL-0.11
New features of 0.12, in order of appearance
(ie in the order you see them)
Linux now prints cute dots when loading
WoW. Run, don't walk, to see this :). Seriously, it should hopefully now
load even on machines that never got off the ground before, but
otherwise the loading hasn't changed. Implemented by drew.
Super-VGA detection for extended alphamun modes
I cannot guarantee it, I didn't write it, but it works great on a ET400
SVGA card. I'm addicted to the new look with 100x40 character editing,
instead of a cramped 80x25. This only works on VGA-cards that support
higher text-resolutions, and which are correctly identified. Implemented
by d88-man.
Job Control.
Ok, everybody used to typing ^Z after they started a long command, and
forgot to put it in the background - now it works on linux too. Bash
knows the usualy job-control commands: bg, fg, jobs & kill. I hope
there will be no nasty surprises. Job control was implemented by
tytso@athena.mit.edu.
Virtual consoles on EGA/VGA screens.
You can select one of several consoles by pressing the left alt-key and
a function key at the same time. Linux should report the number of
virtual consoles available upon bootup. /dev/tty0 is now "the current"
screen, /dev/tty1 is the main console, and /dev/tty2-8 can exist
depending on your text-mode or card.
NOTE! Scrolling is noticeably much slower with virtual consoles on a
EGA/VGA. The reason is that no longer does linux use all the screen
memory as a long buffer, but crams in several consoles in it. I think
it's worth it.
The virtual consoles also have some new screen-handling commands: they
confirm even better to vt200 control codes than 0.11. Special graphic
characters etc: you can well use them as terminals to VMS (although
that's a shameful waste of resources).
pty's
Ok. I have to admit that I didn't get the hangup-code working correctly,
but that should be easy to add. The general things are there.
select
I've never used it, so I cannot say how well it works. My minor testing
seems to indicate that it works ok. vc's, pty's and select were
implemented by pmacdona, although I hacked it heavily.
387-emulation.
It's not complete, but it works well enough to run those gcc2.0 compiled
programs I tested (few). None of the "heavy" math-functions are
implemented yet.
Symbolic links.
Try out a few "ln -s xx yy", and ls -l. Note that I think tar should be
recompiled to know anout them, and probably some other programs too. The
0.12 rootimage-disk has most of the recompiled fileutilities.
Virtual memory.
In addition to the "mkfs" program, there is now a "mkswap" program on
the root disk. The syntax is identical: "mkswap -c /dev/hdX nnn", and
again: this writes over the partition, so be careful. Swapping can then
be enabled by changing the word at offset 506 in the bootimage to the
desired device. Use the same program as for setting the root file
system (but change the 508 offset to 506 of course).
NOTE! This has been tested by Robert Blum, who has a 2M machine, and it
allows you to run gcc without much memory. HOWEVER, I had to stop using
it, as my diskspace was eaten up by the beta-gcc-2.0, so I'd like to
hear that it still works: I've been totally unable to make a
swap-partition for even rudimentary testing since about christmastime.
Thus the new changes could possibly just have backfired on the VM, but I
doubt it.
And that's it, I think.
Happy hacking.
Linus

61
Linux-0.12/docs/STATUS Normal file
View File

@@ -0,0 +1,61 @@
[kruuna.helsinki.fi]
Login name: torvalds In real life: Linus Benedict Torvalds
Directory: /home/kruuna/tkol/torvalds Shell: /bin/tcsh
Last login Tue Feb 18 16:51 on ttypf from LKS500
No unread mail
Plan:
Free UNIX for the 386
The current version of linux is 0.12 - it has most things a unix kernel
needs, and will probably be released as 1.0 as soon as it gets a little
more testing, and we can get a init/login going. Currently you get
dumped into a shell as root upon bootup. There are simple init/logins
available, but it's not yet part of the "official" distribution.
Linux can be gotten by anonymous ftp from 'nic.funet.fi' (128.214.6.100)
in the directory '/pub/OS/Linux'. This directory structure contains all
the linux OS- and library-sources, and enough binaries to get going. To
install linux you still need to know something about unices: it's
relatively straightforward to install, but the documentation sucks raw
eggs, and people with no previous unix experience are going to get very
confused.
Linux still requires an AT-compatible disk to be useful: people are
working on a SCSI-driver, but I don't know when it will be ready.
There are now a couple of other sites containing linux, as people have
had difficulties with connecting to nic. The sites are:
Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31):
directory /pub/msdos/replace
tsx-11.mit.edu (18.172.1.2):
directory /pub/linux
(and many additional sites: there are now sites in the uk, japan etc
that carry linux, but I have lost count)
There is also a mailing list set up 'Linux-activists@niksula.hut.fi'.
To join, mail a request to 'Linux-activists-request@niksula.hut.fi'.
It's no use mailing me: I have no actual contact with the mailing-list
(other than being on it, naturally).
For those of you able to read the alt.* newsgroups, there is also a
linux newsgroup available: alt.os.linux, which should hopefully become a
comp.* group when the votings etc are ready.
Mail me for more info:
Linus (torvalds@kruuna.Helsinki.FI)
PS. The next version (0.13, possibly called 0.95) should be out in early
March. The deadline for patches to 0.12 was February 15th, and no more
patches will be accepted any more unless they are important (bug-fixes
etc). 0.13 should contain these new things (most of them implemented by
others, I'm happy to say):
- ptrace (gdb is in beta-testing)
- VFS (at least a minimal stubs-version)
- bug-corrections (notably mm, but also some other minor bugs)
- better VC's (screen blanking etc)
- init/login
- faster floppies

View File

@@ -0,0 +1,21 @@
alt.os.linux #309 [1]
From: abc@banjo.concert.net (Alan B Clegg)
[1] Announcing: linux-standards mailing list.
Organization: Concert Network -- Internet Operations Group
Date: Tue Jan 28 10:42:51 EST 1992
I am happy to announce the creation of the Linux Standards (linux-standards)
mailing list. The list is chartered as follows:
linux-standards: Discussion of distribution and directory standards for
the Linux Operating System, including directory structure,
file location, and release disk format.
Requests to be added to the mailing list should be sent to:
linux-standards-request@banjo.concert.net
-abc
--
abc@concert.net Alan Clegg - Network Programmer
KD4JML (just my luck!) MCNC -- Center for Communications

View File

@@ -0,0 +1,254 @@
The following is being submitted by Alan Clegg [abc@concert.net] on behalf of
the linux-standards group as the recommended standard for directory file
structure under Linux.
Complete implementation of this file structure is completely voluntary,
and will not be enforced, but will be recommended. This specification
is released as guidelines for people porting and writing software for
the Linux Operating System to allow easy software installation, upgrade, and
tailoring on already installed systems.
Root Directory:
Files:
{none defined by spec}
Directories:
bin dev etc home lib mnt usr
Rationale:
The root directory should not be cluttered with files or
directories, and should contain no user programs.
/bin Directory:
Files:
sh init mount umount dd cat ls fsck mkfs {and as needed}
Directories:
{none defined by spec}
Rationale:
The /bin directory should contain programs that are vital
to the restoration of other file systems in the case of
a corrupting crash. No executable in /bin should require
any other file system to be mounted to execute correctly.
/dev Directory:
Files:
{device files}
Directories:
{none define by spec}
Rationale:
Standard UNIX device files. This directory should contain
device entries for all devices that are supported in the
standard kernel, even if the hardware device does not exist
on the system. Note that the distribution will have all
device files, but they may be removed by the user upon
system installation.
/etc Directory:
Files:
mtab passwd rc ttytab {and as needed}
Directories:
{none defined by spec}
Rationale:
Standard location of files required during system boot. Files
in this directory are usually system specific. Most will
require human intervention during system upgrade.
/home Directory:
Files:
NONE
Directories:
{one per user excepting root}
Rationale:
Standard location of users home directories. Will most likely
be a mounted file system once the system is up. root's home
directory should be /.
/lib Directory:
Files:
{libraries required for system initialization}
Directories:
{none defined by spec}
Rationale:
To keep the size of the root partition small (if separate from
/usr), the files in this directory should only be ones required
by files in the root partition.
/mnt Directory:
Files:
NONE
Directories:
NONE
Rationale:
Standard mount point for external (transient) file systems.
Must be available for sub-system installation. Should remain
as an empty directory.
/tmp Directory:
Files:
NONE
Directories:
NONE
Rationale:
Temporary file space available for general program use. May
become a mounted partition upon system boot.
/usr Directory:
Files:
{none defined by spec}
Directories:
adm bin spool local lib etc man include src tmp
Rationale:
/usr is the mount point for the second major (after root)
hierarchy of file structure and is discussed in the next
section.
/usr/adm Directory:
Files:
{none defined in spec}
Directories:
{none defined in spec}
Rationale:
Location of log files and accounting information.
/usr/bin Directory:
Files:
{all executable files from standard distribution not contined
in /bin}
Directories:
{none defined in spec}
Rationale:
contains 'drop-in' executables that are considered to be
standard to the UNIX system. These files should NOT be
Linux specific, but should have the same function as their
UNIX equivalents.
/usr/etc Directory:
Files:
{none defined in spec}
Directories:
{none defined in spec}
Rationale:
contains configuration files for any files in /usr/bin. helps
to keep /etc clean and small.
/usr/spool Directory:
Files:
{none defined in spec}
Directories:
uucp mail
Rationale:
containes spool files for mail, printing, uucp transfer, etc.
May be a mount point for another volume.
/usr/local Directory:
Files:
NONE
Directories:
bin lib etc man src
Rationale:
contains files local to the specific system. will not be
modified by upgrade process.
/usr/lib Directory:
Files:
libc.a crt0.s {and as needed}
Directories:
{none defined in spec}
Rationale:
location for library files required for multi-user system
operation. This is the directory where program libraries
should reside.
/usr/man Directory:
Files:
NONE
Directories:
man1 man2 man3 man4 man5 man6 man7 man8
cat1 cat2 cat3 cat4 cat5 cat6 cat7 cat8
Rationale:
Contains manual pages for programs that are standard with
Linux.
/usr/include Directory:
Files:
{programmers include files}
Directories:
{as needed}
Rationale:
Standard place for system include files.
/usr/src Directory:
Files:
NONE
Directories:
bin lib linux usr.bin usr.lib
Rationale:
Contains source code for all applications in the release.
/usr/src/linux contains directories required for kernel builds.
/usr/tmp Directory:
Files:
NONE
Directories:
NONE
Rationale:
Used as additional scratch space for programs. If /tmp is
a mounted file system, /usr/tmp may be a symbolic link to
/tmp.

View File

@@ -0,0 +1,62 @@
Please comment on the following document.
[available as /pub/Linux/linux-standards/draft]
Tommy Thorn (tthorn@daimi.aau.dk) writes (with my comments in [* ... *]):
We need to make installation REAL SIMPLE AND FAST. I suggest the
following standard for distributing ported programs.
Everything should be contained in a [compressed] tar file with a:
- README, a short explanations of how this version differs from
the original, if it does, and how it was compiled.
- PREREQUIST, again which kernel, but also which version of the
original.
[* Let's call this PREREQ so we can all spell it *]
- Makefile, not for compilation, but for installation!! After having
checked that you agree with paths and so, you just type 'make install'
perhaps as root.
- Patches, context diff against the original.
- Binaries
- Optionally, manual pages, also with full path.
Kernel patches should also be a [compressed] tar file containing:
- README, describing what the patch does/is.
- PREREQUIST, a precise statement of which version of the
kernel the patches applies, and which, if any, patches that
was already applied.
[* Begin Soap Box:
I don't think we should distribute kernel patches in the standard
release trees, unless there is a DEFINITE (fatal) bug fixed by the
patch. Most people are looking for an easy-to-build system with
binaries and sources that they can get up-and-running without much
trouble. Yes, we have to put together kernel patch kits, but we
need to have them coordinated (all patches in one common patchfile).
End Soap Box *]
Sources belong in /usr/src, linux sources in /usr/src/linux, etc.
Maybe we should split patches and binaries, but I don't like that, as you
would properbly end up having only one of either.
[* It is my feeling that we should not distribute patches without the source
that the patches apply to. Often, someone will grab the wrong
"official" source, and the patches won't take. Then they make noises
about the patch not working. I feel that we should provide FULL
SOURCE to all programs, *WITH PATCHES APPLIED*. Leave the patches
in a _common_ directory under each source tree, ie:
/usr/src/gcc/LINPAT/*
^^^^^^ name subject to discussion
to allow someone to see exactly what was changed, but also allow them
to compile without applying the patches themselves. *]

Binary file not shown.

Binary file not shown.

Binary file not shown.

386
Linux-0.12/info/vt102.codes Normal file
View File

@@ -0,0 +1,386 @@
Escape codes for vt102 terminal. <kivinen@hut.fi>
All numbers below are octal.<n> means numeric value,<c> means character string.
If <n> is missing it is 0 or in cursor movements 1.
Reset and set modes
Set Modes
Esc [ <c> ; ... ; <c> h
033 133 073 073 150
Reset Modes
Esc [ <c> ; ... ; <c> l
033 133 073 073 154
Where <c> is
'2'= Lock keyboard (set); Unlock keyboard (reset)
'4'= Insert mode (set); Replace mode (reset)
'12'= Echo on (set); Echo off (reset)
'20'= Return = CR+LF (set); Return = CR (reset)
'?1'= Cursorkeys application (set); Cursorkeys normal (reset)
'?2'= Ansi (set); VT52 (reset)
'?3'= 132 char/row (set); 80 char/row (reset)
'?4'= Jump scroll (set); Smooth scroll (reset)
'?5'= Reverse screen (set); Normal screen (reset)
'?6'= Sets relative coordinates (set); Sets absolute coordinates (reset)
'?7'= Auto wrap (set); Auto wrap off (reset)
'?8'= Auto repeat on (set); Auto repeat off (reset)
'?18'= Send FF to printer after print screen (set); No char after PS (reset)
'?19'= Print screen prints full screen (set); PS prints scroll region (reset)
'?25'= Cursor on (set); Cursor off (reset)
Set scrolling region (n1=upper,n2=lower)
Esc [ <n1> ; <n2> r
033 133 073 162
Cursor movement (<n>=how many chars or lines), cursor stop at margin.
Up
Esc [ <n> A
033 133 101
Down
Esc [ <n> B
033 133 102
Right
Esc [ <n> C
033 133 103
Left
Esc [ n D
033 133 104
Cursor position (<n1>=y,<n2>=x, from top of screen or scroll region)
Esc [ <n1> ; <n2> H
033 133 073 110
Or Esc [ <n1> ; <n2> f
033 133 073 146
Index (cursor down with scroll up when at margin)
Esc D
033 104
Reverse index (cursor up with scroll down when at margin)
Esc M
033 115
Next line (CR+Index)
Esc E
033 105
Save cursor and attribute
Esc 7
033 067
Restore cursor and attribute
Esc 8
033 070
Keybad character selection
Application keypad mode
Esc =
033 075
Numeric keypad mode
Esc >
033 076
Keypadkeys codes generated
Numeric Application VT52 Application
0 0 (060) Esc O p (033 117 160) Esc ? p (033 077 160)
1 1 (061) Esc O q (033 117 161) Esc ? q (033 077 161)
2 2 (062) Esc O r (033 117 162) Esc ? r (033 077 162)
3 3 (063) Esc O s (033 117 163) Esc ? s (033 077 163)
4 4 (064) Esc O t (033 117 164) Esc ? t (033 077 164)
5 5 (065) Esc O u (033 117 165) Esc ? u (033 077 165)
6 6 (066) Esc O v (033 117 166) Esc ? v (033 077 166)
7 7 (067) Esc O w (033 117 167) Esc ? w (033 077 167)
8 8 (070) Esc O x (033 117 170) Esc ? x (033 077 170)
9 9 (071) Esc O y (033 117 171) Esc ? y (033 077 171)
- (minus) - (055) Esc O m (033 117 155) Esc ? m (033 077 155)
, (comma) , (054) Esc O l (033 117 154) Esc ? l (033 077 154)
. (period) . (056) Esc O n (033 117 156) Esc ? n (033 077 156)
Enter CR (015)* Esc O M (033 117 115) Esc ? M (033 077 115)
PF1 Esc O P Esc O P (033 117 120) Esc P (033 120)
PF2 Esc O Q Esc O Q (033 117 121) Esc Q (033 121)
PF3 Esc O R Esc O R (033 117 122) Esc R (033 122)
PF4 Esc O S Esc O S (033 117 123) Esc S (033 123)
* Or CR+LF (015 012)
Cursorkeys codes generated (changed by set and reset modes '?1')
normal application
Up Esc [ A Esc O A
033 133 101 033 117 101
Down Esc [ B Esc O B
033 133 102 033 117 102
Right Esc [ C Esc O C
033 133 103 033 117 103
Left Esc [ D Esc O D
033 133 104 033 117 104
Select chaacter set
UK as G0
Esc ( A
033 050 101
US as G0
Esc ( B
033 050 102
Special characters and line drawing character set as G0
Esc ( 0
033 050 060
Alternate ROM as G0
Esc ( 1
033 050 061
Alternate ROM special characters character set as G0
Esc ( 2
033 050 062
UK as G1
Esc ) A
033 051 101
US as G1
Esc ) B
033 051 102
Special characters and line drawing character set as G1
Esc ) 0
033 051 060
Alternate ROM as G1
Esc ) 1
033 051 061
Alternate ROM special characters character set as G1
Esc ) 2
033 051 062
Selects G2 for one character
Esc N
033 115
Selects G3 for one character
Esc O
033 117
Set graphic rendition
Esc [ <n> ; <n> m
033 133 073 156
Where <n> is
0 = Turn off attributes
1 = Bold (Full)
2 = Half
4 = Underline
5 = Blink
7 = Reverse
21 = Normal intensity
22 = Normal intensity
24 = Cancel underlined
25 = Cancel blinking
27 = Cancel reverse
Tab stops
Set horizontal tab
Esc H
033 110
Clear horizontal tab
Esc [ g
033 133 147
Or Esc [ 0 g
033 133 060 147
Clear all horizontal tabs
Esc [ 3 g
033 133 063 147
Line attributes
Double-height
Top half
Esc # 3
033 043 063
Bottom half
Esc # 4
033 043 064
Single-width, single-height
Esc # 5
033 043 065
Double-width
Esc # 6
033 043 066
Erasing
Erase in line
End of line (including cursor position)
Esc [ K
033 133 113
Or Esc [ 0 K
033 133 060 113
Beginning of line (including cursor position)
Esc [ 1 K
033 133 061 113
Complete line
Esc [ 2 K
033 133 062 113
Erase in display
End of screen (including cursor position)
Esc [ J
033 133 112
Or Esc [ 0 J
033 133 060 112
Beginning of screen (including cursor position)
Esc [ 1 J
033 133 061 112
Complete display
Esc [ 2 J
033 133 062 112
Computer editing
Delete characters (<n> characters right from cursor
Esc [ <n> P
033 133 120
Inser line (<n> lines)
Esc [ <n> L
033 133 114
Delete line (<n> lines)
Esc [ <n> M
033 133 115
Printing
Esc [ <c> i
033 133 151
Where <c> is
''= Same as '0'
'0'= Prints screen (full or scroll region)
'4'= Printer controller off
'5'= Printer controller on (Print all received chars to printer)
'?1'= Print cursor line
'?4'= Auto print off
'?5'= Auto print on (Prints line to printer when you exit from it)
Reports
Device status
Esc [ <c> n
033 133 156
Where <c> is
'0'=Response Ready, no malfunctions detected
'3'=Malfunction, error in self-test.
'5'=Status report request
'6'=Request cursor position.
'?10'=Response to printer status request, All ok.
'?11'=Response to printer status request, Printer is not ready.
'?13'=Response to printer status request, No printer.
'?15'=Status report request from printer
Cursor position raport (Response to request cursor position)
Esc [ <n1> ; <n2> R
033 133 073 122
Request terminal to identify itself (esc Z may not be supported in future)
Esc [ c
033 133 143
Esc [ 0 c
033 133 060 143
Esc Z
033 132
Response to terminal identify (VT102)
Esc [ ? 6 c
033 133 077 066 143
Reset to initial state
Esc c
033 143
Tests
Invoke confidence test
Esc [ 2 ; <n> y
033 133 062 073 171
Where <n> is
'1'= Power-up test
'2'= Data loopback test
'4'= EIA loopback test
'9'= Power-up tests (continuously)
'10'= Data loopback tests (continuously)
'12'= EIA loopback tests (continuously)
'16'= Printer loopback test
'24'= Printer loopback tests (continuously)
Screen adjustments
Esc # 8
033 043 070
Keyboard indicator
Led L1 off
Esc [ 0 q
033 133 060 181
Led L1 on
Esc [ 1 q
033 133 061 181
VT52 sequences
Ansi mode
Esc <
033 074
Cursor positioning
Up Esc A
033 101
Down Esc B
033 102
Right Esc C
033 103
Left Esc D
033 104
Home Esc H
033 110
Direct cursor address
Esc Y <line+040> <columns+040>
033 131
Reverse linefeed Esc I
033 111
Erase to end of line Esc K
033 113
Erase to end of screen Esc J
033 112
Auto print on Esc ^
033 136
Auto print off Esc
033 137
Printer controller on Esc W
033 127
Printer controller off Esc X
033 130
Print cursor line Esc V
033 135
Print screen Esc ]
033 135
Indentify request Esc Z
033 132
Response to indetify Esc / Z
request (VT52) 033 057 132
Special charset (same Esc F
as line draw in VT102 033 106
Normal char set Esc G
033 107
Control characters
000 = Null (fill character)
003 = ETX (Can be selected half-duplex turnaround char)
004 = EOT (Can be turnaround or disconnect char, if turn, then DLE-EOT=disc.)
005 = ENQ (Transmits answerback message)
007 = BEL (Generates bell tone)
010 = BS (Moves cursor left)
011 = HT (Moves cursor to next tab)
012 = LF (Linefeed or New line operation)
013 = VT (Processed as LF)
014 = FF (Processed as LF, can be selected turnaround char)
015 = CR (Moves cursor to left margin, can be turnaround char)
016 = SO (Selects G1 charset)
017 = SI (Selects G0 charset)
021 = DC1 (XON, causes terminal to continue transmit)
023 = DC3 (XOFF, causes terminal to stop transmitting)
030 = CAN (Cancels escape sequence)
032 = SUB (Processed as CAN)
033 = ESC (Processed as sequence indicator)

View File

@@ -0,0 +1,502 @@
.\"#! troff -Q -ms $1
.\" This is the "Xterm Control Sequences" document, originally written by
.\" Edward Moy, University of California, Berkeley, for the X.V10R4 xterm.
.\" Some minor edits have been made to begin to reconcile this document with
.\" the current sources, but it still has a long way to go:
.\"
.\" 1) I don't guarantee that this is 100% correct. I tried most of
.\" the things that seemed to be different, and this document
.\" reflects what I saw. Stuff that appears to be in the X10R4
.\" document and missing from this document is so because it
.\" appears not to be present in the X11 version of "xterm" (e.g.,
.\" the "Alternate Character ROM" character sets and the Sun TTY
.\" emulation).
.\"
.\" 2) It is definitely not 100% complete; some escape sequences
.\" that do something that's either unobservable - at least in
.\" the current state of the code - or not useful aren't
.\" documented. An example of the former are the Locking Shift
.\" sequences that modify the interpretation of the GR
.\" characters; at present, it sets a state variable that's
.\" unused, but perhaps some future version will use it (perhaps
.\" for displaying characters in the range 0200-0377?). An
.\" example of the latter is the sequence to set DECANM mode
.\" (ANSI/VT52 mode): it doesn't do what it does on a VT100,
.\" namely get the terminal to emulate a VT100, it only seems to
.\" fiddle the current character set a bit.
.\"
.\" 3) It doesn't document any of the mouse-related stuff, such as
.\" what the "Track Mouse" escape sequence does, or what the
.\" different mouse modes (MIT, VT220, "VT220 Hilite") do; I
.\" leave that to somebody familiar with that part of the code....
.\"
.\" Run this file through troff and use the -ms macro package.
.ND
.de St
.sp
.nr PD 0
.nr PI 1.5i
.nr VS 16
..
.de Ed
.nr PD .3v
.nr VS 12
..
.rm CH
.ds LH Xterm Control Sequences
.nr s 6*\n(PS/10
.ds L \s\nsBEL\s0
.ds E \s\nsESC\s0
.ds T \s\nsTAB\s0
.ds X \s\nsETX\s0
.ds N \s\nsENQ\s0
.ds e \s\nsETB\s0
.ds C \s\nsCAN\s0
.ds S \s\nsSUB\s0
.nr [W \w'\*L'u
.nr w \w'\*E'u
.if \nw>\n([W .nr [W \nw
.nr w \w'\*T'u
.if \nw>\n([W .nr [W \nw
.nr w \w'\*X'u
.if \nw>\n([W .nr [W \nw
.nr w \w'\*N'u
.if \nw>\n([W .nr [W \nw
.nr w \w'\*e'u
.if \nw>\n([W .nr [W \nw
.nr w \w'\*C'u
.if \nw>\n([W .nr [W \nw
.nr w \w'\*S'u
.if \nw>\n([W .nr [W \nw
.nr [W +\w'\|\|'u
.de []
.nr w \w'\\$2'
.nr H \\n([Wu-\\nwu
.nr h \\nHu/2u
.ds \\$1 \(br\v'-1p'\(br\v'1p'\h'\\nhu'\\$2\h'\\nHu-\\nhu'\(br\l'-\\n([Wu\(ul'\v'-1p'\(br\l'-\\n([Wu\(rn'\v'1p'\|
..
.[] Et \v'-1p'\*X\v'1p'
.[] En \v'-1p'\*N\v'1p'
.[] Be \v'-1p'\*L\v'1p'
.[] Bs \v'-1p'\s\nsBS\s0\v'1p'
.[] Ta \v'-1p'\*T\v'1p'
.[] Lf \v'-1p'\s\nsLF\s0\v'1p'
.[] Vt \v'-1p'\s\nsVT\s0\v'1p'
.[] Ff \v'-1p'\s\nsFF\s0\v'1p'
.[] Cr \v'-1p'\s\nsCR\s0\v'1p'
.[] So \v'-1p'\s\nsSO\s0\v'1p'
.[] Si \v'-1p'\s\nsSI\s0\v'1p'
.[] Eb \v'-1p'\*e\v'1p'
.[] Ca \v'-1p'\*C\v'1p'
.[] Su \v'-1p'\*S\v'1p'
.[] Es \v'-1p'\*E\v'1p'
.[] Fs \v'-1p'\s\nsFS\s0\v'1p'
.[] Gs \v'-1p'\s\nsGS\s0\v'1p'
.[] Rs \v'-1p'\s\nsRS\s0\v'1p'
.[] Us \v'-1p'\s\nsUS\s0\v'1p'
.[] # #
.[] (( (
.[] ) )
.[] * *
.[] + +
.[] 0 0
.[] 1 1
.[] 2 2
.[] 3 3
.[] 4 4
.[] 5 5
.[] 6 6
.[] 7 7
.[] 8 8
.[] 9 9
.[] : :
.[] ; ;
.[] = =
.[] > >
.[] ? ?
.[] @ @
.[] A A
.[] cB B
.[] C C
.[] D D
.[] E E
.[] F F
.[] H H
.[] J J
.[] K K
.[] L L
.[] M M
.[] N N
.[] O O
.[] P P
.[] R R
.[] S S
.[] T T
.[] Z Z
.[] [[ [
.[] ] ]
.[] ` \`
.[] a a
.[] b b
.[] c c
.[] d d
.[] f f
.[] g g
.[] h h
.[] i i
.[] j j
.[] k k
.[] l l
.[] m m
.[] n n
.[] o o
.[] p p
.[] q q
.[] r r
.[] s s
.[] t t
.[] x x
.[] | |
.[] } }
.[] c~ ~
.ds Cc \fIC\fP
.ds Ps \fIP\v'.3m'\h'-.2m'\s-2s\s0\v'-.3m'\fP
.ds Pm \fIP\v'.3m'\h'-.2m'\s-2m\s0\v'-.3m'\fP
.ds Pt \fIP\v'.3m'\h'-.2m'\s-2t\s0\v'-.3m'\fP
.ds Ix \fIx\fP
.ds Iy \fIy\fP
.ds Iw \fIw\fP
.ds Ih \fIh\fP
.ds Ir \fIr\fP
.ds Ic \fIc\fP
.nr LL 6.5i
.TL
Xterm Control Sequences
.am NP
.ds CF %
..
.SH
Definitions
.IP \*(Cc
A single (required) character.
.IP \*(Ps
A single (usually optional) numeric parameter, composed of one of more digits.
.IP \*(Pm
A multiple numeric parameter composed of any number of single numeric
parameters, separated by \*; character(s).
.IP \*(Pt
A text parameter composed of printable characters.
.SH
VT102 Mode
.ds RH VT102 Mode
.LP
Most of these control sequences are standard VT102 control sequences.
There are, however, additional ones to provide control of
.I xterm
dependent functions, like the scrollbar or window size.
.St
.IP \\*(Be
Bell (Ctrl-G)
.IP \\*(Bs
Backspace (Ctrl-H)
.IP \\*(Ta
Horizontal Tab (Ctrl-I)
.IP \\*(Lf
Line Feed or New Line (Ctrl-J)
.IP \\*(Vt
Vertical Tab (Ctrl-K)
.IP \\*(Ff
Form Feed or New Page (Ctrl-L)
.IP \\*(Cr
Carriage Return (Ctrl-M)
.IP \\*(So
Shift Out (Ctrl-N) \(-> Switch to Alternate Character Set
.IP \\*(Si
Shift In (Ctrl-O) \(-> Switch to Standard Character Set
.IP \\*(Es\\*#\\*8
DEC Screen Alignment Test (DECALN)
.IP \\*(Es\\*(((\\*(Cc
Select G0 Character Set (SCS)
\*(Cc = \*0 \(-> Special Character and Line Drawing Set
\*(Cc = \*A \(-> United Kingdom (UK)
\*(Cc = \*(cB \(-> United States (USASCII)
.IP \\*(Es\\*)\\*(Cc
Select G1 Character Set (SCS)
\*(Cc = \*0 \(-> Special Character and Line Drawing Set
\*(Cc = \*A \(-> United Kingdom (UK)
\*(Cc = \*(cB \(-> United States (USASCII)
.IP \\*(Es\\**\\*(Cc
Select G2 Character Set (SCS)
\*(Cc = \*0 \(-> Special Character and Line Drawing Set
\*(Cc = \*A \(-> United Kingdom (UK)
\*(Cc = \*(cB \(-> United States (USASCII)
.IP \\*(Es\\*+\\*(Cc
Select G3 Character Set (SCS)
\*(Cc = \*0 \(-> Special Character and Line Drawing Set
\*(Cc = \*A \(-> United Kingdom (UK)
\*(Cc = \*(cB \(-> United States (USASCII)
.IP \\*(Es\\*7
Save Cursor (DECSC)
.IP \\*(Es\\*8
Restore Cursor (DECRC)
.IP \\*(Es\\*=
Application Keypad (DECPAM)
.IP \\*(Es\\*>
Normal Keypad (DECPNM)
.IP \\*(Es\\*D
Index (IND)
.IP \\*(Es\\*E
Next Line (NEL)
.IP \\*(Es\\*H
Tab Set (HTS)
.IP \\*(Es\\*M
Reverse Index (RI)
.IP \\*(Es\\*N
Single Shift Select of G2 Character Set (SS2)
.IP \\*(Es\\*O
Single Shift Select of G3 Character Set (SS3)
.IP \\*(Es\\*Z
Return Terminal ID (DECID)
.IP \\*(Es\\*([[\\*(Ps\|\\*@
Insert \*(Ps (Blank) Character(s) (default = 1) (ICH)
.IP \\*(Es\\*([[\\*(Ps\|\\*A
Cursor Up \*(Ps Times (default = 1) (CUU)
.IP \\*(Es\\*([[\\*(Ps\|\\*(cB
Cursor Down \*(Ps Times (default = 1) (CUD)
.IP \\*(Es\\*([[\\*(Ps\|\\*C
Cursor Forward \*(Ps Times (default = 1) (CUF)
.IP \\*(Es\\*([[\\*(Ps\|\\*D
Cursor Backward \*(Ps Times (default = 1) (CUB)
.IP \\*(Es\\*([[\\*(Ps\|\\*;\\*(Ps\|\\*H
Cursor Position [row;column] (default = [1,1]) (CUP)
.IP \\*(Es\\*([[\\*(Ps\|\\*J
Erase in Display (ED)
\*(Ps = \*0 \(-> Clear Below (default)
\*(Ps = \*1 \(-> Clear Above
\*(Ps = \*2 \(-> Clear All
.IP \\*(Es\\*([[\\*(Ps\|\\*K
Erase in Line (EL)
\*(Ps = \*0 \(-> Clear to Right (default)
\*(Ps = \*1 \(-> Clear to Left
\*(Ps = \*2 \(-> Clear All
.IP \\*(Es\\*([[\\*(Ps\|\\*L
Insert \*(Ps Line(s) (default = 1) (IL)
.IP \\*(Es\\*([[\\*(Ps\|\\*M
Delete \*(Ps Line(s) (default = 1) (DL)
.IP \\*(Es\\*([[\\*(Ps\|\\*P
Delete \*(Ps Character(s) (default = 1) (DCH)
.IP \\*(Es\\*([[\\*(Ps\|\\*;\\*(Ps\|\\*;\\*(Ps\|\\*;\\*(Ps\|\\*;\\*(Ps\|\\*T
Track Mouse [func;startcol;startrow;firstrow;lastrow] XXX - describe
.IP \\*(Es\\*([[\\*(Ps\|\\*c
Device Attributes (default 0) (DA)
.IP \\*(Es\\*([[\\*(Ps\|\\*;\\*(Ps\|\\*f
Horizontal and Vertical Position [row;column] (default = [1,1]) (HVP)
.IP \\*(Es\\*([[\\*(Ps\|\\*g
Tab Clear
\*(Ps = \*0 \(-> Clear Current Column (default)
\*(Ps = \*3 \(-> Clear All
.IP \\*(Es\\*([[\\*(Ps\|\\*h
Mode Set (SET)
\*(Ps = \*4 \(-> Insert Mode (IRM)
\*(Ps = \*2\*0 \(-> Automatic Linefeed (LNM)
.IP \\*(Es\\*([[\\*(Ps\|\\*l
Mode Reset (RST)
\*(Ps = \*4 \(-> Insert Mode (IRM)
\*(Ps = \*2\*0 \(-> Automatic Linefeed (LNM)
.IP \\*(Es\\*([[\\*(Pm\|\\*m
Character Attributes (SGR)
\*(Ps = \*0 \(-> Normal (default)
\*(Ps = \*1 \(-> Blink (appears as Bold)
\*(Ps = \*4 \(-> Underscore
\*(Ps = \*5 \(-> Bold
\*(Ps = \*7 \(-> Inverse
.IP \\*(Es\\*([[\\*(Ps\|\\*n
Device Status Report (DSR)
\*(Ps = 5 \(-> Status Report \*(Es\*([[\*0\*n \(-> OK
\*(Ps = 6 \(-> Report Cursor Position (CPR) [row;column] as
\*(Es\*([[\*(Ir\|\*;\*(Ic\|\*R
.IP \\*(Es\\*([[\\*(Ps\|\\*;\\*(Ps\|\\*r
Set Scrolling Region [top;bottom] (default = full size of window) (DECSTBM)
.IP \\*(Es\\*([[\\*(Ps\|\\*x
Request Terminal Parameters (DECREQTPARM)
.IP \\*(Es\\*([[\\*?\\*(Ps\|\\*h
DEC Private Mode Set (DECSET)
\*(Ps = \*1 \(-> Application Cursor Keys (DECCKM)
\*(Ps = \*3 \(-> 132 Column Mode (DECCOLM)
\*(Ps = \*4 \(-> Smooth (Slow) Scroll (DECSCLM)
\*(Ps = \*5 \(-> Reverse Video (DECSCNM)
\*(Ps = \*6 \(-> Origin Mode (DECOM)
\*(Ps = \*7 \(-> Wraparound Mode (DECAWM)
\*(Ps = \*8 \(-> Auto-repeat Keys (DECARM)
\*(Ps = \*9 \(-> Send MIT Mouse Row & Column on Button Press
\*(Ps = \*3\*8 \(-> Enter Tektronix Mode (DECTEK)
\*(Ps = \*4\*0 \(-> Allow 80 \z\(<-\(-> 132 Mode
\*(Ps = \*4\*1 \(-> \fIcurses\fP(5) fix
\*(Ps = \*4\*4 \(-> Turn On Margin Bell
\*(Ps = \*4\*5 \(-> Reverse-wraparound Mode
\*(Ps = \*4\*6 \(-> Start Logging
\*(Ps = \*4\*7 \(-> Use Alternate Screen Buffer
\*(Ps = \*1\*0\*0\*0 \(-> Send VT200 Mouse Row & Column on Button Press
\*(Ps = \*1\*0\*0\*3 \(-> Send VT200 Hilite Mouse Row & Column on Button Press
.IP \\*(Es\\*([[\\*?\\*(Ps\|\\*l
DEC Private Mode Reset (DECRST)
\*(Ps = \*1 \(-> Normal Cursor Keys (DECCKM)
\*(Ps = \*3 \(-> 80 Column Mode (DECCOLM)
\*(Ps = \*4 \(-> Jump (Fast) Scroll (DECSCLM)
\*(Ps = \*5 \(-> Normal Video (DECSCNM)
\*(Ps = \*6 \(-> Normal Cursor Mode (DECOM)
\*(Ps = \*7 \(-> No Wraparound Mode (DECAWM)
\*(Ps = \*8 \(-> No Auto-repeat Keys (DECARM)
\*(Ps = \*9 \(-> Don't Send Mouse Row & Column on Button Press
\*(Ps = \*4\*0 \(-> Disallow 80 \z\(<-\(-> 132 Mode
\*(Ps = \*4\*1 \(-> No \fIcurses\fP(5) fix
\*(Ps = \*4\*4 \(-> Turn Off Margin Bell
\*(Ps = \*4\*5 \(-> No Reverse-wraparound Mode
\*(Ps = \*4\*6 \(-> Stop Logging
\*(Ps = \*4\*7 \(-> Use Normal Screen Buffer
\*(Ps = \*1\*0\*0\*0 \(-> Don't Send Mouse Row & Column on Button Press
\*(Ps = \*1\*0\*0\*3 \(-> Don't Send Mouse Row & Column on Button Press
.IP \\*(Es\\*([[\\*?\\*(Ps\|\\*r
Restore DEC Private Mode
\*(Ps = \*1 \(-> Normal/Application Cursor Keys (DECCKM)
\*(Ps = \*3 \(-> 80/132 Column Mode (DECCOLM)
\*(Ps = \*4 \(-> Jump (Fast)/Smooth (Slow) Scroll (DECSCLM)
\*(Ps = \*5 \(-> Normal/Reverse Video (DECSCNM)
\*(Ps = \*6 \(-> Normal/Origin Cursor Mode (DECOM)
\*(Ps = \*7 \(-> No Wraparound/Wraparound Mode (DECAWM)
\*(Ps = \*8 \(-> Auto-repeat/No Auto-repeat Keys (DECARM)
\*(Ps = \*9 \(-> Don't Send/Send MIT Mouse Row & Column on Button Press
\*(Ps = \*4\*0 \(-> Disallow/Allow 80 \z\(<-\(-> 132 Mode
\*(Ps = \*4\*1 \(-> Off/On \fIcurses\fP(5) fix
\*(Ps = \*4\*4 \(-> Turn Off/On Margin Bell
\*(Ps = \*4\*5 \(-> No Reverse-wraparound/Reverse-wraparound Mode
\*(Ps = \*4\*6 \(-> Stop/Start Logging
\*(Ps = \*4\*7 \(-> Use Normal/Alternate Screen Buffer
\*(Ps = \*1\*0\*0\*0 \(-> Don't Send/Send VT220 Mouse Row & Column on Button Press
\*(Ps = \*1\*0\*0\*3 \(-> Don't Send/Send VT220 Hilite Mouse Row & Column on Button Press
.IP \\*(Es\\*([[\\*?\\*(Ps\|\\*s
Save DEC Private Mode
\*(Ps = \*1 \(-> Normal/Application Cursor Keys (DECCKM)
\*(Ps = \*3 \(-> 80/132 Column Mode (DECCOLM)
\*(Ps = \*4 \(-> Jump (Fast)/Smooth (Slow) Scroll (DECSCLM)
\*(Ps = \*5 \(-> Normal/Reverse Video (DECSCNM)
\*(Ps = \*6 \(-> Normal/Origin Cursor Mode (DECOM)
\*(Ps = \*7 \(-> No Wraparound/Wraparound Mode (DECAWM)
\*(Ps = \*8 \(-> Auto-repeat/No Auto-repeat Keys (DECARM)
\*(Ps = \*9 \(-> Don't Send/Send MIT Mouse Row & Column on Button Press
\*(Ps = \*4\*0 \(-> Disallow/Allow 80 \z\(<-\(-> 132 Mode
\*(Ps = \*4\*1 \(-> Off/On \fIcurses\fP(5) fix
\*(Ps = \*4\*4 \(-> Turn Off/On Margin Bell
\*(Ps = \*4\*5 \(-> No Reverse-wraparound/Reverse-wraparound Mode
\*(Ps = \*4\*6 \(-> Stop/Start Logging
\*(Ps = \*4\*7 \(-> Use Normal/Alternate Screen Buffer
\*(Ps = \*1\*0\*0\*0 \(-> Don't Send/Send VT220 Mouse Row & Column on Button Press
\*(Ps = \*1\*0\*0\*3 \(-> Don't Send/Send VT220 Hilite Mouse Row & Column on Button Press
.IP \\*(Es\\*]\\*(Ps\|\\*;\\*(Pt\|\\*(Be
Set Text Parameters
\*(Ps = \*0 \(-> Change Icon Name and Window Title to \*(Pt
\*(Ps = \*1 \(-> Change Icon Name to \*(Pt
\*(Ps = \*2 \(-> Change Window Title to \*(Pt
\*(Ps = \*4\*6 \(-> Change Log File to \*(Pt
.IP \\*(Es\\*c
Full Reset (RIS)
.IP \\*(Es\\*n
Locking Shift Select of G2 Character Set (LS2)
.IP \\*(Es\\*o
Locking Shift Select of G3 Character Set (LS3)
.Ed
.SH
Tektronix 4015 Mode
.ds RH Tektronix 4015 Mode
.LP
Most of these sequences are standard Tektronix 4015 control sequences.
The major features missing are the alternate (APL) character set and
the write-thru and defocused modes.
.St
.IP \\*(Be
Bell (Ctrl-G)
.IP \\*(Bs
Backspace (Ctrl-H)
.IP \\*(Ta
Horizontal Tab (Ctrl-I)
.IP \\*(Lf
Line Feed or New Line (Ctrl-J)
.IP \\*(Vt
Vertical Tab (Ctrl-K)
.IP \\*(Ff
Form Feed or New Page (Ctrl-L)
.IP \\*(Cr
Carriage Return (Ctrl-M)
.IP \\*(Es\\*(Et
Switch to VT102 Mode
.IP \\*(Es\\*(En
Return Terminal Status
.IP \\*(Es\\*(Lf
PAGE (Clear Screen)
.IP \\*(Es\\*(Eb
COPY (Save Tektronix Codes to File)
.IP \\*(Es\\*(Ca
Bypass Condition
.IP \\*(Es\\*(Su
GIN mode
.IP \\*(Es\\*(Fs
Special Point Plot Mode
.IP \\*(Es\\*(Gs
Graph Mode (same as \*(Gs)
.IP \\*(Es\\*(Rs
Incremental Plot Mode (same as \*(Rs)
.IP \\*(Es\\*(Us
Alpha Mode (same as \*(Us)
.IP \\*(Es\\*8
Select Large Character Set
.IP \\*(Es\\*9
Select #2 Character Set
.IP \\*(Es\\*:
Select #3 Character Set
.IP \\*(Es\\*;
Select Small Character Set
.IP \\*(Es\\*]\\*(Ps\|\\*;\\*(Pt\|\\*(Be
Set Text Parameters
\*(Ps = \*0 \(-> Change Icon Name and Window Title to \*(Pt
\*(Ps = \*1 \(-> Change Icon Name to \*(Pt
\*(Ps = \*2 \(-> Change Window Title to \*(Pt
\*(Ps = \*4\*6 \(-> Change Log File to \*(Pt
.IP \\*(Es\\*`
Normal Z Axis and Normal (solid) Vectors
.IP \\*(Es\\*a
Normal Z Axis and Dotted Line Vectors
.IP \\*(Es\\*b
Normal Z Axis and Dot-Dashed Vectors
.IP \\*(Es\\*c
Normal Z Axis and Short-Dashed Vectors
.IP \\*(Es\\*d
Normal Z Axis and Long-Dashed Vectors
.IP \\*(Es\\*h
Defocused Z Axis and Normal (solid) Vectors
.IP \\*(Es\\*i
Defocused Z Axis and Dotted Line Vectors
.IP \\*(Es\\*j
Defocused Z Axis and Dot-Dashed Vectors
.IP \\*(Es\\*k
Defocused Z Axis and Short-Dashed Vectors
.IP \\*(Es\\*l
Defocused Z Axis and Long-Dashed Vectors
.IP \\*(Es\\*p
Write-Thru Mode and Normal (solid) Vectors
.IP \\*(Es\\*q
Write-Thru Mode and Dotted Line Vectors
.IP \\*(Es\\*r
Write-Thru Mode and Dot-Dashed Vectors
.IP \\*(Es\\*s
Write-Thru Mode and Short-Dashed Vectors
.IP \\*(Es\\*t
Write-Thru Mode and Long-Dashed Vectors
.IP \\*(Fs
Point Plot Mode
.IP \\*(Gs
Graph Mode
.IP \\*(Rs
Incremental Plot Mode
.IP \\*(Us
Alpha Mode
.Ed

View File

@@ -0,0 +1,220 @@
Date: 12 Sep 89 17:44:43 GMT
From: crdgw1!montnaro@uunet.uu.net (Skip Montanaro)
Organization: GE Corporate Research & Development, Schenectady, NY
Subject: XTerm Escape Sequences (X11 Version)
To: xpert@expo.lcs.mit.edu
I rummaged around through the xterm code and came up with the following
stuff. No guarantees. I'm headed out of town for a couple days and thought
it better to get it out than let it get stale. Comments, bugs, and other
notes are welcome. Somebody else can convert it to troff. I prefer LaTeX.
:-) I will try and get to the Tek mode stuff when I return, although I doubt
it's changed much from X10 XTerm.
I gleaned the basic stuff out of the charproc.c code, by hacking VTparse()
so it spit out leaves of the parse tree. I was mildly surprised to see
things like "ESC # BEL" turn up.
For most folks, the most interesting stuff will probably be "ESC ] Ps ND
string NP" down near the bottom. That's what you use to change the icon and
window labels, and the log file name. Most other things appear the same as
the X10 documentation, although a few DEC-ish mode parameters (42, 43, 48, &
49) seem to have disappeared.
------------------------------------------------------------------------------
BEL Bell (Ctrl-G)
BS Backspace (Ctrl-H)
HT Horizontal Tab (Ctrl-I)
NL Line Feed or New Line (Ctrl-J)
VT Vertical Tab (Ctrl-K)
NP Form Feed or New Page (Ctrl-L)
CR Carriage Return (Ctrl-M)
SO Shift Out (Ctrl-N) -> Switch to Alternate Character Set
SI Shift In (Ctrl-O) -> Switch to Standard Character Set
ESC BEL (Same as non-escaped BEL)
ESC BS (Same as non-escaped BS)
ESC HT (Same as non-escaped HT)
ESC NL (Same as non-escaped NL)
ESC VT (Same as non-escaped VT)
ESC NP (Same as non-escaped NP)
ESC CR (Same as non-escaped CR)
ESC SO (Same as non-escaped SO)
ESC SI (Same as non-escaped SI)
ESC # BEL (Same as non-escaped BEL)
ESC # BS (Same as non-escaped BS)
ESC # HT (Same as non-escaped HT)
ESC # NL (Same as non-escaped NL)
ESC # VT (Same as non-escaped VT)
ESC # NP (Same as non-escaped NP)
ESC # CR (Same as non-escaped CR)
ESC # SO (Same as non-escaped SO)
ESC # SI (Same as non-escaped SI)
ESC # 8 DEC Screen Alignment Test (DECALN)
ESC ( BEL (Same as non-escaped BEL)
ESC ( BS (Same as non-escaped BS)
ESC ( HT (Same as non-escaped HT)
ESC ( NL (Same as non-escaped NL)
ESC ( VT (Same as non-escaped VT)
ESC ( NP (Same as non-escaped NP)
ESC ( CR (Same as non-escaped CR)
ESC ( SO (Same as non-escaped SO)
ESC ( SI (Same as non-escaped SI)
ESC ( C Select G0 Character Set (SCS)
C = 0 -> Special Character and Line Drawing Set
C = 1 -> Alternate Character ROM Standard Set
C = 2 -> Alternate Character ROM Special Set
C = A -> United Kingdom (UK)
C = B -> United States (USASCII)
ESC ) C Select G1 Character Set (SCS)
C takes same values as above
ESC * C Select G2 Character Set (SCS)
C takes same values as above
ESC + C Select G3 Character Set (SCS)
C takes same values as above
ESC 7 Save Cursor (DECSC)
ESC 8 Restore Cursor (DECRC)
ESC = Application Keypad (DECPAM)
ESC > Normal Keypad (DECNM)
ESC D Index (IND)
ESC E Next Line (NEL)
ESC H Tab Set (HTS)
ESC M Reverse Index (RI)
ESC N Single Shift Select of G2 Character Set (SS2)
ESC O Single Shift Select of G3 Character Set (SS3)
ESC [ BEL (Same as non-escaped BEL)
ESC [ BS (Same as non-escaped BS)
ESC [ HT (Same as non-escaped HT)
ESC [ NL (Same as non-escaped NL)
ESC [ VT (Same as non-escaped VT)
ESC [ NP (Same as non-escaped NP)
ESC [ CR (Same as non-escaped CR)
ESC [ SO (Same as non-escaped SO)
ESC [ SI (Same as non-escaped SI)
ESC [ ? BEL (Same as non-escaped BEL)
ESC [ ? BS (Same as non-escaped BS)
ESC [ ? HT (Same as non-escaped HT)
ESC [ ? NL (Same as non-escaped NL)
ESC [ ? VT (Same as non-escaped VT)
ESC [ ? NP (Same as non-escaped NP)
ESC [ ? CR (Same as non-escaped CR)
ESC [ ? SO (Same as non-escaped SO)
ESC [ ? SI (Same as non-escaped SI)
ESC [ ? Ps h DEC Private Mode Set (DECSET)
Ps = 1 -> Application Cursor Keys (DECCKM)
Ps = 2 -> Set VT52 Mode
Ps = 3 -> 132 Column Mode (DECCOLM)
Ps = 4 -> Smooth (Slow) Scroll (DECSCLM)
Ps = 5 -> Reverse Video (DECSCNM)
Ps = 6 -> Origin Mode (DECOM)
Ps = 7 -> Wraparound Mode (DECAWM)
Ps = 8 -> Auto-Repeat Keys (DECARM)
Ps = 9 -> Send MIT Mouse Row & Column on Button
Press
Ps = 38 -> Enter Tektronix Mode (DECTEK)
Ps = 40 -> Allow 80 <-> 132 Mode
Ps = 41 -> curses(5) fix
Ps = 44 -> Turn on Margin Bell
Ps = 45 -> Reverse-wraparound Mode
Ps = 46 -> Start Logging
Ps = 47 -> Use Alternate Screen Buffer
Ps = 1000 -> xtem bogus sequence (???)
Ps = 1001 -> xtem sequence w/hilite tracking (???)
ESC [ ? Ps l DEC Private Mode Reset (DECRST)
Ps = 1 -> Normal Cursor Keys (DECCKM)
Ps = 3 -> 80 Column Mode (DECCOLM)
Ps = 4 -> Jump (Fast) Scroll (DECSCLM)
Ps = 5 -> Normal Video (DECSCNM)
Ps = 6 -> Normal Cursor Mode (DECOM)
Ps = 7 -> No Wraparound Mode (DECAWM)
Ps = 8 -> No Auto-Repeat Keys (DECARM)
Ps = 9 -> Don't Send MIT Mouse Row & Column on
Button Press
Ps = 40 -> Don't Allow 80 <-> 132 Mode
Ps = 41 -> No curses(5) fix
Ps = 44 -> Turn Off Margin Bell
Ps = 45 -> No Reverse-wraparound Mode
Ps = 46 -> Stop Logging
Ps = 47 -> Use Normal Screen Buffer
Ps = 1000 -> xtem bogus sequence (???)
Ps = 1001 -> xtem sequence w/hilite tracking (???)
ESC [ ? Ps r Restore DEC Private Mode
Ps = 1 -> Normal/Application Cursor Keys (DECCKM)
Ps = 3 -> 80/132 Column Mode (DECCOLM)
Ps = 4 -> Jump (Fast)/Smooth (Slow) Scroll (DECSCLM)
Ps = 5 -> Normal/Reverse Video (DECSCNM)
Ps = 6 -> Normal/Origin Cursor Mode (DECOM)
Ps = 7 -> No Wraparound/Wraparound Mode (DECAWM)
Ps = 8 -> Auto-repeat/No Auto-repeat Keys (DECARM)
Ps = 9 -> Don't Send/Send MIT Mouse Row & Column on
Button Press
Ps = 40 -> Disallow/Allow 80 <-> 132 Mode
Ps = 41 -> Off/On curses(5) fix
Ps = 44 -> Turn Off/On Margin Bell
Ps = 45 -> No Reverse-wraparound/Reverse-wraparound
Mode
Ps = 46 -> Stop/Start Logging
Ps = 47 -> Use Normal/Alternate Screen Buffer
Ps = 1000 -> mouse bogus sequence (???)
Ps = 1001 -> mouse bogus sequence (???)
ESC [ ? Ps s Save DEC Private Mode
Same P's as Restore DEC Private Mode
ESC [ Ps @ Insert Ps (Blank) Character(s) (default = 1) (ICH)
ESC [ Ps A Cursor Up Ps Times (default = 1) (CUU)
ESC [ Ps B Cursor Down Ps Times (default = 1) (CUD)
ESC [ Ps C Cursor Forward Ps Times (default = 1) (CUF)
ESC [ Ps D Cursor Backward Ps Times (default = 1) (CUB)
ESC [ Ps ; Ps H Cursor Position [row;column] (default = [1,1]) (CUP)
ESC [ Ps J Erase in Display
Ps = 0 -> Clear Below (default)
Ps = 1 -> Clear Above
Ps = 2 -> Clear All
ESC [ Ps K Erase in Line
Ps = 0 -> Clear to Right (default)
Ps = 1 -> Clear to Left
Ps = 2 -> Clear All
ESC [ Ps L Insert Ps lines (default = 1) (IL)
ESC [ Ps M Delete Ps lines (default = 1) (DL)
ESC [ Ps P Delete Ps Characters (default = 1) (DCH)
ESC [ T Track Mouse (???)
ESC [ Ps c Device Attributes (DA1)
ESC [ Ps ; Ps f Cursor Position [row;column] (default = [1,1]) (HVP)
ESC [ Ps g Tab Clear
Ps = 0 -> Clear Current Column (default)
Ps = 3 -> Clear All
ESC [ Ps h Mode Set (SET)
Ps = 4 -> Insert Mode (IRM)
Ps = 20 -> Automatic Linefeed (LNM)
ESC [ Ps l Mode Reset (RST)
Ps = 4 -> Insert Mode (IRM)
Ps = 20 -> Automatic Linefeed (LNM)
ESC [ Pm m Character Attributes (SGR)
Ps = 0 -> Normal (default)
Ps = 1 -> Blink (appears as Bold)
Ps = 4 -> Underscore
Ps = 5 -> Bold
Ps = 7 -> Inverse
ESC [ Ps n Device Status Report (DSR)
Ps = 5 -> Status Report ESC [ 0 n -> OK
Ps = 6 -> Report Cursor Position (CPR) [row;column]
as ESC [ r ; c R
ESC [ Ps ; Ps r Set Scrolling Region [top;bottom] (default = full size
of window) (DECSTBM)
ESC [ Ps x Request Terminal Parameters (DECREQTPARM)
ESC ] Ps ND string NP OSC Mode
ND can be any non-digit Character (it's discarded)
NP can be any non-printing Character (it's discarded)
string can be any ASCII printable string
(max 511 characters)
Ps = 0 -> use string as a new icon name and title
Ps = 1 -> use string is a new icon name only
Ps = 2 -> use string is a new title only
Ps = 46 -> use string as a new log file name
ESC c Full Reset
ESC n Switch to Alternate Character Set LS2
ESC o Switch to Alternate Character Set LS3
ESC | Switch to Alternate Graphics(?) Set LS3R
ESC } Switch to Alternate Graphics(?) Set LS2R
ESC ~ Switch to Alternate Graphics(?) Set LS1R
--
Skip Montanaro (montanaro@crdgw1.ge.com)

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
From: zuazaga@ucunix.san.uc.edu (Humberto Ortiz-Zuazaga)
Newsgroups: alt.os.linux
Subject: Re: linux-dos-linux file access
Summary: Mtools pl5 changes
Keywords: Mtools, changes
Date: 23 Jan 92 16:21:23 GMT
Organization: Univ. of Cincinnati
In article <1992Jan22.135130.26695@athena.mit.edu> mont@netcom.netcom.com (Mont Pierce) writes:
>I've tried compiling mtools, but it wants a device[s] to be defined in
>devices.c. Can anyone send me a sample of drives defined in this module?
>
I grabbed a copy of Mtools patchlevel 5 off of comp.sources.xxx
recently, and the only change I had to make was to define the
appropriate devices for Linux. Note that the patches I found on tsx-11
were not quite correct, the B: drive didn't work. The devices I'm using
now are:
#ifdef __linux__
struct device devices[] = {
{'A', "/dev/dosA" , 0L, 12, 0, (int (*) ()) 0, 80, 2, 9},
{'A', "/dev/at0" , 0L, 12, 0, (int (*) ()) 0, 80, 2, 15},
{'B', "/dev/dosB" , 0L, 12, 0, (int (*) ()) 0, 80, 2, 9},
{'B', "/dev/PS1" , 0L, 12, 0, (int (*) ()) 0, 80, 2, 18},
{'C', "/dev/dosC" , 0L, 16, 0, (int (*) ()) 0, 0, 0, 0},
{'\0', (char *) NULL, 0L, 0, 0, (int (*) ()) 0, 0, 0, 0}
};
#endif /* __LINUX__ */
But for this to work, the named devices have to be already made in /dev.
Example, in my case /dev/dosA is a low density drive, (9 sectors, 80
tracks), so it must be made with the appropriate major and minor device
numbers for a low density drive. The devices Linux comes with are
probably not the same you have, so double check them. (Linux has a 1.44
in A:, a 1.2 in B:, and C is the 6th HD partition.)
Good luck!
--
Humberto Ortiz-Zuazaga INTERNET: zuazaga@ucunix.san.uc.edu
Dept. of Physiology & Biophysics BITNET: picone@ucbeh
University of Cincinnati CIS: 72301,2303

Binary file not shown.

Binary file not shown.

BIN
Linux-0.12/patchs/hd.c.Z Normal file

Binary file not shown.

View File

@@ -0,0 +1,63 @@
Date: Thu, 16 Jan 92 10:54:37 EST
From: "Derek Lieber" <derek@watson.ibm.com>
To: Linux-activists@joker.cs.hut.fi
Subject: uncompress and estdio
Attached below is a patch to estdio that was posted to comp.os.minix
awhile back. Last time I looked, the linux version of estdio did *NOT*
have these patches applied. Maybe that's what causes the uncompress
problem?
Derek Lieber
derek@watson.ibm.com
-----------------------------------attachment--------------------------------
Newsgroups: comp.os.minix
Path: arnor!bywater!uunet!uunet!cs.utexas.edu!qt.cs.utexas.edu!yale.edu!ira.uka.de!fauern!NewsServ!rommel
From: rommel@Informatik.TU-Muenchen.DE (Kai Uwe Rommel)
Subject: Yet another bug in estdio (fread.c)
Message-ID: <1991Oct3.111254.23702@Informatik.TU-Muenchen.DE>
Sender: news@Informatik.TU-Muenchen.DE (News System)
Organization: Technische Universitaet Muenchen, Germany
Date: Thu, 3 Oct 1991 11:12:54 GMT
Lines: 38
I noticed another bug in estdio/fread.c. It does not set the _IOEOF flag
when hitting EOF during an __ioread() call.
The diff below fixes it and included the previously known bug with
readsize. I don't know if this fix catches all situations, it works for
me.
*** fread.c~ Tue Oct 30 05:33:23 1990
--- fread.c Thu Oct 3 11:17:50 1991
***************
*** 66,71 ****
--- 66,72 ----
MEMCPY(p, q, (size_t) readsize);
p += readsize;
q += readsize;
+ readsize = 0;
}
else {
do
***************
*** 105,110 ****
--- 106,114 ----
reed != 0 && (red = __ioread(fileno(fp), (char *) p, reed)) != 0;
p += red, reed -= red)
;
+
+ if (red == 0)
+ SETFLAG(fp, _IOEOF);
if (reed != 0) {
if ((readsize -= reed) >= leftover) {
Kai Uwe Rommel
/* Kai Uwe Rommel, Munich ----- rommel@informatik.tu-muenchen.de */
DOS ... is still a real mode only non-reentrant interrupt
handler, and always will be. -Russell Williams

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,206 @@
------------------------------
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Subject: patches for sys_rename
Date: 23 Jan 92 19:43:34 GMT
Ok, here's the sys_rename patch to "linux/kernel/namei.c". Additionally
you need to remove the sys_rename stub function (just returns -ENOSYS)
from "linux/kerne|/sys.c". This is not heavily tested: I wrote it today,
but it seems to work.
Patch the file, remove the stub and recompile linux: voila, you have a
rename system call that actually works. It's not in the library, so
you'll have to explicitly call it by using __asm__'s. A simple
/usr/bin/mvdir command is here:
#define __LIBRARY__
#include <unistd.h>
#include <stdio.h>
int main(int argc, char ** argv)
{
int i;
if (argc != 3)
return -1;
__asm__("int $0x80":"=a" (i):"0" (__NR_rename),
"b" ((long) argv[1]),
"c" ((long) argv[2]));
return i;
}
and with this in place mv seems to be able to move directories without
problems. (You can also use mvdir to move non-directories, but who
cares). And, yes, I'm interested in bug-reports if it doesn't work.
Linus
---- snip snip -----------------------------------------
*** linux/fs/namei.c Sun Jan 12 06:09:58 1992
--- namei.c Thu Jan 23 23:05:53 1992
***************
*** 892,894 ****
--- 892,1051 ----
iput(oldinode);
return 0;
}
+
+ static int subdir(struct m_inode * new, struct m_inode * old)
+ {
+ unsigned short fs;
+ int ino;
+ int result;
+
+ __asm__("mov %%fs,%0":"=r" (fs));
+ __asm__("mov %0,%%fs"::"r" ((unsigned short) 0x10));
+ new->i_count++;
+ result = 0;
+ for (;;) {
+ if (new == old) {
+ result = 1;
+ break;
+ }
+ if (new->i_dev != old->i_dev)
+ break;
+ ino = new->i_num;
+ new = _namei("..",new,0);
+ if (new->i_num == ino)
+ break;
+ }
+ iput(new);
+ __asm__("mov %0,%%fs"::"r" (fs));
+ return result;
+ }
+
+ #define PARENT_INO(buffer) \
+ (((struct dir_entry *) (buffer))[1].inode)
+
+ #define PARENT_NAME(buffer) \
+ (((struct dir_entry *) (buffer))[1].name)
+
+ /*
+ * rename uses the -ERESTARTNOINTR error return to avoid race conditions:
+ * it tries to allocate all the blocks, then sanity-checks, and if the sanity-
+ * checks fail, it tries to restart itself again. Very practical - no changes
+ * are done until we know everything works ok.. and then all the changes can be
+ * done in one fell swoop when we have claimed all the buffers needed.
+ *
+ * Anybody can rename anything that they have access to (and write access to the
+ * parents) - except the '.' and '..' directories.
+ */
+ static int do_rename(const char * oldname, const char * newname)
+ {
+ struct m_inode * inode;
+ struct m_inode * old_dir, * new_dir;
+ struct buffer_head * old_bh, * new_bh, * dir_bh;
+ struct dir_entry * old_de, * new_de;
+ const char * old_base, * new_base;
+ int old_len, new_len;
+ int retval;
+
+ inode = old_dir = new_dir = NULL;
+ old_bh = new_bh = dir_bh = NULL;
+ old_dir = dir_namei(oldname,&old_len,&old_base, NULL);
+ retval = -ENOENT;
+ if (!old_dir)
+ goto end_rename;
+ retval = -EPERM;
+ if (!old_len || get_fs_byte(old_base) == '.' &&
+ (old_len == 1 || get_fs_byte(old_base+1) == '.' &&
+ old_len == 2))
+ goto end_rename;
+ retval = -EACCES;
+ if (!permission(old_dir,MAY_WRITE))
+ goto end_rename;
+ old_bh = find_entry(&old_dir,old_base,old_len,&old_de);
+ retval = -ENOENT;
+ if (!old_bh)
+ goto end_rename;
+ inode = iget(old_dir->i_dev, old_de->inode);
+ if (!inode)
+ goto end_rename;
+ new_dir = dir_namei(newname,&new_len,&new_base, NULL);
+ if (!new_dir)
+ goto end_rename;
+ retval = -EPERM;
+ if (!new_len || get_fs_byte(new_base) == '.' &&
+ (new_len == 1 || get_fs_byte(new_base+1) == '.' &&
+ new_len == 2))
+ goto end_rename;
+ retval = -EACCES;
+ if (!permission(new_dir, MAY_WRITE))
+ goto end_rename;
+ if (new_dir->i_dev != old_dir->i_dev)
+ goto end_rename;
+ new_bh = find_entry(&new_dir,new_base,new_len,&new_de);
+ retval = -EEXIST;
+ if (new_bh)
+ goto end_rename;
+ retval = -EPERM;
+ if (S_ISDIR(inode->i_mode)) {
+ if (!permission(inode, MAY_WRITE))
+ goto end_rename;
+ if (subdir(new_dir, inode))
+ goto end_rename;
+ retval = -EIO;
+ if (!inode->i_zone[0])
+ goto end_rename;
+ if (!(dir_bh = bread(inode->i_dev, inode->i_zone[0])))
+ goto end_rename;
+ if (PARENT_INO(dir_bh->b_data) != old_dir->i_num)
+ goto end_rename;
+ }
+ new_bh = add_entry(new_dir,new_base,new_len,&new_de);
+ retval = -ENOSPC;
+ if (!new_bh)
+ goto end_rename;
+ /* sanity checking before doing the rename - avoid races */
+ retval = -ERESTARTNOINTR;
+ if (new_de->inode || (old_de->inode != inode->i_num))
+ goto end_rename;
+ /* ok, that's it */
+ old_de->inode = 0;
+ new_de->inode = inode->i_num;
+ old_bh->b_dirt = 1;
+ new_bh->b_dirt = 1;
+ if (dir_bh) {
+ PARENT_INO(dir_bh->b_data) = new_dir->i_num;
+ dir_bh->b_dirt = 1;
+ old_dir->i_nlinks--;
+ new_dir->i_nlinks++;
+ old_dir->i_dirt = 1;
+ new_dir->i_dirt = 1;
+ }
+ retval = 0;
+ end_rename:
+ brelse(dir_bh);
+ brelse(old_bh);
+ brelse(new_bh);
+ iput(inode);
+ iput(old_dir);
+ iput(new_dir);
+ return retval;
+ }
+
+ /*
+ * Ok, rename also locks out other renames, as they can change the parent of
+ * a directory, and we don't want any races. Other races are checked for by
+ * "do_rename()", which restarts if there are inconsistencies.
+ */
+ int sys_rename(const char * oldname, const char * newname)
+ {
+ static struct task_struct * wait = NULL;
+ static int lock = 0;
+ int result;
+
+ while (lock)
+ sleep_on(&wait);
+ lock = 1;
+ result = do_rename(oldname, newname);
+ lock = 0;
+ wake_up(&wait);
+ return result;
+ }
------------------------------

Binary file not shown.

View File

@@ -0,0 +1,43 @@
#include <unistd.h>
char tmp[512];
#define NEW_DEV 0x303
void main(void)
{
int i;
if (512 != read(0,tmp,512))
exit(1);
if (0xAA55 != *((unsigned short *)(tmp+510)))
exit(2);
*((unsigned short *)(tmp+508)) = NEW_DEV;
if (512 != write(1,tmp,512))
exit(3);
while ((i=read(0,tmp,512)) > 0)
if (i != write(1,tmp,i))
exit(4);
exit(0);
}
/*-------
Devices:
Harddisks:
0x301 - /dev/hd1 - first partition on first drive
...
0x304 - /dev/hd2 - fourth partition on first drive
0x306 - /dev/hd1 - first partition on second drive
...
0x309 - /dev/hd2 - fourth partition on second drive
0x300 - /dev/hd0 - the whole first drive. BE CAREFUL
0x305 - /dev/hd5 - the whole second drive. BE CAREFUL
Floppies:
0x208 - 1.2M in A
0x209 - 1.2M in B
0x21C - 1.44M in A
0x21D - 1.44M in B
*/

Binary file not shown.

BIN
Linux-0.12/patchs/tet1.c.Z Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,8 @@
70c70
< DEFS = -DDIRENT -DST_BLOCKS_MISSING -DSTDC_HEADERS -DPOSIX -DUSG
---
> DEFS = -DDIRENT -DST_BLOCKS_MISSING -DSTDC_HEADERS -DPOSIX -DUSG -D_POSIX_SOURCE
80c80
< bindir = $(prefix)/gnubin
---
> bindir = $(prefix)/bin

329
Linux-0.12/ports/gawk-diffs Normal file
View File

@@ -0,0 +1,329 @@
*** 1.1 1991/12/11 16:13:13
--- Makefile 1991/12/11 17:07:11
***************
*** 64,71 ****
# MISSING = -DSPRINTF_INT -DBLKSIZE_MISSING -DSTRERROR_MISSING -DRANDOM_MISSING
# VAX running Ultrix 3.x
- MISSING = -DSTRERROR_MISSING
# A generic 4.2 BSD machine
# (eliminate GETOPT_MISSING for 4.3 release)
# (eliminate STRCASE_MISSING and TMPNAM_MISSING for Tahoe release)
--- 64,75 ----
# MISSING = -DSPRINTF_INT -DBLKSIZE_MISSING -DSTRERROR_MISSING -DRANDOM_MISSING
# VAX running Ultrix 3.x
+ # LINUX
+ MISSING = -DSPRINTF_INT -DTMPNAM_MISSING -DBLKSIZE_MISSING -DSTRCASE_MISSING \
+ -Dalloca=__builtin_alloca -DGCVT_MISSING -DRANDOM_MISSING \
+ -DBCOPY_MISSING -DSTRTOD_MISSING
+
# A generic 4.2 BSD machine
# (eliminate GETOPT_MISSING for 4.3 release)
# (eliminate STRCASE_MISSING and TMPNAM_MISSING for Tahoe release)
***************
*** 80,92 ****
# Comment out the next line if you don't have gcc.
# Also choose just one of -g and -O.
! #CC= gcc
! #OPTIMIZE= -O -g
PROFILE= #-pg
DEBUG= #-DDEBUG #-DMEMDEBUG #-DFUNC_TRACE #-DMPROF
DEBUGGER= #-g -Bstatic
! WARN= #-W -Wunused -Wimplicit -Wreturn-type -Wcomment # for gcc only
# Parser to use on grammar -- if you don't have bison use the first one
#PARSER = yacc
--- 84,96 ----
# Comment out the next line if you don't have gcc.
# Also choose just one of -g and -O.
! CC= gcc
! OPTIMIZE= -O #-g
PROFILE= #-pg
DEBUG= #-DDEBUG #-DMEMDEBUG #-DFUNC_TRACE #-DMPROF
DEBUGGER= #-g -Bstatic
! WARN= -W -Wunused -Wimplicit -Wreturn-type -Wcomment # for gcc only
# Parser to use on grammar -- if you don't have bison use the first one
#PARSER = yacc
***************
*** 154,160 ****
# rules to build gawk
gawk: $(ALLOBJS) $(GNUOBJS)
! $(CC) -o gawk $(CFLAGS) $(ALLOBJS) $(GNUOBJS) -lm
$(AWKOBJS): awk.h
--- 158,164 ----
# rules to build gawk
gawk: $(ALLOBJS) $(GNUOBJS)
! $(CC) -o gawk $(CFLAGS) $(ALLOBJS) $(GNUOBJS) #-lm
$(AWKOBJS): awk.h
*** 1.1 1991/12/11 16:18:17
--- awk.h 1991/12/11 17:07:45
***************
*** 42,51 ****
extern char *alloca();
#endif
#else
extern char *alloca();
#endif
#ifdef SPRINTF_INT
! extern int sprintf();
#else /* not USG */
/* nasty nasty berkelixm */
#define setjmp _setjmp
--- 42,53 ----
extern char *alloca();
#endif
#else
+ #ifndef alloca
extern char *alloca();
#endif
+ #endif
#ifdef SPRINTF_INT
! /* extern int sprintf(); XXX LINUX */
#else /* not USG */
/* nasty nasty berkelixm */
#define setjmp _setjmp
***************
*** 78,99 ****
extern char *memset(char *, int, int);
/* extern int fprintf(FILE *, char *, ...); */
! extern int fprintf();
extern int vfprintf();
#ifndef MSDOS
! extern int fwrite(char *, int, int, FILE *);
#endif
extern int fflush(FILE *);
extern int fclose(FILE *);
extern int pclose(FILE *);
#ifndef MSDOS
! extern int fputs(char *, FILE *);
#endif
extern void abort();
extern int isatty(int);
extern void exit(int);
extern int system(char *);
extern int sscanf(/* char *, char *, ... */);
extern double atof(char *);
extern int fstat(int, struct stat *);
--- 80,104 ----
extern char *memset(char *, int, int);
/* extern int fprintf(FILE *, char *, ...); */
! /* extern int fprintf(); XXXL */
extern int vfprintf();
#ifndef MSDOS
! /* extern int fwrite(char *, int, int, FILE *); XXXL */
#endif
extern int fflush(FILE *);
extern int fclose(FILE *);
extern int pclose(FILE *);
#ifndef MSDOS
! /* extern int fputs(char *, FILE *); XXXL */
#endif
extern void abort();
extern int isatty(int);
extern void exit(int);
extern int system(char *);
+ #if 0
+ /* XXXL */
extern int sscanf(/* char *, char *, ... */);
+ #endif
extern double atof(char *);
extern int fstat(int, struct stat *);
***************
*** 100,110 ****
extern off_t lseek(int, off_t, int);
extern int fseek(FILE *, long, int);
extern int close(int);
! extern int open();
extern int pipe(int *);
extern int dup2(int, int);
#ifndef MSDOS
! extern int unlink(char *);
#endif
extern int fork();
extern int execl(/* char *, char *, ... */);
--- 105,115 ----
extern off_t lseek(int, off_t, int);
extern int fseek(FILE *, long, int);
extern int close(int);
! /* extern int open(); XXXL */
extern int pipe(int *);
extern int dup2(int, int);
#ifndef MSDOS
! /* extern int unlink(char *); XXXL */
#endif
extern int fork();
extern int execl(/* char *, char *, ... */);
*** 1.1 1991/12/11 16:29:17
--- awk.y 1991/12/11 17:08:04
***************
*** 96,102 ****
%type <sval> func_name
%token <sval> FUNC_CALL NAME REGEXP
! %token <lval> ERROR
%token <nodeval> NUMBER YSTRING
%token <nodetypeval> RELOP APPEND_OP
%token <nodetypeval> ASSIGNOP MATCHOP NEWLINE CONCAT_OP
--- 96,102 ----
%type <sval> func_name
%token <sval> FUNC_CALL NAME REGEXP
! %token <lval> ERROR_TOK
%token <nodeval> NUMBER YSTRING
%token <nodetypeval> RELOP APPEND_OP
%token <nodetypeval> ASSIGNOP MATCHOP NEWLINE CONCAT_OP
***************
*** 386,401 ****
nls
: NEWLINE
! { $<nodetypeval>$ = NULL; }
| nls NEWLINE
! { $<nodetypeval>$ = NULL; }
;
opt_nls
: /* empty */
! { $<nodetypeval>$ = NULL; }
| nls
! { $<nodetypeval>$ = NULL; }
;
input_redir
--- 386,401 ----
nls
: NEWLINE
! { $<nodetypeval>$ = (NODETYPE) NULL; }
| nls NEWLINE
! { $<nodetypeval>$ = (NODETYPE) NULL; }
;
opt_nls
: /* empty */
! { $<nodetypeval>$ = (NODETYPE) NULL; }
| nls
! { $<nodetypeval>$ = (NODETYPE) NULL; }
;
input_redir
***************
*** 953,959 ****
case '\\':
if (*lexptr++ == '\0') {
yyerror("unterminated regexp ends with \\");
! return ERROR;
} else if (lexptr[-1] == '\n')
goto retry;
break;
--- 953,959 ----
case '\\':
if (*lexptr++ == '\0') {
yyerror("unterminated regexp ends with \\");
! return ERROR_TOK;
} else if (lexptr[-1] == '\n')
goto retry;
break;
***************
*** 969,975 ****
case '\0':
lexptr--; /* so error messages work */
yyerror("unterminated regexp");
! return ERROR;
}
}
}
--- 969,975 ----
case '\0':
lexptr--; /* so error messages work */
yyerror("unterminated regexp");
! return ERROR_TOK;
}
}
}
***************
*** 1163,1169 ****
case '\n':
lexptr--;
yyerror("unterminated string");
! return ERROR;
case '"':
yylval.nodeval = make_str_node(tokstart + 1,
lexptr-tokstart-2, esc_seen);
--- 1163,1169 ----
case '\n':
lexptr--;
yyerror("unterminated string");
! return ERROR_TOK;
case '"':
yylval.nodeval = make_str_node(tokstart + 1,
lexptr-tokstart-2, esc_seen);
***************
*** 1171,1177 ****
return YSTRING;
}
}
! return ERROR;
case '-':
if (*lexptr == '=') {
--- 1171,1177 ----
return YSTRING;
}
}
! return ERROR_TOK;
case '-':
if (*lexptr == '=') {
***************
*** 1256,1262 ****
}
return LEX_AND;
}
! return ERROR;
case '|':
if (*lexptr == '|') {
--- 1256,1262 ----
}
return LEX_AND;
}
! return ERROR_TOK;
case '|':
if (*lexptr == '|') {
***************
*** 1279,1285 ****
if (c != '_' && ! isalpha(c)) {
yyerror("Invalid char '%c' in expression\n", c);
! return ERROR;
}
/* it's some type of name-type-thing. Find its length */
--- 1279,1285 ----
if (c != '_' && ! isalpha(c)) {
yyerror("Invalid char '%c' in expression\n", c);
! return ERROR_TOK;
}
/* it's some type of name-type-thing. Find its length */

Binary file not shown.

View File

@@ -0,0 +1,332 @@
[0029] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/10/91 19:38 (329 lines)
Subject: patch to use shoelace with linux + fsck and mkfs
Date: Sun, 10 Nov 91 16:21:27 PST
From: pmacdona@sol.UVic.CA (Peter MacDonald)
To: linux-activists@joker.cs.hut.fi
Following are patches to shoelace to allow it to boot the Linux
image (sorry, no building by parts cause there are no parts).
This also means that the fsck function of shoelace is available,
including fsck -m, or mkfs, which I have not tested. Please note
that by using strip on the shoelace executable, I was able to fsck
a 20Meg partition. 64Meg partitions, I doubt it can handle.
In this way, both minix and linux can be run from the same partition,
with a bit of mv'ing of directories like bin.
You will need minix to build these because of the 16bit assembler.
I also have not tried compiling laceup under linux yet (no disk space).
Perhaps some kind soul can do this and post executables for non-minixers.
If you are not already familiar with and using shoelace, please install
and learn it first!!! The following assumes this.
To use:
- Get shoelace from plains or wherever.
- Apply the mxvid50 patches (may not have to, but my diffs are against them)
- Copy makefile.bcc to makefile and then apply the patches in shoelace.pat.
- Put the bootsect.x file in the shoelace dir.
- Type make and cross fingers.
- Use strip, ie: strip shoelace
- Copy new shoelace to your root. (Might wish to try floppy first).
- Reboot, hit enter when shoelace prompt appears and type "load /bootimage" or
- If you want an automatic boot, edit /etc/config and set "load /bootimage"
You must also ensure config doesn't allow shoelace to find system,
fs, mm and init or it will boot from them by default. Either
move the executables or set them to a bogus path.
Why Use Shoelace:
1) has fsck and mkfs.
2) doesn't require a seperate boot partition.
3) allows passing environment variables to kernel (like video mode).
4) doesn't require kernel patch (byte 508) to indicate root device.
5) allow you to dynamically boot different partitions and different
images in the same partition.
Disclaimer:
This patch is a bit of a hack. You can set your rootdev in the config
file and it should work. But I didn't implement the bootdev.
I also did not try to pass on the environment to linux.
Acknowledgment:
Earl Chew for shoelace.
pmacdona@sol.uvic.ca
table
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 slpat.Z
M'YV09<:@>0,"#X@6(,2\>4-G3D Z+O H<$@&Q(D77K"\F/.BXPD0/A(N;/@Pz
M(@@>/"R^.*$ "Y^6?!(H9.AP#,0Y"1*@&)("1(P<.6* 8)+&39TY(*B\D6,Gy
M#!LR<V#"%$FS)-(T2-F\"4.F3,4P=$# P'-C# P8"?. H(.F3,(T;^:TF$,Gx
MC!PZ=>" D/.F#IVB9>:P !'&3<4V;^P$GHJU#!LS(/J&?0.9K=L[8=32(<B5w
MC)S 2,?F.'MV<.&*:NJT@8/4\F<74EV"2!+6LAL06KDB/>$0+YR/9-)\MLE&v
M;1@S=,K( 9&&Y&,0*$3#D'$VA6G#:]N"F).';IDV4\&*Q1.#-(S!1XN> 2$Du
MR9,IS-TDER,G;T,7(&+S >'D"94B(8 P1AWTE2%?<=MUEUP;S"$E'F)T@8"#t
M"C;44,,,-J257%9ON'$&?E2@@=5V ]7Q5$)NN?'&5'#P)08;WPU6AF*W%96=s
M6V;X16 9^"4! F;RK470&F64H5=SVZ6Q&HP@BHA4#3'( ,(:0DQ%I!QN.):Dr
M'F[-4>*)8KAE8%]GH"'C'' $E(93"(;1FI,@D/%&8&Z<$-88'=9EHV53B5&'q
M&68H)V 8 KGE9GP@M%%4&A*Y-%6(;N76U7)H'!JF@8ER92A2<R@)!XR$(05'p
M7)V^6,9U%>$I7U%UQ#759UR!H!Q?<B!U1QILL+%78":&96,8(-3AAABPKA&&o
MJ;@M! =^4I0Q4UABJ%6I83W2,96DHGY&!QUJF>$FM&J=4<:VZOTX$*@U;58Kn
M86$!^U<;E[65I6++C3I'J4RVU)(+R>%A+18N=&4&8"!\09===+#!:J/\EN&Om
MOEA,400554#!1!%.@- #"#3DE--^;BQ'V7;CYC770TM%A8403_@G\1$@:#P>l
M#&7!X/%^2Z5Q1E%.$4:&9Z!%!MFS)]NT5$M).)$$%2_'O+%T9]W\HUN(*495k
M6&U]=E!D?@E]XX^9M20QQ5 T_30>HU$G=6]Y;5?774AE78;864S1M-/CE1?Uj
MQPEZQZ"D7K&;MWG057BA#2G AL544K1,Q1=$%&&%#@F,1=K6<X0![UIYI.FUi
M&5K! 8=Q2#VK>$R5XS$##$(A-'"M8<&!<'-PW=8A"*]'Z%D:5H\[1DN-^P>Yh
MY#*/M;J4^QD/@PT0&_QVP@OKT!(("52=0!AXL# "RRX7<<3TU2>6 %0L8 ^^g
M]=AKG_32+Y\O?F#E-WK&&Y2CG_T8*H=OQ_B"F8^%_@F G__V X>N'6P,:Q"<f
M: !U%L4!\%[Q:\D#X:"]L1C!"'O;CUW$T!PYV$4M36%#'=SB Q] 2080>\,:e
MOB I@Y4,#M);G&R.,*XX826!N[.:[#P(K_D(9CMI&D,:!C8&-JDE9%Y+5\I>d
M0 </(A!B !1(!?%P%@DZ9#WX@\D#458K%HRA40!,WPC6QS3O2=!Z FP4Q*Q8c
M!BRJ+#S($11;Q(."&2DG#W_Q4+(T10;K3 T$J5F-D*9B&9+YI@5\\0O! %>1b
MX PG8<:)HQP(J9UGO>@-"(RA!-6PFC14C@5CJUC[9 BQ-LSA##&(80)<$*WDa
M^&0&+"B/!%W@)B&F 00B8,)6@J-'[O@-!"X(I@AFV4JWQ "6Y8DE,F$ L88]z
M# L&(D._Z!##@($E#"V))AFN64TQW"N;AO'F'*3W @4$9" %V5H;\&"'-)"Ay
M!LRDB$HRLI&.K 0DB6*G.^%YDI1<A"58, )?&)2E.\S!!56P0AK&X((A!"$$x
M=1##&%J OQ 45"X.88IR7( _.:2!7TO)TQM<X)4ZA$ A;G!#&GBD*CS)(3AAw
MX&@8("JL<86@#6!!@PMRU((PR4%A;@A8&2"J4CF%P%LCQ%((G% &@TY!.78(v
MP4#AI:LFW.ZI>@%!#GR22@OI8'4@@ (1J. 3H,2@)4&XRT)AI .N8FBK(\/3u
M:EP0%Q<H2J6-@D).VSJ'-[ !H0IEJ$,MVM2#)G2A#7UH1"=:T8N>3*-RX.@<t
M/ I2OLAGI"4]:8=4RM(.N12F,J5IENAPTYSNM X]50Y0A4I4=[[AJ&%(JAN6s
M6MBG,D6J;V@#55LBT-RV=:J. 4(2W&"&I>#T+VMP <5:T(01NJ%008T<=)80r
MAC2TH IW<(L4<DO5%+2$J08]0R)9TU:Y+JNN=V64V"*JAH>4MT,#.P.!CH6Nq
M,7P&4YWB$NZ6 H(F+,H@*)@!#A#7DB: )@SB:D$2B-!6'OPD*%C%@0NB=);Rp
MN& &,[C!#(1+7..")0W)76YS#01=%T3.!RTA EC*T%8<@ "K6A5*E'1P%AV4o
M!P1': (5Q!9-Y;3UHAPNKAR."V+E5H&YSBVQ=%$ 7J1,04'?\2X6GB"',Q0Fn
M#7KX<(?:2H5SJG0.A0)!%51*KT[5I88C?JZ\!D/#(1<F#RTA2I;&R3$8S !Bm
M/@)2<BJR&1!\*C.$221V;L46&P)*.08*"YCO>QO$= 4I0N[O^K! &.P45UADl
M: F2BJ(J&JTT2$[!3'>$)*!IB0L$*E (6U1 HCFQ@5"&PLZ5LL2&%ZBJKTP:k
M PM:,IS<P@%7L:X(4!/H.\6)C2 ^JI35!%(8<57$2ZZ&-:EAY*MVC6$,1FH7j
M" HJ(.Z>1I4B:&=7<ON&KIS$T64(R1:*&Z2VZ P-=.C",+&@:C0@JI"JBB_Ni
M@%WIBA1E/H3ZBV*:-"*YXA0[O7$0>]PSA9:(P4V!$W<9"(+N4$TM5Q8OY#3Wh
M&Z0^XV P,:!!9)83@PS]&@^.B=N[%0<ICF.M#._V%5+> (>_=,@I^ D"&_HZg
M&!\5L#9W($AO#&2';NOV-%>Y3;YU!NZANZ'HB_X"GG9^$CS@P0<BN)YA)"@"f
MIT/=OE_@BT%/DH<\8+TE=Q"10 +M%MG=*W!]+N2LM12M5CL&UOBI0J?TR):"e
M>QL[>>C+H-R0S>9DS9"$ 8'$*5YNMP@K#7%P2Y\#3R#%NW/B(K$+&08SASJLd
MW4U<7WS%,33O2%/!(7JDP>44HGFDH."8,L"##'#0$_X6\F"&T3P(K'"$(*S%c
M86&I.*'MC4TL!.?0GPD2NU\><\Y[GOA(P0$>/LX<DN('!V/A)[K!+?K&@V &b
M$IIW2R!U&Q\QVT.!FWNM;^U7ED+G,Z\6N.0)4L@.7<;PEK]+'9S2$O;#: X]a
MT6='X19-X5'T%1@O-@12\ 5#\ 1,, 6#,04*^ 6-<P7P<1H)N(!#@ 1!( 7Pz
M413>$2N4T7^B$R=E,#!SUB2!08!VL2:F8BN(YC-=P6=#HART]@)GH!4N0'S8y
M81==,BZ:=AOJ9VL'<Q<<Q1R5H1W')1#E0G3"T2'P$B0%Z(+_QW;[A6F*\P2Nx
M<2L.<2/&H34P@AR"8QG"88)(Q08- 1W8)WLUD#@0TW(<M![!D3EDT!3R@6!Nw
M@16#,4=A(8$:R($>V"#!(D^_XC;U81/]IG@M>( MT15C\&H>9'.W$6F%U$[Zv
MUS.+5B2WX2?(=U!)(3="YA;)%BL"V(7 4E"->(($XQKW5VB%$2RB(R@*@6F1u
M<1NW9U^:N"4\\HDL*$((:'X#$1=S@P64J(38HR2JL1VXB%]8YA:O-P-28A#Pt
MU!-%-(!?LTUUH8M>(W<VZ!@MT6?B]09WD!;?9P,)E':8DAYZ=&G+88EXT3/^s
MAX HD ,N4 ,)E";+D8D&LFM8\(Q2PFK\A!#8AVH@( -M2)!24DQ(L3%^0(_Vr
MF#B\^!FA" *4ER@Q!S8=1Q #^(UMT86R0P>%,G-N@"##EWC0^!:*!F4,@@(?q
MM8O^A5<M(& 9PE\M\@8/]R)J<3O%9P/8=Q9"\@8_,!MQTB%V,B4J,HY#E'_Op
MJ"OQ:"M+D4"W4T@\21J\\9-NB 60HA9R4B=A$71R<([X9QE=B%,&D5\(6)(Eo
MAY)A-03]]5_&A@5!(#H( FUWAVT!DY1]1I>OAFT^X0(P "P8J'YW61D$\0)'n
M(0<;(0=C\ +JUQ(8V&N=!"KJEXAZB7<@, 2FUB4#49=E4)5+MQZ11GF31(QAm
M8 =]X5&NM'B)TG@Y9QB#X2E+41?R,1A;691")BZU01 N]4A?@R<CT&\MH3"_l
MV1MY= 9)!P(OX#M,I!QM4$1Z$9JG^7M#QC.ZPBUI\I;4=4O8I5W<Y8U8 %QLk
M 1%(61$EEQXT0)MD&3R(E00,P(A\ (<Y 8;@08M\9LA,B(C BQ>XABZ8A=,j
M:#4H4)-DX'F!4W=>8A??5X\S(&7V21# YT2UH1T#4X5F,%#9D9^**2**P7FEi
MF8>YF7@3>BJ[4C7#^)MV) =X)")Z="R)(7G:(0+O&9_S*0*X03 LNJ&):)UNh
MT77V%J)?X ::4P8BH#@C4)^98FXPD ,O ,X\ (/)F.I) ,94@54P)9U!YY g
M !6=TD;*00<T8*13<)I\Z4A<I!:&.5D;@1=D\ +@R42K49]&ZC!849S[5H6Wf
M@G']059A$AGT<@>HF1RW(2S_AQ04)8AHHB8#XQ5PB@7V"2<'NARJHB=N,$Y&e
M"B,>4FBK:6XQLZG;%J1&V@*@&JH'$:JD"JJC6JJHFJJJNJJE:J0Q0QT#B4AWd
M(*NT"@)24 1!0 1-4 2N^GW+ WZT*@>S*JP((9C'UZL"]A,'0:S,.JMVMY<\c
M<JR,:J0]4*W6>JW6:JNXJJM%H#'8^JW5JFF5$1AAT0*0<0*WFJN[^A$M "Q8b
M( (D$ ,T&@(;\ZX4)0([<".$]S_G1! G8! (,0=KD :B4R[IRJW0803\YA2Pa
M0@9J(:=T 8 E7+#V*\6 ;"RXB\0:K#;NJO0T67^D@( )4^\@1$:<4\H81%3z
M (A?4 1/8 0?$1+HVK%%\!$F8 )(@Y%[1FI_]H5],6CX=WR!DGR*MHR-UGB0y
MQE]-,&F)>&E;AP6;]EP=XFF)1AAL(&JMH9N9B6KUQFJ5R9>!V8WKUR&XQE+\x
M")F_!BH8.&RR I**(T-A*I3*YA;GYVS/*FU]1FW,86W85G.)QVT&]VTM\3_Aw
M=GGD9FX\@&[JMGP@X&YE$F_S5F_WIAV?6:?!%A\ 9Q.\LXOWB12!BW#CHG#Mv
M\1X.!W$5H9H5=RC9A7&'HG' YW*D1GTA-W(^87*,DG*-NW+C)Z%YTK@P][B"u
M2'.2B',@H',\)Y0_MQ9!9TA$9W0'!Q6(\IDQ1+A>IXQR('5^A10\8'58IW69t
MA@74.R[-&W5BI[UE=W98D'8+17Q:XW;R%'?:,9D&NIG0FG=[MQY]Y[E_5Q$5s
M643["G.N@7C @KK>]WB11VJB:7GCEGDOY7R?IS*$VWWF1GHM87JHMQZJYY.Lr
M]U*N!WNR1WNT>WNRN4TOM7N]]WO^DJFM2'R-.$1#6[6,Z[CPYL#0)R'3]YK6q
M)R'9AQ;;-[@)4+CC-GKA-[B[BRG V&SI)[:V1K;M=X0H '\?9C7PZQ;V]R/Xp
MYX[[QP;]Q\3_%X :V853>(!.-H$-^( 1.($5>('8X8<,"(@?.*G)(8)F0()Zo
M(3" X8F0 L:+^()3HS6= 7<UB"6.@8,ZR(-?H36]$813HL3X\SQ'B)?&")(Jn
MNAY.:%E1&!9AS,<^>(74TA):F#5<Z*)E\(61<H+M$J$PMQP"$UMHZ'IK:)!7m
M*4-PJ#,V1(=V6!>GIH?9(1YLO($=^(%(,8#^=AOZV42>UR[8D<DPDHJ/:!=:l
M-HFVIQU8C(E&FQ!_,K1X#(I+(8J-2XI?;"C;UE2IB(*BK#4E^8IY@8\B08M1k
MJ1WZ>!MFJ8**Z(M( 8P+X1 5',U4<XSIR2#OK(W^F$[3."C66$C8J)_-N(WQj
M*[;?2!#A.(YUAR'G*"^#6"[LJ)19W&V3VGZNYY#W*"COS(\!#9!H(9!HP6JPi
MC) :@H ,Z=$0"2D2N<T4*7B* KQZ1FH;B05BV79@$9*U2)+X!RPGR4$I^4LLh
MF<,OR2@Q.6"T6Y,WB2 ZV1)3Z9.; 91"69MAL09'B808#8]<?)9/68M?,]4Pg
M4)55?959.91<^2-A79([G2EEV8RV@G]I2=1KV99X];9H)9=J\;71BI="1[_2f
M%@-^"9BR)K:#26IGBIB3M9B-B06/&1"^QF^3B8%^C1^8B<1WBVV>"5^T#)T$e
M4L&E>9K-08"&J\*MN7G,L1JQ61AT0)M$&1:W64-]MIL/T9MO\)NG$9QI,)SCd
M4IS'F9P@N9Q#YIS[M1P)/!]WU3,ZJM=8D)UBEEVVVIU:_)W4+9X=YF;(Q2^Hc
ME9XDMIY=(38LZ[)&T']HX&AB80/JK:WJVJU\\!+0)!#^^AET(=,C<[ >ZRW b
M1@8 =05C('4]( )@< =C<! %[D_X7;-@,&\;$A:P6M)E$ >X1 +^+74T^MX2a
M9+$SV]YME3,[ Z2Z8I8%R:3G(2 $0K2Z^!'P6N%C4'II0*W@BJV++,A_=7S>z
M&N/7*JZ_%R'F:A'&.D3LZJ[P*J\@0*\@8*\MGJ^VD>'R?;&8,[ %JT<_#ADHy
MH+!JRP8-^[!X,*<2FTT[5[%-_J];\Z !5RY3_K' )[(M0;(<04\HZT\KVX$Mx
M^[(QZ^.(?7PVB[-8H )\#@(Y.%)HX <)0 4C! )*8"(%"7XU1@,W8&,W4%9!w
MT1*B^N<[..B%?NBZ(@/@]Q,Z( ,Y0&,B]Z0MP>>D7NJFK@*CWN<T( ,LP.BHv
M1NJ2;JJKS@(!&:J#&S-%@)5%( 49\V^R8F4[X#$OP&HJX@9<PA=<'8^"Z#V^u
MIP+E!+ZXKNN\CKG*6!C8VQ7!G@##7NU*YWTC0R1JT2*@ <AN@S 6B5>H]NR4t
M!@*Y_A_3[NMS<)39ONW%?NP$D93_G"5>P2E;_1E5TS/.WA(K (C,$0",QM.s
M\!],\ 70V!Y,(_ 9.Q\U$B2][( 0F($4^ 06>,9_^,L[ /$C$$U#1,30CIRLr
M9F"(@:*ZZ(D!7_+MONL9(RR=<@994A' ]P7P8DK-&.S;OBA_X13-6!%UYR8.q
MT0:FDH_/TS9X8FXM3^H"4H00,0:"3NAN@>F)+A8PT.DSH ,7 NEGA06BVL@(p
MPU&67O6(KNEEU>DXH ,TX&*BON>G'O>H#O>LE@.PE ,N5NJQCA!V'TO+<ZHMo
M<.O4DY1U]'1Z8>1*L_!00 52T!-B8! ;\RQ?L$-!ZD.L! <&X[]+[Q8;LT)@n
M\09I4/AV <I\/$E'T"&+S,KA)M$AP(B4)/8=B]+(0*E+_@)0/A$=_@;D_A?m
ML/B-?S63[\P]I!P')0:8#_N@P5^=_P6?'_JY7_M8,/ %;P8'GS0*S_ RX/ -l
M%_W4L^V] 8L*C'F?.5^2F.X0C_JCK_I?P/I/Y_I1-W5S0/NF/_"W3^6Y7^2[k
MGP2*S_@]4?$/J/[-3_21OOE'/>[?\F-_=L#]@9WR)?_.'^Y+?8A/__4^_H?Qj
MTA@ W S.S_!!/_K7R]R8S/!_\('5L+$T1@!#GF$8>24O9O0!P1<SP(RUVWPRi
MX_&9/AGB].(11YEZE^[L;;I/-P-2R=][>V'OJY$]JF?H=&#:FSU:S^NE.KEGh
MZI8@"+ !L(0GO3H^M_>>("R)5;:NY!6\YR)"S,WKXPO)P2;LH'FS[K;@(ZH#g
M7G!;Y($Q2/*DG\$[00CO^C4\]@'Q8@84J )"@ DD ;;DZT"@S.!4V(< VD$\f
MJ ?Y(,5#8QH//FP,3F60!&%8(81[D-IUP%_V!V/&0$)I-< 1C@ [EB4P7A,(e
M O^#4_DC%3"-0![%JH,$CQ.Z!3_(J5HA]M%VK.8W,1L(1?S$&K *FZAY0V\d
MF+$)55$G'(&)L!6V0H,$"PE>C9HS8NT6,1KSQ_UXH2K$>+XL$ G#F($"_* (c
M1(06* 440UE8*6CANFAG7:*:Z<)-U0O)F2<$A0F 4TU"#V0*3^ <BWZ";]L-b
M ;(EF]*0,"-'^.:KQ0F/0B_P0\LK@\]P"'P!*[!@OL 42 ):H%MMJK% ':+&a
MMILZ2V$PX(!SM!0JPLA035(@"#0!9@@0?:%;: (#L2 >Q(3(J2Q'3RJ&B$%%z
M"(2!(J)D $4L81?QM&7$C=CTF& 3I'L@X ;$ !9P [:*WM."SS!R&($O8 28y
M0!5860SH/5"!=.@39$ Q7&6] G>($"_1;2+$/W2&'I$],($@, 260$Y8B,7Px
M11"*!+(Q(.)R0 LHX'9(KI0X4A*16>P)5S$59L4K@ 261A'XBC'C!A1#]>5*w
MRJ)?X2^/+BUN(H9@;]@B?L! ;Y$9(H1R2#!8X3348=NPU#@SFU +==(QS(7/v
M;C$^0V!H@1[CJZH!D1$7BJ2O\<]:GF;,BNL0/CS&:DC&+!Y!XHQ30!MN.VXXu
M&7U(,G1GXE#=845S> 2> %%\ E+@"G0@(N 9;8;WLR]^15<(&<Q0PN(B8^R$t
MO?$+" &NN 2$HQ0@CM,P!A3#19,<$\)89(X5P3D^PT^(!5J6!.I]':@)J,9-s
M51Z*H5$P>H)B9 0&Y_2#XD"2X6D\Q$'D"G$4.$RCJ<(!5]#%D*HE:!.I($Z,r
M 3?@!L02 #D%Y]ZZBQG;#@EH'N:('RL?\?.'NG%3^;JE< :R73&T%[3C=HR,q
MW'$GNB%^L!%C( \\HH5BS9 /1^14OFY U(JEX"&W'64P ]\OKA"(OK(<*E1Np
M&3GKH>4%B!8X$.Y"9.!$6R U=@&>QVJF68BK9IQH:+W(305MC*18= -K8 YLo
M@3P8!)S $I".56 HCL0BL"3#XC43%)&JNJ@4/7(E$\@L9'D9L@_,P"H8 P9,n
M+,D!4F) ID"3!P(DY$NAD'Y&^(FO6H$A62"UXY UDM6 R/(W(H5#A)B%)U+Im
MJ$B%4>"BI*"(BS$C1NY(&BGL6,V-S)&004;R2-QAH3@D,QR2K<9(VJ0_D20Gl
M$'DLD]O.25JO7&0IEP.F3)70XM5@22W));TDF!23")%,,LD6*273Y*)@D[K2k
M379#."GXY"3)BW,+B+R9-_2V/-;;F<-P\0V=G #ZIBZH&&0X<_H-1O"WEL#Bj
M MR *W"%RI],N1.PX+X1N?)54/ @1+@)Q^(N''P+(&%NRG4XC_+A,%%"6QU0i
M<##(2!1GEE0<A?MO+:Z"O3A&=>-PW,:X;#;.8>8XJ#6N>-RY@IA [B (N7@Uh
MK^J5"+A72DY>,#EMB;$$%L'Z-;U$L-DE&U?E%A:6*P-<0<MQ.34'3;Y<-@ESg
M&(O,::Z4&6U6)N$#672 9K(YD^41^HG*&F]T#I_P!I7YU\Q GFMA@,+ B0$Af
M,(X\W'R:$ROR"+F JQD0% 9'<8)6DRYES3&0 *: L'@Q1L(2OA(;DTIH0 U0e
M@F#/5&U-L>DUR:;9O TP1D*L34]'8S+$VRN0/]'IN4U:=])@7=Q$"(,32@ ^d
MP7<P_D*!,TWN9"^<32B EC2;)*,ME(%I #HM^X:)XN$G,]F7'2%HD,Y+>=Kc
MPYRO;G/.P!98%QRGX@%]H1-0D<[*^6\$9C=,G1NPW+E.T&E([$#%*9VU$W7Rb
M.=7).%LGBRP*C>='Y:.!< <<25BIG+42U1#/DN<Y'R?L#!:32GP]G>=I.FTGa
M@AJ>G)- %D@G: -R $\4.3]15-V \W #,H2>?) @8 ]T'=$Y(T3 8! !0&ISz
MC,Z%XA:H9 VI9%"H:M$%C[*BD,+^Q#;V\S'VAM'9!_@1_)2?,D][VH$$BC^#y
ME&?L"M1&3#R=)^0&+IDA4@\)U#-NJ@@J.QNHH92?+>+?$!T**D(W50H-$@"Tx
M@PK0)J(>XM]@:*%^AH"64'ZT"^,G$)LXZ(:"5IQU(Q^Z0 NL(02L*[P QK4%w
MFE3(<5(V0-[<T&G8&WQGXS&A>W(/E+@MN@)+GK,$7^+3)CI!&I #:D"KPWL-v
ML@J2404));;*^Q2&711^QE%.I2T(Q&V 02PBZX B#?LZJ#70J*G#=WXT6>Wu
M1[E?]7R=D;.*5APC( .Z9Z Y [I&>*H TU!E[("4&7A[P &VF]\%;^:? Z1Rt
MC[3 A02A<$FI1P+H#5_ BG8%%! [<(9L -;( 9T@>E92.D?X0NE^$1*E-($s
MD$FY7TZ086%A8[322KH%9, L)8 YX98"4V^E-]^;[[I(U<HGB!QGNDRC:5K:r
MI3D!E=J!Y8,"JNG&<#%!:2Q$"1#05KRI- 4!X90\"(6V(DYI0.Y, ',4!'11q
MH24UJ>;(T1E<,]]HS7P*7[XF3@R;FTF?VLVSF3?=WM:+ 6WS;0)!N<E/B0O9p
MNYMH,ZL8U$[WZ7Z@60FC3- ))D@6@ /^D>%4GPJ20;Y1W7D\@X1#\$_RP@X@o
MA=*),:P JO&>MO(U!0G-R3E9YX<I</!.@J[4RME27ZKPA*G2LZ:25.L9.4DHn
MT=FI**"G3E+A24N'*B*-G:K4+0#/RSD+<>><I)[&L\"-OTA4.U#-&" N<&#>m
ML9JM^LS\#.B3#Y=2W6%4N><$\20+R &/+GV:JKX'%!9G%IV?LC.$<BK\(4&Ql
MZ /%JZ-3KVXJODH'&*@#Y53RLSZX <':"A4K%NVA\E."":DIJDBOZ&'=5%HTk
MGGY1&@@X#:33@X(?QP;0 *$@5Q&":#T/ZBU/9D'X2?A0P&UXF# S0QU5T3<8j
M\J>(,IW24RQL3I#P-*0,_(P9=11+&**5*/I:@ \XJG!@"[B!+C 83D /. $]i
M8>#%@-6YJ8+K;4 !555SBH4\*O#XZ-S;A7\4DP72QC-(NZLAS:I/M7<NTD8:h
M/%UI),VN2]656E*(UTMMZ2:-.9[4E]Y2]XI/2.GY.Z7C(I6B&U:* 5DI,96Eg
MM/230@=<&A)TZ?FKKZ:TFK(+T&=@7VDQ/:;_59ERTF#Z34$ -=VPS'1V?5AHf
MNC&NZ7\%L'0@E7)3<PI.\X:4**<@UIJ*G'2*4,EIWG"GR%2S0DW(0%&F9M7De
MEURS?MF;N<DT=Q#8!+*7#0V438*:-O7F,;$Q6\]MPDU1161[)H]0LA"UH*[-d
M&5,#MLK?[*QS3W#N1,7Y$\N@&2(8.$5@?0&BAA30S1?X%V9V/(+"+Z 'O21\c
MJ+-?DCP*OM_T#)V 1BP"!C%8\H<_^P7T+!8($+^)TW3!';78$M-BPI%+#(ZQb
MP4-K#!4M&F2TA\G1+E&.T-S0P+Q!M/'A#'K!1MO8-BU\^A.3%M1:VE&;:4LMa
MI$6>72'55EHN>&EQ":E53*:V\^"C25L&*9;'R G;+JD9!,)& PR;T',,XFA*z
M)EI:B[@4AJ*X#V@ Q6C!4+MHS\U_B;1T80=)6U$U6FE=ZUBMO/#,=L(TNT+8y
MK I[LWM6W'[$.8MG[VS2R+.@,-WV64([)@?MKBJT\9;2+EM1NZ."B:F]-1#!x
MT[8$5<ML^^W6A+2=]M/.6GZ+2_PMI.5$LG;?5MLA=7 Y JR]L@I7XM9:BIMKw
M\\)&$;A:T-?^VF#[7_I2L4U$84(KC"/G2&UK+0]PMLWAH$3;=+MJW4+BNK8 v
M5]ONV'KZ8_'I93,(598S180CZW.++!Y8LGBSR4Y4A,KV0MU%/9S ),CBG:.;u
M997NWK0!7V4'1CJZ!SC'J!GE)Z658WQ=U0JJ;)\S@;,Q8Y4\0YRG)LVN*DP t
MJ=2=^+SS)U3,H0M)L5&5[JY=;;I\W&Y67'_C@H?X7;O;&P3OZ:N[@ 'NVKN<s
MMQ3@#-<=GP>RHR[(N/I1356=I $L0 ;4V)&: /# 4A@?V8,,-(IU=_OD0^J0r
M)24/OM$_3@('$@ N^A>UM&!HTQX&#WVIYY4#UR-[^ _Z5T1RA>N= W; O-(_q
M^]'J4(#QVZ7_YO0RD]J[>E>#Z]46PE?V!MAMFB=B2.SMO)\W?>Q>ZM%[V<#Op
M#;[,EWH07QI@?$G?^4,?9F($B-.O-WS%Q^.;(N9!D](!Y6M>22_K?;Y "(RFo
MW@1 0]H%8A 6DP$R&%YH.>?*&Q80"-12O64(C D9L*6&XY;V#3(P8-Q17<1En
M?T.8YI+ &;B38!$8,+MD<.\R6;G1>;GB$*:]')G^B@'O2YU!G;21"!:8)TZ m
M-B.#62\59C;9<F%A^;8$Z+:=IIMN\4XM8=OQ8.FV77XP&Q@,S46EK)U2M1>Nl
MVWCR,-OM/'DW-6,@A HS3#'O 9@$$T/U%UC7KN@9%:=#((ABAT@T41-Q;9AKk
M5MB'EC MR ",D .HPFIA+2N&<<($?L"AFZH%2(&CX! PSA7 %0I#<[R1Q5%.j
M+%;)++(?:2($CHM 3SA"T0P)E^TC&<U_X@3%9C]E*!YNT*&!.L ?$D->% N-i
MKN1P/:W[]425)7:H9#-$<&(GX(ESHEC8>EV6[;F]IPMFPVR?6Y\\D?(:2)NZh
M.Z^G>;$_0:)T#M!C)B""GY%<JL$3ODY/7OPYK^>SL*W<,QG?3O!I^I@Q4:T(g
MBC4:4]5I3%--7X XI#)/9]0\$U<@Y,/HY)Z@<WI^8_0:CFE>X,!-Y[AT9M=Ef
M[%1Y)V%M7E/U="ICZ&>-TRMAC<>T<QM_SVX\/9QJ3D6I1Y5[*E6@BHQGZO14e
MG^SST>G)?FR/?0TP#@O"V)@AHO^V0\)"0];'W)@>'U+>^8PM:#YFR 2Y<Z)7d
MWIF-3[(D5<?8<^:-XX&9: R"DC'T"] M.-Q#(]G!/><Q_RX'OOBZN62]W$Uc
M%LJ1\Q_[Y*(<DH/R(3W(LO7I(-6%_%.I74JNQ6,T!IC154=:#>>F8C7S\.ETb
MJ5JV!C:?#G@6'9G4 (L#FB)4@T\IR,PP9@Q<I[J3 P=--L<^&8.@ "DCE]==a
M+X615&X.E67O8P+ZY'"$'$E@"BP!*<-MM7*KT[QV]2M?IJDUE@6S64;+YJ[/z
MK.49P3^WC5M6#G"YY?5EG3RIQ+%=CL%XN>CH9;Z<'_PR7.9J*, R$V;#?!T1y
MLV*6,E@9)ZXZ\TD#9L#;_(F2>4\Y+3XC-P9#-TP5C:<BO$>?XB"TAC!3'%_Yx
MV8UFNER:W7%%Z,FJ.09@UVE,FV:$;67-!?DO:\@@,3K?HX<LAO)EW#42SLR7w
MEG-:5:.>KM7YYL@<,UB-</Y9Q!G1&&?=L_F4\V=>%YOL.8=FZ=R:2;-,?L?Tv
M,SMOY^_9G>W =R[(X?DU^[KRK!K.\[9+SV]G/;>3]OR?F:'3HTL<A:[PRP1Pu
M!0('*RXZ3U LK#UH]%5DS-,UQ9MI"&[B3HRB'QV3LC%8=]7!S=SL],J##8@Et
M-3;L^F@@378#GTJ^J<6+"!"!6V4WAL(N@0)GE0Z(57,1@_+6+OD:(2HN.]5<s
MM:2+0)-F M]"EW"%*?UJ(L0!(1(5(4N+9J=:5<4T&9@"SR-1[A%_@Q12@YE^r
M'N5B'#[E("%GZ@#DVZX0^DB[3@.1C'YQEI /2$'8ZI6[,"S5U]I)RU8Z5JSIq
M0SJ,-[(Q]LC"=@B8@; *;,>J9Y,O[2LS$P1)X:'!K!/4= I2!NCHL*OI/HZJp
M%CD3N3X3Z"[:EP<>62U_*F *=*BP'%^@0!,YRGWT0;*:)_!<1)E%$B]EM5*4o
MCEQT@@(%951MD8HOZ KWA8#@%U8(S;A#6&BN#D%P((VV+G]AXL.]";< *W2%n
M5X)*D$%2E MAJSAX=)\S2*S.(.GBN2>J#!+FE5(E+0O&#/$<,ZKJ9U(A<OI6m
M=]4LK4*T=+_^U.2OJWY5,Q"P$397O1WC,&;H:L7 JW6&KUX.&\,$+.RC7)#El
M85M (.4.9*,):;.F,R654]<=)DDB@2=0!+;B$""3+N!,,U,8T!-ZJ;MF-39@k
M>; &Q"D*Z]I35([NT[29X(4/!Y'TG@"T@4#A2@11]@&=*"6?IMQ8H@2[S$>j
MTL;R'7C QP:E5Z@'5/ST7B: =?DZ)^BO#?$*\IY.GB&C(#>LR60$M'/T7*K'i
M-U#?["<H Q2D:.W*N[@U"\-;B@*T@H?H"2B U:" L&V5 ;<)J)SS."&0OBW@h
M)W %&5BS$&>6@@#IRIH]HP@L D. "@#'0$L2C=S2;D8U>RX+PQ=*!\R ZRL!g
M^HNX4$HZ)>*>L':K'5Q@L0Z&$/6=O?$T]-MG@/76$?K >D%.3FZ%731 B.Y-f
MA2,1R!> 7AM#<!-N7Z==4<#A7M"VTO$M[L;]%""W0U@!QO1W<ZKBO4+@0(%+e
MWM!A>3MDZ/"\$_?Q9=QUP'%;[S*P F@ AJ6TVQO,K!#\(3.4=W4>Q\S;<"/Nd
M:2R]4P#Z5M\/YWI'T=\]O&.&\2L*?UIB9.[-/2:/L@H,U)S*^(FXA]F,*$/@c
M/KY;XX"[ 3Q@^D05%,2\ZDTBZVN]W0KY-NX&W/;[0 \SCZR_H7=N/=_4^W$'b
M\#(@N2GW:YZ&EWN!+Z!ZZ[F!C5D*W?";3[I0'6JZ10#JUFB@8Z&P[H3FNHE,a
MAXC="91V!RGMW0IQM^Z>%;W;)Y0^(3D-";<*: .=HXG(C,%]OP-'_B;?^_M[z
M]N\M $]PP/M&E7MU&H-QOL 09 8"G /5<%=_ZHO- D0 '2^L]9.* V;H,$#'y
MP&I 7-\)/3Q9Q%8-V<!;X5?/(QC[ D;^A(Y0Q#DF^H4!G%A&,EKSB3'HX_<x
M9$.'3B[&HRG-#N7Q$S;+YJX@9> X#@?CGEQF1 XK\ 60 !% "P,/,S-J5!XSw
M-+DKW]M4S@VX$*.Q+DIL&^+ED!R6E_+Q *MLMPCUY7B8E']RV1,#QH S!]ZHv
MO$__Z>F:S9]TE"X>:,,\7/,(CC+_-"C?Y/+TD5.L^(G*N??Q7D@$B8RK\,*-u
MQEVX=H7AZ;MZSW#L_<:GH3OWWO4[?)?Q%9Y;G7<:C]Z*VW_'\/7=OONY,'3Gt
M]!M\RW/33-";=_GFWPG]?^MSB+,"!O@XWU0:/(%C;LV]PX/E1P_>)/R!K[O7s
M+,$3&@7G$A8\U9"^#%[.3=_<%JT@O :@3Y_]!'$Q3Q+A9?>W=IO1L1D.^@O7r
M"[F\G \&-PVE@V=+YQ)!>7O[\(1V$"(?:]AY-]Q)<X6F'B16@%4W2XY0E*, q
M;0X";A9T8.I1NEI)AR%0'4HI8FW-/72OTAP\\@:,^CU'ZB]FI#/P8#D84 "7p
M9M*Q49R:APBDUTMZ0LR=PA"M^[JS41X:8EA/YT+=N@)J.0K!!^M<+^KV7'I/o
M;L6-P)>Z-P^>$]TZ8ZZ>\+FAN@.W7!/<)SA"PJ?-W3J5?!Y=&P^0;?@IV8OVn
M%SC:D>,HT^K6_*&-KHCV)"6Z(ISHF)$A-"_7:W0&:<J:JI^KB5=Q*[;1H9@&m
M=#JT\&4[ZQB] 1^G[?UFKTS" >P9"" J(^T2WYDX)OD&#]%&-F(-B(&Y?$HCl
M2NZ=(JJ';W@&FO,$18YZ9^^GX;V/@!8P%N)[ M@/@J:1B*-])=[%QQ?1'D.@k
M$"Z!*0 %=MT2J!*D-SUYWR\B-<Y[ZU8ZE#)+%F0 DD:DQJ/)(V7UBEPR-8K=j
M6QT.>)NQ>L-?$?"^X<>[1BSO_WTO: [T+H36.Z5M[V) OX^%5QCCY[M>B!(Ni
MYK[?^/PN1OC[]+$9,3[ #Z4[0.#%KX'/'B,@P>_!!=_@I<"#;_$FPO4>7?,^h
MXR^\@,CPX=W)[X\.+]_)%<\H?R(^T53B@%HW?_MW5\4T^A/3#!NSHF?QUH71g
M6+-N-O<X[XIA@'3W*EVONG==G'@#,&]/3*-0M]!SU'P=U!'K%AT,,&"W?]%:f
M'?&TML"&V!.[#%3L,W"QCS+H--ML_I:L9KEMJG$B@.2H>8^GXP#,.QJ&-NI4e
M[V0 22:-.T@%A$"8- *[;DR6R6(([C:8T#N3MI) 9\H@D08L-*LI"EW!(*QId
M5)CI-_W%EAD:^U.?=JB(AK9J&7#>GRFJI_3C!AU^SBQ$ 2<@=D/7?)6O@+C3c
MPRE$(D2QDFM#HDUT*\X0-YH&2/>3M% 1 KI713"BW0OW=Y_HFJZ-D1*"'O(Zb
M/8/$ GH@HD^[IW0SR8F#4I9B=(&C2V( 1QXA+K#A$WZ>_R@//Z!>8KLC\0L<a
MQ2>]%O\$R>\C1)?^G!@@^9LIYTU\]A[R%0680?ES0KGYT[X<,Z!57K!):J 'z
M) ";?UX*\JU0*<\"Y^M\NM06N )=L6) ?R30E2I(\ U^K,ZF"K^N-/PY ?.=y
M1<<' 1\?X=--C&]W!"K'/R@>O^+3)>Y=]4U^U5?Y8?_&MWRLP% R?LQG3D?Hx
M6:2+H;O2UQW/%_H['];DA:6_[GY^&@CZ8B#GA_RB3P:.OM\W'2OB\8I1G.B;w
M6QW>GGM:/^H?E,!&]2F_U9_\6%_LA_JC?XK- .??3!*?(&1]4SKV1[[E-_N6v
M7^6+?I9/EUP^)K8[,C_QTWQ@,@5N?1+ EZ:<AQ]DS#S@0D>H"LQ1%0U_M%*u
MGZ'^G%CXG[_RVYV(C_E'O_'OFA_%\NM3RQ_Z,S_(+_T()/FW$:UP\E/_=SCZt
G'S] /'_7K_UC_]68^[*?A+N VG]!;G_N7R4$@??_CG47$8"_ B@Gs
r
end
--[0029]--

View File

@@ -0,0 +1,42 @@
[0030] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/10/91 20:34 (39 lines)
Subject: shoelace patch #2
Date: Sun, 10 Nov 91 16:57:48 PST
From: pmacdona@sol.UVic.CA (Peter MacDonald)
To: linux-activists@joker.cs.hut.fi
There is a big difference between floppy the device numbers on linux and
on minix. In particular linux has fd0 as 0x208 while minix uses 0x200.
ie. linux /dev/fd0 == minix /dev/fd0-dshd5in
The following patch will keep linux from using 0x200, which it doesn't
know about and instead use 0x208 and 0x21c.
Apply this after all other patches.
pmacdona@sol.uvic.ca
*** shoe.c.bad Thu Nov 7 08:43:30 1991
--- shoe.c Thu Nov 7 08:52:27 1991
***************
*** 638,646 ****
longjmp(errjmp, 1);*/
unsigned *myptr = (unsigned int *) (&((char *) bp)[508]);
char *myroot = getenvs(SaveConfigPtr,"rootdev");
! if (strcmp(myroot,"bootdev"))
! *myptr = atoi(myroot);
! else
*myptr = 0;
if (*myptr == 0)
{ if (diskcode)
--- 638,645 ----
longjmp(errjmp, 1);*/
unsigned *myptr = (unsigned int *) (&((char *) bp)[508]);
char *myroot = getenvs(SaveConfigPtr,"rootdev");
! *myptr = atoi(myroot);
! if (0x200 == *myptr)
*myptr = 0;
if (*myptr == 0)
{ if (diskcode)
--[0030]--

View File

@@ -0,0 +1,38 @@
[0043] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/11/91 14:06 (35 lines)
Subject: shoelace patch#3: put environment ptr where linux can find it.
Date: Mon, 11 Nov 91 10:58:22 PST
From: pmacdona@sol.UVic.CA (Peter MacDonald)
To: linux-activists@joker.cs.hut.fi
I know, I know. Three patches in 24 hours... I plead end of term
instability. The following one line patch puts the environment
offset relative to the shoelace corpse which is located at segment 0x80000.
Thus, an offset of 0x1234 would put the address of the env at 0x81234.
This offset is stored at location 0x90506: ie. in the word before the
root device word (508) in the bootsect.s corpse.
By including the shoelace header file shoeconf.h, the linux kernel
could now read in any of the environment variables it wanted (including
scr_cols and scr_rows ;-)
BTW: Given Bruce Evans comments about shoelace:fsck ties to minix,
we may wish to remove it from the code. Who wants a facility that
only works with ~20Meg or less partitions anyways :-)
pmacdona@sol.uvic.ca
--PULL_TAB_HERE -------------------------------
*** shoe.c.bad2 Thu Nov 7 09:33:34 1991
--- shoe.c Thu Nov 7 09:45:28 1991
***************
*** 650,655 ****
--- 650,656 ----
else
*myptr = 0x21c;
}
+ *--myptr=(unsigned int)SaveConfigPtr;
Linux = 1;
LoadPoint = 0x90000;
bpinx = 0;
--[0043]--

Binary file not shown.

View File

@@ -0,0 +1,10 @@
curses.tar.Z contains the curses library from bsd-net-2, with
pre-installed diffs & RCS files for linux changes.
You'll need to use 'pmake' to build it, or reconstruct the Makefile.
I'm not completely certain that I got all of the raw(), crmode() etc
stuff right. If you have applications that use curses, try them out and
send back patches if you find bugs.
John Kohl <jtkohl@cs.berkeley.edu>

Binary file not shown.

View File

@@ -0,0 +1,49 @@
Reply-To: obz@sisd.sisd.Kodak.COM
Date: Tue, 28 Jan 1992 15:54:57 +0200
From: obz@sisd.sisd.Kodak.COM (Orest Zborowski COMP)
Sender: linux-activists-request@joker.cs.hut.fi
To: linux-activists@joker.cs.hut.fi
Subject: libcurses patch
hi-
we don't have news posting working quite right (or at all) at our
site but i couldn't wait any longer. i have a fun yahtzee program (good as
a short break between hacking) which makes pretty good use of the libcurses
library on tsx-11. the problem with that library is that it was missing
the fwopen() call, which apparently creates a special FILE which does
output through the curses window vectors. i made the small change to
make it use vsprintf instead and avoid the non-portable FILE creation
code.
zorst (orest zborowski)
obz@sisd.kodak.com
---cut here---
*** printw.c.ORIG Sat Jan 25 06:19:45 1992
--- printw.c Sat Jan 25 06:26:19 1992
***************
*** 131,141 ****
#endif
va_list ap;
{
! FILE *f;
! extern FILE *fwopen();
! if ((f = fwopen((void *)win, _winwrite)) == NULL)
return ERR;
! (void) vfprintf(f, fmt, ap);
! return fclose(f) ? ERR : OK;
}
--- 131,140 ----
#endif
va_list ap;
{
! char buf[1024];
! vsprintf(buf, fmt, ap);
! if (_winwrite(win, buf, strlen(buf)))
return ERR;
! return OK;
}
---cut here---

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,103 @@
/* df.c: Copywrite (92) Peter MacDonald: distribute freely, don't restrict. */
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <linux/fs.h>
char *hdr1="\n inodes inodes inodes blocks blocks blocks mount";
char *hdr2= "device total used free total used free point";
char *hdr3= "--------------------------------------------------------------------";
char *fmt = "%-9s %-7d %-7d %-7d %-7d %-7d %-7d %s\n";
void do_df(char *dev, char *dir);
int main(int argc, char *argv[])
{ int i;
sync();
puts(hdr1);
puts(hdr2);
puts(hdr3);
if (argc != 1)
for (i=1; i<argc; i++)
do_df(argv[i],"");
else
{ FILE *F = fopen("/etc/mtab","r");
if (!F)
{ fprintf(stderr,"/etc/mtab not found\n");
exit(1);
}
do
{ char buf[200], dev[40], dir[150];
fgets(buf,200,F);
if (feof(F) || (strlen(buf)<6))
break;
sscanf(buf,"%s %s",dev,dir);
do_df(dev,dir);
} while (1);
}
exit(0);
}
#define oops(str,arg) { fprintf(stderr,str,arg); close(fd); return; }
int fd;
int nibblemap[] = { 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4 };
ino_t count(unsigned numblocks, unsigned numbits)
{ unsigned i, j, end, sum = 0;
char buf[BLOCK_SIZE];
for (i=0; (i<numblocks) && numbits; i++)
{
if (read(fd,buf,sizeof(buf))<0)
return(0);
if (numbits >= (8*BLOCK_SIZE))
{
end = BLOCK_SIZE;
numbits -= 8*BLOCK_SIZE;
}
else
{ int tmp;
end = numbits >> 3;
numbits &= 0x7;
tmp = buf[end] & ((1<<numbits)-1);
sum += nibblemap[tmp&0xf] + nibblemap[(tmp>>4)&0xf];
numbits = 0;
}
for (j=0; j<end; j++)
sum += nibblemap[buf[j] & 0xf] + nibblemap[(buf[j]>>4)&0xf];
}
return(sum);
}
void do_df(char *dev, char *dir)
{ int it,iu,bt,bu;
struct super_block supstruct;
if ((fd=open(dev,O_RDONLY))<0)
oops("df can't open device: %s",dev);
lseek(fd,BLOCK_SIZE,SEEK_SET);
if (read(fd,(char*)&supstruct,sizeof(struct super_block))
!= sizeof(struct super_block))
oops("super block unreadable: %s",dev);
lseek(fd,BLOCK_SIZE*2,SEEK_SET);
if (supstruct.s_magic != SUPER_MAGIC)
oops("not a valid file system: %s",dev);
it = supstruct.s_ninodes;
iu = count(supstruct.s_imap_blocks,supstruct.s_ninodes+1);
bt = supstruct.s_nzones << supstruct.s_log_zone_size;
bu = count(supstruct.s_zmap_blocks,supstruct.s_nzones) <<
supstruct.s_log_zone_size;
printf(fmt,dev,it,iu,it-iu,bt,bu,bt-bu,dir);
}

Some files were not shown because too many files have changed in this diff Show More