home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume27
/
fas-2.12.0
/
part01
next >
Wrap
Text File
|
1994-01-25
|
64KB
|
1,815 lines
Newsgroups: comp.sources.unix
From: fas@geminix.in-berlin.de (FAS Support Account)
Subject: v27i198: fas-2.12.0 - asynch serial driver for System V, Part01/08
Message-id: <1.759531570.7983@gw.home.vix.com>
Sender: unix-sources-moderator@gw.home.vix.com
Approved: vixie@gw.home.vix.com
Submitted-By: fas@geminix.in-berlin.de (FAS Support Account)
Posting-Number: Volume 27, Issue 198
Archive-Name: fas-2.12.0/part01
fas-2.12.0 - asynch serial driver for System V
fas@geminix.in-berlin.de (FAS Support Account)
Here is the FAS 2.12 async serial driver for 286/386 UNIX/Xenix systems.
This is a "new features only" release. There are no bugs in FAS 2.11
that I know of. Hopefully I will be able to say this about FAS 2.12
as well. ;-)
The highlight of this version is that FAS allocates the ring buffers
dynamically so that FAS consumes almost no memory for ports that aren't
in use or enabled. Previously, about 20 KB per port were allocated
statically regardless of whether the port was actually used. That was
especially annoying in those cases where the config files for multi-
port cards were set up for additional COM1/COM2 ports (the default)
and these ports were disabled. This wasted about 40 KB for ports that
some machines didn't even have! But not any longer. Note, however, that
for SCO Xenix 286 static memory allocation is still used because I'm not
inclined to deal with the brain-dead 64 KB segmented memory model.
Also, there is now an interrupt vector test during boot time that lets
you figure out whether you have selected the proper IRQ line for each
port. Unfortunately, this doesn't work under SCO UNIX and Xenix and
is therefore disabled for these OS flavors. The reason is that SCO
UNIX and Xenix don't allow interrupts in the init routine so that the
interrupt vectors can't be tested.
For those who don't know FAS, yet, here is an excerpt from the fas(7)
man page:
FAS, which is an acronym for Final Async Solution, is a
"dumb"-port character device driver for 286/386 based UNIX
systems that adds several features that are often not pro-
vided by vendors drivers.
It supports
- the NS16450 and um82450 UART chips.
- the NS16550A and i82510 UART chips in FIFO mode.
- up to 115200 bps with NS16550A.
- built-in modem line sharing for dialin and dialout.
- modem control on both dialin and dialout devices.
- full and half duplex hardware flow control.
- concurrent hardware and software (XON/XOFF) flow control.
- shared interrupts.
- multiplexed UART registers (HUB-6 card etc.).
- any mix of up to 16 UARTs.
- any I/O address, any IRQ.
- VP/ix, the ISC DOS emulator.
FAS was successfully tested under the following operating
systems:
ISC UNIX 2.0.2 and later
SCO UNIX 3.2.2 and later
SCO XENIX 286 2.3.2 and later
SCO XENIX 386 2.3.2 and later
Microport SVR3.0
ESIX SVR3.2 Rev. C & D
Bell Tech/Intel SVR3.2
AT&T SVR3.2 V 2.1
SVR4.0 (with tty compatibility drivers)
Enjoy!
Uwe Doering
#!/bin/sh
# This is a shell archive (produced by shar 3.49)
# To extract the files from this archive, save it to a file, remove
# everything above the "!/bin/sh" line above, and type "sh file_name".
#
# made 01/12/1994 21:50 UTC by fas@geminix.in-berlin.de
# Source directory /u/src/private/fas/fas212/dist
#
# existing files will NOT be overwritten unless -c is specified
# This format requires very little intelligence at unshar time.
# "if test", "cat", "rm", "echo", "true", and "sed" may be needed.
#
# This is part 1 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 1573 -rw-r--r-- COPYING
# 68 -rw-r--r-- DrivDesc
# 20605 -rw-r--r-- INSTALLATION
# 1895 -rw-r--r-- Makefile.ATT
# 1906 -rw-r--r-- Makefile.BELL
# 1895 -rw-r--r-- Makefile.ESIX
# 1896 -rw-r--r-- Makefile.ISC2
# 2023 -rw-r--r-- Makefile.ISC3
# 1828 -rw-r--r-- Makefile.SCO
# 1824 -rw-r--r-- Makefile.SVR40
# 837 -rw-r--r-- Makefile.X286
# 753 -rw-r--r-- Makefile.X386
# 1222 -rw-r--r-- Makefile.uPort
# 26 -rw-r--r-- PATCHLEVEL
# 5453 -rw-r--r-- README
# 48645 -rw-r--r-- RELEASENOTES
# 255 -rw-r--r-- config-ast4c12
# 257 -rw-r--r-- config-ast8c12
# 255 -rw-r--r-- config-c123
# 255 -rw-r--r-- config-gen8c12
# 255 -rw-r--r-- config-hub6c12
# 256 -rw-r--r-- config-use4c12
# 55978 -rw-r--r-- fas.7
# 70026 -rw-r--r-- fas.7.cat
# 107666 -rw-r--r-- fas.c
# 25349 -rw-r--r-- fas.h
# 240 -rw-r--r-- i_fas-ast4c12
# 400 -rw-r--r-- i_fas-ast8c12
# 120 -rw-r--r-- i_fas-c123
# 400 -rw-r--r-- i_fas-gen8c12
# 320 -rw-r--r-- i_fas-hub6c12
# 240 -rw-r--r-- i_fas-use4c12
# 33 -rw-r--r-- m_fas
# 204 -rw-r--r-- n_fas-ast4c12
# 340 -rw-r--r-- n_fas-ast8c12
# 102 -rw-r--r-- n_fas-c123
# 340 -rw-r--r-- n_fas-gen8c12
# 272 -rw-r--r-- n_fas-hub6c12
# 204 -rw-r--r-- n_fas-use4c12
# 4623 -rw-r--r-- optim_att.awk
# 589 -rwxr-xr-x os_dep_update
# 78 -rw-r--r-- s_fas-ast4c12
# 104 -rw-r--r-- s_fas-ast8c12
# 78 -rw-r--r-- s_fas-c123
# 78 -rw-r--r-- s_fas-gen8c12
# 78 -rw-r--r-- s_fas-hub6c12
# 79 -rw-r--r-- s_fas-use4c12
# 10398 -rw-r--r-- space-ast4c12
# 10900 -rw-r--r-- space-ast8c12
# 10040 -rw-r--r-- space-c123
# 10870 -rw-r--r-- space-gen8c12
# 10579 -rw-r--r-- space-hub6c12
# 10401 -rw-r--r-- space-use4c12
# 174 -rwxr-xr-x update_desc
#
if test -r _shar_seq_.tmp; then
echo 'Must unpack archives in sequence!'
echo Please unpack part `cat _shar_seq_.tmp` next
exit 1
fi
# ============= COPYING ==============
if test -f 'COPYING' -a X"$1" != X"-c"; then
echo 'x - skipping COPYING (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting COPYING (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'COPYING' &&
XFAS COPYRIGHT
X-------------
X
XCopyright (C) 1990-1994 Uwe Doering
X
XAlthough FAS is frequently refered to as a public domain driver,
XFAS was never released to the public domain (this is true for
Xall releases of FAS). FAS is freeware, and the author has the
Xfull copyright.
X
XHere are the conditions under which you may copy and distribute
XFAS. The goal of these terms is to spread FAS as wide as possible
Xand, on the other hand, to prevent anyone from making money out
Xof it, and to prevent any restrictions of the availability of
XFAS.
X
X1. You can freely copy FAS, and you may give copies of FAS to
X everyone.
X2. FAS has to be distributed as the complete package released
X by its author.
X3. Vendors may bundle FAS with their products as long as they
X a) tell their customers (somewhere in the written documentation)
X that FAS is freeware, wasn't developed by the vendor, and the
X vendor doesn't have the copyright for FAS.
X b) provide the complete original package in addition to their
X customized version. Customization means modification of
X the configuration files. No changes to the actual source
X file (fas.c) are allowed.
X c) tell their customers (somewhere in the written documentation)
X where the original package is located on the distribution
X media.
X4. Changes to the sources are allowed
X a) for private use.
X b) to develop another freeware package with similar copyright
X restrictions. This new package has to have a different name.
X5. The author isn't liable for any damage or loss of data caused
X by FAS.
SHAR_EOF
true || echo 'restore of COPYING failed'
rm -f _shar_wnt_.tmp
fi
# ============= DrivDesc ==============
if test -f 'DrivDesc' -a X"$1" != X"-c"; then
echo 'x - skipping DrivDesc (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting DrivDesc (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'DrivDesc' &&
XDRIVER=fas
XCLASS=io
XHARDWARE=TRUE
XDESCRIPTION=FAS Serial I/O Driver
SHAR_EOF
true || echo 'restore of DrivDesc failed'
rm -f _shar_wnt_.tmp
fi
# ============= INSTALLATION ==============
if test -f 'INSTALLATION' -a X"$1" != X"-c"; then
echo 'x - skipping INSTALLATION (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting INSTALLATION (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'INSTALLATION' &&
XInstallation guide for the FAS driver
X-------------------------------------
X
XTo install this driver you need the manual of your serial card,
Xyour system manuals and a certain knowledge about what actually
Xa serial driver is.
X
XNote that the sample config files for multiport cards all have COM1
Xand COM2 additionally enabled. If you don't have COM1 and/or COM2
Xand the IRQs associated with them are needed for another device driver
Xall you have to do is to disable the respective interrupt so that the
Xkernel build program stops complaining. How to do that is OS dependent
Xand is described below. Apart from that, you don't need to change any
Xother config file in case of an interrupt conflict. If COM1 and/or COM2
Xaren't present in your system FAS automatically disables them.
X
XThere is an fas(7) man page that contains most of the informations
Xabout FAS. File `fas.7' is the man page in NROFF source format while
X`fas.7.cat' is the formatted version. As there is no automatic
Xinstallation procedure in the makefiles you need to install the man
Xpage by hand. This is not only because the layout of the man page
Xdirectory tree differs between the various platforms but also because
Xthis layout is frequently modified when there is an improved man program
Xinstalled. So just copy one of the two files into the proper directory
Xand, if necessary, notify your man porgram about the new man page.
X
XYou have to be user root to install the driver!
X
X
XCOMPILATION
X===========
X
XFirst of all you should copy the makefile that matches your system
Xto the file `Makefile'. Make sure that the makefile contains the
Xproper compiler switches, paths and file names for your system.
XYou may also look at `fas.c' and `fas.h' to find out what defines
Xare possible for conditional compilation. In particular, you should
Xtake a closer look at the following OS dependent symbolic constants
Xin `fas.h':
X
XNEED_PUT_GETCHAR
X If you don't link in the original serial driver you need to
X uncomment `NEED_PUT_GETCHAR' if the kernel linker complains
X about the undefined symbols `(asy|sio)putchar' and
X `(asy|sio)getchar'.
XHAVE_VPIX
X If your OS doesn't have VP/ix support or FAS doesn't compile
X properly with VP/ix support you need to comment `HAVE_VPIX'
X out to disable it.
XTUNABLE_TTYHOG
X Some UNIX flavors have a tunable `ttyhog' kernel variable
X that is used by FAS. If the kernel linker complains about
X this symbol being undefined you have to comment `TUNABLE_TTYHOG'
X out so that FAS uses the `TTYHOG' symbolic constant (from
X `sys/tty.h') instead.
X
XAfter that you choose one of the space-* configuration files
Xthat matches your serial card and copy this to `space.c'. If you
Xdon't find a matching space file you should copy the one that
Xcomes closest to your card to `space.c'.
X
XIn any case you should check the entries in that file against your
Xcard's manual and jumper settings. The space files contain explanations
Xabout what data you have to enter.
X
XIf your `space.c' is filled in properly you simply type `make' to
Xcompile the driver. If you don't get error messages you may begin
Xwith the actual installation. Otherwise you have to find the cause of
Xthe problem. Some error reasons may be missing include files, macros
Xthat are defined in different include files or missing at all, or you
Xdon't use the standard UNIX [34].X/386 AT&T C compiler. Don't use any
Xother compiler because this may break things. An exception from this
Xrule is the GNU C compiler which can also be used. But note that older
Xversions tend to break FAS, so you should use gcc 2.4.5 or newer.
XHowever, don't overestimate the performance gain of a gcc compiled FAS
Xdriver. At least with gcc 2.4.5, gcc produces rather poor code for FAS.
X
XFor SCO Xenix you have to use the Microsoft C compiler because Xenix
Xdoesn't have the AT&T compiler. You will need the ANSI C version of
Xthe Microsoft compiler because the preprocessor of the original
XXenix distribution doesn't understand `#if defined(...)' statements
Xin 386 mode.
X
X
XINSTALLATION
X============
X
XIf you want to have both the original asy (or sio) and the new FAS
Xdriver in the kernel the only restriction is that ports and interrupt
Xvectors can't be shared between the two drivers. Each driver controls
Xits own separate set of ports and IRQs.
X
XuPort: Copy one of the config-* files to `config'. Check out
X whether the interrupt vectors in this file reflect the
X jumper settings on your serial card. Note that an IRQ2 on
X your card is an interrupt vector of 9. All other IRQ numbers
X correspond to the vector number, though. If you want to
X disable an interrupt vector just remove the respective number
X from the `intvec' entry.
X
X Next you have to tell the config program to include the new
X driver at kernel link time. This is done by a line in the file
X /etc/atconf/systems/system.std. Look for the line containing
X `asy' followed by an asterisk (`*') and a comment. Create a
X similar line where `asy' is substituted with `fas'. Add a
X proper comment. If you don't want to use any ports under the
X DOS emulator you should insert an asterisk at the beginning
X of the line that contains the word `asy'. This excludes the
X asy driver from the kernel. But if you want to have it in the
X kernel you have to configure it to only use the ports you
X need under DOS. The remaining ports should be controlled by
X the FAS driver.
X
X Now type `make install' and after that you are ready to link
X a new kernel. Refer to your system manuals on how to do that.
X
X Before you reboot the new kernel make sure that you create
X the proper tty device nodes in /dev. But first you should
X remove all device nodes belonging to the original asy driver
X that you don't need any more.
X
X Now create your own tty device nodes that fit your needs.
X The default device name prefix for the FAS driver is `ttyF'.
X That is, ttyF00, ttyF01 ... and ttyFM00, ttyFM01 ...
X You may choose another prefix, but note that some utilities
X like uustat depend on tty-devices beginning with `tty'!
X
X The default value for the major device number is 4, and
X sane values for the minor device numbers are 80 + device #
X for the dialout node and 208 + device # for the dialin (getty)
X node. Device # counts from 0 and reflects the actual port number.
X Refer to the fas(7) man page for a description of the possible
X minor device numbers.
X
X Remember to change the inittab file to the new device names.
X Other files that contain tty-names for some reason should be
X updated, too (ttytype, Devices etc.).
X
X After you have booted the new kernel, provided your configuration
X was correct, you should be able to use the serial devices. You
X may also want to look at the `CABLING' and `MODEM SETUP' sections
X in the fas(7) man page.
X
X
XISC: Copy one of the s_fas-* files to `s_fas'. Make sure that
X you have a separate line in it for each block of contiguous
X port addresses assigned to the same interrupt vector (check
X the jumper settings on your serial card). Each line contains
X the number of ports bound to that interrupt, the start address
X of the first (lowest or only) and the end address of the last
X (highest or only) port on this interrupt line and other data.
X Refer to your ISC manuals if you need to change this file. Note
X that an IRQ2 on your card is an interrupt vector of 9. All other
X IRQ numbers correspond to the vector number, though.
X
X If you want to change the interrupt vector assignment of the
X various ports/cards you can do so by changing the 6th field
X of the respective line. But make sure that each line has a
X different value in the 6th field when you're finished with
X the changes. If you want to disable an interrupt vector just
X set the second field of the line to `N'. A `Y', on the other
X hand, enables the vector. Due to a bug in some kernel build
X programs you need to have all enabled lines (with `Y') in
X front of the disabled lines (with `N') because the build
X program stops scanning the file when it finds the first line
X with an `N' in the second field. So just move all enabled lines
X to the beginning of the file.
X
X Then you copy one of the n_fas-* files to `n_fas'. This
X file contains data needed to automatically create tty device
X nodes at installation time. Things you may want to change are
X the tty node names and the minor device numbers (last field) for
X these nodes. Make sure you have a node for every port on your
X serial card in this file.
X
X Sane values for the minor device numbers are 80 + device #
X for the dialout node and 208 + device # for the dialin (getty)
X node. Device # counts from 0 and reflects the actual port number.
X Refer to the fas(7) man page for a description of the possible
X minor device numbers.
X
X Now copy one of the i_fas-* files to `i_fas'. This file
X contains the getty lines for the inittab file which is rebuilt
X every time a new kernel is installed. Make sure that you use the
X same device names here as in the file `n_fas'. If there is a
X file /etc/conf/init.d/fas already installed, note that `i_fas'
X won't be copied over it so that customized lines in
X /etc/conf/init.d/fas are preserved.
X
X Next you have to modify the file /etc/conf/sdevice.d/asy in a way
X that only those devices are enabled that you want to be controlled
X by the original `asy' driver. This is done with an `N' in the second
X column of the corresponding line to disable the port and a `Y' to
X enable it. But usually you don't need the original driver any more.
X Therefore, all lines in /etc/conf/sdevice.d/asy should be set to `N'.
X
X To tell the kernel config program how to link in the FAS driver
X you have to add the following line to the file /etc/conf/cf.d/mdevice:
X
X fas Iocrwi iHct fas 0 3 1 16 -1
X
X The 6th field contains the major device number of the driver. You
X may change this if it collides with another driver. This is normal
X as I can't know in advance what major device numbers all the UNIX
X vendors will use for their drivers. You can, however, use the
X major device number of the original asy driver if you completely
X suspend the asy driver (see above), that is, drivers can have the
X same major device number if not more than one of them is linked
X into the kernel at the same time.
X
X The sample line above is contained in the file `m_fas' so you
X don't need to type it in. All you have to do is to edit the file
X (the 6th field if you want to change the major device number) and
X to then append it once to /etc/conf/cf.d/mdevice.
X
X All this is in the ISC manuals. Read them carefully.
X
X Now type `make install' and after that you are ready to link
X a new kernel. Refer to your system manuals on how to do that.
X
X You may have to change files that contain tty names to the new
X device names (ttytype, Devices etc.). Take the names from `n_fas'.
X
X After you have booted the new kernel, provided your configuration
X was correct, you should be able to use the serial devices. You
X may also want to look at the `CABLING' and `MODEM SETUP' sections
X in the fas(7) man page.
X
X
XESIX: Follow the description for ISC UNIX.
X
X
XBELL: Follow the description for ISC UNIX.
X
X
XATT: Follow the description for ISC UNIX.
X
X
XSCO: Do the same steps as for ISC UNIX. Here are some additional
X hints:
X
X The original SCO serial driver is called `sio' instead of `asy'.
X You need to disable it because it won't coexist peacefully with
X FAS.
X
X According to reports from some beta test sites it isn't enough
X to disable the `sio' driver by setting all lines in
X `/etc/conf/sdevice.d/sio' to `N'. Additionally, you have to
X delete the `sio' entry in `/etc/conf/cf.d/mdevice'. You may also
X want to remove the file `/etc/conf/init.d/sio' in order to get
X rid of the lines in `/etc/inittab' that refer to `sio' devices.
X
X For the device nodes you should use SCO's naming conventions because
X there are some utilities that expect this tty name format. You need
X to change the names in `i_fas' and `n_fas'. To prevent a collision
X with the `sio' device node names you need to remove the file
X `/etc/conf/node.d/sio'.
X
X In file `fas.h' you may need to uncomment the `NEED_PUT_GETCHAR'
X define before you compile the sources.
X
X You have to compile FAS with the AT&T standard C compiler (rcc,
X don't use the Microsoft compiler !) and with the symbol `SCO'
X defined. The makefile for SCO takes care of this, though.
X
X After you made all the changes you need to run the `configure'
X utility to get all the dependencies right. To convince the
X configure program that it has work to do you should change some
X parameter and put in the original value afterwards. Be prepared
X that there may be more tinkering needed to disable `sio' completely
X because there seem to be SCO UNIX releases where the kernel config
X and build programs are broken.
X
X By default, FAS' boot message doesn't contain informations about
X the interrupt vector assignment. This is because FAS doesn't have,
X and doesn't need to have any knowledge about interrupt vectors.
X Only the generic kernel interrupt dispatcher knows about the
X assignment. However, if you can't live without the interrupt infos
X all you need to do to have them displayed is to enter the respective
X numbers into the fas_vec[] array in `space.c'. But make sure that
X these values correspond with the entries in `s_fas'.
X
X At least under some SCO UNIX versions there is a bug/feature in
X getty. It writes the `login:' message to stdout and then flushes
X the receiver buffers. This means that a fast automatic login
X attempt (`uucico') may fail because it sends the login name
X before getty has a chance to do the buffer flush. So the login
X name is lost and the login fails.
X
X There are two workarouds: Either use a different getty program
X or delay the sending of the login name for about two seconds
X (to be on the safe side). The latter solution implies that you
X have to tell every dialup user and poll site about the problem,
X as the fix has to be implemented on the remote side.
X
X
XXENIX: The installation procedure for Xenix is completely different
X from the other UNIX flavors.
X
X In file `fas.h' you may need to uncomment the `NEED_PUT_GETCHAR'
X define before you compile the sources. After compilation
X the files `fas.o' and `space.o' have to be copied to the
X directory `/usr/sys/io/fas'. Typing `make install' takes care
X of this.
X
X As the `sio' driver won't coexist peacefully with FAS you have
X to remove the `sio' line from the file `/usr/sys/conf/xenixconf'.
X Create a new line for `fas' in this file.
X
X After this you have to modify the file `/usr/sys/conf/master'.
X There is a line in it that looks like this:
X
X sio 4 0577 104 sio 0 0 5 1 7 3 4 33 34
X
X You have to comment this out with an asterisk (`*') at the beginning
X of the line. Directly after this line you need to insert a new line
X with the following contents (for two ports, one on IRQ3 and one on
X IRQ4):
X
X fas 2 0537 104 fas 0 0 5 1 7 3 4 0 0
X
X The second column indicates how many interrupt vectors are used by
X this driver (two vectors in this example). The last four columns
X contain the corresponding IRQ numbers (in octal !). Unused vectors
X are set to zero.
X
X Here is an example for three ports (on IRQ3, IRQ4 and IRQ5):
X
X fas 3 0537 104 fas 0 0 5 1 7 3 4 5 0
X
X And this is for four ports (IRQ3, IRQ4, IRQ5 and IRQ2/9):
X
X fas 4 0537 104 fas 0 0 5 1 7 3 4 5 31
X
X Note that the AT bus interrupts IRQ8 to IRQ15 are mapped to vector
X 30 (octal) to 37 (octal). Therefore, IRQ9 (IRQ2 on the serial card) is
X vector 31 (octal) in this example.
X
X Take care that you don't use interrupt vectors that are already
X assigned to other drivers.
X
X For further details refer to the master(F) man page.
X
X By default, FAS' boot message doesn't contain informations about
X the interrupt vector assignment. This is because FAS doesn't have,
X and doesn't need to have any knowledge about interrupt vectors.
X Only the generic kernel interrupt dispatcher knows about the
X assignment. However, if you can't live without the interrupt infos
X all you need to do to have them displayed is to enter the respective
X numbers into the fas_vec[] array in `space.c'. But make sure that
X these values correspond with the entries in `/usr/sys/conf/master'.
X
X Now you have to insert the following line in `/usr/sys/conf/link_xenix'
X (before the lines with the system libs):
X
X ../io/fas/fas.o ../io/fas/space.o \
X
X After you made all the changes you might need to run the
X `/usr/sys/conf/configure' utility to get all the dependencies right.
X To convince the configure program that it has work to do you should
X change some parameter and put in the original value afterwards.
X
X Go to the directory `/usr/sys/conf' and link the new kernel with
X the `make' command. If all went well, copy the kernel to the
X root directory.
X
X You need to create the FAS device nodes manually in the directory
X `/dev' (with the command `mknod'). You should use SCO's naming
X conventions because there are some utilities that expect this
X tty name format. Here is an example how to make the device nodes:
X
X mknod tty1a c 5 80; mknod tty1A c 5 208
X mknod tty1b c 5 81; mknod tty1B c 5 209
X
X Major device number is always `5' (that of the suspended `sio'
X driver), the minor device numbers are calculated as described in
X the fas(7) man page. For full duplex hardware flow control
X tty1[a-z] gets the minor device number 80 + device# (device#
X counted from 0) and tty1[A-Z] gets 208 + device#.
X
X The last thing you have to do before you reboot your system is
X to check whether you need to make changes to the files that contain
X the device names for your original `sio' driver (for programs like
X `getty', `cu' and `uucico').
X
X After reboot you should remove all device nodes that belong
X to the now suspended `sio' driver. You may want to look at the
X `CABLING' and `MODEM SETUP' sections in the fas(7) man page.
X
X
XSVR4.0: Do the same steps as for ISC UNIX. Here are some additional
X hints:
X
X Currently, FAS is _not_ a STREAMS driver. Therefore, you need
X the tty compatibility drivers in the kernel. They are named
X `ttcompat', `clist', and maybe there are even more drivers
X needed. These compatibility drivers don't provide some of the
X features a genuine STREAMS driver would have. So FAS under SVR4.0
X can't be used for SLIP, for instance. Please look into your SVR4.0
X manuals for more informations.
X
X Neither VP/ix nor DosMerge are supported by FAS under this
X operating system. You should comment `HAVE_VPIX' out in `fas.h'.
X This will change when FAS is converted into a STREAMS driver.
X
X
XOther flavors of UNIX
X=====================
X
XCheck out if one of the above installation schemes is similar to the
Xone you need for your system. Make the appropriate changes and try
Xout if it works. If your system is entirely different you have to
Xfind out from your manuals how to install device drivers. But if
Xyou use a UNIX SYSV/386 [34].X you should get it to work eventually.
X
XGood luck.
SHAR_EOF
true || echo 'restore of INSTALLATION failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.ATT ==============
if test -f 'Makefile.ATT' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.ATT (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.ATT (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.ATT' &&
X# Makefile for AT&T SVR3.2
X
XSHELL = /bin/sh
XINCLSYS = /usr/include/sys
XLKDRVRDIR = /etc/conf/pack.d/fas
XLKSCONFDIR = /etc/conf/sdevice.d
XLKNCONFDIR = /etc/conf/node.d
XLKICONFDIR = /etc/conf/init.d
XLKKCONFDIR = /etc/conf/kconfig.d
XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
XDRVRNAME = Driver.o
XCONFNAME = fas
X
XCC = cc
XCFLAGS = -O -DINKERNEL $(LKDEFINES)
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS =
X
Xall: fas.o
X
Xfas.o: fas.s
X# Comment out the next two lines if you're using GCC
X awk -f optim_att.awk fas.s > fas.tmp
X mv -f fas.tmp fas.s
X $(CC) -c fas.s
X
Xfas.s: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -S fas.c
X
Xinstall: all space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME) \
X fas.h
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
X chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
X cp space.c $(LKDRVRDIR)/space.c
X chmod 644 $(LKDRVRDIR)/space.c
X cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
X chmod 644 $(LKSCONFDIR)/$(CONFNAME)
X cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
X chmod 644 $(LKNCONFDIR)/$(CONFNAME)
X test -f $(LKICONFDIR)/$(CONFNAME) || \
X cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
X chmod 644 $(LKICONFDIR)/$(CONFNAME)
X cp fas.h $(INCLSYS)/fas.h
X chmod 444 $(INCLSYS)/fas.h
X $(SHELL) update_desc $(LKKCONFDIR)/description
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
Xs_$(CONFNAME):
X @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
X @false
X
Xn_$(CONFNAME):
X @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
X @false
X
Xi_$(CONFNAME):
X @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
X @false
X
Xfas.h:
X @echo "The file \`fas.h' is missing for some reason"
X @false
X
Xclean:
X rm -f fas.s fas.tmp fas.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.ATT failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.BELL ==============
if test -f 'Makefile.BELL' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.BELL (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.BELL (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.BELL' &&
X# Makefile for Bell Tech/Intel SVR3.2
X
XSHELL = /bin/sh
XINCLSYS = /usr/include/sys
XLKDRVRDIR = /etc/conf/pack.d/fas
XLKSCONFDIR = /etc/conf/sdevice.d
XLKNCONFDIR = /etc/conf/node.d
XLKICONFDIR = /etc/conf/init.d
XLKKCONFDIR = /etc/conf/kconfig.d
XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
XDRVRNAME = Driver.o
XCONFNAME = fas
X
XCC = cc
XCFLAGS = -O -DINKERNEL $(LKDEFINES)
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS =
X
Xall: fas.o
X
Xfas.o: fas.s
X# Comment out the next two lines if you're using GCC
X awk -f optim_att.awk fas.s > fas.tmp
X mv -f fas.tmp fas.s
X $(CC) -c fas.s
X
Xfas.s: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -S fas.c
X
Xinstall: all space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME) \
X fas.h
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
X chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
X cp space.c $(LKDRVRDIR)/space.c
X chmod 644 $(LKDRVRDIR)/space.c
X cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
X chmod 644 $(LKSCONFDIR)/$(CONFNAME)
X cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
X chmod 644 $(LKNCONFDIR)/$(CONFNAME)
X test -f $(LKICONFDIR)/$(CONFNAME) || \
X cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
X chmod 644 $(LKICONFDIR)/$(CONFNAME)
X cp fas.h $(INCLSYS)/fas.h
X chmod 444 $(INCLSYS)/fas.h
X $(SHELL) update_desc $(LKKCONFDIR)/description
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
Xs_$(CONFNAME):
X @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
X @false
X
Xn_$(CONFNAME):
X @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
X @false
X
Xi_$(CONFNAME):
X @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
X @false
X
Xfas.h:
X @echo "The file \`fas.h' is missing for some reason"
X @false
X
Xclean:
X rm -f fas.s fas.tmp fas.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.BELL failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.ESIX ==============
if test -f 'Makefile.ESIX' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.ESIX (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.ESIX (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.ESIX' &&
X# Makefile for ESIX SVR3.2
X
XSHELL = /bin/sh
XINCLSYS = /usr/include/sys
XLKDRVRDIR = /etc/conf/pack.d/fas
XLKSCONFDIR = /etc/conf/sdevice.d
XLKNCONFDIR = /etc/conf/node.d
XLKICONFDIR = /etc/conf/init.d
XLKKCONFDIR = /etc/conf/kconfig.d
XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
XDRVRNAME = Driver.o
XCONFNAME = fas
X
XCC = cc
XCFLAGS = -O -DINKERNEL $(LKDEFINES)
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS =
X
Xall: fas.o
X
Xfas.o: fas.s
X# Comment out the next two lines if you're using GCC
X awk -f optim_att.awk fas.s > fas.tmp
X mv -f fas.tmp fas.s
X $(CC) -c fas.s
X
Xfas.s: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -S fas.c
X
Xinstall: all space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME) \
X fas.h
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
X chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
X cp space.c $(LKDRVRDIR)/space.c
X chmod 644 $(LKDRVRDIR)/space.c
X cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
X chmod 644 $(LKSCONFDIR)/$(CONFNAME)
X cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
X chmod 644 $(LKNCONFDIR)/$(CONFNAME)
X test -f $(LKICONFDIR)/$(CONFNAME) || \
X cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
X chmod 644 $(LKICONFDIR)/$(CONFNAME)
X cp fas.h $(INCLSYS)/fas.h
X chmod 444 $(INCLSYS)/fas.h
X $(SHELL) update_desc $(LKKCONFDIR)/description
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
Xs_$(CONFNAME):
X @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
X @false
X
Xn_$(CONFNAME):
X @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
X @false
X
Xi_$(CONFNAME):
X @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
X @false
X
Xfas.h:
X @echo "The file \`fas.h' is missing for some reason"
X @false
X
Xclean:
X rm -f fas.s fas.tmp fas.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.ESIX failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.ISC2 ==============
if test -f 'Makefile.ISC2' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.ISC2 (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.ISC2 (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.ISC2' &&
X# Makefile for ISC UNIX 2.x
X
XSHELL = /bin/sh
XINCLSYS = /usr/include/sys
XLKDRVRDIR = /etc/conf/pack.d/fas
XLKSCONFDIR = /etc/conf/sdevice.d
XLKNCONFDIR = /etc/conf/node.d
XLKICONFDIR = /etc/conf/init.d
XLKKCONFDIR = /etc/conf/kconfig.d
XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
XDRVRNAME = Driver.o
XCONFNAME = fas
X
XCC = cc
XCFLAGS = -O -DINKERNEL $(LKDEFINES)
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS =
X
Xall: fas.o
X
Xfas.o: fas.s
X# Comment out the next two lines if you're using GCC
X awk -f optim_att.awk fas.s > fas.tmp
X mv -f fas.tmp fas.s
X $(CC) -c fas.s
X
Xfas.s: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -S fas.c
X
Xinstall: all space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME) \
X fas.h
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
X chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
X cp space.c $(LKDRVRDIR)/space.c
X chmod 644 $(LKDRVRDIR)/space.c
X cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
X chmod 644 $(LKSCONFDIR)/$(CONFNAME)
X cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
X chmod 644 $(LKNCONFDIR)/$(CONFNAME)
X test -f $(LKICONFDIR)/$(CONFNAME) || \
X cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
X chmod 644 $(LKICONFDIR)/$(CONFNAME)
X cp fas.h $(INCLSYS)/fas.h
X chmod 444 $(INCLSYS)/fas.h
X $(SHELL) update_desc $(LKKCONFDIR)/description
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
Xs_$(CONFNAME):
X @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
X @false
X
Xn_$(CONFNAME):
X @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
X @false
X
Xi_$(CONFNAME):
X @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
X @false
X
Xfas.h:
X @echo "The file \`fas.h' is missing for some reason"
X @false
X
Xclean:
X rm -f fas.s fas.tmp fas.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.ISC2 failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.ISC3 ==============
if test -f 'Makefile.ISC3' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.ISC3 (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.ISC3 (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.ISC3' &&
X# Makefile for ISC UNIX 3.0 and later
X
XSHELL = /bin/sh
XINCLSYS = /usr/include/sys
XLKDRVRDIR = /etc/conf/pack.d/fas
XLKSCONFDIR = /etc/conf/sdevice.d
XLKNCONFDIR = /etc/conf/node.d
XLKICONFDIR = /etc/conf/init.d
XLKKCONFDIR = /etc/conf/kconfig.d
XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
XDRVRNAME = Driver.o
XCONFNAME = fas
X
XCC = cc
XCFLAGS = -O -DINKERNEL $(LKDEFINES)
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS = LOW_INT_LAT
X
Xall: fas.o
X
Xfas.o: fas.s
X# Comment out the next two lines if you're using GCC
X awk -f optim_att.awk fas.s > fas.tmp
X mv -f fas.tmp fas.s
X $(CC) -c fas.s
X
Xfas.s: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -S fas.c
X
Xinstall: all space.c DrivDesc s_$(CONFNAME) n_$(CONFNAME) \
X i_$(CONFNAME) fas.h
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
X chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
X cp space.c $(LKDRVRDIR)/space.c
X chmod 644 $(LKDRVRDIR)/space.c
X cp DrivDesc $(LKDRVRDIR)/DrivDesc
X chmod 644 $(LKDRVRDIR)/DrivDesc
X cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
X chmod 644 $(LKSCONFDIR)/$(CONFNAME)
X cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
X chmod 644 $(LKNCONFDIR)/$(CONFNAME)
X test -f $(LKICONFDIR)/$(CONFNAME) || \
X cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
X chmod 644 $(LKICONFDIR)/$(CONFNAME)
X cp fas.h $(INCLSYS)/fas.h
X chmod 444 $(INCLSYS)/fas.h
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
XDrivDesc:
X @echo "The file \`DrivDesc' is missing for some reason"
X @false
X
Xs_$(CONFNAME):
X @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
X @false
X
Xn_$(CONFNAME):
X @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
X @false
X
Xi_$(CONFNAME):
X @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
X @false
X
Xfas.h:
X @echo "The file \`fas.h' is missing for some reason"
X @false
X
Xclean:
X rm -f fas.s fas.tmp fas.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.ISC3 failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.SCO ==============
if test -f 'Makefile.SCO' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.SCO (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.SCO (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.SCO' &&
X# Makefile for SCO UNIX
X
XSHELL = /bin/sh
XINCLSYS = /usr/include/sys
XLKDRVRDIR = /etc/conf/pack.d/fas
XLKSCONFDIR = /etc/conf/sdevice.d
XLKNCONFDIR = /etc/conf/node.d
XLKICONFDIR = /etc/conf/init.d
XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
XDRVRNAME = Driver.o
XCONFNAME = fas
X
XCC = rcc
XCFLAGS = -O -DINKERNEL -D_INKERNEL $(LKDEFINES)
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS = SCO
X
Xall: fas.o
X
Xfas.o: fas.s
X# Comment out the next two lines if you're using GCC
X awk -f optim_att.awk fas.s > fas.tmp
X mv -f fas.tmp fas.s
X $(CC) -c fas.s
X
Xfas.s: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -S fas.c
X
Xinstall: all space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME) \
X fas.h
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
X chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
X cp space.c $(LKDRVRDIR)/space.c
X chmod 644 $(LKDRVRDIR)/space.c
X cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
X chmod 644 $(LKSCONFDIR)/$(CONFNAME)
X cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
X chmod 644 $(LKNCONFDIR)/$(CONFNAME)
X test -f $(LKICONFDIR)/$(CONFNAME) || \
X cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
X chmod 644 $(LKICONFDIR)/$(CONFNAME)
X cp fas.h $(INCLSYS)/fas.h
X chmod 444 $(INCLSYS)/fas.h
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
Xs_$(CONFNAME):
X @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
X @false
X
Xn_$(CONFNAME):
X @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
X @false
X
Xi_$(CONFNAME):
X @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
X @false
X
Xfas.h:
X @echo "The file \`fas.h' is missing for some reason"
X @false
X
Xclean:
X rm -f fas.s fas.tmp fas.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.SCO failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.SVR40 ==============
if test -f 'Makefile.SVR40' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.SVR40 (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.SVR40 (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.SVR40' &&
X# Makefile for SVR4.0
X
XSHELL = /bin/sh
XINCLSYS = /usr/include/sys
XLKDRVRDIR = /etc/conf/pack.d/fas
XLKSCONFDIR = /etc/conf/sdevice.d
XLKNCONFDIR = /etc/conf/node.d
XLKICONFDIR = /etc/conf/init.d
XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
XDRVRNAME = Driver.o
XCONFNAME = fas
X
XCC = cc
XCFLAGS = -O -DINKERNEL -D_KERNEL $(LKDEFINES)
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS = SVR4
X
Xall: fas.o
X
Xfas.o: fas.s
X# Comment out the next two lines if you're using GCC
X awk -f optim_att.awk fas.s > fas.tmp
X mv -f fas.tmp fas.s
X $(CC) -c fas.s
X
Xfas.s: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -S fas.c
X
Xinstall: all space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME) \
X fas.h
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
X chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
X cp space.c $(LKDRVRDIR)/space.c
X chmod 644 $(LKDRVRDIR)/space.c
X cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
X chmod 644 $(LKSCONFDIR)/$(CONFNAME)
X cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
X chmod 644 $(LKNCONFDIR)/$(CONFNAME)
X test -f $(LKICONFDIR)/$(CONFNAME) || \
X cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
X chmod 644 $(LKICONFDIR)/$(CONFNAME)
X cp fas.h $(INCLSYS)/fas.h
X chmod 444 $(INCLSYS)/fas.h
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
Xs_$(CONFNAME):
X @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
X @false
X
Xn_$(CONFNAME):
X @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
X @false
X
Xi_$(CONFNAME):
X @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
X @false
X
Xfas.h:
X @echo "The file \`fas.h' is missing for some reason"
X @false
X
Xclean:
X rm -f fas.s fas.tmp fas.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.SVR40 failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.X286 ==============
if test -f 'Makefile.X286' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.X286 (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.X286 (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.X286' &&
X# Makefile for SCO Xenix 286
X
XSHELL = /bin/sh
XLKDRVRDIR = /usr/sys/io/fas
X
XCC = cc
XCFLAGS = -LARGE -O -K -M2em -DM_KERNEL -UM_I8086 -DSYSINFO
XIOCFLAGS = -O -K -M2em -NT io_text -DM_KERNEL -UM_I8086
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS = XENIX
X
Xall: fas.o space.o
X
Xfas.o: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(IOCFLAGS) -c fas.c
X
Xspace.o: space.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -DLOCAL_INCLUDE -c space.c
X
Xinstall: all
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)
X chmod 644 $(LKDRVRDIR)/fas.o
X cp space.o $(LKDRVRDIR)
X chmod 644 $(LKDRVRDIR)/space.o
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
Xclean:
X rm -f fas.o space.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.X286 failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.X386 ==============
if test -f 'Makefile.X386' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.X386 (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.X386 (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.X386' &&
X# Makefile for SCO Xenix 386
X
XSHELL = /bin/sh
XLKDRVRDIR = /usr/sys/io/fas
X
XCC = cc
XCFLAGS = -O -DM_KERNEL -M3e -Zp4
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS = XENIX
X
Xall: fas.o space.o
X
Xfas.o: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -c fas.c
X
Xspace.o: space.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -DLOCAL_INCLUDE -c space.c
X
Xinstall: all
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)
X chmod 644 $(LKDRVRDIR)/fas.o
X cp space.o $(LKDRVRDIR)
X chmod 644 $(LKDRVRDIR)/space.o
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
Xclean:
X rm -f fas.o space.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.X386 failed'
rm -f _shar_wnt_.tmp
fi
# ============= Makefile.uPort ==============
if test -f 'Makefile.uPort' -a X"$1" != X"-c"; then
echo 'x - skipping Makefile.uPort (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Makefile.uPort (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile.uPort' &&
X# Makefile for Microport SVR3.0
X
XSHELL = /bin/sh
XINCLSYS = /usr/include/sys
XLKDRVRDIR = /etc/atconf/modules/fas
XLKCONFDIR = /etc/atconf/modules/fas
XDRVRNAME = fas.o
XCONFNAME = config
X
XCC = cc
XCFLAGS = -O -DINKERNEL
X
X# Don't attach a `-D' to the OS dependent defines!
XOS_DEP_DEFS = OPTIM
X
Xall: fas.o
X
Xfas.o: fas.s
X# Comment out the next two lines if you're using GCC
X awk -f optim_att.awk fas.s > fas.tmp
X mv -f fas.tmp fas.s
X $(CC) -c fas.s
X
Xfas.s: fas.c fas.h Makefile
X $(SHELL) os_dep_update fas.h $(OS_DEP_DEFS)
X $(CC) $(CFLAGS) -S fas.c
X
Xinstall: all space.c $(CONFNAME) fas.h
X test -d $(LKDRVRDIR) || mkdir $(LKDRVRDIR)
X chmod 755 $(LKDRVRDIR)
X cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
X chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
X cp space.c $(LKDRVRDIR)/space.c
X chmod 644 $(LKDRVRDIR)/space.c
X cp $(CONFNAME) $(LKCONFDIR)/$(CONFNAME)
X chmod 644 $(LKCONFDIR)/$(CONFNAME)
X cp fas.h $(INCLSYS)/fas.h
X chmod 444 $(INCLSYS)/fas.h
X
Xspace.c:
X @echo "You must copy the proper space-xxxxx file to \`space.c'"
X @false
X
X$(CONFNAME):
X @echo "You must copy the proper $(CONFNAME)-xxxxx file to \`$(CONFNAME)'"
X @false
X
Xfas.h:
X @echo "The file \`fas.h' is missing for some reason"
X @false
X
Xclean:
X rm -f fas.s fas.tmp fas.o
X
Xclobber: clean
X
SHAR_EOF
true || echo 'restore of Makefile.uPort failed'
rm -f _shar_wnt_.tmp
fi
# ============= PATCHLEVEL ==============
if test -f 'PATCHLEVEL' -a X"$1" != X"-c"; then
echo 'x - skipping PATCHLEVEL (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting PATCHLEVEL (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'PATCHLEVEL' &&
Xrelease 2.12 patchlevel 0
SHAR_EOF
true || echo 'restore of PATCHLEVEL failed'
rm -f _shar_wnt_.tmp
fi
# ============= README ==============
if test -f 'README' -a X"$1" != X"-c"; then
echo 'x - skipping README (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting README (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'README' &&
XREADME file for the FAS driver
X------------------------------
X
XFAS, which is an acronym for "Final Async Solution", is a "dumb"-port
Xcharacter device driver for 286/386 based UNIX systems that adds several
Xfeatures that are often not provided by vendors drivers.
X
XFor further details please refer to the fas(7) man page (file `fas.7'
Xor `fas.7.cat').
X
XFor informations about the FAS copyright please look at the file `COPYING'.
X
XThe installation of FAS is described in the file `INSTALLATION'.
X
XFAS is available from comp.sources.unix archives. It is also available
Xvia anonymous FTP from ftp.fu-berlin.de (130.133.4.50), directory
X`pub/unix/driver/fas'.
X
X------------------------------------------------------------------------
X
XWhat's in this package:
X
XCOPYING Details about the FAS copyright.
X
XDrivDesc Driver description file for ISC UNIX 3.x systems.
X
XINSTALLATION A description about how to install the driver
X on your system.
X
XMakefile.* These files are generic and should work for all
X configurations of ports and interrupts.
X
X Makefile.ATT For AT&T SVR3.2 systems.
X
X Makefile.BELL For Bell Tech/Intel SVR3.2 systems.
X
X Makefile.ESIX For ESIX SVR3.2 systems.
X
X Makefile.ISC2 For ISC UNIX 2.x systems.
X
X Makefile.ISC3 For ISC UNIX 3.x systems.
X
X Makefile.SCO For SCO UNIX systems.
X
X Makefile.SVR40 For SVR4.0 systems.
X
X Makefile.X286 For SCO Xenix 286 systems.
X
X Makefile.X386 For SCO Xenix 386 systems.
X
X Makefile.uPort For Microport SVR3.0 systems.
X
XPATCHLEVEL Just a reference file for future updates.
X
XREADME This file.
X
XRELEASENOTES Notes about the various FAS releases.
X
Xconfig-* This is for Microport SVR3.0 only.
X Kernel configuaration files. You should pick the one
X that matches your configuration and copy it to `config'.
X
Xfas.7 The man page in NROFF source format.
X
Xfas.7.cat The formatted man page (for systems without NROFF).
X
Xfas.c The driver itself.
X
Xfas.h The header file for the driver.
X
Xi_fas-* This is for ISC, ESIX, Bell Tech/Intel, SCO, AT&T and
X SVR4.0 UNIX.
X Inittab getty lines files. You should pick the one
X that matches your configuration and copy it to `i_fas'.
X
Xm_fas This is for ISC, ESIX, Bell Tech/Intel, SCO, AT&T and
X SVR4.0 UNIX.
X Kernel configuration file. It contains a sample entry
X for the file `/etc/conf/cf.d/mdevice'.
X
Xn_fas-* This is for ISC, ESIX, Bell Tech/Intel, SCO, AT&T and
X SVR4.0 UNIX.
X Tty device nodes files. You should pick the one
X that matches your configuration and copy it to `n_fas'.
X
Xoptim_att.awk AWK script that optimizes the AT&T assembler file
X generated during compilation under some UNIX flavors.
X
Xos_dep_update Shell script for the update of OS dependent defines.
X
Xs_fas-* This is for ISC, ESIX, Bell Tech/Intel, SCO, AT&T and
X SVR4.0 UNIX.
X Kernel configuration files. You should pick the one
X that matches your configuration and copy it to `s_fas'.
X
Xspace-* These are samples of what `space.c' must look
X like. You can either copy one of these to
X `space.c' or use it as a template to create your
X own `space.c'.
X
Xupdate_desc Shell script for the update of the kernel description
X file (necessary for some UNIX flavors).
X
X------------------------------------------------------------------------
X
XWhat you will need to use this package:
X
XYou will need one of the above mentioned UNIX systems with the
Xkernel link kit and the software development package.
X
XOf course, you will also need one or more "dumb"-port serial cards.
X
XNote that FAS can be adapted to almost any kind of "dumb"-port serial
Xcard by just putting the right informations into the config
Xfiles. Changes to the actual source file shouldn't be necessary.
X
XThis means that the sample config files that are part of the FAS
Xdistribution are there for convenience in case you have one of the
Xmore common serial cards. If there are no sample files for your
Xcard you can make your own config files. In this case the sample
Xfiles are still useful for you as you can look at them to learn
Xhow things are done for other cards.
X
XIf you know how your serial card works and the manual for it is
Xdetailed enough it won't be that difficult to make your own config
Xfiles. Just try it!
X
X------------------------------------------------------------------------
X
XThe original asy replacement driver for Microport UNIX/386 (FAS' predecessor)
Xwas developed by
X
XJim Murray INET jjm%jjmhome@m2c.m2c.org
X2 Mohawk Circle UUCP harvard!m2c!jjmhome!jjm
XWestboro Mass 01581
XUSA voice (508) 366-2813
X
XCredits to him for releasing this great driver to the Usenet community.
XBut if you have problems with FAS please don't contact him because he
Xwasn't involved in the developement of FAS.
X
XFAS was developed by
X
XUwe Doering <fas@geminix.in-berlin.de>
XBillstedter Pfad 17 b
X13591 Berlin
XGermany
X
X ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
XSend your questions and bug reports to this address.
X
XPlease don't forget to mention which OS and which version of FAS
Xyou're using!
SHAR_EOF
true || echo 'restore of README failed'
rm -f _shar_wnt_.tmp
fi
# ============= RELEASENOTES ==============
if test -f 'RELEASENOTES' -a X"$1" != X"-c"; then
echo 'x - skipping RELEASENOTES (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting RELEASENOTES (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'RELEASENOTES' &&
Xrelease 1.1a Sat Nov 11, 1989
X
XThis is an unofficial release as I'm not the original author
Xof this async driver.
X
XUwe Doering <fas@geminix.in-berlin.de>
XBillstedter Pfad 17 b
X13591 Berlin
XGermany
X
XNew Features:
X
X Added a third minor tty device number for every physical
X port. See description preceding the asyopen function in
X asy.c. Changed the behavior of ttyxx, too.
X
X Added output hardware handshake support for DSR. Now you
X can do handshake with CTS, DSR or both. Input hardware
X handshake is on if you use at least one of the output
X handshake signals.
X
X More flexible support of additional interrupt registers
X on mux boards. This is fully configurable now.
X
X Added support for the CREAD flag. If not set, receiver
X interrupts are still serviced, but the received characters
X are simply thrown away. This is not as elegant as disabeling
X the interrupts themselves, but with the already existing
X driver it was the easiest way, and the most new-bugs-preventing,
X too.
X
X Added a lot of comments to the source so that the curious
X user can understand why and how things are done.
X
X
XBug Fixes:
X
X The hang-up-on-last-close flag (HUPCL) was ignored. DTR
X was asserted regardless of this flag.
X
X Made the detection of CTS and DCD more bullet-proof.
X Especially because between a close and the next open of
X a line, where interrupts are ignored, the software copys of
X CTS and DCD must be set up propperly in the asyopen function
X or the tty line would be blocked under certain circum-
X stances. For similar reasons, there is also a setup in the
X asyparam function.
X
X Rewrote the input character processing function to work
X according to the TERMIO(7) man page.
X
X Changed the behavior of BREAK generation to let the
X transmitter drain before TX is set to low.
X
X Changed line hangup procedure so that the closing
X process returns immediately and doesn't sleep during
X the hangup delay/time. Instead, if an other process tries
X to open the line while hangup is still in progress, this
X process will sleep until hangup is competed.
X
X With DOS Merge, on MicroPort V/386 3.0e the linker was
X missing the function `init8250'. Reengineered this from
X a disassembler listing of MicroPort's original driver and
X modified it to work with the NS16550A 16-byte FIFO. This
X funktion was added simply to be able to link the kernel.
X DOS Merge's virtual COM ports are still unusable with this
X release, though. To include this function, add a `-DMERGE'
X to the CFLAGS line in your makefile.
X
X Made a lot of other corrections and enhancements in both
X speed and functionallity. As a result of all my effords
X I think this driver is slightly faster, more versatile
X and much more stable than the original release.
X
X------------------------------------------------------------
X
Xrelease 1.1b Sat Nov 25, 1989
X
XNew Features:
X
X Changed the minor device number scheme again.
X There are now two main groups: The unblocked open
X and the blocked open. Every group has four sub-modes
X and an additional hardware handshake flag. All this
X is coded in the higher four bits of the minor device
X number. Because of this, the maximum of 32 ports was
X reduced to 16 ports so that the port number fits into
X the remaining lower four bits of the minor device number.
X 32 dumb ports in a single machine would have been overkill
X anyway. For more details refer to the description in the
X README file.
X
X------------------------------------------------------------
X
Xrelease 2.00 Mon Nov 27, 1989
X
XAs this release differs so much from the original version I got,
XI now declare this as independant from the original author
XJim Murray. This allows me to introduce new release levels
Xwithout wondering whether they will collide with Jim's releases.
XOf course many credits to Jim for writing this software in the
Xfirst place. Without his driver as a base I never would have
Xbeen able to do such kernel driver development.
X
XBug Fixes:
X
X If there were glitches on the hardware handshake lines
X and the DCD line a getty on this port would sometimes
X hang and become an immortal process. I think this was
X because the output buffer wasn't flushed properly
X on carrier loss. I hope I fixed this now. We'll see.
X
X------------------------------------------------------------
X
Xrelease 2.01 Tue Nov 28, 1989
X
XDid some cleanup in the source code.
X
XI splitted the driver into two parts: The driver itself and
Xthe file `space.c'.
X`space.c' contains all data structures necessary to configure
Xthe driver and is compiled at kernel link time. Therefore, if you
Xchange your serial card configuration you simply change `space.c'
Xdirectly in the link kit directory and relink the kernel. No
Xdriver recompilation or installation is necessary for this.
XBut note that whenever you use `make install' your setup in
Xthe link kit directory is overwritten by the original `space.c'
Xfile. Therefore, you should copy your new `space.c' back to
Xthe source directory when you are finished with the configuration.
X
XRenamed the package to `FAS Final Async Solution'. The following
Xfiles have been renamed:
X asy.c -> fas.c
X asy.h -> fas.h
X asy_conf-xxxxx -> space-xxxxx
X
XISC 386/ix is supported now. There are separate makefiles
Xfor uPort and ISC to cope with the differences in link kit
Xinstallation.
X
XBug Fixes:
X
X `getty' still hung sometimes on a line with hardware
X handshake. Tried to fix it this time.
X
X------------------------------------------------------------
X
Xrelease 2.02 Thu Nov 30, 1989
X
XAbandoned the distinction between space-xxxxx files with
Xand without hardware flow control because this is selected
Xby the minor device number now.
X
XBug Fixes:
X
X Set the high and low water marks for hardware input flow
X control to higher values than software flow control. This
X gives precedence to software flow control if both methods
X are used. These marks are self-adjusting and don't need to
X be changed if some flavor of UNIX has a different buffer
X size than the standard 256 characters. Before this change
X concurrent use of both flow controls could cause trouble
X with some high-speed modems. This is fixed now.
X
X A flush read or write buffer request now also clears the
X receiver or transmitter FIFO, respectively. An ioctl
X call with a TCSETA* command clears the FIFOs, too.
X
X------------------------------------------------------------
X
Xrelease 2.03 Fri Dec 01, 1989
X
XWrote an installation guide. The driver should be quite
Xeasy to install now.
X
XAdded tty node configuration files for ISC.
X
XHardware input flow control is bound now to the level of the
Xreceiver ring buffer instead of the UNIX input buffer. This
Xhas the advantage that buffer size and trigger levels are
Xdefined in the driver and therefore can be varied as needed.
X
XNew Features:
X
X Added a boot time status message that shows the init
X state of each port. This tells you immediately what
X ports are found and initted by the driver. Useful to
X determine hardware configuration problems. Look at
X the description in the README file. Thanks to
X Kritt Gierlewsen (kritt@einoed.UUCP) for this proposal.
X
X------------------------------------------------------------
SHAR_EOF
true || echo 'restore of RELEASENOTES failed'
fi
echo 'End of part 1'
echo 'File RELEASENOTES is continued in part 2'
echo 2 > _shar_seq_.tmp
exit 0