home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / unix / sysv386 / 13238 < prev    next >
Encoding:
Internet Message Format  |  1992-08-17  |  61.5 KB

  1. Xref: sparky comp.unix.sysv386:13238 comp.unix.xenix.sco:2695 alt.sources:1884
  2. Newsgroups: comp.unix.sysv386,comp.unix.xenix.sco,alt.sources
  3. Path: sparky!uunet!mcsun!Germany.EU.net!news.netmbx.de!zrz.tu-berlin.de!math.fu-berlin.de!fub!geminix.in-berlin.de!gemini
  4. From: gemini@geminix.in-berlin.de (Uwe Doering)
  5. Subject: FAS 2.10 async driver, part 1/5
  6. Organization: Private UNIX Site
  7. Date: Mon, 17 Aug 1992 11:37:53 GMT
  8. Message-ID: <F555UNC@geminix.in-berlin.de>
  9. Lines: 1632
  10.  
  11. Submitted-by: gemini@geminix.in-berlin.de
  12. Archive-name: fas210/part01
  13.  
  14. Hello netlanders,
  15.  
  16. here is the FAS 2.10 async driver for 286/386 UNIX/Xenix systems.
  17.  
  18. Some features are new, for instance support for 115200 bps, and several
  19. bugs were fixed. And of course further performance optimizations have been
  20. done to cope with speeds as high as 115200 bps. For further details look
  21. at the RELEASENOTES file.
  22.  
  23. Here is an excerpt from the README file:
  24.  
  25.      This is an async driver for 286/386 based unix systems that adds
  26.      several features that are often not supported by vendors drivers.
  27.      It supports
  28.  
  29.         1.  the NS16550A and i82510 UART chips in full FIFO mode.
  30.         2.  up to 115200 bps with NS16550A.
  31.         3.  built-in modem sharing for input and output.
  32.         4.  modem control on both dialin and dialout devices.
  33.         5.  full and half duplex hardware flow control.
  34.         6.  hardware and software (XON/XOFF) flow control at the same time.
  35.         7.  shared interrupts.
  36.         8.  multiplexed UART registers (HUB-6 card etc.).
  37.         9.  any mix of up to 16 UARTs.
  38.        10.  any I/O address, any IRQ.
  39.        11.  VP/ix, the ISC DOS emulator.
  40.  
  41.  
  42.      FAS was successfully tested under the following operating systems:
  43.  
  44.      Microport UNIX SYSV 3.0
  45.      ISC UNIX 2.0.2, 2.2 & 3.0
  46.      ESIX Rev. C & D
  47.      Bell Tech/Intel UNIX 3.2
  48.      SCO UNIX 3.2.2 & 3.2.4
  49.      SCO XENIX 386 2.3.2
  50.      SCO XENIX 286 2.3.2
  51.      AT&T UNIX 3.2 V 2.1
  52.      SysVr4 UNIX 386 V 2.0 (with tty compatibility drivers)
  53.  
  54. Enjoy!
  55.  
  56.       Uwe
  57.  
  58.  
  59. #!/bin/sh
  60. # This is fas210, a shell archive (produced by shar 3.49)
  61. # To extract the files from this archive, save it to a file, remove
  62. # everything above the "!/bin/sh" line above, and type "sh file_name".
  63. #
  64. # made 08/17/1992 11:10 UTC by gemini@geminix.in-berlin.de
  65. # Source directory /u/src/private/fas/fas210/tmp
  66. #
  67. # existing files will NOT be overwritten unless -c is specified
  68. # This format requires very little intelligence at unshar time.
  69. # "if test", "cat", "rm", "echo", "true", and "sed" may be needed.
  70. #
  71. # This is part 1 of a multipart archive                                    
  72. # do not concatenate these parts, unpack them in order with /bin/sh        
  73. #
  74. # This shar contains:
  75. # length  mode       name
  76. # ------ ---------- ------------------------------------------
  77. #     68 -rw-r--r-- DrivDesc
  78. #  14489 -rw-r--r-- INSTALLATION
  79. #   1496 -rw-r--r-- Makefile.ATT
  80. #   1507 -rw-r--r-- Makefile.BELL
  81. #   1481 -rw-r--r-- Makefile.ESIX
  82. #   1489 -rw-r--r-- Makefile.ISC2
  83. #   1609 -rw-r--r-- Makefile.ISC3
  84. #   1423 -rw-r--r-- Makefile.SCO
  85. #   1431 -rw-r--r-- Makefile.SVR4
  86. #    673 -rw-r--r-- Makefile.X286
  87. #    581 -rw-r--r-- Makefile.X386
  88. #    857 -rw-r--r-- Makefile.uPort
  89. #     26 -rw-r--r-- PATCHLEVEL
  90. #  41566 -rw-r--r-- README
  91. #  40914 -rw-r--r-- RELEASENOTES
  92. #    251 -rw-r--r-- config-ast4
  93. #    255 -rw-r--r-- config-ast4c12
  94. #    253 -rw-r--r-- config-c12
  95. #    255 -rw-r--r-- config-c123
  96. #    253 -rw-r--r-- config-digi8c1
  97. #    251 -rw-r--r-- config-hub6
  98. #  97025 -rw-r--r-- fas.c
  99. #  21392 -rw-r--r-- fas.h
  100. #    136 -rw-r--r-- i_fas-ast4
  101. #    204 -rw-r--r-- i_fas-ast4c12
  102. #     68 -rw-r--r-- i_fas-c12
  103. #    102 -rw-r--r-- i_fas-c123
  104. #    306 -rw-r--r-- i_fas-digi8c1
  105. #    204 -rw-r--r-- i_fas-hub6
  106. #    136 -rw-r--r-- n_fas-ast4
  107. #    204 -rw-r--r-- n_fas-ast4c12
  108. #     68 -rw-r--r-- n_fas-c12
  109. #    102 -rw-r--r-- n_fas-c123
  110. #    306 -rw-r--r-- n_fas-digi8c1
  111. #    204 -rw-r--r-- n_fas-hub6
  112. #     26 -rw-r--r-- s_fas-ast4
  113. #     78 -rw-r--r-- s_fas-ast4c12
  114. #     52 -rw-r--r-- s_fas-c12
  115. #     78 -rw-r--r-- s_fas-c123
  116. #     52 -rw-r--r-- s_fas-digi8c1
  117. #     26 -rw-r--r-- s_fas-hub6
  118. #   5584 -rw-r--r-- space-ast4
  119. #   5803 -rw-r--r-- space-ast4c12
  120. #   5432 -rw-r--r-- space-c12
  121. #   5542 -rw-r--r-- space-c123
  122. #   6073 -rw-r--r-- space-digi8c1
  123. #   5718 -rw-r--r-- space-hub6
  124. #    174 -rwxr-xr-x update_desc
  125. #
  126. if test -r _shar_seq_.tmp; then
  127.     echo 'Must unpack archives in sequence!'
  128.     echo Please unpack part `cat _shar_seq_.tmp` next
  129.     exit 1
  130. fi
  131. # ============= DrivDesc ==============
  132. if test -f 'DrivDesc' -a X"$1" != X"-c"; then
  133.     echo 'x - skipping DrivDesc (File already exists)'
  134.     rm -f _shar_wnt_.tmp
  135. else
  136. > _shar_wnt_.tmp
  137. echo 'x - extracting DrivDesc (Text)'
  138. sed 's/^X//' << 'SHAR_EOF' > 'DrivDesc' &&
  139. XDRIVER=fas
  140. XCLASS=io
  141. XHARDWARE=TRUE
  142. XDESCRIPTION=FAS Serial I/O Driver
  143. SHAR_EOF
  144. true || echo 'restore of DrivDesc failed'
  145. rm -f _shar_wnt_.tmp
  146. fi
  147. # ============= INSTALLATION ==============
  148. if test -f 'INSTALLATION' -a X"$1" != X"-c"; then
  149.     echo 'x - skipping INSTALLATION (File already exists)'
  150.     rm -f _shar_wnt_.tmp
  151. else
  152. > _shar_wnt_.tmp
  153. echo 'x - extracting INSTALLATION (Text)'
  154. sed 's/^X//' << 'SHAR_EOF' > 'INSTALLATION' &&
  155. XInstallation guide for the FAS Final Async Solution driver
  156. X----------------------------------------------------------
  157. X
  158. XTo install this driver you need the manual of your serial card,
  159. Xyour system manuals and a certain knowledge about what actually
  160. Xa serial driver is.
  161. X
  162. XYou have to be user root to compile and install the driver!
  163. X
  164. X
  165. XCompilation phase
  166. X=================
  167. X
  168. XFirst of all you should copy the makefile that matches your system
  169. Xto the file `Makefile'. Make sure that the makefile contains the
  170. Xproper compiler switches, paths and file names for your system.
  171. XYou may also look at `fas.c' and `fas.h' to find out what defines
  172. Xare possible for conditional compilation. In particular, if you
  173. Xdon't link in the original serial driver you might have to uncomment
  174. Xthe `NEED_PUT_GETCHAR' define in `fas.h'. You also may want to
  175. Xuncomment `HAVE_VPIX' in `fas.h' if you have VP/ix support in
  176. Xthe kernel.
  177. X
  178. XAfter that you choose one of the space-xxxxx configuration files
  179. Xthat matches your serial card and copy this to `space.c'. If you
  180. Xdon't find a matching space file you should copy the one that
  181. Xcomes closest to your card to `space.c'.
  182. X
  183. XIn any case you should check the entries in that file against your
  184. Xcard's manual and jumper settings. The space files contain explanations
  185. Xabout what data you have to enter.
  186. X
  187. XIf your `space.c' is filled in properly you simply type `make' to
  188. Xcompile the driver. If you don't get error messages you may begin
  189. Xwith the actual installation. Otherwise you have to find the cause of
  190. Xthe trouble. Some error reasons may be missing include files, macros
  191. Xthat are defined in different include files or missing at all, or you
  192. Xdon't use the standard UNIX [34].X/386 AT&T C compiler. Don't use any
  193. Xother compiler because this may break things. In particular, don't use
  194. Xthe GNU C compiler as it wants to link in some "helpful" routines that
  195. Xaren't in the kernel.
  196. X
  197. XFor SCO Xenix you have to use the Microsoft C compiler because Xenix
  198. Xdoesn't have the AT&T compiler. You will need the ANSI C version of
  199. Xthe Microsoft compiler because the preprocessor of the original
  200. XXenix distribution doesn't understand `#if defined(...)' statements
  201. Xin 386 mode.
  202. X
  203. X
  204. XInstallation phase
  205. X==================
  206. X
  207. XIf you want to have both the original asy (or sio) and the new FAS
  208. Xdriver in the kernel the only restriction is that ports and interrupt
  209. Xvectors can't be shared between the two drivers. Each driver controls
  210. Xits own separate set of ports and IRQs.
  211. X
  212. XuPort: Copy one of the config-xxxxx files to `config'. Check out
  213. X       whether the interrupt vectors in this file reflect the
  214. X       jumper settings on your serial card. Note that an IRQ2 on
  215. X       your card is an interrupt vector of 9. All other IRQ numbers
  216. X       correspond to the vector number, though.
  217. X
  218. X       Next you have to tell the config program to include the new
  219. X       driver at kernel link time. This is done by a line in the file
  220. X       /etc/atconf/systems/system.std. Look for the line containing
  221. X       `asy' followed by an asterisk (`*') and a comment. Create a
  222. X       similar line where `asy' is substituted with `fas'. Add a
  223. X       proper comment. If you don't want to use any ports under the
  224. X       DOS emulator you should insert an asterisk at the beginning
  225. X       of the line that contains the word `asy'. This excludes the
  226. X       asy driver from the kernel. But if you want to have it in the
  227. X       kernel you have to configure it to only use the ports you
  228. X       need under DOS. The remaining ports should be controlled by
  229. X       the FAS driver.
  230. X
  231. X       Now type `make install' and after that you are ready to link
  232. X       a new kernel. Refer to your system manuals on how to do that.
  233. X
  234. X       Before you reboot the new kernel make sure that you create
  235. X       the proper tty device nodes in /dev. But first you should
  236. X       remove all device nodes belonging to the original asy driver
  237. X       that you don't need any more.
  238. X
  239. X       Now create your own tty device nodes that fit your needs.
  240. X       The default device name prefix for the FAS driver is `ttyF'.
  241. X       That is, ttyF00, ttyF01 ... and ttyFM00, ttyFM01 ...
  242. X       You may choose another prefix, but note that some utilities
  243. X       like uustat depend on tty-devices beginning with `tty'!
  244. X
  245. X       The default value for the major device number is 4, and
  246. X       sane values for the minor device numbers are 80 + device #
  247. X       for the dialout node and 208 + device # for the dialin (getty)
  248. X       node. Device # counts from 0 and reflects the actual port number.
  249. X       Refer to the `README' file for a description of the possible minor
  250. X       device numbers.
  251. X
  252. X       Remember to change the inittab file to the new device names.
  253. X       Other files that contain tty-names for some reason should be
  254. X       updated, too (ttytype, Devices etc.).
  255. X
  256. X       After you have booted the new kernel, provided your configuration
  257. X       was correct, you should be able to use the serial devices.
  258. X
  259. X
  260. XISC:   Copy one of the s_fas-xxxxx files to `s_fas'. Make sure
  261. X       that you have a separate line in it for each block of contiguous
  262. X       port addresses assigned to the same interrupt vector (check
  263. X       the jumper settings on your serial card). Each line contains
  264. X       the number of ports bound to that interrupt, the start and
  265. X       end address of the first (lowest or only) port on this interrupt
  266. X       line and other data. Refer to your ISC manuals if you need to
  267. X       change this file. Note that an IRQ2 on your card is an interrupt
  268. X       vector of 9. All other IRQ numbers correspond to the vector
  269. X       number, though.
  270. X
  271. X       Then you copy one of the n_fas-xxxxx files to `n_fas'. This
  272. X       file contains data needed to automatically create tty device
  273. X       nodes at installation time. Things you may want to change are
  274. X       the tty node names and the minor device numbers (last field) for
  275. X       these nodes. Make sure you have a node for every port on your
  276. X       serial card in this file.
  277. X
  278. X       Sane values for the minor device numbers are 80 + device #
  279. X       for the dialout node and 208 + device # for the dialin (getty)
  280. X       node. Device # counts from 0 and reflects the actual port number.
  281. X       Refer to the `README' file for a description of the possible
  282. X       minor device numbers.
  283. X
  284. X       Now copy one of the i_fas-xxxxx files to `i_fas'. This file
  285. X       contains the getty lines for the inittab file which is rebuild
  286. X       every time a new kernel is installed. Make sure that you use the
  287. X       same device names here as in the file `n_fas'.
  288. X
  289. X       Next you have to modify the file /etc/conf/sdevice.d/asy in a way
  290. X       that only those devices are enabled that you want to be controlled
  291. X       by the original `asy' driver. This is done with an `N' in the second
  292. X       column of the corresponding line to disable the port and a `Y' to
  293. X       enable it. But usually you don't need the original driver any more.
  294. X       Therefore, all lines in /etc/conf/sdevice.d/asy should be set to `N'.
  295. X
  296. X       To tell the kernel config program how to link in the FAS driver
  297. X       you have to add the following line to the file /etc/conf/cf.d/mdevice:
  298. X
  299. X       fas    Iocrwi    iHct    fas    0    4    1    16    -1
  300. X
  301. X       The 6th field contains the major device number of the driver. You
  302. X       may change this if it collides with another driver. This is normal
  303. X       as I can't know in advance what major device numbers all the UNIX
  304. X       vendors will use for their drivers.
  305. X
  306. X       All this is in the ISC manuals. Read them carefully.
  307. X
  308. X       Now type `make install' and after that you are ready to link
  309. X       a new kernel. Refer to your system manuals on how to do that.
  310. X
  311. X       You may have to change files that contain tty names to the new
  312. X       device names (ttytype, Devices etc.). Take the names from `n_fas'.
  313. X
  314. X       After you have booted the new kernel, provided your configuration
  315. X       was correct, you should be able to use the serial devices.
  316. X
  317. X
  318. XESIX:  Follow the description for ISC UNIX.
  319. X
  320. X
  321. XBELL:  Follow the description for ISC UNIX.
  322. X
  323. X
  324. XATT:   Follow the description for ISC UNIX.
  325. X
  326. X
  327. XSCO:   Do the same steps as for ISC UNIX. Here are some additional
  328. X       hints:
  329. X
  330. X       The original SCO serial driver is called `sio' instead of
  331. X       `asy'. You need to remove it because it won't coexist peacefully
  332. X       with FAS.
  333. X
  334. X       According to reports from some beta test sites it isn't enough
  335. X       to disable the `sio' driver by setting all lines in
  336. X       /etc/conf/sdevice.d/sio to `N'. Additionally, you have to
  337. X       delete the `sio' entry in /etc/conf/cf.d/mdevice.
  338. X
  339. X       In file `fas.h' you may need to uncomment the `NEED_PUT_GETCHAR'
  340. X       define before you compile the sources.
  341. X
  342. X       For the device nodes you should use SCO's naming conventions because
  343. X       there are some utilities that expect this tty name format. You need
  344. X       to change the names in `i_fas' and `n_fas'. To prevent a collision
  345. X       with the `sio' device node names you need to remove the file
  346. X       `/etc/conf/node.d/sio'.
  347. X
  348. X       You have to compile FAS with the AT&T standard C compiler (rcc,
  349. X       don't use the Microsoft compiler !) and with the `-DSCO'
  350. X       compiler command line flag. The makefile for SCO takes
  351. X       care of this, though.
  352. X
  353. X       After you made all the changes you need to run the
  354. X       `configure' utility to get all the dependencies right. To convince
  355. X       the configure program that it has work to do you should change some
  356. X       parameter and put in the original value afterwards. Be prepared
  357. X       that there may be more tinkering needed to remove `sio' completely
  358. X       because there seem to be SCO UNIX releases where the kernel config
  359. X       and build programs are broken.
  360. X
  361. X       FAS' boot message doesn't contain informations about the interrupt
  362. X       vector assignment. This is because FAS doesn't have, and doesn't need
  363. X       to have any knowledge about interrupt vectors. Only the generic
  364. X       kernel interrupt dispatcher knows about the assignment.
  365. X
  366. X
  367. XXENIX: The installation procedure for Xenix is completely different
  368. X       from the other UNIX flavors.
  369. X
  370. X       In file `fas.h' you may need to uncomment the `NEED_PUT_GETCHAR'
  371. X       define before you compile the sources. After compilation
  372. X       the files `fas.o' and `space.o' have to be copied to the
  373. X       directory `/usr/sys/io/fas'.
  374. X
  375. X       As the `sio' driver won't coexist peacefully with FAS you have
  376. X       to remove the `sio' line from the file `/usr/sys/conf/xenixconf'.
  377. X       Create a new line for `fas' in this file.
  378. X
  379. X       After this you have to modify the file `/usr/sys/conf/master'.
  380. X       There is a line in it that looks like this:
  381. X
  382. X     sio      4  0577 104    sio  0   0   5    1   7    3     4     33  34  
  383. X
  384. X       You have to comment this out with an asterisk (`*') at the beginning
  385. X       of the line. Directly after this line you need to insert a new line
  386. X       with the following contents (for two ports, one on IRQ3 and one on
  387. X       IRQ4):
  388. X
  389. X    fas      2  0537 104    fas  0   0   5    1   7    3     4     0   0  
  390. X
  391. X       The second column indicates how many interrupt vectors are used by
  392. X       this driver (two vectors in this example). The last four columns
  393. X       contain the corresponding IRQ numbers (in octal !). Unused vectors
  394. X       are set to zero.
  395. X
  396. X       Here is an example for three ports (on IRQ3, IRQ4 and IRQ5):
  397. X
  398. X    fas      3  0537 104    fas  0   0   5    1   7    3     4     5   0  
  399. X
  400. X       And this is for four ports (IRQ3, IRQ4, IRQ5 and IRQ2/9):
  401. X
  402. X    fas      4  0537 104    fas  0   0   5    1   7    3     4     5   31 
  403. X
  404. X       Note that the AT bus interrupts IRQ8 to IRQ15 are mapped to vector
  405. X       30 (octal) to 37 (octal). Therefore, IRQ9 (IRQ2 on the serial card) is
  406. X       vector 31 (octal) in this example.
  407. X
  408. X       Take care that you don't use interrupt vectors that are already
  409. X       assigned to other drivers.
  410. X
  411. X       For further details refer to the master(F) man page.
  412. X
  413. X       Now you have to insert the following line in `/usr/sys/conf/link_xenix'
  414. X       (before the lines with the system libs):
  415. X
  416. X        ../io/fas/fas.o ../io/fas/space.o \
  417. X
  418. X       After you made all the changes you might need to run the
  419. X       `/usr/sys/conf/configure' utility to get all the dependencies right.
  420. X       To convince the configure program that it has work to do you should
  421. X       change some parameter and put in the original value afterwards.
  422. X
  423. X       Go to the directory `/usr/sys/conf' and link the new kernel with
  424. X       the `make' command. If all went well, copy the kernel to the
  425. X       root directory.
  426. X
  427. X       You need to create the FAS device nodes manually in the directory
  428. X       `/dev' (with the command `mknod'). You should use SCO's naming
  429. X       conventions because there are some utilities that expect this
  430. X       tty name format. Here is an example how to make the device nodes:
  431. X
  432. X       mknod tty1a c 5 80; mknod tty1A c 5 208
  433. X       mknod tty1b c 5 81; mknod tty1B c 5 209
  434. X
  435. X       Major device number is always `5' (that of the suspended `sio'
  436. X       driver), the minor device numbers are calculated from the README file.
  437. X       For full duplex hardware flow control tty1[a-z] gets the minor
  438. X       device number 80 + device# (device# counted from 0) and tty1[A-Z] gets
  439. X       208 + device#.
  440. X
  441. X       The last thing you have to do before you reboot your system is
  442. X       to check whether you need to make changes to the files that contain
  443. X       the device names for your original `sio' driver (for programs like
  444. X       `getty', `cu' and `uucico').
  445. X
  446. X       After reboot you should remove all device nodes that belong
  447. X       to the now suspended `sio' driver.
  448. X
  449. X
  450. XSVR4:  Do the same steps as for ISC UNIX. Here are some additional
  451. X       hints:
  452. X
  453. X       Currently, FAS is _not_ a STREAMS driver. Therefore, you need
  454. X       the tty compatibility drivers in the kernel. They are named
  455. X       `ttcompat', `clist', and maybe there are even more drivers
  456. X       needed. Please look into your SysVr4 manuals for more
  457. X       informations.
  458. X
  459. X       Neither VP/ix nor DosMerge are supported by FAS under this
  460. X       operating system. This will change when FAS is converted into
  461. X       a STREAMS driver.
  462. X
  463. X
  464. XOther flavors of UNIX
  465. X=====================
  466. X
  467. XCheck out if one of the above installation schemes is similar to the
  468. Xone you need for your system. Make the appropriate changes and try
  469. Xout if it works. If your system is entirely different you have to
  470. Xfind out from your manuals how to install device drivers. But if
  471. Xyou use a UNIX SYSV/386 [34].X you should get it to work eventually.
  472. X
  473. XGood luck.
  474. SHAR_EOF
  475. true || echo 'restore of INSTALLATION failed'
  476. rm -f _shar_wnt_.tmp
  477. fi
  478. # ============= Makefile.ATT ==============
  479. if test -f 'Makefile.ATT' -a X"$1" != X"-c"; then
  480.     echo 'x - skipping Makefile.ATT (File already exists)'
  481.     rm -f _shar_wnt_.tmp
  482. else
  483. > _shar_wnt_.tmp
  484. echo 'x - extracting Makefile.ATT (Text)'
  485. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.ATT' &&
  486. X# Makefile for AT&T UNIX SYS V/386
  487. X
  488. XSHELL = /bin/sh
  489. XINCLSYS = /usr/include/sys
  490. XLKDRVRDIR = /etc/conf/pack.d/fas
  491. XLKSCONFDIR = /etc/conf/sdevice.d
  492. XLKNCONFDIR = /etc/conf/node.d
  493. XLKICONFDIR = /etc/conf/init.d
  494. XLKKCONFDIR = /etc/conf/kconfig.d
  495. XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
  496. XDRVRNAME = Driver.o
  497. XCONFNAME = fas
  498. X
  499. XCC = cc
  500. XCFLAGS = -O -DINKERNEL $(LKDEFINES)
  501. X
  502. XOBJS = fas.o
  503. X
  504. Xfas.o:        fas.c $(INCLSYS)/fas.h Makefile
  505. X
  506. Xinstall:    fas.o space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME)
  507. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  508. X    chmod 755 $(LKDRVRDIR)
  509. X    cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
  510. X    chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
  511. X    cp space.c $(LKDRVRDIR)/space.c
  512. X    chmod 644 $(LKDRVRDIR)/space.c
  513. X    cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
  514. X    chmod 644 $(LKSCONFDIR)/$(CONFNAME)
  515. X    cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
  516. X    chmod 644 $(LKNCONFDIR)/$(CONFNAME)
  517. X    cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
  518. X    chmod 644 $(LKICONFDIR)/$(CONFNAME)
  519. X    $(SHELL) update_desc $(LKKCONFDIR)/description
  520. X
  521. Xspace.c:
  522. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  523. X    @false
  524. X    
  525. Xs_$(CONFNAME):
  526. X    @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
  527. X    @false
  528. X        
  529. Xn_$(CONFNAME):
  530. X    @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
  531. X    @false
  532. X        
  533. Xi_$(CONFNAME):
  534. X    @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
  535. X    @false
  536. X        
  537. X$(INCLSYS)/fas.h:    fas.h
  538. X    cp fas.h $(INCLSYS)/fas.h
  539. X
  540. Xclean:
  541. X    rm -f fas.o
  542. X
  543. Xclobber:    clean
  544. X
  545. SHAR_EOF
  546. true || echo 'restore of Makefile.ATT failed'
  547. rm -f _shar_wnt_.tmp
  548. fi
  549. # ============= Makefile.BELL ==============
  550. if test -f 'Makefile.BELL' -a X"$1" != X"-c"; then
  551.     echo 'x - skipping Makefile.BELL (File already exists)'
  552.     rm -f _shar_wnt_.tmp
  553. else
  554. > _shar_wnt_.tmp
  555. echo 'x - extracting Makefile.BELL (Text)'
  556. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.BELL' &&
  557. X# Makefile for Bell Tech/Intel UNIX SYS V/386
  558. X
  559. XSHELL = /bin/sh
  560. XINCLSYS = /usr/include/sys
  561. XLKDRVRDIR = /etc/conf/pack.d/fas
  562. XLKSCONFDIR = /etc/conf/sdevice.d
  563. XLKNCONFDIR = /etc/conf/node.d
  564. XLKICONFDIR = /etc/conf/init.d
  565. XLKKCONFDIR = /etc/conf/kconfig.d
  566. XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
  567. XDRVRNAME = Driver.o
  568. XCONFNAME = fas
  569. X
  570. XCC = cc
  571. XCFLAGS = -O -DINKERNEL $(LKDEFINES)
  572. X
  573. XOBJS = fas.o
  574. X
  575. Xfas.o:        fas.c $(INCLSYS)/fas.h Makefile
  576. X
  577. Xinstall:    fas.o space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME)
  578. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  579. X    chmod 755 $(LKDRVRDIR)
  580. X    cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
  581. X    chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
  582. X    cp space.c $(LKDRVRDIR)/space.c
  583. X    chmod 644 $(LKDRVRDIR)/space.c
  584. X    cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
  585. X    chmod 644 $(LKSCONFDIR)/$(CONFNAME)
  586. X    cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
  587. X    chmod 644 $(LKNCONFDIR)/$(CONFNAME)
  588. X    cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
  589. X    chmod 644 $(LKICONFDIR)/$(CONFNAME)
  590. X    $(SHELL) update_desc $(LKKCONFDIR)/description
  591. X
  592. Xspace.c:
  593. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  594. X    @false
  595. X    
  596. Xs_$(CONFNAME):
  597. X    @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
  598. X    @false
  599. X        
  600. Xn_$(CONFNAME):
  601. X    @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
  602. X    @false
  603. X        
  604. Xi_$(CONFNAME):
  605. X    @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
  606. X    @false
  607. X        
  608. X$(INCLSYS)/fas.h:    fas.h
  609. X    cp fas.h $(INCLSYS)/fas.h
  610. X
  611. Xclean:
  612. X    rm -f fas.o
  613. X
  614. Xclobber:    clean
  615. X
  616. SHAR_EOF
  617. true || echo 'restore of Makefile.BELL failed'
  618. rm -f _shar_wnt_.tmp
  619. fi
  620. # ============= Makefile.ESIX ==============
  621. if test -f 'Makefile.ESIX' -a X"$1" != X"-c"; then
  622.     echo 'x - skipping Makefile.ESIX (File already exists)'
  623.     rm -f _shar_wnt_.tmp
  624. else
  625. > _shar_wnt_.tmp
  626. echo 'x - extracting Makefile.ESIX (Text)'
  627. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.ESIX' &&
  628. X# Makefile for ESIX
  629. X
  630. XSHELL = /bin/sh
  631. XINCLSYS = /usr/include/sys
  632. XLKDRVRDIR = /etc/conf/pack.d/fas
  633. XLKSCONFDIR = /etc/conf/sdevice.d
  634. XLKNCONFDIR = /etc/conf/node.d
  635. XLKICONFDIR = /etc/conf/init.d
  636. XLKKCONFDIR = /etc/conf/kconfig.d
  637. XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
  638. XDRVRNAME = Driver.o
  639. XCONFNAME = fas
  640. X
  641. XCC = cc
  642. XCFLAGS = -O -DINKERNEL $(LKDEFINES)
  643. X
  644. XOBJS = fas.o
  645. X
  646. Xfas.o:        fas.c $(INCLSYS)/fas.h Makefile
  647. X
  648. Xinstall:    fas.o space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME)
  649. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  650. X    chmod 755 $(LKDRVRDIR)
  651. X    cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
  652. X    chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
  653. X    cp space.c $(LKDRVRDIR)/space.c
  654. X    chmod 644 $(LKDRVRDIR)/space.c
  655. X    cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
  656. X    chmod 644 $(LKSCONFDIR)/$(CONFNAME)
  657. X    cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
  658. X    chmod 644 $(LKNCONFDIR)/$(CONFNAME)
  659. X    cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
  660. X    chmod 644 $(LKICONFDIR)/$(CONFNAME)
  661. X    $(SHELL) update_desc $(LKKCONFDIR)/description
  662. X
  663. Xspace.c:
  664. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  665. X    @false
  666. X    
  667. Xs_$(CONFNAME):
  668. X    @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
  669. X    @false
  670. X        
  671. Xn_$(CONFNAME):
  672. X    @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
  673. X    @false
  674. X        
  675. Xi_$(CONFNAME):
  676. X    @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
  677. X    @false
  678. X        
  679. X$(INCLSYS)/fas.h:    fas.h
  680. X    cp fas.h $(INCLSYS)/fas.h
  681. X
  682. Xclean:
  683. X    rm -f fas.o
  684. X
  685. Xclobber:    clean
  686. X
  687. SHAR_EOF
  688. true || echo 'restore of Makefile.ESIX failed'
  689. rm -f _shar_wnt_.tmp
  690. fi
  691. # ============= Makefile.ISC2 ==============
  692. if test -f 'Makefile.ISC2' -a X"$1" != X"-c"; then
  693.     echo 'x - skipping Makefile.ISC2 (File already exists)'
  694.     rm -f _shar_wnt_.tmp
  695. else
  696. > _shar_wnt_.tmp
  697. echo 'x - extracting Makefile.ISC2 (Text)'
  698. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.ISC2' &&
  699. X# Makefile for ISC UNIX 2.x
  700. X
  701. XSHELL = /bin/sh
  702. XINCLSYS = /usr/include/sys
  703. XLKDRVRDIR = /etc/conf/pack.d/fas
  704. XLKSCONFDIR = /etc/conf/sdevice.d
  705. XLKNCONFDIR = /etc/conf/node.d
  706. XLKICONFDIR = /etc/conf/init.d
  707. XLKKCONFDIR = /etc/conf/kconfig.d
  708. XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
  709. XDRVRNAME = Driver.o
  710. XCONFNAME = fas
  711. X
  712. XCC = cc
  713. XCFLAGS = -O -DINKERNEL $(LKDEFINES)
  714. X
  715. XOBJS = fas.o
  716. X
  717. Xfas.o:        fas.c $(INCLSYS)/fas.h Makefile
  718. X
  719. Xinstall:    fas.o space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME)
  720. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  721. X    chmod 755 $(LKDRVRDIR)
  722. X    cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
  723. X    chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
  724. X    cp space.c $(LKDRVRDIR)/space.c
  725. X    chmod 644 $(LKDRVRDIR)/space.c
  726. X    cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
  727. X    chmod 644 $(LKSCONFDIR)/$(CONFNAME)
  728. X    cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
  729. X    chmod 644 $(LKNCONFDIR)/$(CONFNAME)
  730. X    cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
  731. X    chmod 644 $(LKICONFDIR)/$(CONFNAME)
  732. X    $(SHELL) update_desc $(LKKCONFDIR)/description
  733. X
  734. Xspace.c:
  735. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  736. X    @false
  737. X    
  738. Xs_$(CONFNAME):
  739. X    @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
  740. X    @false
  741. X        
  742. Xn_$(CONFNAME):
  743. X    @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
  744. X    @false
  745. X        
  746. Xi_$(CONFNAME):
  747. X    @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
  748. X    @false
  749. X        
  750. X$(INCLSYS)/fas.h:    fas.h
  751. X    cp fas.h $(INCLSYS)/fas.h
  752. X
  753. Xclean:
  754. X    rm -f fas.o
  755. X
  756. Xclobber:    clean
  757. X
  758. SHAR_EOF
  759. true || echo 'restore of Makefile.ISC2 failed'
  760. rm -f _shar_wnt_.tmp
  761. fi
  762. # ============= Makefile.ISC3 ==============
  763. if test -f 'Makefile.ISC3' -a X"$1" != X"-c"; then
  764.     echo 'x - skipping Makefile.ISC3 (File already exists)'
  765.     rm -f _shar_wnt_.tmp
  766. else
  767. > _shar_wnt_.tmp
  768. echo 'x - extracting Makefile.ISC3 (Text)'
  769. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.ISC3' &&
  770. X# Makefile for ISC UNIX 3.x
  771. X
  772. XSHELL = /bin/sh
  773. XINCLSYS = /usr/include/sys
  774. XLKDRVRDIR = /etc/conf/pack.d/fas
  775. XLKSCONFDIR = /etc/conf/sdevice.d
  776. XLKNCONFDIR = /etc/conf/node.d
  777. XLKICONFDIR = /etc/conf/init.d
  778. XLKKCONFDIR = /etc/conf/kconfig.d
  779. XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
  780. XDRVRNAME = Driver.o
  781. XCONFNAME = fas
  782. X
  783. XCC = cc
  784. XCFLAGS = -O -DINKERNEL -DLOW_INT_LAT $(LKDEFINES)
  785. X
  786. XOBJS = fas.o
  787. X
  788. Xfas.o:        fas.c $(INCLSYS)/fas.h Makefile
  789. X
  790. Xinstall:    fas.o space.c DrivDesc s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME)
  791. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  792. X    chmod 755 $(LKDRVRDIR)
  793. X    cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
  794. X    chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
  795. X    cp space.c $(LKDRVRDIR)/space.c
  796. X    chmod 644 $(LKDRVRDIR)/space.c
  797. X    cp DrivDesc $(LKDRVRDIR)/DrivDesc
  798. X    chmod 644 $(LKDRVRDIR)/DrivDesc
  799. X    cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
  800. X    chmod 644 $(LKSCONFDIR)/$(CONFNAME)
  801. X    cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
  802. X    chmod 644 $(LKNCONFDIR)/$(CONFNAME)
  803. X    cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
  804. X    chmod 644 $(LKICONFDIR)/$(CONFNAME)
  805. X
  806. Xspace.c:
  807. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  808. X    @false
  809. X    
  810. XDrivDesc:
  811. X    @echo "The file \`DrivDesc' is missing for some reason"
  812. X    @false
  813. X    
  814. Xs_$(CONFNAME):
  815. X    @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
  816. X    @false
  817. X        
  818. Xn_$(CONFNAME):
  819. X    @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
  820. X    @false
  821. X        
  822. Xi_$(CONFNAME):
  823. X    @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
  824. X    @false
  825. X        
  826. X$(INCLSYS)/fas.h:    fas.h
  827. X    cp fas.h $(INCLSYS)/fas.h
  828. X
  829. Xclean:
  830. X    rm -f fas.o
  831. X
  832. Xclobber:    clean
  833. X
  834. SHAR_EOF
  835. true || echo 'restore of Makefile.ISC3 failed'
  836. rm -f _shar_wnt_.tmp
  837. fi
  838. # ============= Makefile.SCO ==============
  839. if test -f 'Makefile.SCO' -a X"$1" != X"-c"; then
  840.     echo 'x - skipping Makefile.SCO (File already exists)'
  841.     rm -f _shar_wnt_.tmp
  842. else
  843. > _shar_wnt_.tmp
  844. echo 'x - extracting Makefile.SCO (Text)'
  845. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.SCO' &&
  846. X# Makefile for SCO UNIX
  847. X
  848. XSHELL = /bin/sh
  849. XINCLSYS = /usr/include/sys
  850. XLKDRVRDIR = /etc/conf/pack.d/fas
  851. XLKSCONFDIR = /etc/conf/sdevice.d
  852. XLKNCONFDIR = /etc/conf/node.d
  853. XLKICONFDIR = /etc/conf/init.d
  854. XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
  855. XDRVRNAME = Driver.o
  856. XCONFNAME = fas
  857. X
  858. XCC = rcc
  859. XCFLAGS = -O -DINKERNEL -D_INKERNEL -DSCO $(LKDEFINES)
  860. X
  861. XOBJS = fas.o
  862. X
  863. Xfas.o:        fas.c $(INCLSYS)/fas.h Makefile
  864. X
  865. Xinstall:    fas.o space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME)
  866. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  867. X    chmod 755 $(LKDRVRDIR)
  868. X    cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
  869. X    chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
  870. X    cp space.c $(LKDRVRDIR)/space.c
  871. X    chmod 644 $(LKDRVRDIR)/space.c
  872. X    cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
  873. X    chmod 644 $(LKSCONFDIR)/$(CONFNAME)
  874. X    cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
  875. X    chmod 644 $(LKNCONFDIR)/$(CONFNAME)
  876. X    cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
  877. X    chmod 644 $(LKICONFDIR)/$(CONFNAME)
  878. X
  879. Xspace.c:
  880. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  881. X    @false
  882. X    
  883. Xs_$(CONFNAME):
  884. X    @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
  885. X    @false
  886. X        
  887. Xn_$(CONFNAME):
  888. X    @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
  889. X    @false
  890. X        
  891. Xi_$(CONFNAME):
  892. X    @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
  893. X    @false
  894. X        
  895. X$(INCLSYS)/fas.h:    fas.h
  896. X    cp fas.h $(INCLSYS)/fas.h
  897. X
  898. Xclean:
  899. X    rm -f fas.o
  900. X
  901. Xclobber:    clean
  902. X
  903. SHAR_EOF
  904. true || echo 'restore of Makefile.SCO failed'
  905. rm -f _shar_wnt_.tmp
  906. fi
  907. # ============= Makefile.SVR4 ==============
  908. if test -f 'Makefile.SVR4' -a X"$1" != X"-c"; then
  909.     echo 'x - skipping Makefile.SVR4 (File already exists)'
  910.     rm -f _shar_wnt_.tmp
  911. else
  912. > _shar_wnt_.tmp
  913. echo 'x - extracting Makefile.SVR4 (Text)'
  914. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.SVR4' &&
  915. X# Makefile for SysVr4 UNIX 386
  916. X
  917. XSHELL = /bin/sh
  918. XINCLSYS = /usr/include/sys
  919. XLKDRVRDIR = /etc/conf/pack.d/fas
  920. XLKSCONFDIR = /etc/conf/sdevice.d
  921. XLKNCONFDIR = /etc/conf/node.d
  922. XLKICONFDIR = /etc/conf/init.d
  923. XLKDEFINES = `test -r /etc/conf/cf.d/defines && cat /etc/conf/cf.d/defines; exit 0`
  924. XDRVRNAME = Driver.o
  925. XCONFNAME = fas
  926. X
  927. XCC = cc
  928. XCFLAGS = -O -DINKERNEL -D_KERNEL -DSVR4 $(LKDEFINES)
  929. X
  930. XOBJS = fas.o
  931. X
  932. Xfas.o:        fas.c $(INCLSYS)/fas.h Makefile
  933. X
  934. Xinstall:    fas.o space.c s_$(CONFNAME) n_$(CONFNAME) i_$(CONFNAME)
  935. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  936. X    chmod 755 $(LKDRVRDIR)
  937. X    cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
  938. X    chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
  939. X    cp space.c $(LKDRVRDIR)/space.c
  940. X    chmod 644 $(LKDRVRDIR)/space.c
  941. X    cp s_$(CONFNAME) $(LKSCONFDIR)/$(CONFNAME)
  942. X    chmod 644 $(LKSCONFDIR)/$(CONFNAME)
  943. X    cp n_$(CONFNAME) $(LKNCONFDIR)/$(CONFNAME)
  944. X    chmod 644 $(LKNCONFDIR)/$(CONFNAME)
  945. X    cp i_$(CONFNAME) $(LKICONFDIR)/$(CONFNAME)
  946. X    chmod 644 $(LKICONFDIR)/$(CONFNAME)
  947. X
  948. Xspace.c:
  949. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  950. X    @false
  951. X    
  952. Xs_$(CONFNAME):
  953. X    @echo "You must copy the proper s_$(CONFNAME)-xxxxx file to \`s_$(CONFNAME)'"
  954. X    @false
  955. X        
  956. Xn_$(CONFNAME):
  957. X    @echo "You must copy the proper n_$(CONFNAME)-xxxxx file to \`n_$(CONFNAME)'"
  958. X    @false
  959. X        
  960. Xi_$(CONFNAME):
  961. X    @echo "You must copy the proper i_$(CONFNAME)-xxxxx file to \`i_$(CONFNAME)'"
  962. X    @false
  963. X        
  964. X$(INCLSYS)/fas.h:    fas.h
  965. X    cat fas.h > $(INCLSYS)/fas.h
  966. X
  967. Xclean:
  968. X    rm -f fas.o
  969. X
  970. Xclobber:    clean
  971. X
  972. SHAR_EOF
  973. true || echo 'restore of Makefile.SVR4 failed'
  974. rm -f _shar_wnt_.tmp
  975. fi
  976. # ============= Makefile.X286 ==============
  977. if test -f 'Makefile.X286' -a X"$1" != X"-c"; then
  978.     echo 'x - skipping Makefile.X286 (File already exists)'
  979.     rm -f _shar_wnt_.tmp
  980. else
  981. > _shar_wnt_.tmp
  982. echo 'x - extracting Makefile.X286 (Text)'
  983. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.X286' &&
  984. X# Makefile for SCO Xenix 286
  985. X
  986. XSHELL = /bin/sh
  987. XLKDRVRDIR = /usr/sys/io/fas
  988. X
  989. XCC = cc
  990. XCFLAGS = -LARGE -O -K -M2em -DM_KERNEL -UM_I8086 -DSYSINFO -DXENIX
  991. XIOCFLAGS = -O -K -M2em -NT io_text -DM_KERNEL -UM_I8086 -DXENIX
  992. X
  993. XOBJS = fas.o space.o
  994. X
  995. Xall:    $(OBJS)
  996. X
  997. Xfas.o:    fas.c fas.h Makefile
  998. X    $(CC) $(IOCFLAGS) -c fas.c
  999. X
  1000. Xspace.o:    space.c fas.h Makefile
  1001. X    $(CC) $(CFLAGS) -c space.c
  1002. X
  1003. Xinstall:    all
  1004. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  1005. X    chmod 755 $(LKDRVRDIR)
  1006. X    cp fas.o $(LKDRVRDIR)
  1007. X    chmod 644 $(LKDRVRDIR)/fas.o
  1008. X    cp space.o $(LKDRVRDIR)
  1009. X    chmod 644 $(LKDRVRDIR)/space.o
  1010. X
  1011. Xspace.c:
  1012. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  1013. X    @false
  1014. X
  1015. Xclean:
  1016. X    rm -f $(OBJS)
  1017. X
  1018. Xclobber:    clean
  1019. X
  1020. SHAR_EOF
  1021. true || echo 'restore of Makefile.X286 failed'
  1022. rm -f _shar_wnt_.tmp
  1023. fi
  1024. # ============= Makefile.X386 ==============
  1025. if test -f 'Makefile.X386' -a X"$1" != X"-c"; then
  1026.     echo 'x - skipping Makefile.X386 (File already exists)'
  1027.     rm -f _shar_wnt_.tmp
  1028. else
  1029. > _shar_wnt_.tmp
  1030. echo 'x - extracting Makefile.X386 (Text)'
  1031. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.X386' &&
  1032. X# Makefile for SCO Xenix 386
  1033. X
  1034. XSHELL = /bin/sh
  1035. XLKDRVRDIR = /usr/sys/io/fas
  1036. X
  1037. XCC = cc
  1038. XCFLAGS = -O -DXENIX -DM_KERNEL -M3e -Zp4
  1039. X
  1040. XOBJS = fas.o space.o
  1041. X
  1042. Xall:    $(OBJS)
  1043. X
  1044. Xfas.o:    fas.c fas.h Makefile
  1045. X    $(CC) $(CFLAGS) -c fas.c
  1046. X
  1047. Xspace.o:    space.c fas.h Makefile
  1048. X    $(CC) $(CFLAGS) -c space.c
  1049. X
  1050. Xinstall:    all
  1051. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  1052. X    chmod 755 $(LKDRVRDIR)
  1053. X    cp fas.o $(LKDRVRDIR)
  1054. X    chmod 644 $(LKDRVRDIR)/fas.o
  1055. X    cp space.o $(LKDRVRDIR)
  1056. X    chmod 644 $(LKDRVRDIR)/space.o
  1057. X
  1058. Xspace.c:
  1059. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  1060. X    @false
  1061. X
  1062. Xclean:
  1063. X    rm -f $(OBJS)
  1064. X
  1065. Xclobber:    clean
  1066. X
  1067. SHAR_EOF
  1068. true || echo 'restore of Makefile.X386 failed'
  1069. rm -f _shar_wnt_.tmp
  1070. fi
  1071. # ============= Makefile.uPort ==============
  1072. if test -f 'Makefile.uPort' -a X"$1" != X"-c"; then
  1073.     echo 'x - skipping Makefile.uPort (File already exists)'
  1074.     rm -f _shar_wnt_.tmp
  1075. else
  1076. > _shar_wnt_.tmp
  1077. echo 'x - extracting Makefile.uPort (Text)'
  1078. sed 's/^X//' << 'SHAR_EOF' > 'Makefile.uPort' &&
  1079. X# Makefile for uPort SYS V/386
  1080. X
  1081. XSHELL = /bin/sh
  1082. XINCLSYS = /usr/include/sys
  1083. XLKDRVRDIR = /etc/atconf/modules/fas
  1084. XLKCONFDIR = /etc/atconf/modules/fas
  1085. XDRVRNAME = fas.o
  1086. XCONFNAME = config
  1087. X
  1088. XCC = cc
  1089. XCFLAGS = -O -DINKERNEL -DOPTIM
  1090. X
  1091. XOBJS = fas.o
  1092. X
  1093. Xfas.o:        fas.c $(INCLSYS)/fas.h Makefile
  1094. X
  1095. Xinstall:    fas.o space.c $(CONFNAME)
  1096. X    -mkdir $(LKDRVRDIR) 2> /dev/null
  1097. X    chmod 755 $(LKDRVRDIR)
  1098. X    cp fas.o $(LKDRVRDIR)/$(DRVRNAME)
  1099. X    chmod 644 $(LKDRVRDIR)/$(DRVRNAME)
  1100. X    cp space.c $(LKDRVRDIR)/space.c
  1101. X    chmod 644 $(LKDRVRDIR)/space.c
  1102. X    cp $(CONFNAME) $(LKCONFDIR)/$(CONFNAME)
  1103. X    chmod 644 $(LKCONFDIR)/$(CONFNAME)
  1104. X
  1105. Xspace.c:
  1106. X    @echo "You must copy the proper space-xxxxx file to \`space.c'"
  1107. X    @false
  1108. X    
  1109. X$(CONFNAME):
  1110. X    @echo "You must copy the proper $(CONFNAME)-xxxxx file to \`$(CONFNAME)'"
  1111. X    @false
  1112. X        
  1113. X$(INCLSYS)/fas.h:    fas.h
  1114. X    cp fas.h $(INCLSYS)/fas.h
  1115. X
  1116. Xclean:
  1117. X    rm -f fas.o
  1118. X
  1119. Xclobber:    clean
  1120. X
  1121. SHAR_EOF
  1122. true || echo 'restore of Makefile.uPort failed'
  1123. rm -f _shar_wnt_.tmp
  1124. fi
  1125. # ============= PATCHLEVEL ==============
  1126. if test -f 'PATCHLEVEL' -a X"$1" != X"-c"; then
  1127.     echo 'x - skipping PATCHLEVEL (File already exists)'
  1128.     rm -f _shar_wnt_.tmp
  1129. else
  1130. > _shar_wnt_.tmp
  1131. echo 'x - extracting PATCHLEVEL (Text)'
  1132. sed 's/^X//' << 'SHAR_EOF' > 'PATCHLEVEL' &&
  1133. Xrelease 2.10 patchlevel 0
  1134. SHAR_EOF
  1135. true || echo 'restore of PATCHLEVEL failed'
  1136. rm -f _shar_wnt_.tmp
  1137. fi
  1138. # ============= README ==============
  1139. if test -f 'README' -a X"$1" != X"-c"; then
  1140.     echo 'x - skipping README (File already exists)'
  1141.     rm -f _shar_wnt_.tmp
  1142. else
  1143. > _shar_wnt_.tmp
  1144. echo 'x - extracting README (Text)'
  1145. sed 's/^X//' << 'SHAR_EOF' > 'README' &&
  1146. XREADME file for the FAS Final Async Solution driver
  1147. X---------------------------------------------------
  1148. X
  1149. XWhat is this package:
  1150. X
  1151. X     This is an async driver for 286/386 based unix systems that adds
  1152. X     several features that are often not supported by vendors drivers.
  1153. X     It supports
  1154. X
  1155. X        1.  the NS16550A and i82510 UART chips in full FIFO mode.
  1156. X        2.  up to 115200 bps with NS16550A.
  1157. X        3.  built-in modem sharing for input and output.
  1158. X        4.  modem control on both dialin and dialout devices.
  1159. X        5.  full and half duplex hardware flow control.
  1160. X        6.  hardware and software (XON/XOFF) flow control at the same time.
  1161. X        7.  shared interrupts.
  1162. X        8.  multiplexed UART registers (HUB-6 card etc.).
  1163. X        9.  any mix of up to 16 UARTs.
  1164. X       10.  any I/O address, any IRQ.
  1165. X       11.  VP/ix, the ISC DOS emulator.
  1166. X
  1167. X
  1168. X     FAS was successfully tested under the following operating systems:
  1169. X
  1170. X     Microport UNIX SYSV 3.0
  1171. X     ISC UNIX 2.0.2, 2.2 & 3.0
  1172. X     ESIX Rev. C & D
  1173. X     Bell Tech/Intel UNIX 3.2
  1174. X     SCO UNIX 3.2.2 & 3.2.4
  1175. X     SCO XENIX 386 2.3.2
  1176. X     SCO XENIX 286 2.3.2
  1177. X     AT&T UNIX 3.2 V 2.1
  1178. X     SysVr4 UNIX 386 V 2.0 (with tty compatibility drivers)
  1179. X
  1180. X     This driver should work with most of the UNIX SYS V/386 [34].X ports
  1181. X     currently available. You can have both this and the original
  1182. X     vendor driver in the same kernel (if you really like to, but I
  1183. X     wouldn't know why). Each driver controls its own separate set of
  1184. X     serial ports. The only restriction here is that any int vector must
  1185. X     not be used by more than one of the drivers. The kernel config
  1186. X     program will complain otherwise.
  1187. X
  1188. X------------------------------------------------------------------------
  1189. X     
  1190. XHow it works:
  1191. X
  1192. X     DIALIN/DIALOUT ON THE SAME PORT
  1193. X     -------------------------------
  1194. X
  1195. X     This driver supports shared line usage by having two logical
  1196. X     devices sharing one physical line. Each logical device has its
  1197. X     own name. For example for the first line the names are ttyF00
  1198. X     (minor device 0) and ttyFM00 (minor device 192). The ttyF00
  1199. X     is used for cu, kermit, and other programs that want to dial
  1200. X     out. It ignores the modem signals and just goes to it. The
  1201. X     ttyFM00 line is strictly for getty. When getty calls open on
  1202. X     ttyFM00 the driver hangs the open until the modem asserts the
  1203. X     carrier detect signal and then lets the open complete. If cu
  1204. X     opens ttyF00 while getty is waiting for the open to complete
  1205. X     the device is given to cu and the getty open must wait for cu
  1206. X     to finish and then will again wait for the carrier. If cu
  1207. X     tries to open the ttyF00 line while getty has ttyFM00 open cu
  1208. X     will get an error. If getty tries to open ttyFM00 while cu has
  1209. X     ttyF00 open the getty open will just hang and wait for cu to
  1210. X     close the line and then wait for the carrier. To put it simply
  1211. X     you should put up a getty on ttyFM00 with a -t 60 and use ttyF00
  1212. X     for cu and uucico.
  1213. X
  1214. X     Note: In the paragraph above the _real_ getty is meant. With
  1215. X           FAS you don't need hacks like uugetty to do dialin and
  1216. X           dialout on the same port.
  1217. X
  1218. X     In the previous example ttyF00 had a minor device number of 0 and
  1219. X     ttyFM00 one of 192. But there are several other possible minor
  1220. X     device numbers for each port.
  1221. X
  1222. X     The higher bits of the minor device number control the operating
  1223. X     mode of the device. The port can't be opened by two or more
  1224. X     different minor devices at the same time.
  1225. X
  1226. X     Minor device numbers are built according to the following
  1227. X     description:
  1228. X
  1229. X        Bitmap:   m m f f x x x x
  1230. X
  1231. X           `m m' are the mode bits as follows:
  1232. X
  1233. X            0 0   The carrier signal is totally ignored. With carrier high->low
  1234. X                  *no* SIGHUP signal is generated. The device does *not* block
  1235. X                  on open if there is no carrier.
  1236. X            0 1   After an initial open, the carrier signal is ignored.
  1237. X                  However, as soon as there is a low->high carrier transition,
  1238. X                  this device switches to carrier controlled behaviour
  1239. X                  until the last process has closed the device. This
  1240. X                  includes sending a SIGHUP signal on carrier loss.
  1241. X                  Note that after a carrier loss an ioctl call with a TCSETA*
  1242. X                  command resets the device to ignore the carrier again until
  1243. X                  the next carrier low->high. The device does *not* block on
  1244. X                  open if there is no carrier.
  1245. X            1 0   The device is carrier controlled. It blocks on open if
  1246. X                  there is no carrier.
  1247. X            1 1   Same as mode `1 0', but a parallel non-blocking open
  1248. X                  is possible while waiting for carrier.
  1249. X
  1250. X           `f f' are the hardware flow control bits as follows:
  1251. X
  1252. X            0 0   The RTSFLOW/CTSFLOW/CRTSFL termio(7) flags (if available)
  1253. X                  enable half duplex (for output direction, only) or full
  1254. X                  duplex (for input and output direction) hardware flow
  1255. X                  control according to SCO's specifications. If these flags
  1256. X                  are not available no hardware flow control is used by
  1257. X                  this device.
  1258. X            0 1   The device uses full duplex hardware flow control (for
  1259. X                  input and output direction).
  1260. X            1 0   The device uses half duplex hardware flow control (for
  1261. X                  output direction, only).
  1262. X            1 1   Same as mode `1 0', but additionally the output buffer
  1263. X                  state is signaled to the connected device.
  1264. X
  1265. X                  Refer to the `space.c' file to determine which port
  1266. X                  signals are actually used for that purpose.
  1267. X
  1268. X           `x x x x'
  1269. X                  This is the physical port number. This driver supports
  1270. X                  up to 16 ports. If you need more, you should use an
  1271. X                  intelligent serial card because more than 16 devices
  1272. X                  will eat up to much CPU time with this dumb-port approach.
  1273. X
  1274. X     - Note: If a device is carrier controlled, this implies the generation
  1275. X             of a SIGHUP signal with every carrier high->low. This is of
  1276. X             course only true if the CLOCAL flag is *not* set.
  1277. X
  1278. X             On my own system I prefer a minor device number of `0101xxxx'
  1279. X             (80 + device #) for the non-blocking tty node and `1101xxxx'
  1280. X             (208 + device #) for the blocking tty node. This gives me
  1281. X             the SIGHUP signal on carrier loss and full duplex hardware
  1282. X             flow control with both logical devices. Dialout while a dialin
  1283. X             open is waiting for the carrier is also possible with this
  1284. X             setup. These numbers are the defaults in the `n_fas-*' sample
  1285. X             files.
  1286. X
  1287. X
  1288. X     HARDWARE FLOW CONTROL
  1289. X     ---------------------
  1290. X
  1291. X     FAS supports both full and half duplex hardware flow control, using
  1292. X     the RS232C RTS/CTS control lines (by default).
  1293. X
  1294. X     Full duplex flow control is a method to control character flow in
  1295. X     both input and output directions while in half duplex flow control
  1296. X     mode only the output direction is controlled.
  1297. X
  1298. X     You can select between full and half duplex flow control via the
  1299. X     minor device number of the device. In full duplex mode the RTS line
  1300. X     controls the input direction and the CTS line is responsible for the
  1301. X     output direction. In half duplex mode RTS tells the connected device
  1302. X     whether there is data in the output buffer (optional), and the CTS
  1303. X     line has the same function as in full duplex mode.
  1304. X
  1305. X     Full duplex mode:
  1306. X
  1307. X          As long as the FAS input buffer hasn't reached a certain
  1308. X          threshold the RTS line is set high to signal the connected
  1309. X          device that it may send characters. If the input buffer level
  1310. X          rises beyond this threshold RTS will go low and the device
  1311. X          is supposed to stop sending characters. As soon as there is
  1312. X          sufficient space in the input buffer RTS will go high again
  1313. X          and the character flow may continue.
  1314. X
  1315. X          The CTS line works the other way round. If the connected device
  1316. X          sets CTS to high the FAS character output is enabled. If CTS is
  1317. X          low, the output is stopped. There is a special feature for the
  1318. X          CTS part of the handshake. CTS is only looked at if the DSR
  1319. X          line is high. If DSR is low or not connected hardware output
  1320. X          handshake is disabled, that is, FAS sends characters
  1321. X          regardless of the state of CTS.
  1322. X
  1323. X          This has two advantages. At first, if you switch off a serial
  1324. X          device connected to an FAS port with hardware flow control
  1325. X          CTS will go low and therefore the output gets blocked. If at
  1326. X          this time there are still characters in the output buffer the
  1327. X          last process closing this port can't terminate until the
  1328. X          buffer has drained.
  1329. X
  1330. X          But as DSR will also go low if you switch off the device
  1331. X          this blocking of the output will be prevented. In short:
  1332. X          Hardware output handshake is only used if the connected
  1333. X          device sets DSR high, that is, the device is switched on
  1334. X          and is ready. So make sure that you keep this in mind when
  1335. X          you make serial cables and when you configure your serial
  1336. X          devices. DSR must be on if you want CTS handshake.
  1337. X
  1338. X          The other advantage of this CTS/DSR mechanismn is that you
  1339. X          can still connect dumb serial devices to an FAS hardware
  1340. X          handshake port using a minimal 3-wire cable. As an unconnected
  1341. X          DSR line is automatically low hardware output handshake is
  1342. X          disabled, which is just what you wanted in this case.
  1343. X
  1344. X          The CLOCAL flag doesn't affect this mode.
  1345. X
  1346. X          Note: If you use a minor device number where hardware handshake
  1347. X                is disabled ("First mode" below) you can, if you have
  1348. X                SCO UNIX 3.2.4, enable full duplex hardware flow control
  1349. X                by setting the CRTSFL termio(7) flag. Note that this only
  1350. X                works if neither CTSFLOW/RTSFLOW nor CLOCAL are set.
  1351. X
  1352. X     Half duplex mode:
  1353. X
  1354. X          There are actually three half duplex modes selected by
  1355. X          the minor device number:
  1356. X
  1357. X          First mode:
  1358. X             If the RTSFLOW termio(7) flag is set and the CLOCAL flag
  1359. X             is _not_ set the RTS line is used to signal the connected
  1360. X             device that there is data in the output buffer. As long as
  1361. X             there is output data to come the RTS line stays high. If
  1362. X             the output buffer has drained RTS drops to low until there
  1363. X             is more data to be sent to the connected device.
  1364. X
  1365. X             If the CTSFLOW termio(7) flag is set and the CLOCAL flag
  1366. X             is _not_ set the CTS line is used to control the output
  1367. X             character flow. This works as in full duplex mode.
  1368. X
  1369. X             If neither CTSFLOW nor RTSFLOW are set hardware flow control
  1370. X             is disabled. But see the description of the CRTSFL termio(7)
  1371. X             flag at the end of the full duplex mode section above.
  1372. X
  1373. X             Note: Setting the CTSFLOW and RTSFLOW flags (and CRTSFL,
  1374. X                   if available) only applies to SCO UNIX and Xenix. To
  1375. X                   my knowledge, other UNIX flavours don't have these
  1376. X                   flags. For them, hardware flow control is always
  1377. X                   disabled in this mode.
  1378. X
  1379. X          Second mode:
  1380. X             This mode overrides the RTSFLOW/CTSFLOW/CRTSFL flags and works
  1381. X             as if the CTSFLOW flag is set permanently (all UNIX flavours).
  1382. X             The CLOCAL flag doesn't affect this mode.
  1383. X
  1384. X          Third mode:
  1385. X             This mode overrides the RTSFLOW/CTSFLOW/CRTSFL flags and works
  1386. X             as if both the RTSFLOW and CTSFLOW flags are set permanently
  1387. X             (all UNIX flavours). The CLOCAL flag doesn't affect this mode.
  1388. X
  1389. X     Note: Under SCO UNIX and Xenix the termio(7) RTSFLOW flag is
  1390. X           intended for half duplex hardware flow control devices.
  1391. X           Setting it when the connected device does _full_ duplex
  1392. X           hardware flow control is a configuration error! The RTS
  1393. X           signalling for half duplex devices has a completely different
  1394. X           meaning than for full duplex devices. So you should either
  1395. X           set only CTSFLOW (or CRTSFL, if available), or you should
  1396. X           select hardware flow control via the minor device number.
  1397. X           If you set RTSFLOW for full duplex hardware flow control
  1398. X           devices it is likely that the port won't work. This is in
  1399. X           line with SCO's sio driver implementation.
  1400. X
  1401. X     On UNIX flavours where the RTS_TOG ioctl() command is available
  1402. X     the hardware handshake output (RTS by default) can be set under
  1403. X     program control. An ioctl() argument of `0' sets the output to
  1404. X     low and an argument of `1' sets it to high. However, this only
  1405. X     works if the hardware handshake modes as well as DOS mode are
  1406. X     disabled. If one of these modes is enabled FAS needs the hardware
  1407. X     handshake output for its own flow control. On the other hand,
  1408. X     even if one of these modes is in use and FAS gets an RTS_TOG
  1409. X     command, the state of the handware handshake output that this
  1410. X     command tries to set is stored and the output is set to the
  1411. X     state of the last RTS_TOG command as soon as both hardware
  1412. X     handshake modes and DOS mode are disabled. In other words,
  1413. X     FAS doesn't block the RTS_TOG command if hardware handshake
  1414. X     modes or DOS mode are set but rather overrides the hardware
  1415. X     handshake output with the appropriate state computed internally.
  1416. X
  1417. X
  1418. X     VP/ix SUPPORT
  1419. X     -------------
  1420. X
  1421. X     FAS allows DOS programs running under VP/ix to access serial
  1422. X     ports. You simply need to modify your personal VP/ix configuration
  1423. X     file (`vpix.cnf') to tell the DOS emulator which FAS devices to
  1424. X     use for COM1 (or COM1MOUSE) and COM2. Note that VP/ix opens
  1425. X     these devices at startup time, so you better make sure that
  1426. X     the desired devices aren't used by other processes when you
  1427. X     start VP/ix as VP/ix wants to use them exclusively.
  1428. X
  1429. X     There are some special features with the handling of the RTS and
  1430. X     DTR lines you should know about. If your DOS program asserts
  1431. X     the DTR line this will actually cause action on the modem
  1432. X     enable line you configured in `space.c'. Likewise, RTS asserts
  1433. X     the half duplex hardware handshake line configured in `space.c'.
  1434. X
  1435. X     If the used FAS device has full duplex hardware handshake enabled,
  1436. X     asserting RTS from DOS actually stops the character flow from FAS
  1437. X     to VP/ix. This prevents input buffers of interrupt driven DOS
  1438. X     programs from overflowing. FAS, on the other hand, uses its hardware
  1439. X     handshake to prevent an overflow of its own input buffer. Therefore,
  1440. X     you can use DOS telecommunication programs even at high baud rates
  1441. X     without losing characters, provided your DOS programs are
  1442. X     configured to use full duplex RTS/CTS flow control.
  1443. X
  1444. X     All this virtual handling has the advantage that the DOS program
  1445. X     doesn't need to know certain details about your actual port setup.
  1446. X     Reading the modem status register, on the other hand, doesn't cause
  1447. X     any translation of the register value.
  1448. X
  1449. X     To enable VP/ix support, you have to uncomment the `HAVE_VPIX'
  1450. X     define in `fas.h'.
  1451. X
  1452. X
  1453. X     MODIFYING A PORT'S DEFAULT BEHAVIOUR
  1454. X     ------------------------------------
  1455. X
  1456. X     There are some flags that you can "or" into the base port address
  1457. X     in fas_port [] (`space.c') for each port independently. You have
  1458. X     to relink the kernel before these flags have any effect. Here is
  1459. X     a description:
  1460. X
  1461. X          NO_FIFO
  1462. X             Don't use the FIFO in the UART. This marks the port with
  1463. X             a `+' character in the init message at boot time. You can
  1464. X             use this if the RX and TX FIFO thresholds interfere with
  1465. X             your application (especially at low speeds).
  1466. X
  1467. X          NO_TEST
  1468. X             If for some reason a UART doesn't pass the functionallity
  1469. X             test FAS makes at boot time you can override the test
  1470. X             result and use this port, anyway. However, you do this
  1471. X             on your own risk. Don't be surprised if ports get hung
  1472. X             or your machine crashes. I won't support FAS installations
  1473. X             where this flag is used. It is intended as a last resort.
  1474. X
  1475. X          HS_57600
  1476. X             If you want to have 57600 bps on a port instead of 38400 bps
  1477. X             you should set this flag. The 38400 bps setting is replaced
  1478. X             with 57600 bps. As UNIX doesn't know this speed `stty'
  1479. X             will still report 38400 bps. Don't let this confuse you.
  1480. X             FAS hides the 57600 bps speed from the kernel because
  1481. X             UNIX doesn't have support for speeds above 38400 bps.
  1482. X             Note: The HS_57600 and HS_115200 flags are exclusive, that
  1483. X                   is, for a given port you can set either HS_57600 or
  1484. X                   HS_115200, but not both at the same time. If both
  1485. X                   flags are set the HS_115200 flag overrides HS_57600.
  1486. X
  1487. X          HS_115200
  1488. X             Same as with HS_57600, but the 38400 bps setting is
  1489. X             replaced with 115200 bps.
  1490. X             Note: At this high speed it is very likely that even an
  1491. X                   NS16550A will lose incoming characters because in
  1492. X                   many UNIX flavours the worst case interrupt latency
  1493. X                   is rather high. It has to be <= 1 ms or you are in
  1494. X                   trouble. This problem is caused by the UNIX kernel
  1495. X                   design. FAS can't do anything about it. However,
  1496. X                   ISC UNIX 3.0 on a 486/33 works fine at this speed.
  1497. X           On the other hand, ISC UNIX 2.x can't handle it.
  1498. X
  1499. X          NEW_CTSRTS
  1500. X             Many "intelligent" serial cards from third party vendors
  1501. X             have the meaning of the RTSFLOW termio(7) flag redefined.
  1502. X             It is used, together with CTSFLOW, to enable full duplex
  1503. X             hardware flow control, whereas SCO introduced RTSFLOW for
  1504. X             the more traditional half duplex hardware flow control
  1505. X             that is implemented in their sio driver. By default, FAS
  1506. X             emulates the sio driver for compatibility reasons. However,
  1507. X             if you like to use CTSFLOW/RTSFLOW for full duplex hardware
  1508. X             flow control in a way that is compatible with the above
  1509. X             mentioned "intelligent" cards, you can do this by setting
  1510. X             NEW_CTSRTS. Also, CTSFLOW/RTSFLOW are no longer affected by
  1511. X             CLOCAL if NEW_CTSRTS is set. In this mode CTSFLOW enables
  1512. X             the output flow control and RTSFLOW enables the input flow
  1513. X             control. Both flags are independent from each other.
  1514. X
  1515. X     All these flags are defined in `fas.h'. For example, if you
  1516. X     want to connect one of those new fast modems at 57600 bps to a port
  1517. X     on base address 0x3f8 you would write
  1518. X
  1519. X          0x3f8 | HS_57600
  1520. X
  1521. X     at the appropriate position in fas_port []. After installing this
  1522. X     FAS configuration and relinking the kernel you can use the modem
  1523. X     with 57600 bps by just pretending that you have a 38400 bps device.
  1524. X     In the modem's internal setup you have to specify 57600 bps, of
  1525. X     course. However, note that you can lose incoming characters at
  1526. X     this speed if you have a slow mother board.
  1527. X
  1528. X
  1529. X     WHICH SERIAL CARDS ARE SUPPORTED ?
  1530. X     ----------------------------------
  1531. X
  1532. X     The driver supports and has been tested on many serial async
  1533. X     dumb port cards. It supports most combinations of shared
  1534. X     interrupts. The current driver supports NS16450, NS16550A,
  1535. X     um82450 and i82510. 8250 chips are not supported due to various
  1536. X     bugs and speed problems in these parts. They have no place in any
  1537. X     286/386 or other high performance system. Replace them with one of
  1538. X     the supported chips. They are pin-to-pin compatible.
  1539. X     
  1540. X     ATTENTION: Don't use NS16550 (without the trailing `A') or
  1541. X                WD16550 chips, or any chips from a second source
  1542. X                manufacturer! They are all buggy and won't work with
  1543. X                FAS. Some aren't even recognized by the FIFO auto-
  1544. X                detect code in FAS. Therefore, even if they are
  1545. X                cheaper, don't buy them.
  1546. X                
  1547. X     Take a look at the various samples of space-xxxx for details
  1548. X     of how to set up for various devices.
  1549. X
  1550. X     At boot time you will see a status message on the screen with
  1551. X     symbols that show the init state of each port. The symbols
  1552. X     are as follows:
  1553. X
  1554. X        -     not defined in the fas_port array
  1555. X        ?     can't initialize port
  1556. X        1-9   error during test phase indicated by number
  1557. X        *     port is initialized (NS16450)
  1558. X        +     port is initialized and has FIFOs forced off
  1559. X        f     port is initialized and has FIFOs (i82510)
  1560. X        F     port is initialized and has FIFOs (NS16550A)
  1561. X
  1562. X     This is convenient to check whether you have entered the proper port
  1563. X     base addresses in `space.c'.
  1564. X
  1565. X
  1566. X     WHICH CARD WILL SUPPORT SHARED INTERRUPTS ?
  1567. X     -------------------------------------------
  1568. X
  1569. X     Many multi-port cards have jumpers or dip switches that let you
  1570. X     assign more than one port to the same interrupt (IRQ) line. This alone
  1571. X     is _no_ guaranty that they really support shared interrupts! These
  1572. X     cards may be designed for the DOS world where you may want two or more
  1573. X     serial ports but don't need to run them concurrently, that is, no more
  1574. X     than one of those ports assigned to the same IRQ line is allowed to be
  1575. X     in use at a time. For DOS this is sufficient as DOS is no multitasking
  1576. X     operating system. For UNIX this won't work because in the worst case
  1577. X     all serial ports may be in use at the same time.
  1578. X
  1579. X     The basic problem is that the PC (and AT) I/O bus can't handle shared
  1580. X     interrupts itself. This is due to a brain-dead hardware design. Therefore,
  1581. X     there must be some special logic on the serial card to provide shared
  1582. X     interrupts. And those cards are quite rare (and usually more expensive).
  1583. X
  1584. X     Therefore, you have the choice to give every port on the card its own
  1585. X     IRQ line or to buy a multi-port card that really has shared interrupts.
  1586. X     But in the latter case you better ask your vendor twice to make shure
  1587. X     that it has this functionality because from the card's manuals it often
  1588. X     isn't obvious which type of card it is. One well-known shared interrupts
  1589. X     card is the AST 4-port card. There are many compatible clones available
  1590. X     that are usually much cheaper than the original. You can even buy
  1591. X     AST compatible 8-port cards where two AST 4-port blocks are on the
  1592. X     same board.
  1593. X
  1594. X
  1595. X     CABLING
  1596. X     -------
  1597. X
  1598. X     Don't leave unused input lines (CTS, DCD, DSR, RI) open! Due
  1599. X     to crosstalking from other lines these input lines might change
  1600. X     their logic level, resulting in all sorts of problems (bad
  1601. X     throughput, blocked character output etc.). Therefore, you should
  1602. X     connect any unused input line to GND (pin 7 on the D-Sub 25 RS232C
  1603. X     connector). Additionally, you should use the proper operating
  1604. X     mode (via the minor device number) for your application, for
  1605. X     instance, if the connected device doesn't have hardware flow
  1606. X     control, you should use a mode where hardware flow control is
  1607. X     disabled. The same is true for modem control.
  1608. X
  1609. X     ATTENTION: If you want to connect two UNIX systems (both using
  1610. X     FAS) via a null modem cable, and if you want to run a getty
  1611. X     on both ends you need to modify the `space.c' file to prevent
  1612. X     both gettys talking to each other, wasting valuable CPU time.
  1613. X     Remove the `EI_DTR' (or `EI_RTS', depending on your setup) macro
  1614. X     for the desired port from the initializer part of the `fas_modem'
  1615. X     array. This will cause DTR (or RTS) to be asserted only on
  1616. X     dialout. Therefore, the getty at the other end will become alive
  1617. X     only if a dialout is in progress.
  1618. X
  1619. X     Another caveat is connecting a mouse or other pointer device to an
  1620. X     FAS port. There are many mice on the market that don't handle the
  1621. X     modem and flow control lines in a proper way. Therefore, they should
  1622. X     be connected to a port with a minor device number of 0 + device #.
  1623. X     This disables any modem or flow control and prevents the device from
  1624. X     locking up under certain circumstances.
  1625. X
  1626. X
  1627. X     A WORD ABOUT CHARACTER LOSSES
  1628. X     -----------------------------
  1629. X
  1630. X     If you've experienced character losses with your vendor async
  1631. X     driver at high baud rates you shouldn't blame the vendor for
  1632. SHAR_EOF
  1633. true || echo 'restore of README failed'
  1634. fi
  1635. echo 'End of fas210 part 1'
  1636. echo 'File README is continued in part 2'
  1637. echo 2 > _shar_seq_.tmp
  1638. exit 0
  1639. -- 
  1640. Uwe Doering  |  INET : gemini@geminix.in-berlin.de
  1641. Berlin       |----------------------------------------------------------------
  1642. Germany      |  UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
  1643.