This is the README for MuxDriver.1.5.I.s.tar.gz [Download] [Browse] [Up]
How to install this driver: 1) You need the Development system for NeXTSTEP for Intel. If you only have a user version, I believe some of the archives *should* contain a compiled version of the package as it would end up in Mux.config. Contact me (mark@ve6mgs.ampr.ab.ca) to get the binaries if you have limited access. 2) Unpack into a working source subdirectory (You must have done this to have extracted this README file. 3) Wander through the Configurations Directory to get a feel for the various configurations and what may need to be done. Read the English.lproj/Info.rtf, and the remainder of the README file. Copy the Configurations/<blah blah>/Default.table file to this directory for the configuration you intend to set up. 3a) if you do *not* have a SerialMouse (a Bus Mouse instead), then you can replace the SerialPorts driver completely. The Default.table file as shipped will work fine for adding single ports with single interrupts and you need not read as dilegently. 3b) if you *need* a SerialMouse, then you will need to set up an instance to the SerialPorts driver to handle just the mouse. This will require some careful editing of the Instance?.table files for both the SerialPorts and Mux drivers. This is *not* for the faint at heart, but you can build confidence by reading the documentation in Configurations/SerialPort,COM2. 3c) if you are setting this driver up to talk to a multiplexed serial card, then you will also need to edit the Instance?.table files because the default configuration inspector is not up to the task. 3d) if you need to taylor the buffer sizes, edit the Instance?.table files after configuration. 4) Either through the Project builder, or from a terminal command line in this directory, `make bundle' to ensure that the make goes without problems (see below, not on kern/lock.h bug in the development system). This step is optional, and is only to build confidence. 5) If the make went without a hitch, become root (either by re-invoking Project Builder through the OpenSesame service, or by su in a terminal window) and `make install' 6) Install the Mux driver using the Configuration.app if it is possible for your specific configuration. Even so, Configuration.app may be used and then the brave can go on to editing the Instance?.tables 7) Sound simple? I have a bridge I can sell you. If I spent less time improving the performance and testing this driver, I would have written an all seeing all dancing Configuration inspector for this driver. As you see, you get what you pay for ... < Sales Job, Why would you want to do this to yourself? > This serial driver is used to add additional ports starting at ttyc and onwards. I have managed to get reliable 57600 Baud 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. Beware, I believe the newer DigiBoards are set up for the AST standard (then just ignore the Multiplex register for now). I have had reports of speeds into the 3600c/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 ... I can calmly say: 500M of news flow over a three day period, at 57600 Baud (to a 14400 Baud 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, 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). Refer to the README in the Configurations directory for more details on setup hints for odd configurations. The Default.table that is shipped is adequate for use with the standard two port serial system, and extensible to a four port system simply using the configuration inspector. Bugs: The AST standard, a far more modern one, is not yet tested, and without one of these cards, I am at a loss to provide testing for it. It *may* work if you don't specify a multiplex register or specify a Mux register with a port range of 1. The Default Inspector does not work adequately on multiplexed boards except to set the interrupt, it has no concept of multiple port addresses. If you use it to set up the port, it will work adequately for a single port card added into the system though. 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. With the addition of the RTS side of the RTS/CTS handshaking, the driver no longer overloads the Kernel beyond TTYHOG on streaming protocols. The RTS handshaking is only enabled if one is using the DOUBLE_BUFFER manifest constant. However, DOUBLE_BUFFER reduces the performance of the driver for high speed low packet (and window) size protocols. You can control the size of the Receive buffer by editing the Instance?.table files, 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 V1.2 Mux.tproj directory (out of date now that I have added buffering). Idealy, the Default Inspector should be able to handle this ... Add Mux.tproj to the Makefile and the PB.project file if you intend to work on this code. Bugs: Compile error: } /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/<blah>, 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@ve6mgs.ampr.ab.ca (Mark Salyzyn). I am interested in any work you feel will improve this project. As I am compelled to observe the Educational License on my version of NeXTSTEP (at the moment), this software will probably never be stepped up into commercial status (I prefer this status), but third party developers are free to use it to solve their problems. Ciao -- Mark
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.