gregg@a.cs.okstate.edu (Gregg Wonderly) (09/17/87)
-------- Here at OSU, we have a terminal network that connects to the majority of computers on campus. There are clusters here and there on campus that have printers in them for the computers operated by the Computer Center (IBM 3081K/MVS-XA, 780/VMS and 8350/ULTRIX). The other computers on the network can not (at this point) make use of the printers in these clusters due to the fact that there are dedicated circuits to the Computer Center computers that completely eliminate this possibility. The network has the capabilities of queuing connection requests to a particular port, so that multiple hosts could share printers if they just knew how to select a port on the network, and negociate the queuing process. I have written a PSM based symbiont that provides just this capabilities. It has a comprehensive script facility with conditional logic to make it possible to write a script that does the best thing for a given condition. I have tested this thing for about a month now (instead of working on VI documentation as you all have been asking me to). One of the best uses that I forsee, is that you can actually buy a modem and a printer, locate them anywhere (in the world quite literally), and then call out on your modem and print at a remote location without having a leased line directly connected to the printer/computer. The symbiont supports a fallback capability to choose between any number of devices and scripts. You can conditionally turn on transaction logging for scripts to aid in debugging a connection. A shareable image can be used to allow a separate program to display the connection status of all active queues. Scripts are parameterized (the script file name is a parameter to each possible connection method) to minimize the number you have to maintain for similiar connections. Below is a sample script that I use to connect to our terminal network, and select a printer to print on. top: ! Initiate a connection to the network xmit "\024" wait 1 xmit "\r" ! Wait for invitation to select recv "$0" 20 - error ! Send the port selection xmit "$1" wait 1 xmit "$2\r" ! Loop, waiting for something we recognize loop: ! On sucess, go print (done) recv "$3" 20 done +error check: ! If busy, then QUEUE and wait match "$4" busy ! If the printer is off line, then just try again match "$5" deranged ! IF the connection breaks, then there is a problem. match "DISC" disconnect goto loop +error: error: ! Log an error message on the PRINT operators consoles oper "Port $6 is not reachable" deranged: disconnect: ! Break this connection and try the next method. restart ! Queue for the port busy: xmit "Q\r" recv "QUEUED" 10 - error ! Only wait 40 seconds, as another queue could need this device. recv "$3" 40 - check ! When done, print the job done: go ! Pause to let the network buffers empty before disconnecting. wait "$7" ! Break the connection and wait 5 seconds before next job. end 5 I will not attempt to explain the script here, but just thought that I would include it FYI. If you are interested in obtaining the symbiont, I can E-Mail it to you, or you can send me a tape and return postage, and I will snail it to you. US-SNAIL: Gregg Wonderly 401 Math Sciences Oklahoma State University Stillwater OK, 74078 UUCP: {cbosgd, ihnp4, rutgers, uiucdcs}!okstate!nemo.math.okstate.edu!gregg ARPA: gregg@NEMO.MATH.OKSTATE.EDU