pim@cti-software.nl (Pim Zandbergen) (08/22/90)
Hi netfolk, I am currently looking for a multiport I/O card to replace Specialix, because the Dutch distributor has stopped importing them. I have evaluated some cards but lots of their drivers have trouble with correctly handling modem control. This prevents them from working with the intelligent modem feature in HDB UUCP: "ttyxx,M" in Devices means open with O_NDELAY set and "\M" and "\m" in Dialers means set and clear the CLOCAL flag. The problem is that with these drivers, the O_NDELAY flag cannot be properly cleared when carrier detect is not present. I have noticed this problem with the stock ISC asy driver, with Specialix drivers older than release 3.03, with the Equinox Megaport 1.8.2 driver (a pity, I like this card) and the Chase Research AT8+ 4.02a driver. In fact, the only working drivers I have seen are the Specialix 3.03 and the PORTS and EPORTS drivers for the AT&T 3B2. Rather than evaluate every card on the market myself I would appreciate very much if you would run my little test program and mail me the result. I *think* this program emulates HDB UUCP behaviour. I only tested it on ISC 386/ix 2.0.2 and on the AT&T 3B2. If any UNIX guru would like to comment, please feel free. The crucial moment in this program is the read(). It should block, waiting for input, but returns immediately with zero bytes read on lots of cards. You should run this program on a port that has no cable whatsoever attached to it, nor should any other process have this port opened (ie. no getty's running). The port should implement modem control, ie. "> /dev/ttyxx" should hang. Thanks in advance for you help. #--------------------------------CUT HERE------------------------------------- #! /bin/sh # # This is a shell archive. Save this into a file, edit it # and delete all lines above this comment. Then give this # file to sh by executing the command "sh file". The files # will be extracted into the current directory owned by # you with default permissions. # # The files contained herein are: # # -rw------- 1 pim other 2232 Aug 21 19:27 modemtest.c # echo 'x - modemtest.c' if test -f modemtest.c; then echo 'shar: not overwriting modemtest.c'; else sed 's/^X//' << '________This_Is_The_END________' > modemtest.c X#include <fcntl.h> X#include <errno.h> X#include <signal.h> X#include <termio.h> X#include <stdio.h> X Xmain(argc, argv) X int argc; X char *argv[]; X{ X int fcntl_flags; X int fd; X extern int errno; X extern unsigned alarm(); X char buf[1]; X char *usage = "usage: %s <tty device with modem control>\n"; X extern char *sys_errlist[]; X struct termio termio_flags; X struct termio old_termio_flags; X void on_alarm(); X extern void exit(); X X X if (argc != 2) X { X (void) fprintf(stderr, usage, argv[0]); X exit(1); X } X X (void) printf("opening %s with O_NDELAY set\n", argv[1]); X if ((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) X { X (void) fprintf(stderr, "%s: can't open %s: %s\n", X argv[0], argv[1], sys_errlist[errno]); X exit(2); X } X X (void) printf("clearing O_NDELAY flag\n"); X if ((fcntl_flags = fcntl(fd, F_GETFL, 0)) == -1) X { X (void) fprintf(stderr, "%s: can't get fcntl flags: %s\n", X argv[0], sys_errlist[errno]); X exit(3); X } X fcntl_flags &= ~(O_NDELAY); X if (fcntl(fd, F_SETFL, fcntl_flags) == -1) X { X (void) fprintf(stderr, "%s: can't set fcntl flags: %s\n", X argv[0], sys_errlist[errno]); X exit(4); X } X X (void) printf("setting CLOCAL\n"); X if (ioctl(fd, TCGETA, &termio_flags) < 0) X { X (void) fprintf(stderr, "%s: can't get termio flags: %s\n", X argv[0], sys_errlist[errno]); X exit(5); X } X old_termio_flags = termio_flags; /* save original modes */ X termio_flags.c_cflag |= CLOCAL; X if (ioctl(fd, TCSETAW, &termio_flags) < 0) X { X (void) fprintf(stderr, "%s: can't set termio flags: %s\n", X argv[0], sys_errlist[errno]); X exit(6); X } X X (void) printf("reading from %s\n", argv[1]); X (void) signal(SIGALRM, on_alarm); X (void) alarm((unsigned) 10); X if ((read(fd, buf, 1) < 1) && (errno == EINTR)) X (void) printf("test succesful\n"); X else X (void) printf("test failed\n"); X X X (void) printf("clearing CLOCAL\n"); X if (ioctl(fd, TCSETAW, &old_termio_flags) < 0) X { X (void) fprintf(stderr, "%s: can't restore termio flags: %s\n", X argv[0], sys_errlist[errno]); X exit(7); X } X X X (void) printf("exiting\n"); X return 0; X} X Xvoid Xon_alarm() X{ X (void) printf("caught SIGALRM\n"); X} ________This_Is_The_END________ if test `wc -c < modemtest.c` -ne 2232; then echo 'shar: modemtest.c was damaged during transit (should have been 2232 bytes)' fi fi ; : end of overwriting check exit 0 -- Pim Zandbergen domain : pim@cti-software.nl CTI Software BV uucp : uunet!mcsun!hp4nl!ctisbv!pim Laan Copes van Cattenburch 70 phone : +31 70 3542302 2585 GD The Hague, The Netherlands fax : +31 70 3512837
karl@naitc.uucp (Karl Denninger) (08/22/90)
In article <1990Aug21.180653.615@cti-software.nl> pim@cti-software.nl (Pim Zandbergen) writes: > >Hi netfolk, > >I am currently looking for a multiport I/O card to replace >Specialix, because the Dutch distributor has stopped importing them. > >I have evaluated some cards but lots of their drivers have trouble with >correctly handling modem control. This prevents them from working >with the intelligent modem feature in HDB UUCP: > "ttyxx,M" in Devices means open with O_NDELAY set > and "\M" and "\m" in Dialers means set and clear the CLOCAL flag. > >The problem is that with these drivers, the O_NDELAY flag >cannot be properly cleared when carrier detect is not present. You bet. >I have noticed this problem with the stock ISC asy driver, >with Specialix drivers older than release 3.03, with the >Equinox Megaport 1.8.2 driver (a pity, I like this >card) and the Chase Research AT8+ 4.02a driver. > >In fact, the only working drivers I have seen are the Specialix 3.03 >and the PORTS and EPORTS drivers for the AT&T 3B2. Add to that anything Xenix; SCO did this one correctly. >Rather than evaluate every card on the market myself I would >appreciate very much if you would run my little test program >and mail me the result. The Equinox board will work correctly IF you have something else on the port also (ie: a getty). It will NOT work if you are only dialing out, which is a real problem! We have worked around this bug (and yes, Equinox, it IS A BUG -- READ THE TERMIO MAN PAGE UNDER CLOCAL!) but they haven't managed to fix it despite over 6 months of yelling and other coercion. Continental Computer knows about it too, I'm on the phone with them all the time and they aren't getting anywhere with Equinox either! And considering that CCS is one of the larger Equinox distributors, I'm not holding my breath for the change. Perhaps if we all screamed loud and long at Equinox, they'd get it fixed. It really is the only wart left on the product; we've been banging on them for quite some time to get the nasties out of the driver, and with that sole exception it works GREAT. --Karl Denninger karl@ddsw1.MCS.COM kdenning@nis.naitc.com
jonb@specialix.co.uk (Jon Brawn) (08/23/90)
-> Specialix are alive and well all over Europe and the Rest of the World! <-
pim@cti-software.nl (Pim Zandbergen) writes:
Pim>
Pim> Hi netfolk,
Pim>
Pim> I am currently looking for a multiport I/O card to replace
Pim> Specialix, because the Dutch distributor has stopped importing them.
Pim>
I am sorry to hear you say that your distributor is no longer importing
Specialix products.
However, they are available in Holland via M.U.S.T., contact Jan Van Der Laan
on 04 997 74939, who will be pleased to help you.
Also, ToPlog distribute our products throughout Benelux, contact Hans De Lange,
on +33 2 332 0732 (a Belgium number).
Specialix currently have products suitable for MCA, EISA, ISA (AT bus)
architectures, with support for a large variety of operating systems.
Pim> I have evaluated some cards but lots of their drivers have trouble with
Pim> correctly handling modem control. This prevents them from working
Pim> with the intelligent modem feature in HDB UUCP:
Pim> "ttyxx,M" in Devices means open with O_NDELAY set
Pim> and "\M" and "\m" in Dialers means set and clear the CLOCAL flag.
Pim>
Pim> The problem is that with these drivers, the O_NDELAY flag
Pim> cannot be properly cleared when carrier detect is not present.
It is gratifying to hear that someone is actually
using the technical features designed into the product.
Pim> I have noticed this problem with the stock ISC asy driver,
Pim> with Specialix drivers older than release 3.03,
The current release of the Specialix device driver is Version 4.0. If
*anyone* requires a *free* update please contact either Bill Hamblin,
our North European sales manager, or myself. Bill can be contacted by
email: bill@specialix.co.uk, ...!mcsun!ukc!slxsys!bill, by phone:
+44(0)932 354254, or (preferably) by FAX: +44(0)932 352781
We are always more than willing to talk to you about technical
problems with the product. The development team is quite approachable,
so drop us a line!
[End of advert. Normal cynical comments will be resumed as soon as possible.
Sorry it was quite so slimey, the sales department made me do it.... but its
all true! (I hope)]
--
This time I AM talking on behalf of Specialix!
Jon Brawn, jonb@specialix.co.uk (or for you bangers: ..!mcsun!ukc!slxsys!jonb)