Mux Serial Port driver v1.A for NeXTSTEP and OPENSTEP for intel. How to install this driver: 1) Acquire the Mux.1.A.I.b.pkg.compressed or equivalent. It would also be helpful to install Opener.app available from: ftp://next-ftp.peak.org/pub/next/apps/archiveutil/Opener/ but not absolutely necessary. 2) Double click on the file or enter: $ open Mux.1.A.I.b.pkg.compressed' from a terminal window. If you do not have Opener.app, then from a open Terminal window, enter the following sequence: $ cd /tmp/ $ compress -dc This serial driver is used to add additional ports. I have managed to get reliable 115200 Baud (fixed rate) operation with this driver under NeXTSTEP/FIP with the 16550s of either a single additional port, or on the multiplexed 4 or 8 port DigiBoard cards. I ran four ports simultaneously to USR 33.6bps Courier Modems at an interface rate of 115200 Baud. I have had reports of speeds into the 5300c/s region for this driver! I get only 870ch/s from the SerialPorts driver, and my machine crashes if I try using it at 19200 Baud (on a 486/66) ... I can calmly say: 500M of news flow at 115200 Baud (to a 33600bps modem), has not crashed the machine! You are free to use this source in any way you wish, but credit must be given to California Regents Berkeley, Carnegie Mellon University, Olivetti (for their original work) and Mark Salyzyn. This driver is designed to work as a DigiBoard and AST Style multiple serial I/O cards, LAVA PCI serial card, single port *any* address *any* interrupt, or multiple port (no mux register) shared interrupt (use a 470 ohm resistor in parallel with a diode to provide the wired-or [active high] connections for the IRQ lines). Hayes ESP support is also available in the driver, but can be optionally compiled. Bugs: The Default Inspector does not work adequately on multiplexed boards except to set the interrupt, it has no concept of multiple port addresses (except in NS3.3 and higher using the Expert button). If you use it to set up the port, it will work adequately for a single port card added into the system though. Under NS3.2, It is recommended to use an editor to manipulate the /NextLibrary/Devices/Mux.config/Instance0.table (but keep in mind that you do this at your own risk, drop me a note if you want some confidence pills ...) yourself after the Config Application is finished and saved to add in the additional ports on a Interrupt Multiplexed card, or to adjust other characteristics of the driver. An address range of 1 or 2 bytes is assumed to be the multiplex register, and must be stated last in the set of serial port ranges (with a range of addresses of 1[AST] or 2[DigiBoard]). The SerialMouse driver doesn't like this driver at all because of hard coded checking done within the Configure and Loading of the driver application to ensure that the SerialPorts driver is loaded. Since a 1200 Baud serial mouse hardly is a problem for the original SerialPorts driver, a `cook book' arrangement is documented to set the system up in the Configurations subdirectories. When mixing the SerialPorts and Mux drivers, one must be very careful about the NXString variables associated with device paths. I would recommend using a single instance of the PortServer for the Serial Mouse in NS3.3 and higher. With the addition of the RTS side of the RTS/CTS handshaking, the driver no longer overloads the Kernel beyond TTYHOG on streaming protocols. You can control the size of the Receive and Transmit buffer by editing the Instance?.table files, or using the Expert button in the configuration application under NeSTSTEP 3.3, but once again, I remind you that you do this at your own risk (This driver in itself may void any warantees and service contracts). If anyone wishes to write an inspector that can handle multiple port cards, I have just started on a *.nib for it in the Mux.tproj directory (out of date now that I have added buffering). Idealy, the Default Inspector should be able to handle this ... the code is 50% written, and can be turned on with a change in one manifest constant in the MuxParm.h file. Bugs: Compile error (NS3.2 and NS3.3): } /NextDeveloper/Headers/bsd/sys/user.h:40: header file 'kern/lock.h' not found This is a NeXT bug, since kern/lock.h is included in bsd/sys/callout.h, bsd/sys/user.h and bsd/sys/ux_exception.h. The message is supposed to be a warning since it should pull in NextDeveloper/2.0CompatibleHeaders/, but some have complained that the warning steps up to an error message (?) The fix, edit the above files changing kern to kernserv, or link kernserv to kern in the /usr/include directory. Please send ALL bug reports (and any code fragments you wish added) to mark@bohica.net (Mark Salyzyn). I am interested in any work you feel will improve this project. Legal ease(sic): If you feel compelled to donate an amount that would appear to compensate me for my efforts in writing and maintaining this driver, I would appreciate receiving said funds. Contact me at mark@bohica.net for my current fixed address. Ciao -- Mark Salyzyn