














  ****************************************************************************





                            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),
<tab>, 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)

  **********************************************************************

