11S113 Fall 1990 RT-11 SIG tape **************************************************************************** DECUS FALL, 1990 Annotated Directory **************************************************************************** **************************************************************************** VSET RT-11 Vitrual Set Utility by John M. Crowell Multiware, Inc. Davis, CA VSET performs SET options on RT-11 device handler files. The handler file may or may not be that of a currently installed device, and need not have the .SYS extension. It may reside on a disk other than the system disk. VSET.DSK 6 Files, 94 Blocks **************************************************************************** TSXLIB 18-May-89 N. A. Bourgeois, Jr. NAB Software Services, inc. PO Box 20009 Albuquerque, NM 87154 TSXLIB is a library of FORTRAN callable routines that implement the TSX-Plus system services which are unique to TSX-Plus. The library has been updated to include all TSX-Plus unique services through TSX-Plus V6.40. Like RT-11, TSX-Plus offers the MACRO-11 programmer a number of system services. These services are implemented via both the RT-11 programmed requests (for those services common to both RT-11 and TSX-Plus) and raw EMT instructions (for those unique to TSX-Plus). RT-11 makes its system services available to the FORTRAN programmer through the system subroutine library, SYSLIB. TSX-Plus also honors the bulk of the service requests in the SYSLIB routines. TSXLIB, however, makes the TSX-Plus unique EMTs available to the FORTRAN programmer. These TSX-Plus library routines provide facilities to support communication lines, detached jobs, device allocating and deallocating, file structured device mounting and dismounting, communication between running programs, job privileges control, job status monitoring, program performance analysis, real time program execution, shared run time systems, shared files, special files information, spooler control, subprocess control, system status information, communication between running programs and a terminal, program control of the terminal, ODT activation mode, user name control, windowing, and several miscellaneous EMTs. The TSXLIB distribution kit includes the MACRO-11 source modules for all the routines, a user's manual in machine readable form, an indirect command file to build the library, and the implemented library. The FORTRAN sources for some test programs are also included. These test programs have been executed either with F66 or F77, and in some instances with both. TSXLB1.DSK 4 Files, 604 Blocks TSXLB2.DSK 64 Files, 414 Blocks **************************************************************************** **************************************************************************** SETDZ 20-Sep-1989 Kurt Kohler Asset Control Systems, Inc P.O. Box 1917 Corvalus, OR 97339 SETDZ - Set DZ(Q)-11 communications parameters V01.04 10-Sep-89 SETDZ is an RT-11 utility to set the communication parameters on a DZ type serial interface board (DZ-11, DZV-11, DZQ-11). It is modeled after the distributed SPEED utility. The available options are: /T:n Terminal # /S:n Baud Rate (Speed) /D Parity Disabled /E:n Parity Enabled, n=0(even), n=1(odd) /C:n Character Length (5-8) /H Display options Since the options are processed by the CSI, numeric parameters are assumed octal by default. Therefore the baud rate should be followed by a period. Each option may only appear once on a command line. If the terminal port specified with the /T option is not a DZ type port the command line is ignored. Be sure to run this file with $@ if IND is turned on. SETDZ.DSK 4 Files, 24 Blocks **************************************************************************** MAIL.DSK M. P. (Mike) Marak LOYOLA EMC LAB Department of Electrical and Computer Engineering Room AD-532 LOYOLA Campus / Concordia University 7141 Sherbrooke St. W. Montreal, Canada (514) 848-3118 This subdevice contains the distribution for the MAIL system, MAIL V2.14, which incorporates some new features over the previous distribution (MAIL V1.14). See the EDIT HISTORY section of MINFO.FOR for a description of new features. MAIL is on on-line mail message system for user under TSX+, allowing users to send and/or read messages, which are stored in the system postoffice. Users may send messaged to any other system user, but may only read messages in their personal mailbox. Complete program sources are included, allowing users to modify the system to their application, as well as a complete pre-built MAIL system. Documentation is included. OPERATING SYSTEM: RT-11 V5.4, TSX+ V6.2 (minimum version) SOURCE LANGUAGE: FORTRAN SORTWARE REQUIRED: FORTRAN IV or FORTRAN-77, TSXLIB V6.2 (DECUS 11-490) for sources, TSX+ V6.2 MAIL.DSK 10 Files, 268 Blocks **************************************************************************** **************************************************************************** SCHOR1.DSK & SCHOR2.DSK Some Interesting and Useful Routines for RT-11 and TSX-Plus Bob Schor Eye and Ear Institute 203 Lothrop St. Pittsburgh, PA 15213 (412) 647-2116 (The following is a much edited version of DECUS.DOC on SCHOR1.DSK) Over the past ten years, I have developed a series of useful support routines and programs which help me manage and program in an RT-11 / TSX-Plus environment. These routines fall into several catagories -- programming aids, RT-11 and TSX system tools, system utilities, and "useful" programs. Programming Aids I have developed a set of macros, embedded in the macro library SUMAC.MLB, to provide Structured User MACros (hence, the name). These macros, in effect, define a "new" macro language, one with IF/ELSE/ENDIF, REPEAT/UNTIL, WHILE/ENDWHILE, PROCED/ENDPROC, and other block and structuring macro definitions. All of the macro routines I am submitting are written using SUMAC. The use of the macro package is documented in SUMAC.DOC. The actual macro library is contained in SUMAC.MLB, which is the only file that needs to reside on disk. The actual macro, for those who want to poke into the internals, is in SUMAC.MAC. TSX/RT-11 Start up, initialization routines When RT-11 starts, it looks for an initialization file, START%.COM. I have added several features to this file to help maintain the system date and time, ease transitions with TSX, perform needed assignments, and initialize certain devices (such as VM:). The file SETDAT.IND is a command file which handles both date-setting and automatic restarting of TSX. First, if no date is present, a date is obtained, either by executing a file SY:NOW.TSX (if it exists), or by asking the user to enter the date on the system console. Then a file SY:GOTSX.COM is built and executed, which starts TSX if the file SY:NOW.TSX is present. Another common task to run at start-up time is initialization of certain devices, most commonly VM:, the "memory disk". This start-up initialization is special, however -- you only want to initialize devices which have not yet been initialized, to avoid losing files already present on the device. The IND file, INIT.IND, when called with a device name, attempts to perform a directory listing, and if it fails (implying that no legal directory exists), will perform an initialization. This has an esthetic flaw, in that an RT-11 error message is produced (and should be ignored) -- one could replace this simple method with actually reading the file and deciding if the directory were present, but I took the easy way out. The file INITVM.COM simply calls this routine, specifying device VM:. The TSX start-up routine is contained in DETACH.TSX. Unlike STARTS.COM, it assumes that date and time are correctly entered, and leaves common assignments to other routines automatically invoked for each user when LOGIN runs. It does run INITVM, however, to initialize the common VM: once, when the system starts up. SCHOR1.DSK & SCHOR2.DSK (continued) The final activity of DETACH.TSX is to start a routine, ONLINE, which is a modification of a routine published several years ago in the TSX newsletter. This routine sends a message (Line X -- TSX is now running) to each time-sharing line in the system, thus notifying users that they can attempt to log on to the system. In certain systems and configurations (usually when two TSX systems are directly connected to each other via a serial line, one of which gets "grabbed" by CL), ONLINE can hang (I suspect both systems are trying to "talk", and neither is "listening" to the "TSX is running" message). Despite efforts in ONLINE to reset CL, clear buffers, etc., I'm not sure I've eliminated the problem, so I've written another routine, SUICID, which I detach (via OFFLIN) to kill the ONLINE job after 30 seconds. SUICID is a routine which takes two parameters -- the name of a program, and a time (specified as NNs XXm YYh, for seconds, minutes, and hours, i.e. 1m 30s means one-and-a-half minutes). SUICID "sleeps" for the requested length of time, then kills all copies of the named program associated with your time-sharing line or its sub-processes. Note that if you are on your primary line, SUICID KMON (no time parameter means "do it now") will kill all your idle sub-processes. HALT, TSX Shut-down routine There are times when it is necessary to stop TSX: either to return to RT-11 (in order, for example, to handle maximum rates of real-time interrupts) or to re-start TSX (in those rare instances when something bombs, or gets "stuck"). Issuing $SHUTDOWN or $STOP can interfere drastically with other time-sharing activity; ordinarily, the system provides protection from arbitrary use of these commands by requiring that their issuer have "system privileges". I have written a routine, HALT, which provides further protection by instituting an orderly shut-down procedure, with built-in safeguards for active users. TSX Watch-dog Once I had written HALT, I realized I had most of the code needed to provide a monitoring program to log off users who walk away from their terminals. WATCH periodically monitors all active lines, and keeps a running account of the CPU time. If the CPU time does not increase between watches, the line is assumed to have been idle, and "idle time" is accumulated. Once sufficient time has built up, the line is a candidate for being killed. Note, however, that WATCH will not kill an idle primary line which supports an active sub-process -- as long as any sub-process remains active, the primary line is left alone. Modem Initialization My TSX systems have a line connected to a Hayes-compatible modem (actually, a MultiTech Multi-Modem 224EH, a 2400-baud MNP Class 5 model). When TSX starts (see above), INIMOD is detached, which runs INIMOD.IND. This routine takes over a communication line, connects it to the modem's time-sharing line, and sends a series of escape sequences to ensure that the modem is properly initialized for accepting incoming and sending out-going traffic. Two auxiliary routines are used by INIMOD (and by PHONE, a routine I use to do my dialing, and then start VTCOM, KERMIT, or the TSX "set host" mode). One, XLBUSY, attempts to allocate XL (to which, for VTCOM compatibility, the CL line of the modem is assigned). If it cannot, it sets appropriate condition codes, which INIMOD interprets as meaning that XL is busy with another user. The other routine, SENDXL, is used to echo its arguments (along with control characters in the form <15><12>) to XL. SCHOR1.DSK & SCHOR2.DSK (continued) TSX Internal Mail routine After several years of using TSX, my colleagues asked "Why can't we send messages to each other (other than via SEND,n), some kind of electronic mail?". Seemed like a good question, so I set about designing an electronic mail system for internal TSX usage. I wanted to have a system which guaranteed mail "privacy" (i.e. only the recipient could read the mail, yet anyone could write, or send, mail), yet be easy and flexible to use. I decided to enforce privacy by embedding all of the "mail" in a single file, SY:MAIL.TSX, which, since it had the .TSX extension, could not be mounted by regular users. I could then install the mail program(s) with sufficient privilege ("install/add sy:mail.com/priv=bypass") that it could mount the mail file and read/write inside it. Miscellaneous System and User Utilities CLEAR is designed to write information (default -- all nulls) onto all unused blocks on a device. There are at least two situations where this is helpful. One is data security -- simply deleting a file (partially) removes its directory entry, leaving the data on the device until it is overwritten; CLEAR will explicitly perform such overwriting. The other situation is to aid in managing devices, particularly if you need to perform data recovery (due to a damaged directory) -- if you know most unused areas of your device have blocks which are all nulls, then you need only concern yourself with blocks having something else as their contents (see SNOOP, below). MEMMAP is designed to provide a snap-shot of the i/o page, telling you which addresses (or range of addresses) exist up there. This can help resolve peculiar address conflicts when adding a new piece of hardware ("Oh, I forgot that the clock lived at that address"), or locating a dead board ("Oops, what happened to the controller at 167030?"). It can be run from either RT-11 or TSX (it checks to see which system is running) -- if running on TSX, it must be run with MEMMAP privilege (either by "R MEMMAP/IOPAGE" or from a suitably-privileged account). SHOWDU is a simple program to show you how the DU handler is currently set, i.e. to what unit, port, and partition corresponds to each DU device. SNOOP is designed to help recover from disasters which involve loss of directory. It looks block-by-block at each device, attempting to identify files of various types. At present, it can be told to look for sub-device (.DSK) files, probable text files (containing only ASCII text), .SAV files, and .SYS files. It does best with .DSK files -- if your device consists entirely of .DSK sub-device files, you can wipe out the device directory, and SNOOP will tell you where each .DSK files starts, its size, and its device name and owner, making it a trivial exercise to re-CREATE them. VERIFY (VERIFY.COM, VERIF1.SAV, and VERIF2.SAV) perform whole-device file verifications. VERIF1 basically builds a sorted directory of two user-specified devices, then hands control over to VERIF2, which produces a list of files unique to each device, and for those files common to both devices, shows which are identical and which differ. This is handy for file maintenance, for example, to allow you to see "what's new" when you get updates of programs, or to permit you to see what's changed since you did your last back-up onto your scratch disk. SCHOR1.DSK & SCHOR2.DSK (continued) Date/Calendar Routines One of the earliest utilities I wrote for myself were a set of routines to help me remember things, both events I had to do at specific times, and annual events (like birthdays and anniversaries). I wrote REMIND (and its support routine, JULIAN) to look at two text files, REMIND.REM and ANNUAL.REM, which consist of a date (in DD-MMM-YY format), , and a line of text. The information in REMIND.REM is considered to be one-time information, that is, information you want to know on a specific date, while ANNUAL.REM contains information for which you wish annual reminders (e.g. birthdays). REMIND needs to calculate days-in-advance, both regarding and disregarding years. For this purpose, it uses routines in JULIAN, which translate dates into "Julian dates", the number of days since a long time ago (December 31, 6703 years ago). As a side benefit, it can calculate the day of the week, given any (reasonable) date. Note that the present calendar, the Gregorian calendar, was adopted in 1752, so earlier dates require some adjustment (this is why George Washington's birthday is, or used to be, celebrated on a day other than the day recorded as his birth). Having written REMIND, I realized I needed an additional "tickler" program that I could leave little reminder notes to myself, which would pop up and say "Three days ago, you wrote a note saying Finish the documentation". So I created REMEMB, which looks at a file called REMEMB.REM, in the same format as the other .REM files. Here, however, the date is the date the reminder was entered into the file -- REMEMB persistently shows you the entire file (allowing you to add and delete entries, of course), with the date of entry. Spelling Routines SPELL is a fairly simple-minded speller, which creates a sorted list of words from a text file, compares it with a dictionary file, then provides you a list of words it does not find in the dictionary. It runs a bit slow, most of the time being taken up with word-parsing and sorting, but it works pretty well. I offer it in part because it contains two external sort routines, a heap sort (which is used during the initial parsing phase, since the heap can serve as a sorting "filter" to produce long runs of sorted output) and a poly-phase external sort routine, which is used to do the final sort/merge process. Matrox QC-640 Display Controller At the Spring Symposium, Dave Evans presented a nice review of graphics software and products for RT-11. He mentioned that an anonymous person had submitted software designed for a Matrox display controller. Matrox is a Canadian company who produce a line of graphic controller boards for the Q-bus and Unibus. I have their most recent product, the QC-640, a board which accepts ASCII text, and can produce lines, filled areas, symbols, text, and so on in a variety of colors (256 out of a 24-bit palette), as well as perform such transformations as scaling, rotation (in 3-D, yet), clipping, and so on of the image. I had written a handler for this device, called MX, and offered to provide it to the SIG, along with a utility program, MATEST, which exercises some of the features of the board. SCHOR1.DSK & SCHOR2.DSK (continued) DYDS -- Handler Modifications for Double-Sided 8" Floppies This may be old-hat to many, but for those of us still using 8" floppies, especially those from non-DEC third-party sources, these devices have an inherent capability to handle twice as much data, simply by using two read/write heads, and double-sided media. Rumor even has it that DEC was all set to release an RX03 as the double-sided double-density member of the RX01/RX02 family. SCHOR1.DSK 47 files, 955 blocks SCHOR2.DSK 27 files, 531 blocks ************************************************************************** WALRAV.DSK Principal Author: Robert Walraven LGRFRE.MAC is a fortran callable function to return the largest free space on a device. (Will optionally return second largest as well) Information for use of the function is included in the LRGFRE.MAC SYSSIM.FOR is a FORTRAN-77 program to simulate various operating systems on RT-11. Contributed to DECUS by the RT-11 Steering Committee. THIS IS A SPOOF, NOT A SERIOUS PROGRAM! WALRAV.DSK 5 files, 64 blocks ***************************************************************************** ********************************************************************** DIGLB1.DSK & DIGLB2.DSK Device Independant Graphics Library Hal R. Brand December 22, 1986 DIGlib User Society The DIGLIB Users Society (DIGUS) is now basically defunct largely due to lack of interest on both sides. However, I, Hal Brand, will continue to maintain DIGLIB to the best of my ability in my available spare time. Thus, do not expect immediate response. I will try make fix all bugs in a timely manner (about 1 week), but make no guarantees of any sort. In addition, I will try to add new drivers to DIGLIB as needed, mostly by obtaining the work of others. People writing/enhancing DIGLIB drivers (or generally useful subroutines pertaining to DIGLIB of any sort) are strongly encouraged to send them to Hal Brand (L-308) so that I can add them to DIGLIB. Please specify if you want to have your name removed or left on the software so that you do or don't get bugged. NOTICE This computer code material was prepared as an account of work sponsored by the United States Government. Neither the United States nor the United States Department of Energy, nor any of their employees, nor any of their contractors, subcontractors, or their employees, makes any warranty, express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product or process disclosed, or represents that its use would not infringe privately-owned rights. DIGLIB is a free product brought to you by Hal R Brand courtesy of Jack W Frazer, Ted Michels and the Lawrence Livermore National Laboratory. Since DIGLIB was provided to you free (or nearly so), it is my sincere hope that DIGLIB will be freely circulated, and enhancements will be also. To aid in this effort of mutual exchange, please send me any DIGLIB software you believe would be of general use to the DIGLIB user community. I will evaluate it (and possibly modify it) and will distribute and maintain it if I also believe it is worth distributing with DIGLIB. DIGLIB (Device Independent Graphics LIBrary) is a collection of FORTRAN callable subroutines designed with the following goals: 1. Easily usable by the casual graphics programmer for 2D plotting. 2. Device independent (as much as possible). 3. Small and reasonably fast. 4. Device drivers are as simple as possible, and therefore easy to write, and device drivers may be written in FORTRAN when desired. DIGLB1.DSK & DIGLB2.DSK (continued) 5. Compatible (as much as possible) with PLTLIB. This is a historical artifact that no one now needs be concerned with except former PLTLIB users. 6. Maintainable. 7. Compatible with RT-11, TSX, RSX-11M, IAS, and VMS. 8. Compatible with MACRO, FORTRAN/RT, F4P, FORTRAN-77, and OMSI PASCAL. DIGLIB comes very close to meeting all of the above design goals. DIGLIB is now maintained on a VAX under VMS. This has greatly helped in maintaining and enhancing DIGLIB at the expense of allowing a few more bugs specific to RT-11 and/or RSX to sneak out. For more information, see the file DIGLIB.DOC on DIGLIB2.DSK. DIGLB1.DSK 147 files, 786 blocks DIGLB2.DSK 18 files, 445 blocks ********************************************************************** Ed Judge Logic Systems 30 Autumn Dr. Northampton, MA 01060 413 584-7159 RESEQ is a reseqencing program written in F77 that will fully renumber either F4 or F77 programs, sources included. It is a complete rewrite of an older program form DECUS and the SIG tapes. RESEQ.DSK 15 files, 106 blocks ********************************************************************** Ed Judge Logic Systems 30 Autumn Dr. Northampton, MA 01060 413 584-7159 TEXTAN.SAV, JFSPEL.SAV (in TEXSPL.DSK) and the files DCT1.DAF + DCT2.DAF combined into JEFDCT.DAF are the componants of a screen prompted text analyzer and spelling corrector. JEFDCT must be on a device labeled "VM" and the others on "SY". We use VM as the device for speed, but the algorithm is reasonably fast on a good hard disk with the same name. TEXEXT.DSK provides a disk only version text analyzer, sources included (F77). TEXSPL.DSK 3 files, 162 blocks TEXEXT.DSK 18 files, 190 blocks DCT1.DAF 1 file, 827 blocks (not a subdevice) DCT2.DAF 1 file, 827 blocks (not a subdevice) **********************************************************************