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

  1. Xref: sparky comp.unix.sysv386:13242 comp.unix.xenix.sco:2699 alt.sources:1888
  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 5/5
  6. Organization: Private UNIX Site
  7. Date: Mon, 17 Aug 1992 11:38:19 GMT
  8. Message-ID: <F5557UC@geminix.in-berlin.de>
  9. Lines: 1702
  10.  
  11. Submitted-by: gemini@geminix.in-berlin.de
  12. Archive-name: fas210/part05
  13.  
  14. #!/bin/sh
  15. # this is fas210.05 (part 5 of fas210)
  16. # do not concatenate these parts, unpack them in order with /bin/sh
  17. # file fas.h continued
  18. #
  19. if test ! -r _shar_seq_.tmp; then
  20.     echo 'Please unpack part 1 first!'
  21.     exit 1
  22. fi
  23. (read Scheck
  24.  if test "$Scheck" != 5; then
  25.     echo Please unpack part "$Scheck" next!
  26.     exit 1
  27.  else
  28.     exit 0
  29.  fi
  30. ) < _shar_seq_.tmp || exit 1
  31. if test ! -f _shar_wnt_.tmp; then
  32.     echo 'x - still skipping fas.h'
  33. else
  34. echo 'x - continuing file fas.h'
  35. sed 's/^X//' << 'SHAR_EOF' >> 'fas.h' &&
  36. X#define    LC_WORDLEN_8        0x03
  37. X#define LC_STOPBITS_LONG    0x04
  38. X#define LC_ENABLE_PARITY    0x08
  39. X#define LC_EVEN_PARITY        0x10
  40. X#define LC_STICK_PARITY        0x20
  41. X#define LC_SET_BREAK_LEVEL    0x40
  42. X#define LC_ENABLE_DIVISOR    0x80
  43. X
  44. X/* line status port */
  45. X
  46. X#define LS_RCV_AVAIL        0x01
  47. X#define LS_OVERRUN        0x02
  48. X#define LS_PARITY_ERROR        0x04
  49. X#define LS_FRAMING_ERROR    0x08
  50. X#define LS_BREAK_DETECTED    0x10
  51. X#define LS_XMIT_AVAIL        0x20
  52. X#define LS_XMIT_COMPLETE    0x40
  53. X#define LS_ERROR_IN_NS_FIFO    0x80    /* NS16550A only */
  54. X#define LS_RCV_INT    (LS_RCV_AVAIL | LS_OVERRUN | LS_PARITY_ERROR \
  55. X            | LS_FRAMING_ERROR | LS_BREAK_DETECTED)
  56. X
  57. X/* fifo control port (NS16550A only) */
  58. X
  59. X#define    NS_FIFO_ENABLE        0x01
  60. X#define    NS_FIFO_CLR_RECV    0x02
  61. X#define    NS_FIFO_CLR_XMIT    0x04
  62. X#define    NS_FIFO_START_DMA    0x08
  63. X#define NS_FIFO_SIZE_1        0x00
  64. X#define NS_FIFO_SIZE_4        0x40
  65. X#define NS_FIFO_SIZE_8        0x80
  66. X#define NS_FIFO_SIZE_14        0xC0
  67. X#define NS_FIFO_SIZE_MASK    0xC0
  68. X
  69. X#define NS_FIFO_CLEAR_CMD    0
  70. X#if defined (LOW_INT_LAT)
  71. X#define NS_FIFO_SETUP_CMD    (NS_FIFO_SIZE_8 | NS_FIFO_ENABLE)
  72. X#else
  73. X#define NS_FIFO_SETUP_CMD    (NS_FIFO_SIZE_4 | NS_FIFO_ENABLE)
  74. X#endif
  75. X#define NS_FIFO_INIT_CMD    (NS_FIFO_SETUP_CMD | NS_FIFO_CLR_RECV \
  76. X                | NS_FIFO_CLR_XMIT)
  77. X
  78. X#define INPUT_NS_FIFO_SIZE    16
  79. X#define OUTPUT_NS_FIFO_SIZE    16
  80. X
  81. X/* fifo control ports (i82510 only) */
  82. X
  83. X#define I_BANK_0        0x00
  84. X#define I_BANK_1        0x20
  85. X#define I_BANK_2        0x40
  86. X#define I_BANK_3        0x60
  87. X#define I_FIFO_ENABLE        0x08
  88. X#define I_FIFO_CLR_RECV        0x30
  89. X#define I_FIFO_CLR_XMIT        0x0c
  90. X
  91. X#define I_FIFO_CLEAR_CMD    0
  92. X#define I_FIFO_SETUP_CMD    I_FIFO_ENABLE
  93. X
  94. X#define INPUT_I_FIFO_SIZE    4
  95. X#define OUTPUT_I_FIFO_SIZE    4
  96. X
  97. X/* defines for ioctl calls (VP/ix) */
  98. X
  99. X#define AIOC            ('A'<<8)
  100. X#define AIOCINTTYPE        (AIOC|60)    /* set interrupt type */
  101. X#define AIOCDOSMODE        (AIOC|61)    /* set DOS mode */
  102. X#define AIOCNONDOSMODE        (AIOC|62)    /* reset DOS mode */
  103. X#define AIOCSERIALOUT        (AIOC|63)    /* serial device data write */
  104. X#define AIOCSERIALIN        (AIOC|64)    /* serial device data read */
  105. X#define AIOCSETSS        (AIOC|65)    /* set start/stop chars */
  106. X#define AIOCINFO        (AIOC|66)    /* tell us what device we are */
  107. X
  108. X/* ioctl alternate names used by VP/ix */
  109. X
  110. X#define VPC_SERIAL_DOS        AIOCDOSMODE
  111. X#define VPC_SERIAL_NONDOS    AIOCNONDOSMODE
  112. X#define VPC_SERIAL_INFO        AIOCINFO
  113. X#define VPC_SERIAL_OUT        AIOCSERIALOUT
  114. X#define VPC_SERIAL_IN        AIOCSERIALIN
  115. X
  116. X/* serial in/out requests */
  117. X
  118. X#define SO_DIVLLSB        1
  119. X#define SO_DIVLMSB        2
  120. X#define SO_LCR            3
  121. X#define SO_MCR            4
  122. X#define SI_MSR            1
  123. X#define SIO_MASK(x)        (1<<((x)-1))
  124. X
  125. X
  126. X/* This structure contains everything one would like to know about
  127. X   an open device.  There is one of it for each physical unit.
  128. X
  129. X   We use several unions to eliminate most integer type conversions
  130. X   at run-time. The standard UNIX V 3.X/386 C compiler forces all
  131. X   operands in expressions and all function parameters to type int.
  132. X   To save some time, with the means of unions we deliver type int
  133. X   at the proper locations while dealing with the original type
  134. X   wherever int would be slower.
  135. X
  136. X   This is highly compiler implementation specific. But for the sake
  137. X   of speed the end justifies the means.
  138. X
  139. X   Take care that the size of the area that contains the various
  140. X   structure fields (up to, but excluding the ring buffers)
  141. X   is <= 128 bytes. Otherwise a 4-byte offset is used to access
  142. X   some of the structure fields. For the first 128 bytes a 1-byte
  143. X   offset is used, which is faster.
  144. X*/
  145. X
  146. Xstruct    fas_internals
  147. X{
  148. X    struct    tty    *tty;    /* the tty structure */
  149. X    struct    fas_internals *prev_int_user;/* link to previous struct */
  150. X    struct    fas_internals *next_int_user;/* link to next struct */
  151. X    int    timeout_idx;    /* timeout index for untimeout () */
  152. X    n_ushort iflag;        /* current terminal input flags */
  153. X    n_ushort cflag;        /* current terminal hardware control flags */
  154. X    union {            /* flags about the device state */
  155. X        ushort    s;
  156. X        n_ushort i;
  157. X    } device_flags;
  158. X    union {            /* flags about the flow control state */
  159. X        ushort    s;
  160. X        n_ushort i;
  161. X    } flow_flags;
  162. X    union {            /* flags about the scheduled events */
  163. X        ushort    s;
  164. X        n_ushort i;
  165. X    } event_flags;
  166. X    n_ushort o_state;    /* current open state */
  167. X    n_ushort po_state;    /* previous open state */
  168. X    union {            /* modem control masks */
  169. X        struct {
  170. X            unchar    di;    /* mask for modem disable */
  171. X            unchar    eo;    /* mask for modem enable (dialout) */
  172. X            unchar    ei;    /* mask for modem enable (dialin) */
  173. X            unchar    ca;    /* mask for carrier detect */
  174. X        } m;
  175. X        ulong    l;
  176. X    } modem;
  177. X    union {            /* hardware flow control masks */
  178. X        struct {
  179. X            unchar    ic;    /* control mask for inp. flow ctrl */
  180. X            unchar    oc;    /* control mask for outp. flow ctrl */
  181. X            unchar    oe;    /* enable mask for outp. flow ctrl */
  182. X            unchar    hc;    /* control mask for hdx flow ctrl */
  183. X        } m;
  184. X        ulong    l;
  185. X    } flow;
  186. X    unchar    msr;        /* modem status register value */
  187. X    unchar    new_msr;    /* new modem status register value */
  188. X    unchar    lsr;        /* line status register value */
  189. X    unchar    mcr;        /* modem control register value */
  190. X    unchar    lcr;        /* line control register value */
  191. X    unchar    ier;        /* interrupt enable register value */
  192. X    unchar    device_type;    /* device type determined by fasinit () */
  193. X    unchar    start_char;    /* start character for software flow control */
  194. X    unchar    stop_char;    /* stop character for software flow control */
  195. X#if defined (HAVE_VPIX)
  196. X    unchar    v86_intmask;    /* VP/ix pseudorupt mask */
  197. X    v86_t    *v86_proc;    /* VP/ix v86proc pointer for pseudorupts */
  198. X#endif
  199. X    uint    ctl_port;    /* muliplexer control port */
  200. X    union {            /* uart port addresses and control values */
  201. X        uint    addr;
  202. X        struct {
  203. X            ushort    addr;
  204. X            unchar    ctl;
  205. X        } p;
  206. X    } port_0, port_1, port_2, port_3, port_4, port_5, port_6;
  207. X    n_ushort recv_ring_cnt;    /* receiver ring buffer counter */
  208. X    unchar    *recv_ring_put_ptr;    /* recv ring buf put ptr */
  209. X    unchar    *recv_ring_take_ptr;    /* recv ring buf take ptr */
  210. X    ushort    xmit_fifo_size;    /* transmitter FIFO size */
  211. X    ushort    xmit_ring_size;    /* transmitter ring buffer size */
  212. X    n_ushort xmit_ring_cnt;    /* transmitter ring buffer counter */
  213. X    unchar    *xmit_ring_put_ptr;    /* xmit ring buf put ptr */
  214. X    unchar    *xmit_ring_take_ptr;    /* xmit ring buf take ptr */
  215. X    unchar    recv_buffer [RECV_BUFF_SIZE];    /* recv ring buf */
  216. X    unchar    xmit_buffer [XMIT_BUFF_SIZE];    /* xmit ring buf */
  217. X};
  218. SHAR_EOF
  219. echo 'File fas.h is complete' &&
  220. true || echo 'restore of fas.h failed'
  221. rm -f _shar_wnt_.tmp
  222. fi
  223. # ============= i_fas-ast4 ==============
  224. if test -f 'i_fas-ast4' -a X"$1" != X"-c"; then
  225.     echo 'x - skipping i_fas-ast4 (File already exists)'
  226.     rm -f _shar_wnt_.tmp
  227. else
  228. > _shar_wnt_.tmp
  229. echo 'x - extracting i_fas-ast4 (Text)'
  230. sed 's/^X//' << 'SHAR_EOF' > 'i_fas-ast4' &&
  231. XF0:23:off:/etc/getty ttyFM00 9600
  232. XF1:23:off:/etc/getty ttyFM01 9600
  233. XF2:23:off:/etc/getty ttyFM02 9600
  234. XF3:23:off:/etc/getty ttyFM03 9600
  235. SHAR_EOF
  236. true || echo 'restore of i_fas-ast4 failed'
  237. rm -f _shar_wnt_.tmp
  238. fi
  239. # ============= i_fas-ast4c12 ==============
  240. if test -f 'i_fas-ast4c12' -a X"$1" != X"-c"; then
  241.     echo 'x - skipping i_fas-ast4c12 (File already exists)'
  242.     rm -f _shar_wnt_.tmp
  243. else
  244. > _shar_wnt_.tmp
  245. echo 'x - extracting i_fas-ast4c12 (Text)'
  246. sed 's/^X//' << 'SHAR_EOF' > 'i_fas-ast4c12' &&
  247. XF0:23:off:/etc/getty ttyFM00 9600
  248. XF1:23:off:/etc/getty ttyFM01 9600
  249. XF2:23:off:/etc/getty ttyFM02 9600
  250. XF3:23:off:/etc/getty ttyFM03 9600
  251. XF4:23:off:/etc/getty ttyFM04 9600
  252. XF5:23:off:/etc/getty ttyFM05 9600
  253. SHAR_EOF
  254. true || echo 'restore of i_fas-ast4c12 failed'
  255. rm -f _shar_wnt_.tmp
  256. fi
  257. # ============= i_fas-c12 ==============
  258. if test -f 'i_fas-c12' -a X"$1" != X"-c"; then
  259.     echo 'x - skipping i_fas-c12 (File already exists)'
  260.     rm -f _shar_wnt_.tmp
  261. else
  262. > _shar_wnt_.tmp
  263. echo 'x - extracting i_fas-c12 (Text)'
  264. sed 's/^X//' << 'SHAR_EOF' > 'i_fas-c12' &&
  265. XF0:23:off:/etc/getty ttyFM00 9600
  266. XF1:23:off:/etc/getty ttyFM01 9600
  267. SHAR_EOF
  268. true || echo 'restore of i_fas-c12 failed'
  269. rm -f _shar_wnt_.tmp
  270. fi
  271. # ============= i_fas-c123 ==============
  272. if test -f 'i_fas-c123' -a X"$1" != X"-c"; then
  273.     echo 'x - skipping i_fas-c123 (File already exists)'
  274.     rm -f _shar_wnt_.tmp
  275. else
  276. > _shar_wnt_.tmp
  277. echo 'x - extracting i_fas-c123 (Text)'
  278. sed 's/^X//' << 'SHAR_EOF' > 'i_fas-c123' &&
  279. XF0:23:off:/etc/getty ttyFM00 9600
  280. XF1:23:off:/etc/getty ttyFM01 9600
  281. XF2:23:off:/etc/getty ttyFM02 9600
  282. SHAR_EOF
  283. true || echo 'restore of i_fas-c123 failed'
  284. rm -f _shar_wnt_.tmp
  285. fi
  286. # ============= i_fas-digi8c1 ==============
  287. if test -f 'i_fas-digi8c1' -a X"$1" != X"-c"; then
  288.     echo 'x - skipping i_fas-digi8c1 (File already exists)'
  289.     rm -f _shar_wnt_.tmp
  290. else
  291. > _shar_wnt_.tmp
  292. echo 'x - extracting i_fas-digi8c1 (Text)'
  293. sed 's/^X//' << 'SHAR_EOF' > 'i_fas-digi8c1' &&
  294. XF0:23:off:/etc/getty ttyFM00 9600
  295. XF1:23:off:/etc/getty ttyFM01 9600
  296. XF2:23:off:/etc/getty ttyFM02 9600
  297. XF3:23:off:/etc/getty ttyFM03 9600
  298. XF4:23:off:/etc/getty ttyFM04 9600
  299. XF5:23:off:/etc/getty ttyFM05 9600
  300. XF6:23:off:/etc/getty ttyFM06 9600
  301. XF7:23:off:/etc/getty ttyFM07 9600
  302. XF8:23:off:/etc/getty ttyFM08 9600
  303. SHAR_EOF
  304. true || echo 'restore of i_fas-digi8c1 failed'
  305. rm -f _shar_wnt_.tmp
  306. fi
  307. # ============= i_fas-hub6 ==============
  308. if test -f 'i_fas-hub6' -a X"$1" != X"-c"; then
  309.     echo 'x - skipping i_fas-hub6 (File already exists)'
  310.     rm -f _shar_wnt_.tmp
  311. else
  312. > _shar_wnt_.tmp
  313. echo 'x - extracting i_fas-hub6 (Text)'
  314. sed 's/^X//' << 'SHAR_EOF' > 'i_fas-hub6' &&
  315. XF0:23:off:/etc/getty ttyFM00 9600
  316. XF1:23:off:/etc/getty ttyFM01 9600
  317. XF2:23:off:/etc/getty ttyFM02 9600
  318. XF3:23:off:/etc/getty ttyFM03 9600
  319. XF4:23:off:/etc/getty ttyFM04 9600
  320. XF5:23:off:/etc/getty ttyFM05 9600
  321. SHAR_EOF
  322. true || echo 'restore of i_fas-hub6 failed'
  323. rm -f _shar_wnt_.tmp
  324. fi
  325. # ============= n_fas-ast4 ==============
  326. if test -f 'n_fas-ast4' -a X"$1" != X"-c"; then
  327.     echo 'x - skipping n_fas-ast4 (File already exists)'
  328.     rm -f _shar_wnt_.tmp
  329. else
  330. > _shar_wnt_.tmp
  331. echo 'x - extracting n_fas-ast4 (Text)'
  332. sed 's/^X//' << 'SHAR_EOF' > 'n_fas-ast4' &&
  333. Xfas    ttyF00    c    80
  334. Xfas    ttyF01    c    81
  335. Xfas    ttyF02    c    82
  336. Xfas    ttyF03    c    83
  337. Xfas    ttyFM00    c    208
  338. Xfas    ttyFM01    c    209
  339. Xfas    ttyFM02    c    210
  340. Xfas    ttyFM03    c    211
  341. SHAR_EOF
  342. true || echo 'restore of n_fas-ast4 failed'
  343. rm -f _shar_wnt_.tmp
  344. fi
  345. # ============= n_fas-ast4c12 ==============
  346. if test -f 'n_fas-ast4c12' -a X"$1" != X"-c"; then
  347.     echo 'x - skipping n_fas-ast4c12 (File already exists)'
  348.     rm -f _shar_wnt_.tmp
  349. else
  350. > _shar_wnt_.tmp
  351. echo 'x - extracting n_fas-ast4c12 (Text)'
  352. sed 's/^X//' << 'SHAR_EOF' > 'n_fas-ast4c12' &&
  353. Xfas    ttyF00    c    80
  354. Xfas    ttyF01    c    81
  355. Xfas    ttyF02    c    82
  356. Xfas    ttyF03    c    83
  357. Xfas    ttyF04    c    84
  358. Xfas    ttyF05    c    85
  359. Xfas    ttyFM00    c    208
  360. Xfas    ttyFM01    c    209
  361. Xfas    ttyFM02    c    210
  362. Xfas    ttyFM03    c    211
  363. Xfas    ttyFM04    c    212
  364. Xfas    ttyFM05    c    213
  365. SHAR_EOF
  366. true || echo 'restore of n_fas-ast4c12 failed'
  367. rm -f _shar_wnt_.tmp
  368. fi
  369. # ============= n_fas-c12 ==============
  370. if test -f 'n_fas-c12' -a X"$1" != X"-c"; then
  371.     echo 'x - skipping n_fas-c12 (File already exists)'
  372.     rm -f _shar_wnt_.tmp
  373. else
  374. > _shar_wnt_.tmp
  375. echo 'x - extracting n_fas-c12 (Text)'
  376. sed 's/^X//' << 'SHAR_EOF' > 'n_fas-c12' &&
  377. Xfas    ttyF00    c    80
  378. Xfas    ttyF01    c    81
  379. Xfas    ttyFM00    c    208
  380. Xfas    ttyFM01    c    209
  381. SHAR_EOF
  382. true || echo 'restore of n_fas-c12 failed'
  383. rm -f _shar_wnt_.tmp
  384. fi
  385. # ============= n_fas-c123 ==============
  386. if test -f 'n_fas-c123' -a X"$1" != X"-c"; then
  387.     echo 'x - skipping n_fas-c123 (File already exists)'
  388.     rm -f _shar_wnt_.tmp
  389. else
  390. > _shar_wnt_.tmp
  391. echo 'x - extracting n_fas-c123 (Text)'
  392. sed 's/^X//' << 'SHAR_EOF' > 'n_fas-c123' &&
  393. Xfas    ttyF00    c    80
  394. Xfas    ttyF01    c    81
  395. Xfas    ttyF02    c    82
  396. Xfas    ttyFM00    c    208
  397. Xfas    ttyFM01    c    209
  398. Xfas    ttyFM02    c    210
  399. SHAR_EOF
  400. true || echo 'restore of n_fas-c123 failed'
  401. rm -f _shar_wnt_.tmp
  402. fi
  403. # ============= n_fas-digi8c1 ==============
  404. if test -f 'n_fas-digi8c1' -a X"$1" != X"-c"; then
  405.     echo 'x - skipping n_fas-digi8c1 (File already exists)'
  406.     rm -f _shar_wnt_.tmp
  407. else
  408. > _shar_wnt_.tmp
  409. echo 'x - extracting n_fas-digi8c1 (Text)'
  410. sed 's/^X//' << 'SHAR_EOF' > 'n_fas-digi8c1' &&
  411. Xfas    ttyF00    c    80
  412. Xfas    ttyF01    c    81
  413. Xfas    ttyF02    c    82
  414. Xfas    ttyF03    c    83
  415. Xfas    ttyF04    c    84
  416. Xfas    ttyF05    c    85
  417. Xfas    ttyF06    c    86
  418. Xfas    ttyF07    c    87
  419. Xfas    ttyF08    c    88
  420. Xfas    ttyFM00    c    208
  421. Xfas    ttyFM01    c    209
  422. Xfas    ttyFM02    c    210
  423. Xfas    ttyFM03    c    211
  424. Xfas    ttyFM04    c    212
  425. Xfas    ttyFM05    c    213
  426. Xfas    ttyFM06    c    214
  427. Xfas    ttyFM07    c    215
  428. Xfas    ttyFM08    c    216
  429. SHAR_EOF
  430. true || echo 'restore of n_fas-digi8c1 failed'
  431. rm -f _shar_wnt_.tmp
  432. fi
  433. # ============= n_fas-hub6 ==============
  434. if test -f 'n_fas-hub6' -a X"$1" != X"-c"; then
  435.     echo 'x - skipping n_fas-hub6 (File already exists)'
  436.     rm -f _shar_wnt_.tmp
  437. else
  438. > _shar_wnt_.tmp
  439. echo 'x - extracting n_fas-hub6 (Text)'
  440. sed 's/^X//' << 'SHAR_EOF' > 'n_fas-hub6' &&
  441. Xfas    ttyF00    c    80
  442. Xfas    ttyF01    c    81
  443. Xfas    ttyF02    c    82
  444. Xfas    ttyF03    c    83
  445. Xfas    ttyF04    c    84
  446. Xfas    ttyF05    c    85
  447. Xfas    ttyFM00    c    208
  448. Xfas    ttyFM01    c    209
  449. Xfas    ttyFM02    c    210
  450. Xfas    ttyFM03    c    211
  451. Xfas    ttyFM04    c    212
  452. Xfas    ttyFM05    c    213
  453. SHAR_EOF
  454. true || echo 'restore of n_fas-hub6 failed'
  455. rm -f _shar_wnt_.tmp
  456. fi
  457. # ============= s_fas-ast4 ==============
  458. if test -f 's_fas-ast4' -a X"$1" != X"-c"; then
  459.     echo 'x - skipping s_fas-ast4 (File already exists)'
  460.     rm -f _shar_wnt_.tmp
  461. else
  462. > _shar_wnt_.tmp
  463. echo 'x - extracting s_fas-ast4 (Text)'
  464. sed 's/^X//' << 'SHAR_EOF' > 's_fas-ast4' &&
  465. Xfas    Y    4    7    1    4    2a0    2bf    0    0
  466. SHAR_EOF
  467. true || echo 'restore of s_fas-ast4 failed'
  468. rm -f _shar_wnt_.tmp
  469. fi
  470. # ============= s_fas-ast4c12 ==============
  471. if test -f 's_fas-ast4c12' -a X"$1" != X"-c"; then
  472.     echo 'x - skipping s_fas-ast4c12 (File already exists)'
  473.     rm -f _shar_wnt_.tmp
  474. else
  475. > _shar_wnt_.tmp
  476. echo 'x - extracting s_fas-ast4c12 (Text)'
  477. sed 's/^X//' << 'SHAR_EOF' > 's_fas-ast4c12' &&
  478. Xfas    Y    4    7    1    9    2a0    2bf    0    0
  479. Xfas    Y    1    7    1    4    3f8    3ff    0    0
  480. Xfas    Y    1    7    1    3    2f8    2ff    0    0
  481. SHAR_EOF
  482. true || echo 'restore of s_fas-ast4c12 failed'
  483. rm -f _shar_wnt_.tmp
  484. fi
  485. # ============= s_fas-c12 ==============
  486. if test -f 's_fas-c12' -a X"$1" != X"-c"; then
  487.     echo 'x - skipping s_fas-c12 (File already exists)'
  488.     rm -f _shar_wnt_.tmp
  489. else
  490. > _shar_wnt_.tmp
  491. echo 'x - extracting s_fas-c12 (Text)'
  492. sed 's/^X//' << 'SHAR_EOF' > 's_fas-c12' &&
  493. Xfas    Y    1    7    1    4    3f8    3ff    0    0
  494. Xfas    Y    1    7    1    3    2f8    2ff    0    0
  495. SHAR_EOF
  496. true || echo 'restore of s_fas-c12 failed'
  497. rm -f _shar_wnt_.tmp
  498. fi
  499. # ============= s_fas-c123 ==============
  500. if test -f 's_fas-c123' -a X"$1" != X"-c"; then
  501.     echo 'x - skipping s_fas-c123 (File already exists)'
  502.     rm -f _shar_wnt_.tmp
  503. else
  504. > _shar_wnt_.tmp
  505. echo 'x - extracting s_fas-c123 (Text)'
  506. sed 's/^X//' << 'SHAR_EOF' > 's_fas-c123' &&
  507. Xfas    Y    1    7    1    4    3f8    3ff    0    0
  508. Xfas    Y    1    7    1    3    2f8    2ff    0    0
  509. Xfas    Y    1    7    1    9    3e8    3ef    0    0
  510. SHAR_EOF
  511. true || echo 'restore of s_fas-c123 failed'
  512. rm -f _shar_wnt_.tmp
  513. fi
  514. # ============= s_fas-digi8c1 ==============
  515. if test -f 's_fas-digi8c1' -a X"$1" != X"-c"; then
  516.     echo 'x - skipping s_fas-digi8c1 (File already exists)'
  517.     rm -f _shar_wnt_.tmp
  518. else
  519. > _shar_wnt_.tmp
  520. echo 'x - extracting s_fas-digi8c1 (Text)'
  521. sed 's/^X//' << 'SHAR_EOF' > 's_fas-digi8c1' &&
  522. Xfas    Y    8    7    1    3    100    13f    0    0
  523. Xfas    Y    1    7    1    4    3f8    3ff    0    0
  524. SHAR_EOF
  525. true || echo 'restore of s_fas-digi8c1 failed'
  526. rm -f _shar_wnt_.tmp
  527. fi
  528. # ============= s_fas-hub6 ==============
  529. if test -f 's_fas-hub6' -a X"$1" != X"-c"; then
  530.     echo 'x - skipping s_fas-hub6 (File already exists)'
  531.     rm -f _shar_wnt_.tmp
  532. else
  533. > _shar_wnt_.tmp
  534. echo 'x - extracting s_fas-hub6 (Text)'
  535. sed 's/^X//' << 'SHAR_EOF' > 's_fas-hub6' &&
  536. Xfas    Y    6    7    1    3    302    308    0    0
  537. SHAR_EOF
  538. true || echo 'restore of s_fas-hub6 failed'
  539. rm -f _shar_wnt_.tmp
  540. fi
  541. # ============= space-ast4 ==============
  542. if test -f 'space-ast4' -a X"$1" != X"-c"; then
  543.     echo 'x - skipping space-ast4 (File already exists)'
  544.     rm -f _shar_wnt_.tmp
  545. else
  546. > _shar_wnt_.tmp
  547. echo 'x - extracting space-ast4 (Text)'
  548. sed 's/^X//' << 'SHAR_EOF' > 'space-ast4' &&
  549. X/* Async device configuration file for the FAS async driver. */
  550. X
  551. X/* This version is for the AST 4-port card in expanded mode.
  552. X*/
  553. X/* FAS was developed by
  554. XUwe Doering             INET : gemini@geminix.in-berlin.de
  555. XBillstedter Pfad 17 b   UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
  556. X1000 Berlin 20
  557. XGermany
  558. X*/
  559. X
  560. X#if !defined (M_I286)
  561. X#ident    "@(#)space.c    2.10"
  562. X#endif
  563. X
  564. X#if defined (XENIX)
  565. X#include "fas.h"
  566. X#else
  567. X#include <sys/fas.h>
  568. X#endif
  569. X
  570. X/* This is the number of devices to be handled by this driver.
  571. X   You may define up to 16 devices.  If this number is changed
  572. X   the arrays below must be filled in accordingly.
  573. X*/
  574. X#define NUM_PHYSICAL_UNITS    4
  575. X
  576. X#if NUM_PHYSICAL_UNITS > MAX_UNITS
  577. X#undef NUM_PHYSICAL_UNITS
  578. X#define NUM_PHYSICAL_UNITS    MAX_UNITS
  579. X#endif
  580. X
  581. X/* let the driver know the number of devices */
  582. Xuint    fas_physical_units = NUM_PHYSICAL_UNITS;
  583. X
  584. X/* array of base port addresses
  585. X   Some modifier flags can be "ored" into these addresses to change
  586. X   the behaviour of the respective devices. See fas.h for possible
  587. X   names and values.
  588. X*/
  589. Xulong    fas_port [NUM_PHYSICAL_UNITS] =
  590. X{
  591. X    0x2a0,    0x2a8,    0x2b0,    0x2b8
  592. X};
  593. X
  594. X/* initialization sequence for serial cards
  595. X   This array contains pairs of values of the form:
  596. X
  597. X        portaddress, value,
  598. X              :
  599. X              :
  600. X        portaddress, value,
  601. X        0
  602. X
  603. X   For every line `value' will be written to `portaddress'. If
  604. X   `value' is replaced with the macro `READ_PORT' then a value
  605. X   is read from `portaddress' instead. The value itself will be
  606. X   discarded. Therefore, this makes only sense if the read access
  607. X   to the port has a side effect like setting or resetting
  608. X   certain flags.
  609. X
  610. X   NOTE: This array *must* be terminated with a value of 0
  611. X         in the portaddress column!
  612. X*/
  613. Xuint    fas_init_seq [] =
  614. X{
  615. X    0x2bf,    0x80,
  616. X    0
  617. X};
  618. X
  619. X/* interrupt acknowledge sequence for serial cards
  620. X   This sequence is executed by the fasintr () function after all pending
  621. X   interrupts on all serial cards have been processed. The contents of this
  622. X   array has the same form as in the fas_init_seq [] array above.
  623. X*/
  624. Xuint    fas_int_ack_seq [] =
  625. X{
  626. X    0
  627. X};
  628. X
  629. X/* initial modem control port info
  630. X   This value is ored into the modem control value for each UART. This is
  631. X   normaly used to force out2 which is used to enable the interrupts of
  632. X   the standard com1 and com2 ports. Several brands of cards have modes
  633. X   that allow them to work in compatible mode like com1 and com2 or as a
  634. X   shared interrupts card. One of these cards is the AST 4-port card. When
  635. X   this card is used in shared interrupts mode out2 must _not_ be set.
  636. X
  637. X   Note: This is one of the major trouble-spots with shared interrupts
  638. X   cards. Check your manual.
  639. X*/
  640. Xuint    fas_mcb [NUM_PHYSICAL_UNITS] =
  641. X{
  642. X    0,    0,    0,    0
  643. X};
  644. X
  645. X/* array of modem control flags
  646. X   You can choose which signals to use for modem control. See fas.h
  647. X   for possible names and values. Whether or not modem control is
  648. X   used is determined by the minor device number at open time.
  649. X*/
  650. Xulong    fas_modem [NUM_PHYSICAL_UNITS] =
  651. X{
  652. X    EO_DTR | EI_DTR | CA_DCD,
  653. X    EO_DTR | EI_DTR | CA_DCD,
  654. X    EO_DTR | EI_DTR | CA_DCD,
  655. X    EO_DTR | EI_DTR | CA_DCD
  656. X};
  657. X
  658. X/* array of hardware flow control flags
  659. X   You can choose which signals to use for hardware handshake. See fas.h
  660. X   for possible names and values. Whether or not hardware handshake is
  661. X   used is determined by the minor device number at open time and by the
  662. X   RTSFLOW/CTSFLOW termio(7) flags.
  663. X*/
  664. Xulong    fas_flow [NUM_PHYSICAL_UNITS] =
  665. X{
  666. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  667. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  668. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  669. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS
  670. X};
  671. X
  672. X/* array of control register addresses
  673. X   There are serial boards available that have all serial ports
  674. X   multiplexed to one address location in order to save I/O address
  675. X   space (Bell Tech HUB-6 card etc.). This multiplexing is controlled
  676. X   by a special register that needs to be written to before the actual
  677. X   port registers can be accessed. This array contains the addresses
  678. X   of these special registers.
  679. X   Enter the addresses on a per unit base. An address of zero
  680. X   disables this feature.
  681. X*/
  682. Xuint    fas_ctl_port [NUM_PHYSICAL_UNITS] =
  683. X{
  684. X    0,    0,    0,    0
  685. X};
  686. X
  687. X/* array of control register values
  688. X   These values are written to the corresponding control register
  689. X   before the first access to the actual port registers. If not only
  690. X   entire UART chips (blocks of 8 contiguous addresses) but even the
  691. X   single registers of the UART chips need to be multiplexed to one
  692. X   address you have to "or" a bit mask (shifted 8 times to the left)
  693. X   to the control register value. This mask determines at which bit
  694. X   locations the UART chip register number is "xored" into the control
  695. X   register value at runtime. This implies that you can also use
  696. X   negative logic by setting the bits in the control register value
  697. X   to 1 at the locations corresponding to the bit mask.
  698. X*/
  699. Xuint    fas_ctl_val [NUM_PHYSICAL_UNITS] =
  700. X{
  701. X    0,    0,    0,    0
  702. X};
  703. X
  704. X/* NOTHING NEEDS TO BE CHANGED BELOW THIS LINE.
  705. X   ============================================
  706. X*/
  707. X
  708. X/* array of structures to hold all info for a physical minor device */
  709. Xstruct fas_internals    fas_internals [NUM_PHYSICAL_UNITS];
  710. X
  711. X/* array of ttys for logical minor devices */
  712. Xstruct tty    fas_tty [NUM_PHYSICAL_UNITS * 2];
  713. X
  714. X/* array of pointers to fas_internals structures
  715. X   this prevents time consuming multiplications for index calculation
  716. X*/
  717. Xstruct fas_internals    *fas_internals_ptr [NUM_PHYSICAL_UNITS];
  718. X
  719. X/* array of pointers to fas_tty structures
  720. X   this prevents time consuming multiplications for index calculation
  721. X*/
  722. Xstruct tty    *fas_tty_ptr [NUM_PHYSICAL_UNITS * 2];
  723. SHAR_EOF
  724. true || echo 'restore of space-ast4 failed'
  725. rm -f _shar_wnt_.tmp
  726. fi
  727. # ============= space-ast4c12 ==============
  728. if test -f 'space-ast4c12' -a X"$1" != X"-c"; then
  729.     echo 'x - skipping space-ast4c12 (File already exists)'
  730.     rm -f _shar_wnt_.tmp
  731. else
  732. > _shar_wnt_.tmp
  733. echo 'x - extracting space-ast4c12 (Text)'
  734. sed 's/^X//' << 'SHAR_EOF' > 'space-ast4c12' &&
  735. X/* Async device configuration file for the FAS async driver. */
  736. X
  737. X/* This version is for the AST 4-port card in expanded mode plus
  738. X   the standard COM1 and COM2 ports.
  739. X*/
  740. X/* FAS was developed by
  741. XUwe Doering             INET : gemini@geminix.in-berlin.de
  742. XBillstedter Pfad 17 b   UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
  743. X1000 Berlin 20
  744. XGermany
  745. X*/
  746. X
  747. X#if !defined (M_I286)
  748. X#ident    "@(#)space.c    2.10"
  749. X#endif
  750. X
  751. X#if defined (XENIX)
  752. X#include "fas.h"
  753. X#else
  754. X#include <sys/fas.h>
  755. X#endif
  756. X
  757. X/* This is the number of devices to be handled by this driver.
  758. X   You may define up to 16 devices.  If this number is changed
  759. X   the arrays below must be filled in accordingly.
  760. X*/
  761. X#define NUM_PHYSICAL_UNITS    6
  762. X
  763. X#if NUM_PHYSICAL_UNITS > MAX_UNITS
  764. X#undef NUM_PHYSICAL_UNITS
  765. X#define NUM_PHYSICAL_UNITS    MAX_UNITS
  766. X#endif
  767. X
  768. X/* let the driver know the number of devices */
  769. Xuint    fas_physical_units = NUM_PHYSICAL_UNITS;
  770. X
  771. X/* array of base port addresses
  772. X   Some modifier flags can be "ored" into these addresses to change
  773. X   the behaviour of the respective devices. See fas.h for possible
  774. X   names and values.
  775. X*/
  776. Xulong    fas_port [NUM_PHYSICAL_UNITS] =
  777. X{
  778. X    0x2a0,    0x2a8,    0x2b0,    0x2b8,
  779. X    0x3f8,    0x2f8
  780. X};
  781. X
  782. X/* initialization sequence for serial cards
  783. X   This array contains pairs of values of the form:
  784. X
  785. X        portaddress, value,
  786. X              :
  787. X              :
  788. X        portaddress, value,
  789. X        0
  790. X
  791. X   For every line `value' will be written to `portaddress'. If
  792. X   `value' is replaced with the macro `READ_PORT' then a value
  793. X   is read from `portaddress' instead. The value itself will be
  794. X   discarded. Therefore, this makes only sense if the read access
  795. X   to the port has a side effect like setting or resetting
  796. X   certain flags.
  797. X
  798. X   NOTE: This array *must* be terminated with a value of 0
  799. X         in the portaddress column!
  800. X*/
  801. Xuint    fas_init_seq [] =
  802. X{
  803. X    0x2bf,    0x80,
  804. X    0
  805. X};
  806. X
  807. X/* interrupt acknowledge sequence for serial cards
  808. X   This sequence is executed by the fasintr () function after all pending
  809. X   interrupts on all serial cards have been processed. The contents of this
  810. X   array has the same form as in the fas_init_seq [] array above.
  811. X*/
  812. Xuint    fas_int_ack_seq [] =
  813. X{
  814. X    0
  815. X};
  816. X
  817. X/* initial modem control port info
  818. X   This value is ored into the modem control value for each UART. This is
  819. X   normaly used to force out2 which is used to enable the interrupts of
  820. X   the standard com1 and com2 ports. Several brands of cards have modes
  821. X   that allow them to work in compatible mode like com1 and com2 or as a
  822. X   shared interrupts card. One of these cards is the AST 4-port card. When
  823. X   this card is used in shared interrupts mode out2 must _not_ be set.
  824. X
  825. X   Note: This is one of the major trouble-spots with shared interrupts
  826. X   cards. Check your manual.
  827. X*/
  828. Xuint    fas_mcb [NUM_PHYSICAL_UNITS] =
  829. X{
  830. X    0,    0,    0,    0,
  831. X    MC_SET_OUT2,    MC_SET_OUT2
  832. X};
  833. X
  834. X/* array of modem control flags
  835. X   You can choose which signals to use for modem control. See fas.h
  836. X   for possible names and values. Whether or not modem control is
  837. X   used is determined by the minor device number at open time.
  838. X*/
  839. Xulong    fas_modem [NUM_PHYSICAL_UNITS] =
  840. X{
  841. X    EO_DTR | EI_DTR | CA_DCD,
  842. X    EO_DTR | EI_DTR | CA_DCD,
  843. X    EO_DTR | EI_DTR | CA_DCD,
  844. X    EO_DTR | EI_DTR | CA_DCD,
  845. X    EO_DTR | EI_DTR | CA_DCD,
  846. X    EO_DTR | EI_DTR | CA_DCD
  847. X};
  848. X
  849. X/* array of hardware flow control flags
  850. X   You can choose which signals to use for hardware handshake. See fas.h
  851. X   for possible names and values. Whether or not hardware handshake is
  852. X   used is determined by the minor device number at open time and by the
  853. X   RTSFLOW/CTSFLOW termio(7) flags.
  854. X*/
  855. Xulong    fas_flow [NUM_PHYSICAL_UNITS] =
  856. X{
  857. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  858. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  859. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  860. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  861. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  862. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS
  863. X};
  864. X
  865. X/* array of control register addresses
  866. X   There are serial boards available that have all serial ports
  867. X   multiplexed to one address location in order to save I/O address
  868. X   space (Bell Tech HUB-6 card etc.). This multiplexing is controlled
  869. X   by a special register that needs to be written to before the actual
  870. X   port registers can be accessed. This array contains the addresses
  871. X   of these special registers.
  872. X   Enter the addresses on a per unit base. An address of zero
  873. X   disables this feature.
  874. X*/
  875. Xuint    fas_ctl_port [NUM_PHYSICAL_UNITS] =
  876. X{
  877. X    0,    0,    0,    0,
  878. X    0,    0
  879. X};
  880. X
  881. X/* array of control register values
  882. X   These values are written to the corresponding control register
  883. X   before the first access to the actual port registers. If not only
  884. X   entire UART chips (blocks of 8 contiguous addresses) but even the
  885. X   single registers of the UART chips need to be multiplexed to one
  886. X   address you have to "or" a bit mask (shifted 8 times to the left)
  887. X   to the control register value. This mask determines at which bit
  888. X   locations the UART chip register number is "xored" into the control
  889. X   register value at runtime. This implies that you can also use
  890. X   negative logic by setting the bits in the control register value
  891. X   to 1 at the locations corresponding to the bit mask.
  892. X*/
  893. Xuint    fas_ctl_val [NUM_PHYSICAL_UNITS] =
  894. X{
  895. X    0,    0,    0,    0,
  896. X    0,    0
  897. X};
  898. X
  899. X/* NOTHING NEEDS TO BE CHANGED BELOW THIS LINE.
  900. X   ============================================
  901. X*/
  902. X
  903. X/* array of structures to hold all info for a physical minor device */
  904. Xstruct fas_internals    fas_internals [NUM_PHYSICAL_UNITS];
  905. X
  906. X/* array of ttys for logical minor devices */
  907. Xstruct tty    fas_tty [NUM_PHYSICAL_UNITS * 2];
  908. X
  909. X/* array of pointers to fas_internals structures
  910. X   this prevents time consuming multiplications for index calculation
  911. X*/
  912. Xstruct fas_internals    *fas_internals_ptr [NUM_PHYSICAL_UNITS];
  913. X
  914. X/* array of pointers to fas_tty structures
  915. X   this prevents time consuming multiplications for index calculation
  916. X*/
  917. Xstruct tty    *fas_tty_ptr [NUM_PHYSICAL_UNITS * 2];
  918. SHAR_EOF
  919. true || echo 'restore of space-ast4c12 failed'
  920. rm -f _shar_wnt_.tmp
  921. fi
  922. # ============= space-c12 ==============
  923. if test -f 'space-c12' -a X"$1" != X"-c"; then
  924.     echo 'x - skipping space-c12 (File already exists)'
  925.     rm -f _shar_wnt_.tmp
  926. else
  927. > _shar_wnt_.tmp
  928. echo 'x - extracting space-c12 (Text)'
  929. sed 's/^X//' << 'SHAR_EOF' > 'space-c12' &&
  930. X/* Async device configuration file for the FAS async driver. */
  931. X
  932. X/* This version is for the standard COM1 and COM2 ports.
  933. X*/
  934. X/* FAS was developed by
  935. XUwe Doering             INET : gemini@geminix.in-berlin.de
  936. XBillstedter Pfad 17 b   UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
  937. X1000 Berlin 20
  938. XGermany
  939. X*/
  940. X
  941. X#if !defined (M_I286)
  942. X#ident    "@(#)space.c    2.10"
  943. X#endif
  944. X
  945. X#if defined (XENIX)
  946. X#include "fas.h"
  947. X#else
  948. X#include <sys/fas.h>
  949. X#endif
  950. X
  951. X/* This is the number of devices to be handled by this driver.
  952. X   You may define up to 16 devices.  If this number is changed
  953. X   the arrays below must be filled in accordingly.
  954. X*/
  955. X#define NUM_PHYSICAL_UNITS    2
  956. X
  957. X#if NUM_PHYSICAL_UNITS > MAX_UNITS
  958. X#undef NUM_PHYSICAL_UNITS
  959. X#define NUM_PHYSICAL_UNITS    MAX_UNITS
  960. X#endif
  961. X
  962. X/* let the driver know the number of devices */
  963. Xuint    fas_physical_units = NUM_PHYSICAL_UNITS;
  964. X
  965. X/* array of base port addresses
  966. X   Some modifier flags can be "ored" into these addresses to change
  967. X   the behaviour of the respective devices. See fas.h for possible
  968. X   names and values.
  969. X*/
  970. Xulong    fas_port [NUM_PHYSICAL_UNITS] =
  971. X{
  972. X    0x3f8,    0x2f8
  973. X};
  974. X
  975. X/* initialization sequence for serial cards
  976. X   This array contains pairs of values of the form:
  977. X
  978. X        portaddress, value,
  979. X              :
  980. X              :
  981. X        portaddress, value,
  982. X        0
  983. X
  984. X   For every line `value' will be written to `portaddress'. If
  985. X   `value' is replaced with the macro `READ_PORT' then a value
  986. X   is read from `portaddress' instead. The value itself will be
  987. X   discarded. Therefore, this makes only sense if the read access
  988. X   to the port has a side effect like setting or resetting
  989. X   certain flags.
  990. X
  991. X   NOTE: This array *must* be terminated with a value of 0
  992. X         in the portaddress column!
  993. X*/
  994. Xuint    fas_init_seq [] =
  995. X{
  996. X    0
  997. X};
  998. X
  999. X/* interrupt acknowledge sequence for serial cards
  1000. X   This sequence is executed by the fasintr () function after all pending
  1001. X   interrupts on all serial cards have been processed. The contents of this
  1002. X   array has the same form as in the fas_init_seq [] array above.
  1003. X*/
  1004. Xuint    fas_int_ack_seq [] =
  1005. X{
  1006. X    0
  1007. X};
  1008. X
  1009. X/* initial modem control port info
  1010. X   This value is ored into the modem control value for each UART. This is
  1011. X   normaly used to force out2 which is used to enable the interrupts of
  1012. X   the standard com1 and com2 ports. Several brands of cards have modes
  1013. X   that allow them to work in compatible mode like com1 and com2 or as a
  1014. X   shared interrupts card. One of these cards is the AST 4-port card. When
  1015. X   this card is used in shared interrupts mode out2 must _not_ be set.
  1016. X
  1017. X   Note: This is one of the major trouble-spots with shared interrupts
  1018. X   cards. Check your manual.
  1019. X*/
  1020. Xuint    fas_mcb [NUM_PHYSICAL_UNITS] =
  1021. X{
  1022. X    MC_SET_OUT2,    MC_SET_OUT2
  1023. X};
  1024. X
  1025. X/* array of modem control flags
  1026. X   You can choose which signals to use for modem control. See fas.h
  1027. X   for possible names and values. Whether or not modem control is
  1028. X   used is determined by the minor device number at open time.
  1029. X*/
  1030. Xulong    fas_modem [NUM_PHYSICAL_UNITS] =
  1031. X{
  1032. X    EO_DTR | EI_DTR | CA_DCD,
  1033. X    EO_DTR | EI_DTR | CA_DCD
  1034. X};
  1035. X
  1036. X/* array of hardware flow control flags
  1037. X   You can choose which signals to use for hardware handshake. See fas.h
  1038. X   for possible names and values. Whether or not hardware handshake is
  1039. X   used is determined by the minor device number at open time and by the
  1040. X   RTSFLOW/CTSFLOW termio(7) flags.
  1041. X*/
  1042. Xulong    fas_flow [NUM_PHYSICAL_UNITS] =
  1043. X{
  1044. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1045. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS
  1046. X};
  1047. X
  1048. X/* array of control register addresses
  1049. X   There are serial boards available that have all serial ports
  1050. X   multiplexed to one address location in order to save I/O address
  1051. X   space (Bell Tech HUB-6 card etc.). This multiplexing is controlled
  1052. X   by a special register that needs to be written to before the actual
  1053. X   port registers can be accessed. This array contains the addresses
  1054. X   of these special registers.
  1055. X   Enter the addresses on a per unit base. An address of zero
  1056. X   disables this feature.
  1057. X*/
  1058. Xuint    fas_ctl_port [NUM_PHYSICAL_UNITS] =
  1059. X{
  1060. X    0,    0
  1061. X};
  1062. X
  1063. X/* array of control register values
  1064. X   These values are written to the corresponding control register
  1065. X   before the first access to the actual port registers. If not only
  1066. X   entire UART chips (blocks of 8 contiguous addresses) but even the
  1067. X   single registers of the UART chips need to be multiplexed to one
  1068. X   address you have to "or" a bit mask (shifted 8 times to the left)
  1069. X   to the control register value. This mask determines at which bit
  1070. X   locations the UART chip register number is "xored" into the control
  1071. X   register value at runtime. This implies that you can also use
  1072. X   negative logic by setting the bits in the control register value
  1073. X   to 1 at the locations corresponding to the bit mask.
  1074. X*/
  1075. Xuint    fas_ctl_val [NUM_PHYSICAL_UNITS] =
  1076. X{
  1077. X    0,    0
  1078. X};
  1079. X
  1080. X/* NOTHING NEEDS TO BE CHANGED BELOW THIS LINE.
  1081. X   ============================================
  1082. X*/
  1083. X
  1084. X/* array of structures to hold all info for a physical minor device */
  1085. Xstruct fas_internals    fas_internals [NUM_PHYSICAL_UNITS];
  1086. X
  1087. X/* array of ttys for logical minor devices */
  1088. Xstruct tty    fas_tty [NUM_PHYSICAL_UNITS * 2];
  1089. X
  1090. X/* array of pointers to fas_internals structures
  1091. X   this prevents time consuming multiplications for index calculation
  1092. X*/
  1093. Xstruct fas_internals    *fas_internals_ptr [NUM_PHYSICAL_UNITS];
  1094. X
  1095. X/* array of pointers to fas_tty structures
  1096. X   this prevents time consuming multiplications for index calculation
  1097. X*/
  1098. Xstruct tty    *fas_tty_ptr [NUM_PHYSICAL_UNITS * 2];
  1099. SHAR_EOF
  1100. true || echo 'restore of space-c12 failed'
  1101. rm -f _shar_wnt_.tmp
  1102. fi
  1103. # ============= space-c123 ==============
  1104. if test -f 'space-c123' -a X"$1" != X"-c"; then
  1105.     echo 'x - skipping space-c123 (File already exists)'
  1106.     rm -f _shar_wnt_.tmp
  1107. else
  1108. > _shar_wnt_.tmp
  1109. echo 'x - extracting space-c123 (Text)'
  1110. sed 's/^X//' << 'SHAR_EOF' > 'space-c123' &&
  1111. X/* Async device configuration file for the FAS async driver. */
  1112. X
  1113. X/* This version is for the standard COM1 and COM2 and additional COM3
  1114. X   ports.
  1115. X*/
  1116. X/* FAS was developed by
  1117. XUwe Doering             INET : gemini@geminix.in-berlin.de
  1118. XBillstedter Pfad 17 b   UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
  1119. X1000 Berlin 20
  1120. XGermany
  1121. X*/
  1122. X
  1123. X#if !defined (M_I286)
  1124. X#ident    "@(#)space.c    2.10"
  1125. X#endif
  1126. X
  1127. X#if defined (XENIX)
  1128. X#include "fas.h"
  1129. X#else
  1130. X#include <sys/fas.h>
  1131. X#endif
  1132. X
  1133. X/* This is the number of devices to be handled by this driver.
  1134. X   You may define up to 16 devices.  If this number is changed
  1135. X   the arrays below must be filled in accordingly.
  1136. X*/
  1137. X#define NUM_PHYSICAL_UNITS    3
  1138. X
  1139. X#if NUM_PHYSICAL_UNITS > MAX_UNITS
  1140. X#undef NUM_PHYSICAL_UNITS
  1141. X#define NUM_PHYSICAL_UNITS    MAX_UNITS
  1142. X#endif
  1143. X
  1144. X/* let the driver know the number of devices */
  1145. Xuint    fas_physical_units = NUM_PHYSICAL_UNITS;
  1146. X
  1147. X/* array of base port addresses
  1148. X   Some modifier flags can be "ored" into these addresses to change
  1149. X   the behaviour of the respective devices. See fas.h for possible
  1150. X   names and values.
  1151. X*/
  1152. Xulong    fas_port [NUM_PHYSICAL_UNITS] =
  1153. X{
  1154. X    0x3f8,    0x2f8,    0x3e8
  1155. X};
  1156. X
  1157. X/* initialization sequence for serial cards
  1158. X   This array contains pairs of values of the form:
  1159. X
  1160. X        portaddress, value,
  1161. X              :
  1162. X              :
  1163. X        portaddress, value,
  1164. X        0
  1165. X
  1166. X   For every line `value' will be written to `portaddress'. If
  1167. X   `value' is replaced with the macro `READ_PORT' then a value
  1168. X   is read from `portaddress' instead. The value itself will be
  1169. X   discarded. Therefore, this makes only sense if the read access
  1170. X   to the port has a side effect like setting or resetting
  1171. X   certain flags.
  1172. X
  1173. X   NOTE: This array *must* be terminated with a value of 0
  1174. X         in the portaddress column!
  1175. X*/
  1176. Xuint    fas_init_seq [] =
  1177. X{
  1178. X    0
  1179. X};
  1180. X
  1181. X/* interrupt acknowledge sequence for serial cards
  1182. X   This sequence is executed by the fasintr () function after all pending
  1183. X   interrupts on all serial cards have been processed. The contents of this
  1184. X   array has the same form as in the fas_init_seq [] array above.
  1185. X*/
  1186. Xuint    fas_int_ack_seq [] =
  1187. X{
  1188. X    0
  1189. X};
  1190. X
  1191. X/* initial modem control port info
  1192. X   This value is ored into the modem control value for each UART. This is
  1193. X   normaly used to force out2 which is used to enable the interrupts of
  1194. X   the standard com1 and com2 ports. Several brands of cards have modes
  1195. X   that allow them to work in compatible mode like com1 and com2 or as a
  1196. X   shared interrupts card. One of these cards is the AST 4-port card. When
  1197. X   this card is used in shared interrupts mode out2 must _not_ be set.
  1198. X
  1199. X   Note: This is one of the major trouble-spots with shared interrupts
  1200. X   cards. Check your manual.
  1201. X*/
  1202. Xuint    fas_mcb [NUM_PHYSICAL_UNITS] =
  1203. X{
  1204. X    MC_SET_OUT2,    MC_SET_OUT2,    MC_SET_OUT2
  1205. X};
  1206. X
  1207. X/* array of modem control flags
  1208. X   You can choose which signals to use for modem control. See fas.h
  1209. X   for possible names and values. Whether or not modem control is
  1210. X   used is determined by the minor device number at open time.
  1211. X*/
  1212. Xulong    fas_modem [NUM_PHYSICAL_UNITS] =
  1213. X{
  1214. X    EO_DTR | EI_DTR | CA_DCD,
  1215. X    EO_DTR | EI_DTR | CA_DCD,
  1216. X    EO_DTR | EI_DTR | CA_DCD
  1217. X};
  1218. X
  1219. X/* array of hardware flow control flags
  1220. X   You can choose which signals to use for hardware handshake. See fas.h
  1221. X   for possible names and values. Whether or not hardware handshake is
  1222. X   used is determined by the minor device number at open time and by the
  1223. X   RTSFLOW/CTSFLOW termio(7) flags.
  1224. X*/
  1225. Xulong    fas_flow [NUM_PHYSICAL_UNITS] =
  1226. X{
  1227. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1228. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1229. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS
  1230. X};
  1231. X
  1232. X/* array of control register addresses
  1233. X   There are serial boards available that have all serial ports
  1234. X   multiplexed to one address location in order to save I/O address
  1235. X   space (Bell Tech HUB-6 card etc.). This multiplexing is controlled
  1236. X   by a special register that needs to be written to before the actual
  1237. X   port registers can be accessed. This array contains the addresses
  1238. X   of these special registers.
  1239. X   Enter the addresses on a per unit base. An address of zero
  1240. X   disables this feature.
  1241. X*/
  1242. Xuint    fas_ctl_port [NUM_PHYSICAL_UNITS] =
  1243. X{
  1244. X    0,    0,    0
  1245. X};
  1246. X
  1247. X/* array of control register values
  1248. X   These values are written to the corresponding control register
  1249. X   before the first access to the actual port registers. If not only
  1250. X   entire UART chips (blocks of 8 contiguous addresses) but even the
  1251. X   single registers of the UART chips need to be multiplexed to one
  1252. X   address you have to "or" a bit mask (shifted 8 times to the left)
  1253. X   to the control register value. This mask determines at which bit
  1254. X   locations the UART chip register number is "xored" into the control
  1255. X   register value at runtime. This implies that you can also use
  1256. X   negative logic by setting the bits in the control register value
  1257. X   to 1 at the locations corresponding to the bit mask.
  1258. X*/
  1259. Xuint    fas_ctl_val [NUM_PHYSICAL_UNITS] =
  1260. X{
  1261. X    0,    0,    0
  1262. X};
  1263. X
  1264. X/* NOTHING NEEDS TO BE CHANGED BELOW THIS LINE.
  1265. X   ============================================
  1266. X*/
  1267. X
  1268. X/* array of structures to hold all info for a physical minor device */
  1269. Xstruct fas_internals    fas_internals [NUM_PHYSICAL_UNITS];
  1270. X
  1271. X/* array of ttys for logical minor devices */
  1272. Xstruct tty    fas_tty [NUM_PHYSICAL_UNITS * 2];
  1273. X
  1274. X/* array of pointers to fas_internals structures
  1275. X   this prevents time consuming multiplications for index calculation
  1276. X*/
  1277. Xstruct fas_internals    *fas_internals_ptr [NUM_PHYSICAL_UNITS];
  1278. X
  1279. X/* array of pointers to fas_tty structures
  1280. X   this prevents time consuming multiplications for index calculation
  1281. X*/
  1282. Xstruct tty    *fas_tty_ptr [NUM_PHYSICAL_UNITS * 2];
  1283. SHAR_EOF
  1284. true || echo 'restore of space-c123 failed'
  1285. rm -f _shar_wnt_.tmp
  1286. fi
  1287. # ============= space-digi8c1 ==============
  1288. if test -f 'space-digi8c1' -a X"$1" != X"-c"; then
  1289.     echo 'x - skipping space-digi8c1 (File already exists)'
  1290.     rm -f _shar_wnt_.tmp
  1291. else
  1292. > _shar_wnt_.tmp
  1293. echo 'x - extracting space-digi8c1 (Text)'
  1294. sed 's/^X//' << 'SHAR_EOF' > 'space-digi8c1' &&
  1295. X/* Async device configuration file for the FAS async driver. */
  1296. X
  1297. X/* This version is for the DigiChannel PC/8 card plus the standard
  1298. X   COM1 port.
  1299. X*/
  1300. X/* FAS was developed by
  1301. XUwe Doering             INET : gemini@geminix.in-berlin.de
  1302. XBillstedter Pfad 17 b   UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
  1303. X1000 Berlin 20
  1304. XGermany
  1305. X*/
  1306. X
  1307. X#if !defined (M_I286)
  1308. X#ident    "@(#)space.c    2.10"
  1309. X#endif
  1310. X
  1311. X#if defined (XENIX)
  1312. X#include "fas.h"
  1313. X#else
  1314. X#include <sys/fas.h>
  1315. X#endif
  1316. X
  1317. X/* This is the number of devices to be handled by this driver.
  1318. X   You may define up to 16 devices.  If this number is changed
  1319. X   the arrays below must be filled in accordingly.
  1320. X*/
  1321. X#define NUM_PHYSICAL_UNITS    9
  1322. X
  1323. X#if NUM_PHYSICAL_UNITS > MAX_UNITS
  1324. X#undef NUM_PHYSICAL_UNITS
  1325. X#define NUM_PHYSICAL_UNITS    MAX_UNITS
  1326. X#endif
  1327. X
  1328. X/* let the driver know the number of devices */
  1329. Xuint    fas_physical_units = NUM_PHYSICAL_UNITS;
  1330. X
  1331. X/* array of base port addresses
  1332. X   Some modifier flags can be "ored" into these addresses to change
  1333. X   the behaviour of the respective devices. See fas.h for possible
  1334. X   names and values.
  1335. X*/
  1336. Xulong    fas_port [NUM_PHYSICAL_UNITS] =
  1337. X{
  1338. X    0x100,    0x108,    0x110,    0x118,
  1339. X    0x120,    0x128,    0x130,    0x138,
  1340. X    0x3f8
  1341. X};
  1342. X
  1343. X/* initialization sequence for serial cards
  1344. X   This array contains pairs of values of the form:
  1345. X
  1346. X        portaddress, value,
  1347. X              :
  1348. X              :
  1349. X        portaddress, value,
  1350. X        0
  1351. X
  1352. X   For every line `value' will be written to `portaddress'. If
  1353. X   `value' is replaced with the macro `READ_PORT' then a value
  1354. X   is read from `portaddress' instead. The value itself will be
  1355. X   discarded. Therefore, this makes only sense if the read access
  1356. X   to the port has a side effect like setting or resetting
  1357. X   certain flags.
  1358. X
  1359. X   NOTE: This array *must* be terminated with a value of 0
  1360. X         in the portaddress column!
  1361. X*/
  1362. Xuint    fas_init_seq [] =
  1363. X{
  1364. X    0
  1365. X};
  1366. X
  1367. X/* interrupt acknowledge sequence for serial cards
  1368. X   This sequence is executed by the fasintr () function after all pending
  1369. X   interrupts on all serial cards have been processed. The contents of this
  1370. X   array has the same form as in the fas_init_seq [] array above.
  1371. X*/
  1372. Xuint    fas_int_ack_seq [] =
  1373. X{
  1374. X    0
  1375. X};
  1376. X
  1377. X/* initial modem control port info
  1378. X   This value is ored into the modem control value for each UART. This is
  1379. X   normaly used to force out2 which is used to enable the interrupts of
  1380. X   the standard com1 and com2 ports. Several brands of cards have modes
  1381. X   that allow them to work in compatible mode like com1 and com2 or as a
  1382. X   shared interrupts card. One of these cards is the AST 4-port card. When
  1383. X   this card is used in shared interrupts mode out2 must _not_ be set.
  1384. X
  1385. X   Note: This is one of the major trouble-spots with shared interrupts
  1386. X   cards. Check your manual.
  1387. X*/
  1388. Xuint    fas_mcb [NUM_PHYSICAL_UNITS] =
  1389. X{
  1390. X    MC_SET_OUT2,    MC_SET_OUT2,    MC_SET_OUT2,    MC_SET_OUT2,
  1391. X    MC_SET_OUT2,    MC_SET_OUT2,    MC_SET_OUT2,    MC_SET_OUT2,
  1392. X    MC_SET_OUT2
  1393. X};
  1394. X
  1395. X/* array of modem control flags
  1396. X   You can choose which signals to use for modem control. See fas.h
  1397. X   for possible names and values. Whether or not modem control is
  1398. X   used is determined by the minor device number at open time.
  1399. X*/
  1400. Xulong    fas_modem [NUM_PHYSICAL_UNITS] =
  1401. X{
  1402. X    EO_DTR | EI_DTR | CA_DCD,
  1403. X    EO_DTR | EI_DTR | CA_DCD,
  1404. X    EO_DTR | EI_DTR | CA_DCD,
  1405. X    EO_DTR | EI_DTR | CA_DCD,
  1406. X    EO_DTR | EI_DTR | CA_DCD,
  1407. X    EO_DTR | EI_DTR | CA_DCD,
  1408. X    EO_DTR | EI_DTR | CA_DCD,
  1409. X    EO_DTR | EI_DTR | CA_DCD,
  1410. X    EO_DTR | EI_DTR | CA_DCD
  1411. X};
  1412. X
  1413. X/* array of hardware flow control flags
  1414. X   You can choose which signals to use for hardware handshake. See fas.h
  1415. X   for possible names and values. Whether or not hardware handshake is
  1416. X   used is determined by the minor device number at open time and by the
  1417. X   RTSFLOW/CTSFLOW termio(7) flags.
  1418. X*/
  1419. Xulong    fas_flow [NUM_PHYSICAL_UNITS] =
  1420. X{
  1421. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1422. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1423. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1424. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1425. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1426. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1427. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1428. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS,
  1429. X    HI_RTS | HO_CTS_ON_DSR | HX_RTS
  1430. X};
  1431. X
  1432. X/* array of control register addresses
  1433. X   There are serial boards available that have all serial ports
  1434. X   multiplexed to one address location in order to save I/O address
  1435. X   space (Bell Tech HUB-6 card etc.). This multiplexing is controlled
  1436. X   by a special register that needs to be written to before the actual
  1437. X   port registers can be accessed. This array contains the addresses
  1438. X   of these special registers.
  1439. X   Enter the addresses on a per unit base. An address of zero
  1440. X   disables this feature.
  1441. X*/
  1442. Xuint    fas_ctl_port [NUM_PHYSICAL_UNITS] =
  1443. X{
  1444. X    0,    0,    0,    0,
  1445. X    0,    0,    0,    0,
  1446. X    0
  1447. X};
  1448. X
  1449. X/* array of control register values
  1450. X   These values are written to the corresponding control register
  1451. X   before the first access to the actual port registers. If not only
  1452. X   entire UART chips (blocks of 8 contiguous addresses) but even the
  1453. X   single registers of the UART chips need to be multiplexed to one
  1454. X   address you have to "or" a bit mask (shifted 8 times to the left)
  1455. X   to the control register value. This mask determines at which bit
  1456. X   locations the UART chip register number is "xored" into the control
  1457. X   register value at runtime. This implies that you can also use
  1458. X   negative logic by setting the bits in the control register value
  1459. X   to 1 at the locations corresponding to the bit mask.
  1460. X*/
  1461. Xuint    fas_ctl_val [NUM_PHYSICAL_UNITS] =
  1462. X{
  1463. X    0,    0,    0,    0,
  1464. X    0,    0,    0,    0,
  1465. X    0
  1466. X};
  1467. X
  1468. X/* NOTHING NEEDS TO BE CHANGED BELOW THIS LINE.
  1469. X   ============================================
  1470. X*/
  1471. X
  1472. X/* array of structures to hold all info for a physical minor device */
  1473. Xstruct fas_internals    fas_internals [NUM_PHYSICAL_UNITS];
  1474. X
  1475. X/* array of ttys for logical minor devices */
  1476. Xstruct tty    fas_tty [NUM_PHYSICAL_UNITS * 2];
  1477. X
  1478. X/* array of pointers to fas_internals structures
  1479. X   this prevents time consuming multiplications for index calculation
  1480. X*/
  1481. Xstruct fas_internals    *fas_internals_ptr [NUM_PHYSICAL_UNITS];
  1482. X
  1483. X/* array of pointers to fas_tty structures
  1484. X   this prevents time consuming multiplications for index calculation
  1485. X*/
  1486. Xstruct tty    *fas_tty_ptr [NUM_PHYSICAL_UNITS * 2];
  1487. SHAR_EOF
  1488. true || echo 'restore of space-digi8c1 failed'
  1489. rm -f _shar_wnt_.tmp
  1490. fi
  1491. # ============= space-hub6 ==============
  1492. if test -f 'space-hub6' -a X"$1" != X"-c"; then
  1493.     echo 'x - skipping space-hub6 (File already exists)'
  1494.     rm -f _shar_wnt_.tmp
  1495. else
  1496. > _shar_wnt_.tmp
  1497. echo 'x - extracting space-hub6 (Text)'
  1498. sed 's/^X//' << 'SHAR_EOF' > 'space-hub6' &&
  1499. X/* Async device configuration file for the FAS async driver. */
  1500. X
  1501. X/* This version is for the Bell Tech HUB-6 card.
  1502. X*/
  1503. X/* FAS was developed by
  1504. XUwe Doering             INET : gemini@geminix.in-berlin.de
  1505. XBillstedter Pfad 17 b   UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
  1506. X1000 Berlin 20
  1507. XGermany
  1508. X*/
  1509. X
  1510. X#if !defined (M_I286)
  1511. X#ident    "@(#)space.c    2.10"
  1512. X#endif
  1513. X
  1514. X#if defined (XENIX)
  1515. X#include "fas.h"
  1516. X#else
  1517. X#include <sys/fas.h>
  1518. X#endif
  1519. X
  1520. X/* This is the number of devices to be handled by this driver.
  1521. X   You may define up to 16 devices.  If this number is changed
  1522. X   the arrays below must be filled in accordingly.
  1523. X*/
  1524. X#define NUM_PHYSICAL_UNITS    6
  1525. X
  1526. X#if NUM_PHYSICAL_UNITS > MAX_UNITS
  1527. X#undef NUM_PHYSICAL_UNITS
  1528. X#define NUM_PHYSICAL_UNITS    MAX_UNITS
  1529. X#endif
  1530. X
  1531. X/* let the driver know the number of devices */
  1532. Xuint    fas_physical_units = NUM_PHYSICAL_UNITS;
  1533. X
  1534. X/* array of base port addresses
  1535. X   Some modifier flags can be "ored" into these addresses to change
  1536. X   the behaviour of the respective devices. See fas.h for possible
  1537. X   names and values.
  1538. X*/
  1539. Xulong    fas_port [NUM_PHYSICAL_UNITS] =
  1540. X{
  1541. X    0x303,    0x303,    0x303,    0x303,    0x303,    0x303
  1542. X};
  1543. X
  1544. X/* initialization sequence for serial cards
  1545. X   This array contains pairs of values of the form:
  1546. X
  1547. X        portaddress, value,
  1548. X              :
  1549. X              :
  1550. X        portaddress, value,
  1551. X        0
  1552. X
  1553. X   For every line `value' will be written to `portaddress'. If
  1554. X   `value' is replaced with the macro `READ_PORT' then a value
  1555. X   is read from `portaddress' instead. The value itself will be
  1556. X   discarded. Therefore, this makes only sense if the read access
  1557. X   to the port has a side effect like setting or resetting
  1558. X   certain flags.
  1559. X
  1560. X   NOTE: This array *must* be terminated with a value of 0
  1561. X         in the portaddress column!
  1562. X*/
  1563. Xuint    fas_init_seq [] =
  1564. X{
  1565. X    0
  1566. X};
  1567. X
  1568. X/* interrupt acknowledge sequence for serial cards
  1569. X   This sequence is executed by the fasintr () function after all pending
  1570. X   interrupts on all serial cards have been processed. The contents of this
  1571. X   array has the same form as in the fas_init_seq [] array above.
  1572. X*/
  1573. Xuint    fas_int_ack_seq [] =
  1574. X{
  1575. X    0
  1576. X};
  1577. X
  1578. X/* initial modem control port info
  1579. X   This value is ored into the modem control value for each UART. This is
  1580. X   normaly used to force out2 which is used to enable the interrupts of
  1581. X   the standard com1 and com2 ports. Several brands of cards have modes
  1582. X   that allow them to work in compatible mode like com1 and com2 or as a
  1583. X   shared interrupts card. One of these cards is the AST 4-port card. When
  1584. X   this card is used in shared interrupts mode out2 must _not_ be set.
  1585. X
  1586. X   Note: This is one of the major trouble-spots with shared interrupts
  1587. X   cards. Check your manual.
  1588. X*/
  1589. Xuint    fas_mcb [NUM_PHYSICAL_UNITS] =
  1590. X{
  1591. X    0,    0,    0,    0,    0,    0
  1592. X};
  1593. X
  1594. X/* array of modem control flags
  1595. X   You can choose which signals to use for modem control. See fas.h
  1596. X   for possible names and values. Whether or not modem control is
  1597. X   used is determined by the minor device number at open time.
  1598. X*/
  1599. Xulong    fas_modem [NUM_PHYSICAL_UNITS] =
  1600. X{
  1601. X    EO_DTR | EI_DTR | CA_DCD,
  1602. X    EO_DTR | EI_DTR | CA_DCD,
  1603. X    EO_DTR | EI_DTR | CA_DCD,
  1604. X    EO_DTR | EI_DTR | CA_DCD,
  1605. X    EO_DTR | EI_DTR | CA_DCD,
  1606. X    EO_DTR | EI_DTR | CA_DCD
  1607. X};
  1608. X
  1609. X/* array of hardware flow control flags
  1610. X   You can choose which signals to use for hardware handshake. See fas.h
  1611. X   for possible names and values. Whether or not hardware handshake is
  1612. X   used is determined by the minor device number at open time and by the
  1613. X   RTSFLOW/CTSFLOW termio(7) flags.
  1614. X*/
  1615. Xulong    fas_flow [NUM_PHYSICAL_UNITS] =
  1616. X{
  1617. X    HI_RTS | HO_CTS | HX_RTS,
  1618. X    HI_RTS | HO_CTS | HX_RTS,
  1619. X    HI_RTS | HO_CTS | HX_RTS,
  1620. X    HI_RTS | HO_CTS | HX_RTS,
  1621. X    HI_RTS | HO_CTS | HX_RTS,
  1622. X    HI_RTS | HO_CTS | HX_RTS
  1623. X};
  1624. X
  1625. X/* array of control register addresses
  1626. X   There are serial boards available that have all serial ports
  1627. X   multiplexed to one address location in order to save I/O address
  1628. X   space (Bell Tech HUB-6 card etc.). This multiplexing is controlled
  1629. X   by a special register that needs to be written to before the actual
  1630. X   port registers can be accessed. This array contains the addresses
  1631. X   of these special registers.
  1632. X   Enter the addresses on a per unit base. An address of zero
  1633. X   disables this feature.
  1634. X*/
  1635. Xuint    fas_ctl_port [NUM_PHYSICAL_UNITS] =
  1636. X{
  1637. X    0x302,    0x302,    0x302,    0x302,    0x302,    0x302
  1638. X};
  1639. X
  1640. X/* array of control register values
  1641. X   These values are written to the corresponding control register
  1642. X   before the first access to the actual port registers. If not only
  1643. X   entire UART chips (blocks of 8 contiguous addresses) but even the
  1644. X   single registers of the UART chips need to be multiplexed to one
  1645. X   address you have to "or" a bit mask (shifted 8 times to the left)
  1646. X   to the control register value. This mask determines at which bit
  1647. X   locations the UART chip register number is "xored" into the control
  1648. X   register value at runtime. This implies that you can also use
  1649. X   negative logic by setting the bits in the control register value
  1650. X   to 1 at the locations corresponding to the bit mask.
  1651. X*/
  1652. Xuint    fas_ctl_val [NUM_PHYSICAL_UNITS] =
  1653. X{
  1654. X    0x700,    0x708,    0x710,    0x718,    0x720,    0x728
  1655. X};
  1656. X
  1657. X/* NOTHING NEEDS TO BE CHANGED BELOW THIS LINE.
  1658. X   ============================================
  1659. X*/
  1660. X
  1661. X/* array of structures to hold all info for a physical minor device */
  1662. Xstruct fas_internals    fas_internals [NUM_PHYSICAL_UNITS];
  1663. X
  1664. X/* array of ttys for logical minor devices */
  1665. Xstruct tty    fas_tty [NUM_PHYSICAL_UNITS * 2];
  1666. X
  1667. X/* array of pointers to fas_internals structures
  1668. X   this prevents time consuming multiplications for index calculation
  1669. X*/
  1670. Xstruct fas_internals    *fas_internals_ptr [NUM_PHYSICAL_UNITS];
  1671. X
  1672. X/* array of pointers to fas_tty structures
  1673. X   this prevents time consuming multiplications for index calculation
  1674. X*/
  1675. Xstruct tty    *fas_tty_ptr [NUM_PHYSICAL_UNITS * 2];
  1676. SHAR_EOF
  1677. true || echo 'restore of space-hub6 failed'
  1678. rm -f _shar_wnt_.tmp
  1679. fi
  1680. # ============= update_desc ==============
  1681. if test -f 'update_desc' -a X"$1" != X"-c"; then
  1682.     echo 'x - skipping update_desc (File already exists)'
  1683.     rm -f _shar_wnt_.tmp
  1684. else
  1685. > _shar_wnt_.tmp
  1686. echo 'x - extracting update_desc (Text)'
  1687. sed 's/^X//' << 'SHAR_EOF' > 'update_desc' &&
  1688. X# Update the kernel description file
  1689. X
  1690. Xgrep '^fas[     ]' $1 > /dev/null 2>&1
  1691. Xif [ $? -eq 1 ]
  1692. Xthen
  1693. X    echo 'fas     -    -     io     -             FAS Serial I/O Driver' >> $1
  1694. Xfi
  1695. SHAR_EOF
  1696. true || echo 'restore of update_desc failed'
  1697. rm -f _shar_wnt_.tmp
  1698. fi
  1699. rm -f _shar_seq_.tmp
  1700. echo You have unpacked the last part
  1701. exit 0
  1702. -- 
  1703. Uwe Doering  |  INET : gemini@geminix.in-berlin.de
  1704. Berlin       |----------------------------------------------------------------
  1705. Germany      |  UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
  1706.