RSX SIG Tape Distribution - Fall 1982 
 
 
          This is the RSX/IAS SIG Symposium Tape from the 1982  Fall  DECUS 
     Symposium  in  Anaheim.   The  tape contains material submitted by the 
     user community to the SIG at that meeting.   
 
          The programs on this tape are from user submissions.   The  DECUS 
     staff, the RSX/IAS SIG staff, and DEC are all in complete ignorance of 
     the contents of the tapes.  No warranty of any kind is implied in  the 
     distribution  of  these  tapes.   The  programs may or may not be well 
     documented, they may or may not work, they may even crash your system. 
     If  you  have  a  problem  with  the contents of the tape, contact the 
     author of the program.  Do not contact DECUS, DEC, or the RSX/IAS SIG. 
 
          The tape contains over 3000 files requiring 64,200 blocks of disk 
     space.   Since this will fit on a single 2400 foot tape only in BRU at 
     1600 bpi, it will be distributed as such.  Because it is  larger  than 
     an  RK07  disk, it has been split into 2 BRU container files, with the 
     1st (/BAC:RSXF82) as an RK07 image, and the 2nd (/BAC:SVENTOOLS) as an 
     RL02  image  containing  only  Joe  Sventek's  Software  Tools release 
     (15,600 blocks). 
 
          Directory [300,1] contains the files documenting the contents  of 
     the tape.  The following files are present: 
     RSXF82TPE.DOC contains an abstract of the contents of the tape by UIC. 
     README.ALL contains a concatenated list of all the README files on the 
        tape. 
     RSXF82.DIR contains a directory of all the files on the tape (BRU does 
        not produce nice directories). 
     SUBMIT.DOC contains guidelines for submissions to the RSX/IAS sig tape 
        collection.   This  is  MUST  reading  for  everyone who desires to 
        submit a program to the SIG tape.   
     BEGINF82.DOC has a copy of this text. 
     UICSETF82.CMD contains the UFD commands to create all the needed UIC's 
        on  device  XX:   exclusive  of those needed for the Software Tools 
        Backup_Set.  Edit it to  match  your  needs  before  using  BRU  to 
        extract the tape contents.  A word of caution:  under at least some 
        circumstances, 11M V4.0 BRU's /UFD switch creates directories  even 
        when it doesn't put anything in them). 
 
          The RSX SIG Tape Working Group is continuing to create a document 
     listing  the  most popular programs from past Sig Tapes.  From this we 
     will be able to create a "Best of the RSX/IAS Sig Tapes"  tape,  which 
     we  can  keep  updated.   The  problem is how do we determine the most 
     popular programs.  If you have taken a program off the  SIG  tape  and 
     used  it,  write me a letter and let me know.  This will at least be a 
     start.  Let me know about things that did not work also.  Be  sure  to 
     tell me which tape and what uic. 
 
 
                                        Jim Neeland 
                                        RSX-IAS SIG Tape Copy Coordinator 
                                        Hughes Research Labs 
                                        3011 Malibu Canyon Rd. 
                                        Malibu, California  90265 
                                        (213) 456-6411 ext. 333 


          ********************DM0:[300,120]README.1ST;1********************
          ********************DM0:[300,120]README.1ST;1********************

THIS UIC CONTAINS THE WORLD-FAMOUS AND HIGHLY ACCLAIMED VS: DRIVER, CURRENT
VERSION 2.05 (05-JUN-82 REVISION), AND ASSOCIATED UTILITIES AND TEST PROGRAMS.
THE VS: DRIVER PROVIDES A SYSTEM OF NAMED QUEUES FOR INTER-TASK
COMMUNICATIONS, AND CAN BE VIEWED AS AN EXTENSION OF A "VARIABLE SEND-DATA"
SERVICE.  VS: VERSION 2.05 INCLUDES SUPPORT FOR AST-ON-RECEIVE, SELECTIVE
EXAMINE, SELECTIVE MESSAGE DELETE, AND FLUSH QUEUE, WHICH VERSION 1 DID NOT
HAVE.
THE UPGRADE FROM V2.04 TO V2.05 CONSISTS OF THE REMOVAL OF CODE THAT CALLS
THE EXEC $GTWRD AND $PTWRD ROUTINES.  BY REMOVING THE (UNNECESSARY) MAPPING
AND UNMAPPING INSTRUCTIONS FROM THE TRANSFER LOOP, TRANSFER TIME PER WORD HAS
BEEN DECREASED TO LESS THAN 1/8 OF THE TIME IN PREVIOUS VERSIONS!
IF YOU WANT SUPPORT (BUG FIXES, ETC.) FOR VS:, PLEASE CONTACT ME AT ONE OF THE
FOLLOWING ADDRESSES:
	VIRTUAL ADDRESS (MY EMPLOYER):
		JOHN OSUDAR
		SCIENCE APPLICATIONS, INC.
	*** THE FOLLOWING ADDRESS IS NO LONGER CORRECT -- OUR OFFICE HAS MOVED
	*** TO SCHAUMBURG, IL -- DO NOT TRY TO CONTACT ME AT THIS ADDRESS OR
	*** YOU WILL GET A "PAGE FAULT"!!!
		1211 W. 22ND STREET
		SUITE 901
		OAK BROOK, IL 60521
	PHYSICAL ADDRESS (WHERE I REALLY WORK):
		JOHN OSUDAR
		CHEMICAL ENGINEERING DIVISION
		BUILDING 205, ROOM A-109
		ARGONNE NATIONAL LABORATORY
		9700 S. CASS AVENUE
		ARGONNE, IL 60439
	LOGICAL ADDRESS (BUSINESS MAIL TO MY HOME):
		JOHN OSUDAR
		P. O. BOX 1451
		HOMEWOOD, IL 60430

IF YOU'RE DESPERATE, YOU CAN EVEN CALL ME AT ARGONNE; MY OFFICE PHONE THERE
IS (312)972-7294.  IF YOU'RE REALLY DESPERATE, AND YOU CAN'T REACH ME AT
ARGONNE, YOU CAN TRY CALLING SAI AT (312)885-6800 AND LEAVING A MESSAGE.
(DON'T TRY CALLING MY POST OFFICE BOX -- IT DOESN'T HAVE A PHONE!)


JOHN OSUDAR

(SUPPLYING THE FINEST IN RSX-11M VARIABLE SEND-DATA DRIVERS FOR OVER A
HUNDREDTH OF A CENTURY)

          ********************DM0:[300,134]README.1ST;1********************
          ********************DM0:[300,134]README.1ST;1********************

The files in this account fall into five groups : 

1) The  RUNOFF  documentation  files.  The primary file is ASTPAPER.RNO,
   which is the text from the Fall 82 DECUS paper, AST's And SST's In An
   Overlay Environment. 

2) The Autoload Overlay routines, which are to be placed in SYSLIB.

3) The macro files (extension .MCR), used by the Autoload  routines  and
   to be placed in RSXMAC.SML. 

4) The AUT Autoload Overlay Trace Receiver Task. This task is written in
   "C".  It  must  be  compiled  on  your  own system, because licensing
   arrangements prohibit our  distributing  task's  using  our  vendor's
   run-time routines. 

5) The  ATF  Autoload Overlay Trace Formatter Task. This task is also in
   "C" source form only. 

Miscellaneous object files from subroutines which we wrote are  supplied
for use with the AUT and ATF tasks. 

          ********************DM0:[300,135]README.1ST;1********************
          ********************DM0:[300,135]README.1ST;1********************




                Olympic sized pool for RSX11M V4.0
                          M. R. Stewart
                         Western Electric
                         Lisle, Illinois
                           (CARTS LUG)


           Individuals having problems with running out of pool on
      large memory RSX11M V4.0 systems can gain about 1/2K or more
      by relocating some of the crash dump code  into  the  EXCOM2
      partition.   A  procedure  for  doing  this  is  outlined in
      OLY.MEM in this UIC.  Two correction files are also included
      for  producing  an  Olympic  sized pool for your RSX11M V4.0
      executive.  Be sure to  follow  the  procedure  outlined  in
      OLY.MEM

          ********************DM0:[300,136]README.1ST;1********************
          ********************DM0:[300,136]README.1ST;1********************


								12/03/82

     Modified source from SPRING '82 tape (directory [312,331])

     The PAC game was given the following modifications.

     1) When two or more PAC games were in the system, the throughput
        of the game was horribly degraded.  I noticed that the
        game was written to do a QIO for cursor control and a QIO to do
        single character outputs.  I combined the cursor control and
        single character output into one QIO called CPP (cursor control
        and print).  The game was much faster and with multiple PAC's in
        the system, the individual games did not degrade as much.

     2) I overlaid the program in such a way that no degradation of the
        program was allowed during execution.  This was to allow many PAC's
        to run on small memory systems.

  ** 3) I added the saving of high scores and initials.  This was desired
        to allow competition with other players.

     I know it works fine on RSX11M system (11/44 or 11/60).

     To compile the program, use PACASM.CMD

     To taskbuild the program, use PACBLD.CMD.
     NOTE you will have to change the resident library definition (LIBR=...).


     Have fun!!!!!

     Stephen Dover
     Mcc Powers
     2942 MacArthur Blvd.
     Northbrook, Il. 60062

          ********************DM0:[300,137]README.1ST;1********************
          ********************DM0:[300,137]README.1ST;1********************

								12/03/82

     Modified source from SPRING '82 tape (directory [312,340])

     The CEN game was given the following modifications.

     1) When two or more CEN games were in the system, the throughput
        of the game was horribly degraded.  I noticed that the
        game was written to do a QIO for cursor control and a QIO to do
        single character outputs.  I combined the cursor control and
        single character output into one QIO called CPP (cursor control
        and print).  The game was much faster and with multiple CEN'S in
        the system, the individual games did not degrade as much.

     2) I added the saving of high scores and initials.  This was desired to
        allow competition with other players.


     To compile the program, use CENASM.CMD

     To taskbuild the program, use CENBLD.CMD
     NOTE: you will have to change the resident library definition (LIBR=...).


     Have fun!!!!!

     Stephen Dover
     Mcc Powers
     2942 MacArthur Blvd.
     Northbrook, Il. 60062

          ********************DM0:[300,140]README.1ST;1********************
          ********************DM0:[300,140]README.1ST;1********************

***********************************************************************
Turn your excess main memory to a semiconductor "disk". 

	Ray Van Tassle
	Motorola
	1301 E. Algonquin Rd.
	Room 4135
	Schaumburg, Ill.
	(312)-576-6017

We recently upgraded our program development 11/70 (running RSX-11M v3.2)
from 256KW to 2 MW, and added many
more terminals at the same time. Before, when more than 6-8 users
were logged on doing program development, the system would swap itself
to death. We quadrupled our memory (and went from core to MOS), which
took care of that, but now the system slowed down noticably when more
than 10-12 users, especially when several of them were running TKB.

I looked at the RMD memory display and saw all the empty memory, then
at the DA (device activity) page and saw all the disk I/O active
and queued up (our main disks are one RP-04 and two RP-06's, all on the
same controller).

Now, we have been using Ralph Stammerjohn's Virtual Disk package for several
years, and I have always admired his statement, "Look, a disk is just
a bunch of contiguous block, right?"

So when I saw all that empty memory, I thought about it, and suddenly
realized that I was really looking at a bunch of contiguous block, they
just didn't have a device driver hooked up to them. So I sat down and
over the week-end, wrote a device driver (stealing as much as possible
from VDDRV), and called it FX (Fixed Disk).

Now disk accesses to FX: involve a core-to-core (should that be
MOS-to-MOS??) move, which is a whole lot faster than a disk seek and
read. 

Needless to say, the performance of our system has improved greatly. We
regularly have 13-20 terminals logged on, doing program development,
and get the same performance we used to have with half the number of
active terminals.

---------------------------------------------------
The way it works is this: Create a partition named "FXDISK", this is
the semiconductor memory. When you load the driver, it looks for this
partition, and sets the number of blocks in the disk (U.CW2/U.CW3)
according to the size of the partition. Then you do the normal things
to the disk--BAD, INI, MOU, etc.

I allocate 256KW, which gives 1024 blocks. This is not really large
enough to use as a scratch disk for work files (for MAC and TKB), and
we have enough memory that we rarely do much task checkpointing.
So I put the most commonly used task images on FX: and install them
from it. For us, these are MAC, TKB, CCL, INS, PIP, SYS (the multi-user
part of MCR---...MCR), and TECO.
I also put two heavily used OLB's there, SYSLIB.OLB and the C OLB.

I zapped TKB so that it defaults to FX:[1,1]SYSLIB.OLB rather
than LB:[1,1]SYSLIB.OLB. See BIGTKB.DUM for help in finding where to
put the patch.
Task-builds are still not blindingly fast
(they will probably never be), but one particular task-build dropped
from 2 minutes to 35 seconds (!!) on an unloaded system.

------------------------------------------------------
I have included the command files we use. LOADFX.CMD is invoked
from [1,2]STARTUP.CMD. 
I see no reason why this wouldn't also work on M-PLUS, you should
only have to fix up the FX data-base, which shouldn't be hard to
do.


-------------------------------------------------------
After further thinking (along with some nudges from other sources), it
seems to be that I could also write a disk-block cacher, using
the same move logic as FXDRV, and another memory partition.
The coding should not take longer than a week-end, but the investigation
to pick the cache replacement algorithm and cache size will
take considerably longer. The BITMAP.SYS on my RP06 is 85 blocks--
I wonder how much it is accessed.

-------------------------------------------------------
I get dizzy thinking of all the weird things you could do---
imagine a virtual-disk on an fx memory-resident disk---
or caching blocks of a FX disk---
or caching blocks of a virtual disk on a fixed-disk---
or ---


					Ray Van Tassle
					19 Nov 1982

          ********************DM0:[300,140]README.2ND;2********************
          ********************DM0:[300,140]README.2ND;2********************

/************************************************************/
This is a set of C programs and routines:
RAND is a superior random number generator.
QKSORT is a super-fast quick-sort.
SORT is a utility program for sorting files. You can sort on
	up to 10 key fields, with many options: numeric/ascii,
	ascending/descending, etc. And can specify the location
	of key fields in many ways.
	Needless to say, it is very fast.
	
	

	Ray Van Tassle
	Motorola
	1301 E. Algonquin Rd.
	Room 4135
	Schaumburg, Ill.
	(312)-576-6017

          ********************DM0:[300,201]README.2ND;1********************
          ********************DM0:[300,201]README.2ND;1********************

NOTE: DO NOT DELETE ANY .OLB OR .MLB FILES!!! THEY ARE REQUIRED FOR
      BUILDING THIS SOFTWARE.

          ********************DM0:[300,201]README.1ST;4********************
          ********************DM0:[300,201]README.1ST;4********************

[77,1]README.1ST  ***FERMILAB CONNECTED MACHINES SOFTWARE***

SIG-TAPE editor's note:
The files here have been moved via the following convention:
[77,1]==>[300,201]
[77,2]==>[300,202]
[77,3]==>[300,203]
[77,4]==>[300,204]
[77,5]==>[300,205]
[77,6]==>[300,206]
[77,7]==>[300,207]
[77,10]==>[300,210]
[77,11]==>[300,211]
[77,20]==>[300,212]
[77,100]==>[300,213]
[77,200]==>[300,214]

THIS COMMUNICATIONS SOFTWARE HAS BEEN USED EXTENSIVELY IN TEST SITUATIONS
ON A SINGLE PROCESSOR AND IN A THREE PROCESSOR/THREE LINK CONFIGURATION,
WHERE ONE THE MACHINES HAS TWO OF THE LINKS.  IT HAS NOT YET BEEN USED
IN A RUNNING EXPERIMENT AT FERMILAB AND SO WILL VERY PROBABLY STILL CONTAIN
SOME BUGS.  WE HOPE THEY ARE NOT SERIOUS ONES. 
 
PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].
 
ON THIS UFD ([77,1]) IS A COMMAND FILE "OFFBRU.CMD" WHICH WE HAVE FOUND 
USEFUL FOR GETTING UFD'S OFF BRU FORMAT RSX SIG TAPES, AS WELL AS FOR
RECOVERY OF UFD'S FROM BACKUP SETS. READ THE COMMAND FLE BEFORE YOU TRY
TO USE IT SO THAT YOU HAVE AN IDEA OF WHAT YOU SHOULD EXPECT.

THE AUTHORS WILL BE GRATEFUL IF USERS OF THE SOFTWARE WILL FEED BACK
THEIR EXPERIENCES AND REPORT ON BUGS FOUND, PREFERABLY IN WRITING.
 

          ********************DM0:[300,202]README.1ST;1********************
          ********************DM0:[300,202]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,203]README.1ST;1********************
          ********************DM0:[300,203]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,204]README.1ST;1********************
          ********************DM0:[300,204]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,204]README.2ND;1********************
          ********************DM0:[300,204]README.2ND;1********************

NOTE: DO NOT DELETE ANY .OLB OR .MLB FILES!!! THEY ARE REQUIRED FOR
      BUILDING THIS SOFTWARE.

          ********************DM0:[300,205]README.1ST;1********************
          ********************DM0:[300,205]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,206]README.1ST;1********************
          ********************DM0:[300,206]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,207]README.1ST;1********************
          ********************DM0:[300,207]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,210]README.1ST;1********************
          ********************DM0:[300,210]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,211]README.1ST;1********************
          ********************DM0:[300,211]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,212]README.1ST;1********************
          ********************DM0:[300,212]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,213]README.1ST;1********************
          ********************DM0:[300,213]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[300,213]README.2ND;1********************
          ********************DM0:[300,213]README.2ND;1********************

NOTE: DO NOT DELETE ANY .OLB OR .MLB FILES!!! THEY ARE REQUIRED FOR
      BUILDING THIS SOFTWARE.

          ********************DM0:[300,214]README.1ST;1********************
          ********************DM0:[300,214]README.1ST;1********************


PN172.MEM ON [77,200] IS THE PRELIMINARY VERSION OF THE FERMILAB GUIDE
TO INSTALLING AND USING THE SOFTWARE.  IT CONTAINS A COMPLETE LIST OF  
THE CONTENTS OF THE TAPE BY UIC. PAPERS PRESENTED AT THE DECUS
FALL 82 SYMPOSIUM AND OTHER DOCUMENTATION RELATING TO COMMUNICATIONS
SOFTWARE CAN BE FOUND ON [77,200].

          ********************DM0:[301,67]README.1ST;1********************
          ********************DM0:[301,67]README.1ST;1********************

ENTRY is a Full Screen Data Entry System which allows the user to enter data 
onto a screen of their own design.  Data records can be inputted, changed,
deleted (and undeleted), browsed through, searched for, and printed.
ENTRY is modeled after KED/EDT with similar keypad functions and HELP screen. 
The numeric keypad can be used in both Application AND Numeric keypad modes
ENTRY is written to be run on a VT100 family terminal running under RSX-11M.

This is a preliminary version of ENTRY.  It has been written in both 
FORTRAN-77 (V4.0-2) and MACRO-11 and tested under RSX-11M (V3.2).  It should
run under later versions and may run under VMS.  ENTRY does not require
any FPU instructions.  Unsolicited AST support is required.  Subsequent
releases of ENTRY will contain numerous performance and operational 
improvements/additions.

See ENTRY.TXT for further information.

R. DAVID BARSKY
U. C. L. A. 
SCHOOL OF PUBLIC HEALTH 
CENTER FOR THE HEALTH SCIENCES, ROOM 71-245
LOS ANGELES, CALIFORNIA  90024
TEL (213) 825-9284

          ********************DM0:[303,40]README.1ST;2********************
          ********************DM0:[303,40]README.1ST;2********************

README.1ST			MAO			18-Nov-82
 
	The files on this tape are the sources for the FLECS and ALECS
structured language preprocessors for FORTRAN and MACRO-11 respectively.
 
				NOTE
 
There is but a single task for FLECS & ALECS called FLE.TSK; install it
as ...FLE to get FLECS, install it as ...ALE to get ALECS!!
 
The files and sources have been used under RSX-11M 3.2 and 4.0; I have not
tested them under any other systems.
 
	In order to produce a working copy of FLECS/ALECS from these files
the following steps are necessary:
 
	1. Transfer all files from the tape to some disk, UIC.
 
	2. Execute the file FLECRE.CMD.  This will compile the FTN files
(Note F4P is used--FOR should work too), assemble the MAC file and
task build FLE.TSK.  Do NOT use FLEBLD.CMD at this stage; because of the
use of in-line comments in the .FLX sources on this tape, old versions of
FLECS cannot properly translate the .FLX files on this tape.
 
	3.  Install the copy of FLE.TSK as ...FLE and execute the file
FLETST.CMD.  The file will tell if the new version of FLECS works
correctly.  To test ALECS you can perform a similar test using the
supplied example MCRREQ.ALX.
 
	4.  At this point you may wish to execute FLEBLD.CMD which will
give you a completely new set of files for FLECS/ALECS (and destroy
the distribution copies on the disk).  This file is actually intended
for use if you wish to modify FLECS/ALECS after you have a working version.
 
	Below is a list of files on the tape:
 
A.FLX,.FTN,.FLL	Source file, line analyzer subroutine.
 
ALE.CMD		Command file to use ALECS.
 
ASUB.FLX,.FLL,.FTN Source file, special ALECS code generation.
 
FLE.CMD		Command file to use FLECS. 
 
FLEBLD.CMD	Command file to recreate FLE.TSK once FLECRE.CMD
		has been used to create the initial version.
 
FLECMP.CMD	Command file to compile FLECS/ALECS sources
		(used by FLEBLD.CMD). 

FLECRE.CMD	Command file to create FLE.TSK from distribution.
 
FLECSUIM.MEM	A copy of the UIM in text format for those who don't have
		DSR.
 
FLECSUIM.RNO	FLECS/ALECS User Instruction Manual in Digital Standard
		Runoff format.
 
FLEPRT.CMD	Command file to list all FLECS/ALECS command files
		and listing files on LP:.
 
FLERSX.MAC	Source file, FLECS/ALECS MACRO routines.
 
FLETKB.CMD	Command file to taskbuild FLE.TSK
		(used by FLEBLD.CMD).
 
FLETST.CMD	Command file to test newly created FLE.TSK.
 
FSUB.FTN	Source file, FLECS/ALECS FORTRAN support routines.
 
L.FLX,.FTN,.FLL	Source file, listing subroutine.
 
LAMPFI.FLX,.FTN,.FLL Source file, task initialization.
 
M.FLX,.FTN,.FLL	Source file, main routine.
 
MCRREQ.ALX	A sample routine written in ALECS.
MCRREQ.ALL	An ALECS listing file for MCRREQ.
MCRREQ.MAC	ALECS MACRO-11 output for MCRREQ.
 
README.1ST	This file, an ASCII text file.
 
	Michael A. Oothoudt	(505) 667-4354 or (505) 667-5241
	P.O. Box 1663, Mail Stop H828
	Los Alamos, NM 87545
 
END OF FILE README.1ST

          ********************DM0:[307,20]README.1ST;1********************
          ********************DM0:[307,20]README.1ST;1********************

 README.1ST       Directory: [307,20]

 U. S. Geological Survey
 Menlo Park, California

 USGS Submissions for the Fall 1982 RSX/IAS SIG DECUS Symposium Tape
 -------------------------------------------------------------------

     We are pleased to submit our contributions to the Fall '82 tape, and
hope you will find them useful. Some of our programs were previously
submitted to the SIG tapes, but that was several versions ago of RSX.

     All of these submissions have been tested on an 11/70 running 
RSX-11M-PLUS V2.0 and on an 11/23 running RSX-11M V4.0. With any luck,
all of the programs will run on V2.1 / V4.1 without modification. If
they don't, please write me at the address below for patches.

     To build the entire kit requires about 1700. blocks of disk space
on the device where the kit is loaded.

     Our distribution is contained in one UIC, [307,20]. The files included
in this UIC are:

       README.1ST      - The file you are reading now
       USGSF82.CMD     - Command file to generate the USGS kit
       USGSF82.ULB     - Universal library containing the kit
       USGSF82.DOC     - Documentation on generating and using the kit

     To generate the kit, copy the entire UIC to any UIC of your choosing,
and enter:

       >@USGSF82

     The command file will try to locate all necessary system files. It
will ask for help if it can't find what it needs. If your system files
are in strange places, you just might have to modify the command file.

     The command file may be invoked in "batch" mode from another command
file. The global symbol $AUTO must be set to True, and there are other
environmental symbols which may be defined to assist the command file.
(Undefined symbols will be assigned default values which normally work.) In
this mode, the command file runs without interaction. See the comments
in USGSF82.CMD describing this mode.

     I apologize for not supplying Help files for our submissions. All
of our programs (except DVCDAT) recognize a special switch, /HE, to print
out a page of information on the issuing terminal. I hope that suffices.

------------------------------------------------------------------------------

Our submissions:

     CSH (Checkpoint Space Handler)

     This program was briefly mentioned by me at the Spring '82 Atlanta
Symposium Magic Session. This program allows you to examine the size and
contents of your system checkpoint files, and will forcibly deallocate
the checkpoint file if you need to dismount the disk (ACS simply marks
the file for deallocation; you have to wait for all checkpointed tasks
to be loaded into memory, which can take forever on M-PLUS systems.)

    -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

     CWD (Change Working Directory) and PWD (Print Working Directory)

     This is the program that has been mentioned several times at the
"Best of the SIG Tape" sessions. CWD allows you to conveniently change
your default device (SY0:) and/or current UIC (much like the "cd" command
on Unix(TM)). For example,

        >Cwd DL2:104,4   is the same as:    >Asn DL2:=Sy0:
                                            >Set /Uic=[104,4]

     Cwd also prints the available space on SY0:, and checks to make
sure you have a directory in your new UIC.

     The PWD command simply prints your current working directory, along
with free space statistics on SY0:

     Caution to privileged users: before using CWD from a CLI other
than MCR, please read the release notes in USGSF82.DOC before proceeding
any further.

    -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

     DVCDAT (Device Database Display Program)

     This is a utility written by Jim Neeland of Hughes Research, and
modified by Larry Baker of USGS to run on M-PLUS. DVC takes a single
argument, a device specification, and dumps the driver database on the
user's terminal. The offsets are labelled symbolically in a most
readable format. This program is almost essential for anyone working
on a device driver.

    -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

    SNAP (Snapshot Utility Program)

    This is a catchy little program which tells PMD (the Post Mortem
Dumper) to produce a snapshot of any (well, almost any) task on the
system. With command switches, you can specify up to four pairs of
memory address limits to have PMD dump, along with other goodies.
After PMD is finished, the task that was "Shot" resumes on its merry way.
If the RMDEMO task header display doesn't give you all the information
you need, try using SNAP.

    -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

    WHO (System Activity Utility)

    How many incarnations of this program exist? We lost track, but
we went ahead and resubmitted ours. WHO prints the terminal ID's, user
names, and active tasks for each logged in terminal on your system.
Each task can have one of eight "status" codes showing what each task
is up to. When your system slows down, this command quickly spots the
guilty parties.

    WHO can also quickly scan your account file looking for a particular
user or UIC.

------------------------------------------------------------------------------

    For quirks and problems with the programs in this kit, please read
the release notes in USGSF82.DOC. If you really get stuck, please write
to me at the following address:

         Gary L. Maxwell
         U. S. Geological Survey
         345 Middlefield Road  M/S 77
         Menlo Park, California   94025


          ********************DM0:[307,30]README.1ST;1********************
          ********************DM0:[307,30]README.1ST;1********************

                  Fall 1982 DECUS Distribution
                                
                       Software Tools VOS
                                
                           Joe Sventek
                                
                  Lawrence Berkeley Laboratory





The UIC's and their contents for this distribution are:

[307,30] TOOLGEN.CMD,  the  command  file  for  building  the LBL
         Software  Tools  Virtual  Operating  System.   For  more
         information  on  the features available in this release,
         consult  the  release  notes  contained  in  this   UIC,
         RELEASE.DOC. 

[307,31] Everything you need to build this release of the VOS. 

[307,32] The   source   files  for  the  RSX-specific  tools  and
         primitives. 

[307,33] The source files for the portable VOS utilities. 

[307,34] Source  files  for  the   variable-length   send/receive
         driver.    In   addition,  a  document  describing  home
         directory  management  for  RSX  may  be   found   here.
         Correction  files  for  versions  3.2 and 4.0 of RSX-11M
         are also provided. 

[307,35] Archives containing  the  format  input  files  for  the
         manual entries in sections 2-4 of the manual. 

[307,36] The  initial  distribution  of  the  Software Tools Mail
         System. 

[307,37] The  TCS  archives  for   the   previously   distributed
         Software   Tools   mail   utilities,   as  well  as  the
         additional source files needed for  building  the  tools
         on IAS. 



                 Statistics on this Distribution

                       UIC     Blocks  Files
                     ________  ______  _____
                     [307,31]   5353    198
                     [307,32]    742     15
                     [307,33]   4936     93
                     [307,34]    178     13
                     [307,35]   1717      9
                     [307,36]   ????    ???



NOTE: before  performing  the  toolgen,  it is important that you
      peruse  the  section  of   release.doc   entitled   "Memory
      Limitations  (and  how  to  overcome them).  IAS users will
      need to read both release.doc and [307,37]iasreadme.1st. 

 BUG: As many of you may have noticed,  the  mubld  utility  does
      not  work  correctly under version 4.0 of RSX-11M.  As soon
      as I have a fix, a copy of the  correction  procedure  will
      be published in the Multi-tasker. 


          ********************DM0:[307,50]README.1ST;1********************
          ********************DM0:[307,50]README.1ST;1********************








                                 RUNOFF

                             Version M3.0X



                                   by


                        Charles H. Spalding III

                             Unimation Inc.
                          1202 Charleston Road
                        Mountain View, CA 94043

                             (415) 965-0557
                       (8:30-10:00 Pacific time)


                            December 5, 1982




Here is yet another version of RUNOFF!  This version is the result of an
effort to achieve the ability to  produce  an  extensive  system  manual
without having to do any editing of the RUNOFF output.  Toward that end,
several  new  commands  have  been added, several existing commands have
been enhanced, and many bugs have been fixed.

This version is derived from DECUS version M02.  An earlier  edition  of
this  version was submitted at the Spring '82 symposium--this edition is
the result of continued work.  There are still several features  I  plan
to  include  (and  subtle bugs to be fixed).  I also intend to review as
many other versions as I can to see what features should be incorporated
from them.  The ultimate intention is to submit a  new  version  to  the
DECUS library.  (I am open to suggestions as to how to best proceed with
the whole issue of RUNOFF support.)

There are undoubtedly bugs in this version.  I would  appreciate  it  if
bugs  were reported.  There may also be differences of opinion about how
certain features should behave.  Please report any characteristics which
seem  undesirable.  The preferred method of reporting these things is to
send annotated copies of the input and output.  

Almost all changes to the  code  have  been  made  with  assembly-switch
control  so  that undesired changes can be easily removed.  It should be
noted, however, that there is a good chance that  bugs  will  appear  if
current  features  are  disabled.  There are many interactions, and they
may not be handled correctly in all combinations.  
                                                                Readme-2




One final caveat:  this version has been used  only  under  RSX-11M.   I
have  no  idea  whether  it will still run correctly under RSTS or IAS--
presumably it will.

The user's manual has been edited extensively  to  correct  errors,  add
clarity  (hopefully),  and  document  changes  to  the program.

The following sections very briefly describe some of the  changes  made.
An  annotated list of the files in this submittal is included at the end
of this document.  


Significant feature enhancements since the Spring '82 version include:

     1.  It is now possible to keep  segments  of  the  input  (e.g.,  a
         table)  intact in the output without just forcing a new page if
         the material won't  fit  on  the  current  page.   Normal  page
         filling continues and the material is output on the next page.

     2.  Orphan control has been added to the PARAGRAPH command.

     3.  A text argument has been added to the FIGURE command to make it
	 possible to have a caption output with the figure space.

     4.  Unnumbered  lists  are  now  possible,  with  a  user-specified
         "bullet" character.

     5.  Header levels can now be  specified  relative  to  the  current
         level.  (This simplifies insertion and removal of levels.)

     6.  Tests for space available on the current page now consider  the
         line  spacing in effect when it makes sense to do that.  (There
         is a new command which doesn't consider the line spacing.)


Significant feature enhancements in the Spring '82 version included:

     1.  The task now expands  itself  when  the  index/footnote  buffer
         fills.   Thus,  RNO now does not occupy any more memory than it
         actually needs, and uses all the memory it can if necessary.  

     2.  An assortment of functions  have  been  added  for  making  the
         output  alternate  left/right for reproduction on both sides of
         the page.  

     3.  Multiple input files can be specified.  

     4.  Points at which a word can  be  hyphenated  can  be  explicitly
         specified (to overrule RUNOFF's error-prone algorithm).  

     5.  The index can include subentries, as well  as  entries  without
         page references (for headings above subentries).  
                                                                Readme-3




     6.  A base left margin can be set from which the text  margins  are
         measured.  

     7.  Command syntax is now the same for all  commands  with  similar
         argument combinations.  

     8.  Sections of the input can be set off with command-line  control
         over whether or not they are to be included in the output.

     9.  It is now possible to keep lines together at the _e_n_d of a group
         of lines.


The following list summarizes the new commands which have been added:  

     ALTERNATE               - control left/right alternation of the
     NO ALTERNATE              page header, with optional offset of
                               odd-numbered pages

     ALTERNATING TITLE       - control mode which places subtitle on the
     NO ALTERNATING TITLE      top line of odd-numbered pages in place
                               of the title

     AUTOSUBTITLE            - controls setting of subtitle by HEADER
                               LEVEL commands

     ENTRY                   - records an index entry without a page
                               reference

     EVEN                    - used to force output to an even-numbered
     ODD                       or odd-numbered page, respectively

     FLAGS SUBINDEX          - control special character (">") for
     NO FLAGS SUBINDEX         indicating index subentries

     FOOTNOTE LINE           - specifies characteristics of separation
                               automatically output above footnote(s)

     BLOCK		     - defines a segment of input which is to be
			       kept intact in the output, but without
			       interrupting page composition if the
			       material must be deferred to a later page

     INCLUDE                 - control processing of optional sections
     EXCLUDE                   of the input file
     OPTION
     ELSE
     END OPTION

     LAYOUT                  - sets layout of the output on the page,
                               including top margin and base left margin
                                                                Readme-4




     PAGE NAME               - sets text string to be used as prefix for
                               page numbers

     QUOTE CHARACTER         - assigns character to be used for the
                               quote character (normally "_")
      
     RIGHT JUSTIFY           - pushes line of text against right margin

     TEST LINES		     - acts like TEST PAGE but does not consider
			       the current line spacing


The following switches can now be specified on the command line:  

     /AP                     - append the output to an existing file
      
     /BL:n                   - output  n  blank lines in chapter header
      
     /CH:m:n                 - limit output to chapters  m  through  n
      
     /DO:n                   - set top margin to  n  lines
      
     /EX:m,n,...             - set options to "exclude"
      
     /HL:n                   - set length of page header to  n  lines
      
     /IN:m,n,...             - set options to "include"
      
     /LE:n                   - set base left margin to  n  spaces
      
     /LO:n                   - set page length to  n  lines
      
     /WI:n                   - set default right margin to  n

Several of these switches override  corresponding  commands  within  the
input file.  

If you have existing RNO files which you would like to use with this new
version  of  RUNOFF,  the following changes should yield essentially the
same output as from version M02.  

     At the start of the input, add:	 .LAYOUT 1
					 .HEADER UPPER,4
					 .FOOTNOTE LINE
					 .NO FLAGS SUBINDEX
      
     Replace ".NUMBER 0" with:		 .NUMBER 1
      
     After every NUMBER command except
             NUMBER 0, add:		 .NUMBER +1
      
     On the command line, use:		 /BL:11
                                                                Readme-5




     Replace ".FIRST TITLE" with:	 .TITLE

     Make sure no commands follow ".FIGURE" on a command line


Files included in this submittal:  

     README.1ST      This document
      
     SUMMARY.	     Overview of changes made to RUNOFF

     CHANGES.        Complete list of changes made to RUNOFF
      
     LOG.	     Edit history of recent bug fixes.

     RUNOFF.DOC      Updated user's manual for RUNOFF
      
     RUNOFF.RNO      RUNOFF input file for user's manual
      
     *.MAC           Source code
      
     RNO.OLB         Object library for configuration documented in
                             RUNOFF.DOC
      
     RNOASM.CMD      Command file for assembling all modules
      
     REPLACE.CMD     Command file for assembling a module and
                             replacing it in RNO.OLB
      
     RNOBLD.CMD      Command file for task building RUNOFF
      
     RNOBLD.ODL      Overlay description for task building RUNOFF
      
     FILES.          Lists of source files affected by each change


Unfortunately I have not been able to prepare a document  detailing  the
steps  for  task  building  the  program.   Presumably recipients of the
symposium tape won't need help with that.

In theory, all that needs to be done is edit RNOBLD.CMD  and  RNOBLD.ODL
to  make  them compatible with your system (e.g., presence or absence of
FCSRES) and the default conditions you want (e.g., underlining mode  and
page layout).  Then the command

                              TKB @RNOBLD

will create the task file from the object library, RNO.OLB.

If you want to disable any of the changes which have been made, you must
change the corresponding assembly switch(es) in RNPRE.MAC  and  assemble
                                                                Readme-6




all the affected modules.  (The file FILES. lists all the files affected
by  each  change.)  To  assemble  a  module and replace it in the object
library, use the command

                          @REPLACE <file name>

where <file name> is the name of the file to  be  assembled,  _w_i_t_h_o_u_t  a
file type.  When the last module is being replaced, the command

                         @REPLACE <file name> C

will compress the object library after the replacement.

As an alternative, RNOASM.CMD can be used to assemble  all  the  modules
and create a new object library.

In either case, the TKB command shown above is used  to  create  a  task
file from the object library.

          ********************DM0:[307,100]README.1ST;1********************
          ********************DM0:[307,100]README.1ST;1********************

[307,100]README.1ST

THIS UIC INCLUDES TWO SUBMISSIONS:

1.  A REVISED VERSION OF ACCOUNT.MAC; A PROGRAM TO LOG ACCOUNTING STATISTICS
    FROM AN RSX-11M V3.2 SYSTEM.  THE PROGRAM PROVIDES SAMPLED DATA SUITABLE
    FOR IMPLEMENTING CHARGEBACK ACCOUNTING; IT IS NOT SO WELL SUITED FOR
    SYSTEM PERFORMANCE ANALYSIS.

    THIS LOGGING PACKAGE IS NOT AS COMPREHENSIVE AS THE KMS FUSION PACKAGE.
    IT'S MAJOR ADVANTAGE IS THAT NO SYSGEN IS REQUIRED.  THE PACKAGE LOGS
    RESOURCE USAGE DATA - CONNECT TIME, CPU TIME, MEMORY
    USAGE, TASK PRIORITY, I/O, AND OTHER SYSTEM RESOURCES - ON A TASK-BY-TASK
    AND TERMINAL-BY-TERMINAL BASIS.

    ACCOUNT IS OPTIONALLY DRIVEN BY A PARAMETER FILE, ALLOWING EACH SITE TO
    CONTROL VARIOUS "THRESHHOLDS" FOR DATA LOGGING.  THE THRESHHOLDS MAY BE
    CHOSEN TO LOG REQUIRED DATA WHILE MINIMIZING THE TOTAL SIZE OF THE
    LOG FILE GENERATED.

    ACCOUNT HAS NOT BEEN TESTED UNDER 11M V4.0.  DEC HAS MODIFIED CERTAIN
    TCB AND UCB ATTRIBUTES FOR 4.0; THESE MAY REQUIRE MODIFICATION TO THE
    ACCOUNT SOURCES.  NOTE IN PARTICULAR THAT CODE FOLLOWING LABEL TTUTCB::
    (SETTING UP PSEUDO DATA STRUCTURES FOR CONNECT TIME LOGGING SUPPORT)
    MAY REQUIRE MODIFICATION.  IN ADDITION ANY SITE USING EXTERNAL TASK
    HEADERS MAY RUN INTO PROBLEMS.
 
    **NOTE** THAT SINCE ACCOUNT IS A PRIVILEGED TASK, IT MAY CRASH AN
    11M V4.0 SYSTEM.  BE FOREWARNED!!  

    THE ORIGINAL VERSION OF ACCOUNT APPEARED AS "LOG" UNDER UIC [370,120]
    ON FALL '79/SPRING '80 SIG TAPE.  THANKS TO STEVEN G. DUFF FOR PROVIDING
    A WELL WRITTEN AND FULLY COMMENTED SOURCE.  PLEASE SEE THE SOURCE FOR
    ADDITIONAL DOCUMENTATION.  NOTE THAT THE SOURCE INCLUDES SEVERAL
    CONDITIONAL ASSEMBLY PARAMETERS WHICH MAY BE USED TO FURTHER TAILOR
    THE CODE TO EACH SITE'S REQUIREMENTS.  IN PARTICULAR:
 
    MAXTSK	MUST BE SET TO THE MAXIMUM NUMBER OF ACTIVE TASKS
		PLUS THE MAXIMUM NUMBER OF LOGGED-ON USERS FOR YOUR SITE.
    NUCBS	MUST BE SET EQUAL TO THE TOTAL NUMBER OF DISK UNITS IN
		YOUR SYSTEM, PLUS THE TOTAL NUMBER OF LINEPRINTER UNITS.
		FOR EXAMPLE A SITE WITH 4 RL01'S, 2 RX02'S, AND 1 LP:
		MUST SET NUCBS=7.
    TTSIZE	MUST BE SET TO NN, WHERE TTNN: IS THE HIGHEST TT: UNIT
		NUMBER TO BE LOGGED.

    NOTE ALSO THAT THE SOURCE CODE (AFTER LABEL INI02B) MUST BE MODIFIED
    TO REFLECT EACH SITE'S DISK AND LINEPRINTER CONFIGURATION.
 
    THE SOURCE OF STEVEN G. DUFF'S "DSKLOG" IS ALSO INCLUDED; FOR SITES
    WISHING TO LOG DISK DEVICE USAGE BY FILE OWNER UIC.

    ACCTPRE.FTN IS A HASTILY WRITTEN FORTRAN PROGRAM WHICH TAKES THE
    UNFORMATTED FILE PRODUCED BY ACCOUNT AND "PREPROCESSES" IT INTO
    AN ASCII FILE.  ACCTPRE IS ALSO DRIVEN BY A PARAMETER FILE, ALLOWING
    EACH SITE TO SET ITS OWN CHARGE RATES AND OTHER PARAMETERS.  THE OUTPUT OF 
    ACCTPRE MAY BE FORMATTED INTO FINAL ACCOUNTING REPORTS USING DATATRIEVE;
    ALTERNATIVELY A SITE MAY CHOOSE TO WRITE ITS OWN FINAL PROCESSOR
    FOR CUSTOM-TAILORED ACCOUNTING REPORTS.

    TO BUILD THE PACKAGE, TYPE

		@ACCOUNT
		@ACCTPRE

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

2.  GRAF - A PLOTTING PACKAGE FOR THE HEWLETT-PACKARD 7220 PLOTTER.

    THIS PACKAGE HAS BEEN USED IN THE RT-11 WORLD AT STANFORD FOR SOME TIME;
    IT HAS NOW BEEN MODIFIED FOR RSX-11M.  IT IS DESIGNED FOR MASSAGING AND
    PLOTTING X-Y DATA ON THE HP 7220.

    THE MODULE HP7220.MAC INTERFACES TO THE PLOTTER USING A TERMINAL PORT.
    THE LOGICAL DEVICE HP0: MUST BE ASSIGNED TO ANY TERMINAL DEVICE TTN:
    BEFORE GRAF IS RUN.  GRAF RUNS WITH THE RSX-11M V3.2 FULL DUPLEX TERMINAL
    DRIVER.  IT SHOULD BE COMPATIBLE WITH V4.0 (BUT HAS NOT YET BEEN TESTED).
    IT HAS NOT BEEN TESTED WITH THE HALF-DUPLEX TERMINAL DRIVER.

    THE MODULE DISCO.FTN READS PLOT DATA FROM A FORMATTED ASCII FILE.  EACH
    SITE MUST MODIFY THIS MODULE AS REQUIRED FOR ITS DATA INPUT.

    THE MODULE GRAF.OLB CONTAINS ROUTINES FROM THE CETUS LIBRARY (1980 SIG
    TAPES) WHICH REPLACE SYSTEM ROUTINES AVAILABLE UNDER THE RT-11 MONITOR.

    SEE GRAF.DOC FOR OPERATING INSTRUCTIONS.

    TO BUILD GRAF, TYPE

			@GRAF

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

    IF YOU HAVE ANY QUESTIONS PLEASE CONTACT ME:

			PHIL KURJAN
			C/O ANAC INC.
			3200 SCOTT BLVD.
			SANTA CLARA,  CA  95051
			(408) 727-5221

    GOOD LUCK!

          ********************DM0:[307,120]README.1ST;1********************
          ********************DM0:[307,120]README.1ST;1********************

THE FOLLOWING ACCOUNT IS FROM THE CALIFORNIA REGIONAL OFFICE OF
THE U. S. FOREST SERVICE, INFORMATION SYSTEM MANAGEMENT STAFF.

THIS ACCOUNT IS A COMBINATION OF SOME USEFUL RSX11M V4.0 AND 
V3.2 DECUS STUFF (SOME MODIFIED BY US FOR LOCAL USAGE), ALL HAS
BEEN TESTED AND/OR RUN UNDER RSX11M V4.0, AND SOME U. S. FOREST
SERVICE ROUTINES, ALL TESTED AND RUN UNDER RSX11M V4.0.

LIST OF PROGRAMS:

1)	COUNT BLOCKS ON LOGIN/LOGOUT + ACCOUNT GENERATOR (KBL)
2)	ACCOUNT BLOCK COUNTER (CONJUNCTION WITH KBL) (ABC)
3)	DATAENTRY (DAT) LARGE AND SMALL VERSIONS.
4)	FIND PROGRAM WITH ADDED SWITCHES "NA" "S1" "SZ" (FIN) 
5)	TTP WITH ADDED OPTIONS (TTP)
6)	INDEXSORT TO SORT WORD PROCESSING INDEX (IND) 
7)	INTERUSER MAIL SYSTEM (MSG)
8)	GRFS (PERMITTEE FEE CALCULATION) (GRF)
9)	CVL (CVL) FOR CHANGING VOLUMN LABEL INFORMATION
10)	WPLOG (WPA) FOR BUILDING WP ACNT LOGON INFO
11)	XEROX (XER) FOR XEROX 1200 JDL CREATION
12)	MAILPURGE  (MAI) FOR DELETING MAIL RECEIPTS IN INBOXES
13)	CHANGE (CHA) CHANGES DATA IN ANY TYPE FILE
14)	HOLD (HOL) WHICH HOLDS A TERMINAL FOR A SIGNED ON USER.
15)	OCTAL, CONVERTS BINARY, OCTAL, DECIMAL, HEXIDECIMAL NUMBERS.
16)	SNOOPY CALENDAR (SNO)
17)	HPSET (HPS) TO SET TABS AND LOG BOTTOM ON HP2621P TERMINAL
18)	WPACNT (WPA) TO LIST, ADD AND/OR DELETE WP ACCOUNTS FROM DP.
19)	UNTAB (UNT)
20)	COOKIE (FORTUNE) (COO) 
21)	CCL (CCL)
22)	WORD PROCESSING STARTUP AND ABORT 'USE' AND 'ABOUSE' (USE) (ABO)
23)	VIRTUAL DISKS SYSTEM (VDS)
24)	RO MAILER (MAI) 
25)	WHO IS LOGGED ON (WHO)
26)	BKC (BKC) FORCE COMMANDS ON ANOTHER TTnn:
27)	POOL STATUS (OPA)
28)	REWIND MM (REW)
29)	RUNOFF (RNO)
30)	SRD (SRD)
31)	RO TAPE LIBRARY  (TAP)

TO GET MORE INFORMATION ABOUT THIS ACCOUNT, SEE THE FILE:

TASKBUILD.DOC    (OR *.DOC FOR ALL PROGRAM DOCUMENTATION)

BOHDEN CMAYLO
U. S. FOREST SERVICE
ISM STAFF
630 SANSOME STREET
SAN FRANCISCO, CA. 94111
(415) 556 8610  (FTS)

          ********************DM0:[307,131]README.1ST;1********************
          ********************DM0:[307,131]README.1ST;1********************



	THIS UIC CONTAINS ALL THE FILES NECESSARY TO BUILD THE TERMINAL
	LOCK-UP PROGRAM.  THE TASK IS CALLED BLP (BLOOPER) FOR LACK OF
	A BETTER NAME.  IT IS USEFUL WHEN YOU NEED TO LEAVE YOUR TTY
	UNATTENDED, AND DON'T WANT TO RISK SOMEONE ABORTING YOUR ACTIVE
	TASKS OR HAVING ACCESS TO YOUR PRIVILEDGED TERMINAL.

	BLP REQUIRES A ONE CHARACTER CODE WHICH CAN BE A CONTROL CHARACTER
	TO BE USED AS YOUR ESCAPE SEQUENCE.  ALL TERMINAL INPUT WILL BE
	CHECKED BY BLP, AND ONLY THE DESIRED ESCAPE CODE WILL BE ACCEPTED.

	FILES CONTAINED IN THIS UIC:

	1. BLP.CMD	-	MASTER BUILD COMMAND FILE
	2. BLP.BLD	-	TKB INDIRECT COMMAND FILE
	3. BLP.MAC	-	SOURCE FILE (MACRO-11)
	4. BLP.HLP	-	ASCII HELP FILE
	5. BLP.OBJ	-	OBJECT
	6. BLP.LST	-	LISTING
	7. BLP.TSK	-	TASK IMAGE
	8. BLP.MAP	-	TASK IMAGE MAP LISTING

	BLP HAS BEEN RUN UNDER RSX-11M V3.2.

	REFER COMMENTS TO:
		STEPHEN RAINIER
		SINGER/LINK
		P.O. BOX 59
		NAS MOFFETT FIELD, CA  94035
		(408)732-3800 EXT. 325


          ********************DM0:[307,132]README.1ST;1********************
          ********************DM0:[307,132]README.1ST;1********************



	THIS UIC CONTAINS ALL THE FILES NECESSARY TO BUILD THE UPDATING
	DEVICE STATUS REPORT PROGRAM.  THE TASK IS CALLED DVC, AND PER-
	FORMS THE SAME TYPE FUNCTION AS DEV PLUS MORE.  BY USING THE
	SWITCHES, DVC CAN PRINT A CONTINUOUSLY UPDATING STATUS REPORT
	OF ANY OR ALL DEVICE TYPES.  IT CAN ALSO BE USED TO WAIT FOR A
	FREE DEVICE OF A PARTICULAR TYPE.  IT WILL PERIODICALLY CHECK
	FOR A FREE UNIT OF THE TYPE DESIRED, ALLOCATE THAT FREE UNIT
	TO YOU, AND THEN BROADCAST A MESSAGE TO YOUR TERMINAL REPORTING
	THE FACT.
	NOTE - DVC CONTAINS A LIST OF THE POSSIBLE DEVICE NAMES.  THAT
	LIST WILL NEED TO BE CHANGED FOR YOUR SYSTEM. (TABLE IS AT LABEL
	"LEGDEV:").  DVC ALSO EXECUTES A TASK CALLED CLR WHICH SIMPLY
	CLEARS A CRT SCREEN.  THAT CALL WILL NEED TO BE CHANGED IF YOU
	DO NOT HAVE A TASK CALLED "CLR". (CAN BE FOUND AT LABEL "CLSPWN:")

	FILES CONTAINED IN THIS UIC:

	1. DVC.CMD	-	MASTER BUILD COMMAND FILE
	2. TTY.MAC	-	COMMON SUBROUTINE TO CALC TTY NUMBER (MACRO11)
	3. DVC.MAC	-	SOURCE FILE (MACRO-11)
	4. DVC.HLP	-	ASCII HELP FILE
	5. DVC.OBJ	-	OBJECT
	6. DVC.LST	-	LISTING
	7. DVC.TSK	-	TASK IMAGE

	DVC HAS BEEN RUN UNDER RSX-11M V3.2.

	REFER COMMENTS TO:
		STEPHEN RAINIER
		SINGER/LINK
		P.O. BOX 59
		NAS MOFFETT FIELD, CA  94035
		(408)732-3800 EXT. 325


          ********************DM0:[307,133]README.1ST;1********************
          ********************DM0:[307,133]README.1ST;1********************



	THIS UIC CONTAINS ALL THE FILES NECESSARY TO BUILD THE REMOTE
	TERMINAL RUN ROUTINE.  THE TASK IS CALLED RRU, AND ALLOWS A
	USER TO ISSUE ANY LEGAL MCR COMMAND AT ANOTHER TERMINAL. (IN-
	CLUDING USING HELLO TO LOG ONTO A TERMINAL.)  THIS CAN BE USE-
	FUL WHEN YOUR SYSTEM DOES NOT HAVE THE VIRTUAL TERMINAL OPTION.
	CHECK THE .HLP FILE FOR RESTRICTIONS ON NON-PRIVILEDGED USERS
	WHO TRY TO RRU TO TERMINALS LOGGED IN UDER A DIFFERENT UIC.

	FILES CONTAINED IN THIS UIC:

	1. RRU.CMD	-	MASTER BUILD COMMAND FILE
	2. RRU.BLD	-	TKB INDIRECT COMMAND FILE
	3. RRU.MAC	-	SOURCE FILE (MACRO-11)
	4. RRU.HLP	-	ASCII HELP FILE
	5. RRU.OBJ	-	OBJECT
	6. RRU.LST	-	LISTING
	7. RRU.TSK	-	TASK IMAGE

	RRU HAS BEEN RUN UNDER RSX-11M V3.2.

	REFER COMMENTS TO:
		STEPHEN RAINIER
		SINGER/LINK
		P.O. BOX 59
		NAS MOFFETT FIELD, CA  94035
		(408)732-3800 EXT. 325


          ********************DM0:[307,134]README.1ST;1********************
          ********************DM0:[307,134]README.1ST;1********************



	THIS UIC CONTAINS ALL THE FILES NECESSARY TO BUILD THE TERMINAL
	STATUS REPORT PROGRAM.  THE TASK IS CALLED TRM, AND WILL SIMPLY
	PRINT A REPORT ON YOUR TERMINAL SHOWING EVERYTHING YOU MIGHT
	WANT TO KNOW ABOUT YOUR TERMINAL, OR ANY TERMINAL YOU DESIRE.

	NOTE - TRM IS WRITTEN IN DEC SUPER MACRO.  YOU WILL NEED THE
	SUPMAC.MAC SOURCE FILE IN ORDER TO ASSEMBLE TRM.

	FILES CONTAINED IN THIS UIC:

	1. TRM.CMD	-	MASTER BUILD COMMAND FILE
	2. TRM.BLD	-	TKB INDIRECT COMMAND FILE
	3. TRM.MAC	-	SOURCE FILE (SUPER MACRO)
	4. TRM.HLP	-	ASCII HELP FILE
	5. TRM.OBJ	-	OBJECT
	6. TRM.LST	-	LISTING
	7. TRM.TSK	-	TASK IMAGE
	8. TRM.MAP	-	TASK IMAGE MAP LISTING

	TRM HAS BEEN RUN UNDER RSX-11M V3.2.

	REFER COMMENTS TO:
		STEPHEN RAINIER
		SINGER/LINK
		P.O. BOX 59
		NAS MOFFETT FIELD, CA  94035
		(408)732-3800 EXT. 325


          ********************DM0:[307,135]README.1ST;1********************
          ********************DM0:[307,135]README.1ST;1********************



	THIS UIC CONTAINS ALL THE FILES NECESSARY TO BUILD THE TERMINAL
	SPECIAL EFFECTS PROGRAM.  THE TASK IS CALLED PTT FOR LACK OF A
	BETTER NAME. (WE HAVE PT100'S)  IT ALLOWS YOU TO ISSUE ALL THE
	FANCY ESCAPE SEQUENCES TO DO NEAT THINGS ON VT100 TYPE TERMINALS.
	IT IS WRITTEN FOR TERMINALS IN "ANSI" MODE, BUT THE COMMAND TABLE
	COULD BE EASILY MODIFIED TO MAKE IT FUNCTION IN "VT52" MODE.  PTT
	WILL ALLOW YOU TO ISSUE ESCAPE SEQUENCES TO ANY TERMINAL (LOGGED
	IN OR NOT), AND WILL DO BREAK-THRU WRITES.

	FILES CONTAINED IN THIS UIC:

	1. PTT.CMD	-	MASTER BUILD COMMAND FILE
	2. PTT.BLD	-	TKB INDIRECT COMMAND FILE
	3. PTT.MAC	-	SOURCE FILE (MACRO-11)
	4. PTT.HLP	-	ASCII HELP FILE
	5. PTT.OBJ	-	OBJECT
	6. PTT.LST	-	LISTING
	7. PTT.TSK	-	TASK IMAGE
	8. PTT.MAP	-	TASK IMAGE MAP LISTING

	PTT HAS BEEN RUN UNDER RSX-11M V3.2.

	REFER COMMENTS TO:
		STEPHEN RAINIER
		SINGER/LINK
		P.O. BOX 59
		NAS MOFFETT FIELD, CA  94035
		(408)732-3800 EXT. 325


          ********************DM0:[307,136]README.1ST;1********************
          ********************DM0:[307,136]README.1ST;1********************



	THIS UIC CONTAINS ALL THE FILES NECESSARY TO BUILD RSX CILUS.
	THE TASK IS CALLED CIL. (CLEVER NAME)  IT ALLOWS THE USER TO
	BUILD, LIST, DUMP, EDIT, AND PATCH DOS CIL FILES FROM .CIL'S
	.LCL'S, AND .LDA'S.  BOOTING AND HOOKING ARE OBVIOUSLY NOT
	AVAILABLE IN THE RSX VERSION.  CILUS.RNO IS A RUNOFF VERSION
	OF THE DOCUMENTATION EXPLAINING HOW TO USE CIL.

	FILES CONTAINED IN THIS UIC:

	1. CILUS.CMD	-	MASTER BUILD COMMAND FILE
	2. CILUS.BLD	-	TKB INDIRECT COMMAND FILE
	3. CILxxx.MAC	-	SOURCE FILES (MACRO-11)
	4. CILUS.RNO	-	RUNOFF DOCUMENTATION FILE
	5. CILUS.ODL	-	TKB ODL FILE
	6. CILUSFCS.BLD -	FCSRES VERSION TKB COMMAND FILE
	7. CILUS.TSK	-	TASK IMAGE
	8. CILUS.MAP	-	TASK IMAGE MAP LISTING

	CIL HAS BEEN RUN UNDER RSX-11M V3.2.

	REFER COMMENTS TO:
		STEPHEN RAINIER
		SINGER/LINK
		P.O. BOX 59
		NAS MOFFETT FIELD, CA  94035
		(408)732-3800 EXT. 325


          ********************DM0:[307,211]README.1ST;1********************
          ********************DM0:[307,211]README.1ST;1********************


  Sandia National Laboratories		BAYLUG	
    Division 8411, SNLL
    Livermore, CA, 94550
					D.C.Pulsipher	(415)422-3141
					C.H.Stockley	(415)422-2482
					22-NOV-82

	This UIC contains several things we have found useful.
   Most of them were originally written by others and have been included
   in previous DECUS tapes.  These versions have been updated for RSX-11M V4.0
   and changed in various ways from the original submissions.

   They include:

	MC2	-- A CATCH-ALL task which takes advantage of INSTALL,
			MCR, and EXEC modifications to do "flying installs"
			which accept command lines.  The most significant
			system changes required are:
				1)	Allow multiple copies of a task
					to be run from a single terminal.
				2)	Modify INSTALL to allow tasks to
					be installed marked for removal
					after running, but not run at that
					time.

	SLP files to modify MCR, and INSTALL as required for above changes.
		These files also make other changes.  (See below for details.)

	SLP files to modify ICP. (This is independent of all above changes.
		-- These changes are required if /QU switch support for
		MC2 is expected.

	WHO	-- A task to display logged-in users.

	CPA/OPA	-- Tasks to display EXEC data structures found in POOL
			for Crashed/Online systems.

   These programs and changes are described individually in greater detail
   below.


---------------------------------------------------------------------------------
MC2
   These modifications have been made to upgrade support for the catch-all 
	task MC2 for RSX11M V4.0 

	The original version of MC2 for RSX11M V3.2 was written by

		Greg Thompson (DEC SWS) NASA/Ames	7/21/80
		and was included in NASA/Ames BAYLUG DECUS tape.

	Changes to MC2 include:
		Using the new RPOI spawn directive
		Addition of a new ICP /QUiet switch (in-place-of /-LI switch)
		If an indirect command file with a .CDF extension is specified
		   it is passed to MCR as @filename.CDF/QU (Quiet mode)

	   **** A NOTE OF WARNING ****
		    MC2 is definitely meant for use in a friendly environment.
		    The changes made to INSTALL open a small loophole through
		    which unprivileged may pass to run privileged programs
		    if they study the code carefully.

	   **** You may want to modify the UIC search path.	****
		       	(Ours is rather lengthy.)
	   ****	DO make sure that the characteristics of each	****
		entry in the path are set the way YOU want them.
	   **** Please read the comments in the source file.	****


	The ICP mods are independent of MC2 mods but are needed if the
		if MC2 mods are selected.


   ============================================================================
	DESCRIPTION of the files found on this UIC
   ============================
	Files included:

	      README.1ST
		CPA.ASM;2           1.         19-NOV-82
		ICPMODS.ASM;6       2.         19-NOV-82
		INSMODS.ASM;3       1.         18-NOV-82
		MCRMODS.ASM;3       4.         18-NOV-82
		MC2.ASM;4           1.         18-NOV-82
		OPA.ASM;4           1.         19-NOV-82
		WHO.ASM;4           1.         26-OCT-82
		ICPMODBLD.CMD;14    2.         19-NOV-82
		MC2MODBLD.CMD;20    3.         19-NOV-82
		XFERMODS.CMD;2      2.         19-NOV-82
		CPA.MAC;74          103.       26-OCT-82
		MC2.MAC;15          88.        19-NOV-82
		OPA.MAC;35          78.        22-OCT-82
		WHO.MAC;5           22.        22-APR-81
		DREIF.SLP;3         1.         19-NOV-82
		INSBLDBLD.SLP;2     1.         19-NOV-82
		MC2ICPMOD.SLP;10    8.         19-NOV-82
		MC2INSMOD.SLP;2     6.         18-NOV-82
		MC2MCRMOD.SLP;30    25.        19-NOV-82
		CPA.TKB;13          1.         19-NOV-82
		MC2.TKB;4           1.         18-NOV-82
		OPA.TKB;12          1.         19-NOV-82
		WHO.TKB;7           1.         26-OCT-82

   HOW TO USE the files
   ====================

    The file: XFERMODS.CMD  will setup the required UFD's and copy these
	files to their respective UIC's for use with the two .CMD files.

		[11,41] DREIF.SLP

		[12,11]	MC2.MAC, WHO.MAC, CPA.MAC, OPA.MAC

		[12,25] README.1ST
			ICPMODBLD.CMD, ICPMODS.ASM
			MC2MODBLD.CMD, MCRMODS.ASM, INSMODS.ASM
			MC2.ASM, MC2.TKB, WHO.ASM, WHO.TKB
			CPA.ASM, CPA.TKB, OPA.ASM, OPA.TKB

		[12,41] MC2ICPMOD.SLP, MC2MCRMOD.SLP
			MC2INSMOD.SLP, INSBLDBLD.SLP

   ============================

	A new SYSGEN is not required if ZAP is used to modify the 
		EXEC module DREIF.  (See DREIF.SLP for the one change.)

	All other modifications can be made and task-built after SYSGEN2

   ============================
   The MC2 modifications have been divided into two groups:

	1. ICPMODBLD.CMD	| These two .CMD files accept a
				| P1 parameter of "NO" which says
	2. MC2MODBLD.CMD	| "Do not update .OLB libraries now."
				| **** Please read these .CMD files. ****


 ==============================================================================
 ICPMODBLD.CMD
 -------------

     Modules:  ICPPRE, ICPERR, ICPFDC, ICPFIL, ICPMCR, ICPROT, ICPIN2

     Modifications:

	SNLL01	Make .ENABLE/.DISABLE defaults easier to modify.

		Change initial .ENABLE / .DISABLE defaults:
			       .ENABLE GLOBAL
			       .ENABLE SUBSTITUTION

	SNLL02	Add '/QU' Quiet switch. (/-QU is invalid.)
		(The previous DECUS mod '/-LI' switch to V3.2 is not supported.)

	SNLL03	Don't display '@<EOF>' in QUIET mode.

	SNLL04	Display ';*' comments in QUIET mode.


     The following UIC's are used:

		[12,25]	 ICPMODBLD.CMD command file to do the modifications
			 ICPMODS.ASM   MAC assembly command file
			 xxx.OBJ       objects (temporary)
			 ICPMODOBJ.OBM concatenated object module to update ICP11M.OLB

		[12,41]  MC2ICPMOD.SLP  modifications

		[12,11]  xxx.MAC;2 for source files that have been SLP'd

		[12,35]  xxx.LST   for Listings



 ==============================================================================
 MC2MODBLD.CMD
 -------------

   Modules:
	     DREIF (Exec module)   Note: This modification can be put in using 
				ZAP, and therefore not require a new SYSGEN.
				(It's just a 1 bit change.)
		 	   **** DREIF.MAC;2 is still in [11,10] ****

	MCR.OLB:
	     MCRDIS, FIXOV, MCROOT, ERROV, ERRMSG, ALTOV, ATLOV, CLIOV, LUNOV
	     OPEOV,  PR1OV, RAPOV,  RPSOV, RUNOV,  SPSOV, ST1OV, TASOV

	   **** Note: SPSOV normally gets ASM'd in SYSGEN: MCR (subset) assembly
			    and /RP in MCR.OLB during SYSGEN2

	SYSROT  ([1,24]SYSROT.OBJ)  Not included in MCR.OLB

	INS.OLB:
	     INSHD, INSLB, INSPS

	**** MCR & INS will need to be re-TKB'd.

   Modifications:
 
	SNLL05	Add MC2 support.

	SNLL06  Don't change U.LUIC on SET /UIC so "WHO" task will always
		indicate the correct User-ID.

	SNLL07  Change syntax on SET command to: SET [/]KEYWORD

	SNLL08 	Provide more info for some Error Msg's

   The following UIC's are used:

	[12,25]	 MC2MODBLD.CMD command file to do the modifications
		 MCRMODS.ASM   MAC assembly command file for INS mods
		 INSMODS.ASM   MAC assembly command file for MCR mods
		 xxx.OBJ       objects (temporary)
		 MC2MODMCR.OBM concatenated object module to update MCR.OLB
		 MC2MODINS.OBM concatenated object module to update INS.OLB

	[12,41]  MC2MCRMOD.SLP  MCR modifications
		 MC2INSMOD.SLP  INS modifications
		 INSBLDBLD.SLP  INSBLD.BLD Modification

	[12,11]  xxx.MAC;2 for source files that have been SLP'd
		 MC2.MAC source file

	[12,35]  xxx.LST   for Listings

  NOTES:
  ------
	** WARNING **  INS module INSCM  (Install Common Block) contains a 
		   **	   section of code that temporiarly re-maps APR6 of
		   **	   its virtual address space to load the Common Block.
		   **	   This section of code MUST fall before virtual address
		   **	   140000 or INS will terminate when attempting to 
		   **	   install a common block.  Inserting the MC2 mods
		   **	   caused this problem so the position of INSCM in the 
		   **	   TKB command file was changed to load this module at
		   **	   an earlier virtual address.  (INSBLDBLD.SLP)


  ==============================================================================
	WHO	WHO is logged-on	(WHO.ASM & WHO.TKB)  (Privileged)

   The task WHO was originally written by Greg Thompson.
	This version has been modified to show login UIC & current UIC
		and needs the MC2 set of mods to show privileged users'
		login UIC properly.

   ============================

   The tasks OPA & CPA were originally written by J. Neeland.
	These versions have been modified and updated for RSX11M V4.0

	CPA	CrashDump Pool Analyzer	(CPA.ASM & CPA.TKB)  (needs RSX11M.STB)
			Contains several switch options to disable processing
			of certain data structures if Pool has been corrupted,
			also handy for debugging new additions to CPA.

	OPA	OnLine    Pool Analyzer	(OPA.ASM & OPA.TKB)  (Privileged)

		**** WARNING ****    OPA can crash your system so test it out
					at a time that you can afford to crash.
==============================================================================


          ********************DM0:[312,22]README.1ST;1********************
          ********************DM0:[312,22]README.1ST;1********************

.!
.!	To extract the information from this manual
.!	use the utility program INDEX.
.!
.V General procedure, macro reference and utility manual
.C General information
.T Disclamer
 
 
 
 
 
 
 
 
 
 
 
	***********************************************************
	*                                                         *
	*       DIGITAL EQUIPTMENT COMPUTER USERS SOCIETY,        *
	*             DIGITAL EQUIPMENT CORPORATION               *
	*          AND THE SUPPLIERS OF SUCH PROGRAMS             *
	*   DISCLAIM ALL WARRANTIES ON THE PROGRAMS INCLUDING     *
	*     WITHOUT LIMITATION, ALL IMPLIED WARRANTIES OF       *
	*        MERCHANTABILITY AND FITNESS FOR PURPOSE.         *
	*                                                         *
	***********************************************************
 
.T Introduction





	The routines described in this document were developed to :-



(1)	Simplify I/O techniques for new users and to reduce program
	writing for experienced programmers.

(2)	Introduce character/text handling facilities which CORAL and
	MACRO.

(3)	Produce simplified/compatable ASCII/binary binary/ASCII conversion
	routines working in any base from 2 to 36.

(4)	Enable software to be written quickly when using the XY plotter
	and allow the plotter to be available to languages which have
	no plotter commands.

	The MACRO software was developed to enable fast program writing
	and to incorporate high level English language type commands
	to be available to the MACRO assembler.

	In general the reference numbers indicate the filenames used
	the extention will be either .COR or .MAC ; for example
	REFNO/MODULE L13A can be found in file L13A.COR note single
	digit numbers will have leading zeros always attached.

	Procedure types are indicated as so :-
	INT indicates an 'INTEGER''PROCEDURE'
	BYTE indicates a 'BYTE''PROCEDURE;
	FLO  indicates a 'FLOATING''PROCEDURE'

	All modules starting with the letters MCnn and the CORAL
	procedures with the same name are functionally identical but
	the MCnn modules are in general smaller or faster but usually
	both.


.F
.I BASLIB
.I MAC.OLB
.I MAC.MLB
.I CONFIG
.I GENDEF
.I MACBIO
.I MG0
.I RSX
.I RT-11
.I IAS





For RT-11 users please ignore all references to CORAL as this is
not an option with RT-11 systems.For an RT-11 system filenames
the same but in some cases may have been reduced to 6 letters.

All the CORAL procedures mentioned in this document can be found
in the library			[200,25]BASLIB.OLB (IAS/RSX)

All the MACRO procedures mentioned in this document can be found
in the library			[200,25]MAC.OLB (IAS/RSX)
					MAC.OLB (RT-11)

All CORAL macros required for CORAL library procedures may be
found in file			[200,25]MACBIO.COR

All CORAL definitions required for CORAL library procedures
may be found in file		[200,25]GENDEF.COR
All MACRO macros required for MACRO library procedures may be
found in library		[200,25]MAC.MLB (IAS/RSX)
					MAC.MLB (RT-11)

Most MACRO definitions and presets can be found in the file/s
				[200,25]MG0.MAC (IAS/RSX) or
				[200,25]CONFIG.MAC (IAS/RSX)
					MG0.MAC or CONFIG.MAC (RT-11)

All Sources may be located on magnetic tapes 150 and 151 the volume
identity for these tapes is COMMON. (CAA ATCEU only)
ie. to load tape :-
MESS PLEASE LOAD MAGNETIC TAPE 150 OR 151  FOR READ ACCESS
MOUNT/PROC:MM0ACP MM: COMMON







.C CORAL PROCEDURES
.T CORAL general information

.I BAS
Library declaration for CORAL macros is as follows
'LIBRARY' BAS;

	(Any procedure reference number marked with a * symbol)
	(indicates the sources are written in both MACRO and CORAL.)
 
.I GENDEF
To avoid confusion with general reply the file GENDEF.COR has
been created for CORAL programmes therfore the replys will in
the future be related to the macro reply name rather than the
actual value. Some of the CORAL procedures now give a status
reply as well performing the original function to assist with
programme development and error detection.


.T CORAL String functions.
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I LEN
.I L01
LEN 	L01*	INT	This procedure will reply with the length
			of then named character string
			USAGE	X:=LEN(STRING);
 
.I COMPARE
.I L02
.I SAME
COMPARE	L02*	INT	This procedure compares two character strings
			and then answer given are :-
			-1 if first string less than  second string or shorter
			0  if first string same as     second string
			+1 if first string greater than second string or longer
			usage  'IF' COMPARE (STRING1,STRING2) CONDITION
				'THEN' ACTION;
			The MACRO reply SAME may be used.
 
.I SEG
.I L03
SEG	L03*	INT	This procedure presents a segment of a character
			string.
			The parameters of the procedure are :-
			SEG(STRING,START POS,END POS);
			First parameter string to be accessed.
			Second parameter start access position.
			Third parameter end of access position.
			This procedure replies with the address of the segment
			of the master input string.
			USAGE 'IF' COMPARE (SEG(STRING,START,END),CHECKSTRING)
				CONDITION 'THEN' ACTION;
			USAGE COPY (SEG(STRING,START,END),STRING SEGMENT);
 
.I LSEG
.I L03A
LSEG	L03A*	INT	As per L3 but internal local use only.
 
.I COPY
.I L04A         
.I SUCCESS
.I ERROR
COPY	L04*	INT	This procedure copies one string to another
			string location.
			Note automatic bounds checking takes place when
			copying	strings therefore writing past the end
			of a string not possible and excess characters
			will be lost the limit is specified when the
			string is initially made.
				N.B.  The very first two bytes hold the length
				of the array. second two bytes hold the
				number of characters in the string, this
				is also where the string address is
				referenced to.
			usage COPY(FROM STRING,TO STRING);
			The MACRO replys ERROR or SUCCESS are given.

.F
         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I POS
.I L05
POS	L05*	INT	This procedure checks if a sub string exists
			within a master string. If the sub string is
			not present within master string then the procedure
			will reply zero. If the sub string does exit
			within the master string then this procedure
			will answer with the position of the first
			occurrence of the sub string.
			usage 'IF' POS(MASTER STRING,SUB STRING,STARTPOSITION)
				condition 'THEN' action;
			usage  X:=POS(MASTER STRING,SUB STRING,STARTPOSITION);
 
.I LPOS
.I L05A
LPOS	L05A*	INT	As per L5 but local internal use only.
.I COMSORT
.I L28 
.I COMPARE

COMSORT L28	INT	This procedure behaves in a similar way to the
			COMPARE procedure.
			It has been designed to allow the user to compare
			character strings of differing length.
			The shortest string length specifies the length of
			comparison  area + one character which is set
			as zero for decision purposes when all characters
			in the comparison area are the same.
			Usage	as per compare procedure 
 
.T CORAL String alter or modify.
         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I ADD
.I L06
ADD	L06	INT	This procedure adds(appends) one string to another
			string the answer given is the address of the
			combined string if new string exceeds 255 characters
			end characters are lost.
			usage  X:=ADD(MASTER STRING,ADD ON STRING);
 
 
.I ADD TO
.I L16
.I SUCCESS
.I ERROR
ADD TO 	L16*	INT	This procedure appends the second string to 
			first string loading the resulting string into
			the first string
			usage 	ADD TO (MASTER STRING,ADD ON STRING);
				master string now equals master string
				plus add on string
			The MACRO reply ERROR or SUCCESS may be used. 
 
.I FILL
.I L19
.I SUCCESS
.I ERROR
FILL	L19	INT	This procedure fills a string to a pre set point
			with the character specified in parameter list
			usage FILL(STRING,19,WITH CHARACTER);
			example fill a string with spaces to tab point 25
				FILL(A STRING,25,A SPACE);
			The MACRO reply ERROR or SUCCESS may be used. 
 

         
.I CLEAR
.I L21
.I SUCCESS
.I ERROR
CLEAR	L21*	INT	This procedure resets a string to a length of
			of zero characters and resets all characters in
			string to zero.
			Note count is taken from max buffer parameter in
			string
			usage  CLEAR(ADOLLAR);
			The MACRO reply ERROR or SUCCESS may be used. 
 
.I TABMOD
.I L37
TABMOD	L37		This procedure replaces all tabulation characters
			in a string with the correct number of space
			characters.

			USAGE TABMOD (string to modify);
.F
         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I TABLOAD
.I L24
TABLOAD L24	INT	This procedure acts as a special string which allows
			the user to load characters into any position within
			the string.
			Parameters:- tab load(position,character string);
			the procedure offers the following facilities
				(A) The address of the internal held string.
				(B) The ability to alter the internally
				    held strings length.
				(C) The insertion of chars into the string.
				(D) The ability to fill the internally held
				    string with spaces.
			information about this procedure
			(1)	If position =-1 the procedure answers with the
				address of the internally held string.
			(2)	If position is 0 the internal string
				is set to all spaces.
			(3)	If position is -2 then the value of
				character string is now used as an integer
				to specify the length of the internal string
				the value is limited to the range 1 to 255.
			(4)	Normal mode is when position = access position
				in the character string to be accessed.
				and character string is the address of a
				character string.
			NOTE	If character string parameter is not required
				it should be set to either -1  or 0.
 
 
			USAGE
				X:=TAB LOAD(-1,0); (X = ADDRESS OF STRING)
				TAB LOAD(-2,127); (CHAR STRING LENGTH = 127)
				TAB LOAD(0,-1);   (CHAR STRING NOW ALL SPACES)
				TAB LOAD(9,"ABCD");(ABCD LOADED INTO STRING)
						   (FROM POSITION 9)
 
 
 
.F

         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I CHARVER
.I L29
.I SUCCESS
CHARVER L29	INT	This procedure checks that all the characters in the
			slave string exist in the master string.
			Note:- charver means 'CHARACTER VERIFY'
			If all character exist then the procedure answers +0
			if any character in the slave string does not exist
			in the master string then the procedure answers with
			a negative value corresponding to the position of the
			failed value.
				NB. -6 would indicate that the character in
				position 6 is in error and caused the check
				to fail.
			USAGE
			Example check if all characters read from an input
				message are valid.
			ie:	Valid numeric character for ASCII
				numeric conversion
				'IF' CHARVER("0123456789.E",INPUT STRING)
				= SUCCESS
				'THEN' NUMERIC STRING IS VALID
				'ELSE' ASK TO REINPUT STRING AGAIN;
			GENERAL FORMAT
			RESULT:=CHARVER(MASTER STRING,SLAVE STRING);
				'IF' CHARVER(MASTER STRING,SLAVE STRING)
				     CONDITION
				'THEN' ACTION;
 
.I MULS
.I L30
 
MULS	L30	INT	This procedure will present a string containing a
			number of repeats a sub set string.
			this procedure can hold a maximum of 255 characters,
			excess characters will be lost during the string
			multiplication.
			FORMAT		MULS(SUBSTRING,NUMBER OF REPEATS);
			USAGE
				COPY(MULS("*",12),STRING1);
				WITH THIS EXAMPLE STRING1 = ************

.F

         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I SRP
.I L32
SRP	L32	INT	This procedure replaces one string for another string
			located in a master string a number of times.
			The new string generated is then passed to the answer.
			parameters :-
			ANSWER:=SRP(MASTER,CHANGE FROM,CHANGE TO,N TIMES);
			usage:-
			ANSWER=SRP(AAA,BBB,CCC,NNN);
			IF NNN <0 NO ACTION TAKES PLACE.
			IF NNN =0 CHANGE ALL OCCURRENCES OF BBB TO CCC IN AAA.
			IF NNN >0 CHANGE BBB TO CCC IN AAA NNN TIMES.
			X:=SRP("ABCCCCDE","C","?",0); (X="AB????DE")
			X:=SRP("ABCCCCCDE","C",-1,4); (X="ABCDE")
			note -1 may be used as a void field;
.I CYPHER
.I L33

CYPHER	L33	INT	This procedure allows the user to convert a character
			string from one code set to another code set.
			Uses of this procedure could be say converting upper
			case characters to lower case characters or maybe
			some sort of security arrangement to stop other users
			being able to read the contents of each character
			string.
			Parameters
			REPLY STRING:=CYPHER(FROM,TO,ITEM TO CODE);
			Usage X:=CYPHER("ABCDE","12345","ABACF");
			X WOULD = 1213F
			NOTE UNFOUND CHARACTERS NOT CONVERTED.
 
.I SHIFT
.I L34 
 
SHIFT	L34		Ths procedure is not yet written


.F

         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I SPLIT
.I L35
SPLIT	L35	INT	This procedure extracts sub fields in character
			strings any number of characters may be used as the
			field splitting delimiters.
			The procedure will reply SUCCESS if a character string
			has been extracted and ERROR if the operation has
			failed.
			Usage STATUS:=SPLIT(master,split reply,seperator);
			Where 'master'  is the character string containing
			a number of sub fields.
			      'split reply' is the group of characters
			extracted from the master character string.
			NOTE the 'split reply' will be removed from the 
			'master' character string along with the seperator
			character group of characters.
			      'seperator/s' are the character/s used to 
			terminate a sub character group in a master
			character string.


.I SPLITS
.I L35A
SPLITS	L35A	INT	This procedure extracts sub fields within
			character strings.
			This procedure differs from SPLIT in that
			the seperator character string consists of
			a series individual seperator characters
			each character will be checked in turn to
			locate where the sub character group is to
			be split and the delimiter character nearest
			to the start of the main character string will
			be chosen as the delimiter.
			The delimiter and sub character group will both
			be deleted from the master string
			EXAMPLE of use
			where MASTER contains the following characters
				A,B;C.D;E
			      SEP contains the following characters
				.;,
			instruction SPLITS(MASTER,ANS,SEP);
				Content of strings
			MASTER		ANS		SEP 	REPEAT
			B,C.D;E		A		.;,	1
			C.D;E		B		.;,	2
			D;E		C		.;,	3
			E		D		.;,	4
					E		.;,	5


.T CORAL General function procedures.

         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
 
.I CLOCK
.I L23
CLOCK	L23	INT	This procedure works as a stop watch
			***********************
			NOT PRESENTLY AVAILABLE
			***********************


.I ASK
.I L36
ASK	L36	INT	This procedure enables the user to ask a question
			with a selected number of replys and until one
			of the selected replys is entered the procedure
			will continue to re-prompt.
			The formal parameters are :-
			'INTEGER''PROCEDURE'
			ASK ('INTEGER''ARRAY','VALUE''INTEGER');
			The integer array should take the form
			'IA" anslist [0:n]:=<string reply>,<answer value>
			terminated by 0,0;
			eg. 'IA' axx [0:5]:="yes",1,"no",2,0,0;
			USAGE REPLY := ASK(anslist,"Run again YES/NO");

.T CORAL TERMINAL I/O ROUTINES         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I VDU
.I L07/A/B 
VDU   L07/A/B*	INT		PART ONE OF TWO
			This procedure uses QIO transfer procedures to
			access vdu display and vdu keyboard.
			The first parameter specifies the mode of working:=
			ie; "O" = output a string of characters.
			    "I" = input a string of characters.
			   "I@" = input with no echo.
			   "I-" = input with no prompt.
		     "(NUMBER)" = read number characters only.
			   "NL" = output a newline at end of output
			  "PRE" = output a preceding newline before string.
			  "END" = ending newline same as "NL".
			"CLEARS"=clear screen cursor set to top lefthand side.
			"CLEARL"= clear all character to end of line
			"CLEARE"= clear all character to end of screen.
			   "CR" = output a carriage return no line feed.
			   "LF" = line feed but no carriage return.
			  "REF" = set cursor to top left hand side of screen.
			  "RET" = as per "CR"  but after output of string.
			  "SHUT"= Deallocates the lun from the vdu.
			or any combination maybe used ie; "IO" "IONL" "INL"
			"PREOINL" "PRE,O,I,END" "END  I O,PRE" ETC.
			Note spaces and other separators used for
			readability only.
 
 
			Second parameter holds the address of output string
			if it is set to 0 or -1 then string is assumed
			that it does not exist therefore 0 or -1 should be
			used when it is a dummy parameter.
 
 
			SEQUENCE OF EVENTS.
			------------------
			The system allocates the vdu channel if dealocated
			Then the order of events is fixed and are either:-
				special cursor control.
			Or any one from each of the following lines:-
				clears,cleare,clearl.
				Set cursor to reference home position.
				Output a preceding newline.
				Output a string.
				Input a string with control variations.
				Output an ending newline.
				Output an ending carriage return.
				Shut dealalocates the vdu channel.
.F
         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I VDU
.I L07/A/B
VDU	L07/A/B* INT		PART TWO OF TWO
 
			Special cursor control allow the user to access
			any position on the VDU screen.
			Parameters are :-
			VDU("SETCUR",COLUMN VALUE *256 +LINE VALUE);
			An alternative method is:-
			'INTEGER' REFERENCE;
			'OVERLAY' REFERENCE 'WITH' 'BYTE' 'ARRAY' LC[0:1];
			'OVERLAY' LC[0] 'WITH' 'BYTE' LINE;
			'OVERLAY' LC[1] 'WITH' 'BYTE' COLUMN;
			then for use .....
				LINE := 5; COLUMN := 65;
				VDU("SETCUR",REFERENCE);
			Will cause the cursor to be moved to line    5
			Will cause the cursor to be moved to column  65
			Note in this mode a string cannot be output
			But a string may be input after cursor movement.

			Usage  VDU(CONTROL STRING,TRANSFER STRING);
			Usage  X:=VDU(CONTROL STRING,TRANSFER STRING);
			Usage  X:=VDU(CONTROL STRING,-1 OR 0);(INPUT ONLY)
			Usage  VDU(CONTROL STRING,CURSOR POSITION);
			Usage  X:=VDU(CONTROL STRING,CURSOR POSITION);
 
 
.I VDULUN
.I L07G 
 

VDULUN	L07G	INT	This procedure allows the user to redefine the
			logical unit number associated with the vdu/terminal
			If a LUN is already allocated to the terminal the
			LUN will be released , this procedure will then
			allocate the specified lun number to the terminal.
			This procedure may also be used to interrogate
			which lun is allocated to the terminal.
			usage	X:=VDULUN(0);  This request the lun number.
			usage	VDULUN(5); This allocates lun 5 to the VDU.

.F
         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I VDUSP
.I L07D
VDUSP	L07D	INT	This procedure will perform the same actions as
			the VDU procedure but the following extra options
			are available:-
				These options only effect the input
				sequence.
 
				"I*" This allows input, but the procedure
				     does not wait for the input to occur.
				     to check if the input has occured the
				     following method must be used.
				        X:=VDU("?",-1);
				        note if input not occurred answer is-1
					     if input has occurred answer is
					        the address if the string
				        'IF' X=-1 'THEN' NO INPUT
					'IF' X<>-1'THEN' X:=ADDRESS OF STRING
				     Please note that the "?" mode inhibits
				     all other mode of operation.
				usage:
					VDUSP("I* O","INPUT CHAR TO STOP");
					LOOP: PERFORM OPERATION;
					'IF' VDUSP("?",-1)=-1 'THEN''GOTO'LOOP
.I SYS
.I L07S
 
SYS	L07S	INT	This procedure allows the user to read the
			value of a single character from the users 
			terminal. This procedure will not echo the
			character to the terminal.
			Usage A:=SYS(1);
			Note the parameter value (1) is used to indicate
			what type of function is required.
			Note only value (1) is allowed.

 
.I INKEYS
.I L07I
INKEYS	L07I	INT	This procedure allows the user to read a characters
			from the users terminal with character echo. This
			procedure will not wait as with the SYS (1) function
			and unlike the SYS(1) function this procedure answers
			in string format. If no character has been recieved
			on the users terminal then this procedure will
			reply with a string with no charcters in it.
			USAGE A:=INKEYS;   (HOLD STRING ADDRESS)
			USAGE
				'IF' LEN(INKEYS)=0 'THEN' ... 'ELSE' ...

.F
         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I TERMINAL
.I L27
TERMINAL L27		This procedure allows special options to be set on the
			VDU terminal.
			the options are as follows:-
				"UCO"   UPPER CASE OUTPUT
				"LCO"   LOWER CASE OUTPUT
				"UCI"   UPPER CASE INPUT
				"LCI"   LOWER CASE INPUT
				"HD"    HALF DUPLEX MODE
				"FD"    FULL DUPLEX MODE
			the default options are "UCO,UCI,HD".
			this procedure allows you to do the same action as
			a set terminal operation under PDS control.
			Usage
				TERMINAL(CONTROL STRING);
				WHERE (CONTROL STRING) may be any one or more
				of the above options seperated by a comma if
				more than one option required.
			eg;	TERMINAL("LCO,LCI,FD");
 
.T CORAL General device procedures.
         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I RT04
.I L07C/E/B
RTO4	L07C/E/B INT	This procedure has a similar function to the VDU
			procedure but rather than accessing your VDU it will
			drive any RTO4 channel of your choice.
			At the time of writing we have two choices of RTO4
			device, to be able to select which version of RTO4
			we wish to use (type0) is the old version and
			(type1) the new style RTO4.
			We must be able to distinguish because they have
			different code sets on some of the special functions.
			Any mode offered by the VDU procedure is permissable
			with the RTO4 procedure.
			This procedure has the following extra facilities :-
			MODE=			ACTION
			"ASSIGN"	Assign RTO4 channel where string holds
					the device name ie; "TT51:".
					it is at this point that we select
					which type of RTO4 we wish to use ie;
					"ASSIGN TYPE0"  OR "ASSIGN TYPE1"
					"ASSIGN TYPE0" is the default option.
					ie; "ASSIGN" = "ASSIGN TYPE0".
			"ASSIGN INPUT" device for input only.
			"ASSIGN OUTPUT"device for output only.
					The above modes used when input and
					output required on different channels.
			"OVER"		This option used with "ASSIGN" it
					stops the display being initialised.
			"CB"	Cursor begin.
			"CE"	Cursor end.
			"FB"	Flash begin.
			"FE"	Flash end.
		       "DSB"	Double size begin.   (type0 only)
		       "DSE"    Double size end.     (type0 only)
		       "RVB"    Reverse video begin. (type1 only)
		       "RVE"    Reverse video end.   (type1 only)
		       "FLASH"  Output string flashing at start.
				flashing stops at end.
 
		       NOTE1 IF "DSB" OR "DSE" USED WITH TYPE1 RTO4 THIS
				procedure assumes you required reverse video
				option likewise with "RVB" AND "RVE" type0
				RTO4 assumes double size characters required.
			NOTE2	As with the VDU procedure the special set
				cursor or assign device modes of operation
				no other function is allowed.
			NOTE3	With type1 RTO4s 4 pages are available to
				select which page to use when using
				"SETCUR" command.
				second parameter = column*256+page*64+line.
				usage as per VDU procedure.
 
			Formal parameters of RTO4 procedure.
			INPUT REPLY:=RTO4(CONTROL MODE,OUTPUT STRING);
.T CORAL String numeric conversion routines.

NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I STR
.I L08
STR	L08	INT	This procedure produces a string result from
			a floating point number in either a fixed
			format or unformated.
			Note 0 or -1 as control format means unformat option.
			format string take same form as
				CORAL PROCEDURE FCHAR IE. "F10.3".
			Usage	X:=STR(FORMAT STRING,FLOATING VALUE);
			Usage	X:=STR(-1,21.4);
			Usage	X:=STR("F10.3",99.8E-2);
 
.I VAL
.I L10 
VAL 	L10*	FLO	This procedure converts a string into a floating
			point number using any base from 2 to 36, the default
			assumed to be base 10.
			The following values are all considered to be valid by
			this procedure using base 10 :-
			.01	0.01E-1 +0.01	-0.01	-1E+5	+1E-5	5.2
			-.5	5	+.5	ETC.

			To use other bases the base required is enclosed
			in (brackets) and appended to the string to be
			converted as so :-
				OCTAL	1767(8)
				HEX	AB01F(16)
				DECIMAL 55.09(10)	or 55.09 by default
				BINARY	10011(2)
			Note the base value always described using base 10.
			Note the use of a non base 10 value does not inhibit
			the use of either the + sign - sign or fractional
			point operator,
			ie. these are valid numbers +10.11(2) -EF.C(22)
			Usage	X:=VAL(STRING);
 
.T CORAL String to non numeric convert procedures.

NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
 
.I ASC
.I L09
ASC	L09	BYTE	This procedure replys with the value of the
			first character held in specified string
			usage	X:=ASC(STRING);
			Usage	C:=ASC("B");	(INTEGER C = 66)

.I RADASC
.I L25
RADASC	L25	INT	This procedure converts three ASCII chars
			into a signed integer in RAD50 code
			answer to this procedure take the form
			bit 0 set char 1 is not permissable RAD50 character
			bit 1 set char 2 is not permissable RAD50 character
			bit 2 set char 3 is not permissable RAD50 character
			ie; if answer value =7  all chars not converted
		            if answer value =5 chars 1 and 3 not converted
			    if answer value =0 then operation successful
			usage:-
				RADASC(CHAR1,CHAR2,CHAR3,RESULT);
				'IF' RADASC(4 PRAMS)=0 'THEN' OPERATION OK
				'ELSE' BIT INDICATES INVALID CHAR;
			Note this procedure also can be found in CORALIOPROCS

.I R50ASC
.I L25A 
R50ASC	L25A	INT	This procedure converts three ASCII characters in
			the form of a string into a signed integer in
			RAD50 code.
			If any of the characters in the string are not
			valid RAD50 characters this procedure replies
			with the value -1 which is a non translateable
			RAD50 code.
			If the input string exceeds 3 characters only
			the first 3 characters are used.
			Usage A:=R50ASC("ABC");

.I ASCRAD
.I L26
ASCRAD  L26	INT	This procedure converts a signed integer (RAD50 CODE)
			into three ASCII characters.
			If answer not zero then translation not performed
			correctly all characters must be suspect
			usage:-
				ASCRAD(CHAR1,CHAR2,CHAR3,TRANS VALUE);
				'IF' ASCRAD(4 PRAMS)<>0'THEN' OP FAILED
				'ELSE' OPERATION OK;
			Note this procedure also can be found in CORALIOPROCS
 
.I ASCR50
.I L26A
ASCR50	L26A	INT	This procedure converts a signed integer in RAD50
			code into three ASCII character. If the input value
			cannot be translated correctly this procedure answers
			with the value -1 a correct translation this procedure
			answers with the address of the converted string.
			Usage A:=ASCR50(RAD50 code);

.T CORAL String convert Binary to ASCII.

         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I CVT
.I L31
CVT	L31	INT	This procedure converts a floating point number into
			ASCII code. Its action is similar to FCHAR procedure
			in CORALIOPROCS but with this procedure you have the
			option of selecting what base you wish to work in.
			The base range is 2 to 36 the default base is
			assumed to be 10.
			sequence 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.
 			ie. base 16 = 0123456789ABCDEF.
			The parameter of this procedure are as follows :-
				CVT(FORMAT STRING,NUMBER TO BE CONVERTED)
			the format string is declared as follows :-
			select base to work in		(base)
			output format			####.###
				Note 1  # sign indicates where a converted
					character is to be placed.
					decimal point specifies where decimal
					point is to be placed.
					If the number input is negative you
					will need an extra # for the - sign.
					if the number input will not fit in
					the specified format string all
					numeric slots will be filled with
					* characters.
					Spaces will be filled into any unused
					slots in integer part of format string
					zeros will be filled into any unused
					fraction slots.
					If a 0 character is places in the
					format string unused slots preceding
					first integer will be filled
					with zeros.
			USAGE X:=CVT("(2)############",NUMBER);
			number converted to base 2 field width 12 characters
			usage X:=CVT("(2)0######.##",15.5);
			output would be 001111.10 base 2 zero precede.
			usage X:=CVT("(2)######.##",15.5);
			output would be   1111.10 base 2 space precede.
 
.T CORAL File device control routine.

NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I FILE
.I L15
.I SUCCESS
.I ERROR

FILE	L15	INT		PART ONE OF TWO

			This procedure will open/close or close all
			files opened by this procedure
			if this procedure answers -1 operation requested
			has failed to be performed, an error report will
			also be generated by default with the procedure
			waiting for an input indicating the report has
			been acknowledged.
			The files that can be opened/closed have
			a range 3 to 14 at time of writing although
			this range may be extended at a later date.
			parameters :-  (file lun number) (mode)(name)
			mode :-
				"SHUTDOWN" WILL CLOSE ALL OPEN FILES.
					   LUN and NAME may be defaulted
					   using -1.
				"CLOSE" WILL CLOSE FILE SPECIFIED BY LUN.
				"KILL"  WILL DESTROY FILE IF THE FILE IS
					OPEN.
					If the file is closed and a name
					is specified then this procedure will
					open the file then destroy it.
					If the file is closed and no name
					is specified then the procedure will
					request you to input a filename then
					the procedure will destroy the file
					that you have specified.
				"?"	This option allows you to check
					if a file is open or closed.
					reply answers as follows :-
.I ALLOCATED
.I FREE
						FREE	  = file closed
						ALLOCATED = file open
				"NOSTOP"	If this mode is selected the
					procedure will not wait for an input
					after an error report has been output.
				"NORPT" 	If this mode is selected
					neither the internal error reporting
					system or the wait after error
					condition will be performed.
				"OPEN INPUT"
					Will open a file for input
				"OPEN OUTPUT" or
				"OPEN OUTPUT FIXED(30)"
					Will open a file for output. If fixed
					is used output records fixed at
					length in brackets (IE 30).


.F

NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I FILE
.I L15
.I SUCCESS
.I ERROR

FILE	L15	INT		PART TWO OF TWO
.I DEVICE
.I UIC
.I FILENAME
			NAME :-	Is the 'DEVICE' : 'UIC' 'FILENAME' of the
				device to be used when opening for output
			sequence of events :-
				shutdown or close or open
			the effects of shutdown or close
				close
				release
				exit
			the effects of open
				deflun
				open/create
				exit
			The MACRO's SUCCESS and ERROR indicate if the
				procedure has operated corectly.
			Usage	FILE(UNIT NUMBER,MODE STRING,FILENAME);
			Usage  'IF' FILE(FILE NUMBER,MODE,FILENAME)
				<> SUCCESS 'THEN'
				ASSUME OPERATION HAS FAILED;

.T CORAL File device input/output routines.
 NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------
.I FILEIN
.I L11
.I ERROR
.I ERR
.I EOF
FILEIN L11	INT	This procedure reads a record from a device
			set up by the file procedure
			and converts it into a valid string variable.
			possible answers from this procedure:-
					address of string
					EOF if end of file
					ERR or ERROR if other errors
			usage 	X:=FILEIN(FILE NUMBER);
 
.I LFILEIN
.I L11A
.I ERROR
.I ERR
.I EOF 
LFILEIN L11A	INT	This procedure works in a similar manner to filein
			but rather than using an internal data area the
			receiver data area is specified as a parameter.
			possible answers from this procedure:-
					EOF if end of file.
					ERR or ERROR if other errors.
			PARAMETERS	X:=LFILEIN(FILE NUMBER,STRING NAME);
			USAGE	X:=LFILEIN(FILE NUMBER,STORE AREA);
				   LFILEIN(FILE NUMBER,STORE AREA);

.I COPY
.I FILEIN
			NOTE LFILEIN(3,AS) SAME AS COPY(FILEIN(3),AS);

.I BLOCKIN
.I L11B
.I ERR
.I ERROR
.I EOF
BLOCKIN	L11B	INT	This procedure reads a block from a device
 			set up by the file procedure
			and converts it into a valid string variable.
			Possible answers from this procedure:-
					Address of string
					EOF If end of file
					ERR or ERROR for other errors
			Usage X:=BLOCKIN(device number);

.I LBLOCKIN
.I L11C
.I ERROR
.I ERR
.I EOF
LBLOCKIN L11C	INT	This procedure works in a similar manner to blockin
			but rather than using an internal data area the
			receiver data area is specified as a parameter.
			Possible answers from this procedure:-
					 0 if success
					EOF if end of file.
					ERR or ERROR for other errors.
			Parameters	X:=LBLOCKIN(devicenumber,string name);
			Usage X:=LBLOCKIN(device number,store area);
			      LBLOCKIN(device number,store area); (no checks)
			Note  LBLOCKIN(3,AS) same as COPY(BLOCKIN(3),AS);

.I FILEOUT
.I L12
.I SUCCESS
.I ERROR
FILEOUT  L12	INT	This procedure transfers a string in record
			form to output device set up by procedure file.
			The MACRO's SUCCESS or ERROR indiacte if the
			operation succeded.
			Usage  FILEOUT(FILE NUMBER,STRING TO TRANSFER);
 
.I BLOCKOUT
.I L12A
.I SUCCESS
.I ERROR
BLOCKOUT L12A	INT	This procedure transfers a string in block
			form to output device set up by procedure file.
			The MACRO's SUCCESS or ERROR indiacte if the
			operation succeded.
			Usage   BLOCKOUT(DEVICE NUMBER,STRING TO TRANSFER);
.T CORAL STRING PRESET ROUTINES         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I CHR
.I L13
CHR	L13	INT	This procedure presents a 'VALUE''BYTE' as
			a string of length 1
			Usage  X:=CHR(ASCII CHARACTER VALUE);
			Usage  CHR(12) =  (FORM FEED CHARACTER)
 
.I QUOTE
.I L14
 
 
QUOTE	L14	INT	This procedure presents a string of length 1
			and its contents is a quote (') character
			as it is difficult to insert a (') char in
			a literal string
			usage use instead of a ' CHARACTER
 
 
.I A SPACE
.I L17
 
A SPACE	L17	INT	This procedure replies with the address of a string
			containing a single space
			usage  practical example
				ADD TO (MASTER STRING,A SPACE);
			now master string equals master string plus a space
 
.I A TAB
.I L18
A TAB    L18	INT	This procedure replies with the address of a string
			containing a single tab
			usage as per 	(A SPACE) procedure
 
 
.I CRLF
.I L20 
CRLF     L20	INT	This procedure replies with the address of a string
			containing a cr plus a lf
			usage as per (A SPACE) procedure
 
 
.I DAT
.I L22 
DAT      L22	INT	This procedure presents a character string of the
			date in the form day/month/year
			usage as per (A SPACE) procedure
.I UIC
.I L22A
 
UIC	L22A	INT	This procedure present a character string of the
			user identity code in the form [group,member]
			that you are presently logged into.
			Usage as per (A SPACE) procedure.

.I CLK
.I L23 
CLK	L23	INT	This procedure presents a character string of the
			time in the form  hours:minutes:seconds
			usage as per (A SPACE) procedure
 
.T CORAL XY Plotter routines.

         
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I TXT
.I P01
TXT	P01		This procedure plots the contents of a character
			string to the XY PLOTTER.
			Usage TXT(angle of text,size of text,text);
			Where size of text is an integer value in the
			range 1 to 12. The size number refers to a
			multiplying factor of size times 0.7 cms for
			height and width of the characters.
			The angle of text specifies what angle the characters
			will be drawn at.

.I MOV
.I P02

MOV	P02		This procedure moves the XY PLOTTER pen to the
			X,Y position relative to the origin which is fixed
			as X=0 and Y=0 ie the bottom left hand corner of
			the paper.  All X and Y values in cms.
			If the X value is negative then rather than an
			XY position being specified this procedure assumes
			the coordinates are RADIUS/THETA movement relative
			to the present pens position.
			Note a negative X is forced to a positive radius
			value in cms and Y value assumed to be degrees.
.I PLT
.I P03

PLT	P03		This procedure works in a similar manner to the
			MOV procedure but rather than just moving the
			pen this procedure draws a line between the
			pens start position and the parameter X,Y values.

.I CIR
.I P04
CIR	P04		This procedure draws a circle about the position
			is complete
			Usage CIR(radius in cms);
.I RED
.I P05

RED	P05		This procedure selects the red pen for plotting.
			Usage RED;
.I BLK
.I P06

BLK	P06		This procedure selects the black pen for
			plotting.
			Usage BLK;

.I RTH
.I P07
RTH	P07		This procedure converts R/THETA values to
			X,Y values.
			Local internal use only.

.F

NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I DTOR
.I P08
DTOR	P08		This procedure converts degrees to radians
			Local internal use only.

.I ARC
.I P09
ARC	P09		This procedure draws a segment of a circle around
			the position the pen is initially positioned
			and returns the pen to the centre of the arc
			when the drawing is complete.
			Usage ARC(arc radius,center angle,width in degrees);

.I DEV
.I P10
DEV	P10		This procedure draws the outline to scale of
			number of semiconductor devices.
			ie 8 pin ICs 14 pin DIL transistor cases
			resistors and capacitors.
			*********************
			NOT YET AVAILABLE
			*********************
.I ARR
.I P11

ARR	P11		This procedure draws an arrow head, suitable
			for dimensioning diagrams.
			USAGE  ARR(size,angle arrow head points);

.I SQR
.I P12
SQR	P12		This procedure draws a square centred about
			the position the pen is initially positioned
			on completion of the drawing the pen is
			returned to the initial position.
			USAGE  SQR(length of a side);
.I PLS
.I P13

PLS	P13		This procedure draws a plus symbol or crossing
			axis.
			USAGE  PLS(size of symbol);

.I CRS
.I P14

CRS	P14		This procedure draws a cross symbol.
			USAGE  CRS(size of symbol);

.I CCT
.I P16
CCT	P15		This procedure draws a sketch of a piece of
			vero-board with matrix 0.1 inches, the output
			can be used to plan the layout of circuits.
			USAGE  CCT(width of board,length of board);
			************************
			NOT YET AVAILABLE
			************************

.I SIZE
.I P16
SIZE	P16		This procedure allows the user to enlarge
			or reduce the size of the plot being output.
			USAGE  SIZE(multiplication factor);

.I NEWFRM
NEWFRM			This procedure causes the plotter to form
			feed to a new page to plot on.
			This procedure is part of the system main
			plotter library.
			USAGE  NEWFRM;
.C CORAL Debug and Error procedures.
.T Introduction

	These routines are written in MACRO 11 to interface and
	be used with CORAL 66 programmes run under the IAS system.
	The INTEGER/STRING routines are aimed to be used for
	error reporting and quick diagnostics prompts but only
	introducing minimal code overheads as compared with the
	TIDEF group of instructions ie. SINPUT IINPUT SPRINT IPRINT
	use approx octal 400 bytes + 100 bytes in PSECT $$DEVT in total
	where as TIDEF group will use 200 bytes in PSECT $$DEVT
	in PSECT $FSCR1 2040 and in PSECT $$IOBF will use 430 bytes
	this excludes any store requirement used by the code itself
	it can therfore be seen that when store space is at a preimum
	these routines will be very useful.
	A further set of routines have been developed to analyise the
	status of memory management data arrays and report the status
	of the DSW in plain language.
	For convenence these routines are held in the library
	[200,25]BASLIB but before you use them you must make the formal
	declarations in your programme to these procedures.

.I BASLIB
.I CORAL 66
.I MACRO 11
.I SINPUT
.I IINPUT
.I SPRINT
.I IPRINT
.I TIDEF
.I PSECT
.I $FCSR1
.I $$IOBF
.I $$DEVT
.I DSW
.T Procedure facilities.

NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I SPRINT
.I M04
SPRINT	M04		This procedure displays a character string onto the
			users terminal.
			PARAMETERS
			SPRINT ('VALUE''INTEGER','VALUE''INTEGER');
			SPRINT (LUN,STRING TEXT);
			USAGE SPRINT (1,"HAPPY DAYS ARE HERE AGAIN");

.I IPRINT
.I M04
IPRINT	M04		This procedure displays a signed integer result
			on the users terminal.
			PARAMETERS
			IPRINT ('VALUE''INTEGER','VALUE''INTEGER');
			IPRINT (LUN,VALUE TO DISPLAY);
			USAGE IPRINT (2,44);
			USAGE IPRINT (1,AN INTEGER);

.F
NAME	REFNO.	TYPE		DESCRIPTION
----	-----	----		-----------

.I SINPUT
.I M04
SINPUT	M04	INT	This procedure reads a character string from the
			users terminal and replys with the address of the
			character string. A maximum of 80 characters is
			allowed on any entry tho the string may be terminated
			by either the escape or return keys.
			PARAMETERS
			'INTEGER''PROCEDURE' SINPUT ('VALUE''INTEGER');
			'INTEGER''PROCEDURE' SINPUT (LUN);
			USAGE
			STRING ADDRESS := SINPUT (1);

.I IINPUT
.I M04
IINPUT	M04	INT	This procedure read a character string from the
			users terminal the converts the string into a
			signed integer value illegal characters are
			ignored and no status replys given for overflow
			etc.
			'INTEGER''PROCEDURE' IINPUT ('VALUE''INTEGER');
			'INTEGER''PROCEDURE' IINPUT (LUN);
			USAGE
			VALUE INTEGER := IINPUT (1);


.C MACRO Routines.
.T STRING CHECK AND LOCATE GROUP

NAME		MODULE			DESCRIPTION
----		------			-----------

.I R$POS 
.I MR05
R$POS3		MR05	This procedure locates the position of a search
			string within a master string starting from a
			requested character position.


			ENTRY POINTS
			+0		Match characters exact
			+2		Match same for upper/lower case

			ENTRY CONDITIONS
			R1 ->	MASTER STRING
			R2 ->	SEARCH STRING
			R0 =	START POSITION OF SEARCH

			EXIT CONDITIONS
			SEE R$POS

.I R$POS2
.I MR05
R$POS2		MR05	This procedure locates the position of a search
			string within a master string always starting
			from the first character in the master string.


			ENTRY POINTS
			+0		Match characters exact
			+2		Match same for upper/lower case

			ENTRY CONDITIONS
			R1 ->	MASTER STRING
			R2 ->	SEARCH STRING

			EXIT CONDITIONS
			SEE R$POS

.I R$POS
.I MR05
R$POS		MR05	This procedure is a common routine for R$POS3 and
			R$POS2 it locates the position of one string within
			another string.

			ENTRY CONDITIONS
			R3 R4 AND R5 MUST BE SAVED
			R1 ->	MASTER STRING ADDRESS
			R2 ->	SEARCH STRING ADDRESS
			R0 =	START POINT IN STRING TO SEARCH FROM

			EXIT CONDITIONS
			R0 =	POSITION OF FIRST CHARACTER
				IF MATCH FOUND
			R0 =	ZERO IF NO MATCH FOUND
			EXITSUCCESS IF MATCH FOUND
			EXITERROR   IF MATCH NOT FOUND

.F


NAME		MODULE			DESCRIPTION
----		------			-----------
.I R$COMPARE
.I MR11 

R$COMPARE	MR11	This procedure compares the contents of two character
			strings and indicates if the strings are the same or
			how they differ.

			ENTRY POINTS
			+0		Match characters exact
			+2		Match assume upper/lower case same

			ENTRY CONDITIONS
			R1 ->	STRING A
			R2 ->	STRING B

			EXIT CONDITIONS
			IF (STRING A) IS LESS THAN OR SHORTER
			THAN (STRING B)	R0=-1
			IF (STRING B) IS LESS THAN OR SHORTER
			THAN (STRING B)	R0=1
			IF BOTH STRINGS ARE THE SAME
			R0 = 0
			THE STATUS INDICATOR ALSO INDICATES IF THE STRINGS
			ARE THE SAME
			EXITSUCCESS IF STRINGS THE SAME.
			EXITERROR   IF STRINGS DIFFERENT.




.T Character string alter modify group

NAME		MODULE			DESCRIPTION
----		------			-----------

.I R$ADDTO
.I MR12 
R$ADDTO		MR12	This procedure appends(adds) one string to
			a master string.

			ENTRY CONDITIONS
			R1 ->	MASTER CHARACTER STRING
			R2 ->	STRING TO APPEND

			EXIT CONDITIONS
			R1 ->	MASTER CHARACTER STRING
			R2 ->	STRING THAT HAS BEEN APPENDED

.I R$CLEAR
.I MR13
R$CLEAR		MR13	This procedure clears out a character string.

			ENTRY CONDITIONS
			R0 ->	CHARACTER STRING

			EXIT CONDITIONS
			STATUS = SUCCESS IF OPERATION IS SUCCESS
.I R$DELETE
.I MR04
R$DELETE	MR04	This procedure deletes a number of characters in a
			string

			ENTRY CONDITIONS
			R1 ->	MASTER STRING
			R2 =	THE START POSITION WHERE DELETION IS TO START
			R3 =	THE NUMBER OF CHARACTERS TO DELETE

			EXIT CONDITIONS
			R1 ->	THE MODIFIED MASTER STRING
.I R$REVERSE
.I MR07


R$REVERSE	MR07	This procedure reverses all the characters held
			in a character string.

			ENTRY CONDITIONS
			R0 ->	CHARACTER STRING TO BE REVERSED

			EXIT CONDITIONS
			R0 ->	CHARACTER STRING



.F


NAME		MODULE			DESCRIPTION
----		------			-----------
.I R$SEG
.I MR14
 
R$SEG		MR14	This procedure extracts a segment of a character
			string minimum size one character to maximum size
			of the string being processed.

			ENTRY CONDITIONS
			R1 ->	INPUT STRING
			R2 =	START POSITION
			R3 =	END   POSITION
			R4 ->	OUTPUT STRING

			EXIT CONDITIONS
			R4 ->	THE EXTRACTED STRING
			(NOTE THE INPUT STRING IS LEFT UNMODIFIED)


.I R$WEDGE
.I MR06
R$WEDGE		MR06	This procedure inserts/wedges one string into
			a second string.

			ENTRY CONDITIONS
			R1 ->	MASTER STRING
			R2 ->	STRING TO INSERT
			R3 =	THE CHARACTER POSITION TO INSERT THE
				STRING AFTER

			EXIT CONDITIONS
			R1 ->	THE MODIFIED MASTER STRING
 
.I R$PAD
.I MR16

R$PAD		MR16	This procedure pads out a string with a spec-
			-ified character and by a specified number of
			characters. Alternatively if the character
			count is '0' then it with fill up the remain
			-der of the string

			ENTRY CONDITIONS

			R0 ->	ADDRESS OF STRING.
			R1 =	NUMBER OF CHARS TO PAD WITH.
			R2 = 	CHARACTER TO PAD WITH.

			EXIT CONDITIONS

			Success or error.


.T Character string shift routines

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I R$SHRE
.I MR08
R$SHRE		MR08	This procedure shifts the contents of a character
			string one character right end around.

			ENTRY CONDITIONS
			R0 ->	CHARACTER STRING ADDRESS

			EXIT CONDITIONS
			R0 ->	CHARACTER STRING ADDRESS


.I R$SHR
.I MR10
R$SHR		MR10	This procedure shifts the contents of a character
			string one character place right.

			ENTRY CONDITIONS
			R0 ->	CHARACTER STRING ADDRESS
			R3 =	FILLER CHARACTER

			EXIT CONDITIONS
			R0 ->	CHARACTER STRING ADDRESS

.I R$SHL
.I MR10
R$SHL		MR10	This procedure shifts the contents of a character
			string one character place left.

			ENTRY CONDITIONS
			R0 ->	CHARACTER STRING ADDRESS

			EXIT CONDITIONS
			R0 ->	CHARACTER STRING ADDRESS

.I R$SHLE
.I MR09
R$SHLE		MR09	This procedure shifts the contents of a character
			string one character left end around.

			ENTRY CONDITIONS
			R0 ->	CHARACTER STRING ADDRESS

			EXIT CONDITIONS
			R0 ->	CHARACTER STRING ADDRESS


.T Preset routines

NAME		MODULE			DESCRIPTION
----		------			-----------

.I R$CLK
.I MR20
R$CLK		MR20	This procedure replies with a character string
			giving the time of day in the following format
			HH:MM:SS .

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	STRING ADDRESS HOLDING THE TIME

.I R$DAT
.I MR20
R$DAT		MR20	This procedure replies with a character string
			giving the date in the following format
			DD-MM-YY .

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	STRING ADDRESS HOLDING THE DATE

.I R$UIC
.I MR19
R$UIC		MR19	This procedure replies with a character string
			giving the default UIC the present running is
			working under in the following format
			[ggg,mmm] .

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	STRING ADDRESS HOLDING THE UIC

.T Binary value to character string convert routines

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I R$BBIN
.I MR02
R$BBIN		MR02	This procedure converts a sixteen bit binary word into
			a significant zero string of ASCII characters using
			base two.

			ENTRY CONDITIONS
			R0 =	BINARY VALUE		WORD ENTRY +0
							BYTE ENTRY +2
			EXIT CONDITIONS
			R0 ->	CONVERTED STRING

.I R$BDEC
.I MR01
R$BDEC		MR01	This procedure converts a sixteen bit binary word into
			a signed significant zero string of ASCII characters
			using base ten.

			ENTRY CONDITIONS
			R0 =	BINARY VALUE

			EXIT CONDITIONS
			R0 ->	CONVERTED STRING

.I R$BHEX
.I MR02
R$BHEX		MR02	This procedure converts a sixteen bit binary word into
			a significant zero string of ASCII characters using
			base sixteen.

			ENTRY CONDITIONS
			R0 =	BINARY VALUE		WORD ENTRY +0
							BYTE ENTRY +2
			EXIT CONDITIONS
			R0 ->	CONVERTED STRING

.I R$BINB
.I MR03
R$BINB		MR03	This procedure converts a character string into
			a signed sixteen bit word the input is assumed
			to be in base two.

			ENTRY CONDITIONS
			R0 ->	ASCII STRING ADDRESS

			EXIT CONDITIONS
			R0 =	CONVERTED VALUE
				IF STATUS = SUCCESS

.I R$BOCT
.I MR02
R$BOCT		MR02	This procedure converts a sixteen bit binary word into
			a significant zero string of ASCII characters using
			base eight.

			ENTRY CONDITIONS
			R0 =	BINARY VALUE		WORD ENTRY +0
							BYTE ENTRY +2
			EXIT CONDITIONS
			R0 ->	CONVERTED STRING

.T Character string to binary value convert routines.


NAME		MODULE			DESCRIPTION
----		------			-----------

.I R$HEXB
.I MR03
R$HEXB		MR03	This procedure converts a character string into
			a signed sixteen bit word the input is assumed
			to be in base sixteen.

			ENTRY CONDITIONS
			R0 ->	ASCII STRING ADDRESS

			EXIT CONDITIONS
			R0 =	CONVERTED VALUE
				IF STATUS = SUCCESS

.I R$OCTB
.I MR03
R$OCTB		MR03	This procedure converts a character string into
			a signed sixteen bit word the input is assumed
			to be in base eight.

			ENTRY CONDITIONS
			R0 ->	ASCII STRING ADDRESS

			EXIT CONDITIONS
			R0 =	CONVERTED VALUE
				IF STATUS = SUCCESS

.I R$DECB
.I MR03
R$DECB		MR03	This procedure converts a character string into
			a signed sixteen bit word the input is assumed
			to be in base ten.

			ENTRY CONDITIONS
			R0 ->	ASCII STRING ADDRESS

			EXIT CONDITIONS
			R0 =	CONVERTED VALUE
				IF STATUS = SUCCESS

.I R$STRB
.I MR03
R$STRB		MR03	This procedure converts a character string into
			a signed sixteen bit word.

			ENTRY CONDITIONS
			R0 =	ADDRESS OF CHARACTER STRING

			EXIT CONDITIONS
			R0 =	CONVERTED STRING VALUE
				IF STATUS = SUCCESS

.T Numeric character string tidy routines.

NAME		MODULE			DESCRIPTION
----		------			-----------

.I R$NTDY
.I MR21
R$NTDY		MR21	This procedure tidies a numeric character string
			created in the form <sign><numbers> the output
			result being in the value is negative the sign
			is retained and leading zeros removed.


			ENTRY POINTS
 
		(+0)	REMOVE LEADING ZEROS AND SIGN IF IT IS A PLUS
		(+2)	CONVERT LEADING ZEROS TO SPACES
		(+4)	REMOVE SIGN CHARACTER IF IT IS A PLUS

			ENTRY CONDITIONS
			R0 ->	NUMERIC CHARACTER STRING

			EXIT CONDITIONS
			R0 ->	MODIFIED STRING

.T Character string to non numeric format convert routines

NAME		MODULE			DESCRIPTION
----		------			-----------

.I R$BASC
.I MR18
R$BASC		MR18	This procedure converts a binary value into
			printable ASCII characters. Non printable ASCII
			characters are designated as so :-
			characters with values below decimal 32 are
			assumed to be control characters and are displayed
			^control character. The erase character is displayed
			as ^? .
			ie. character code 3 will be displayed as ^C

			ENTRY CONDITIONS
			R0 =	BINARY VALUE

			EXIT CONDITIONS
			R0 ->	ADDRESS OF STRING

.I R$BR50
.I MR15
R$BR50		MR15	This procedure converts a binary value into three
			radix 50 ascii characters in string format.

			ENTRY CONDITIONS
			R0 =	BINARY VALUE

			EXIT CONDITIONS
			R0 ->	ASCII STRING
				IF STATUS = SUCCESS

.I R$R50L
.I MR17
R$R50L		MR17	This procedure converts ASCII characters
			to radix 50 code load data sequentially
			into store.

			ENTRY POINTS	+0 NORMAL
					+2 INITIALISATION ENTRY

			ENTRY CONDITIONS
			R0 =	ASCII CHARACTER (ENTRY +0 ONLY)
			R4 ->	OUTPUT STORAGE AREA

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR
			R4 ->	LAST LOADED RADIX 50 WORD

.T Character manipulation routines.

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I R$ADDC
.I MRC03
R$ADDC		MRC03	This procedure appends/adds a character to a
			character string.

			ENTRY CONDITIONS
			R0 HOLDS CHARACTER TO ADD TO STRING
			R4 ->	CHARACTER STRING

			EXIT CONDITIONS
			EXITERROR IF INVALID CONDITIONS OR OPERATION FAILED.

.I R$ADDS
.I MRC12
R$ADDS		MRC12	This procedure appends/adds a character string to a
			character string.

			ENTRY CONDITIONS
			R0 ->	CHARACTER STRING TO ADD TO STRING
			R4 ->	CHARACTER STRING

			EXIT CONDITIONS
			EXITERROR IF INVALID CONDITIONS OR OPERATION FAILED.

.I R$CMPC
.I MRC09
R$CMPC		MRC09	This procedure compares to characters and checks if
			they are the same uppercase/lowercase characters
			are assumed to have the same value.

			ENTRY CONDITIONS
			R1 ->	THE ADDRESS OF CHARACTER (A)
			R2 ->	THE ADDRESS OF CHARACTER (B)

			EXIT CONDITIONS
			IF CHARACTERS SAME	STATUS = SUCCESS
			IF CHARACTERS DIFFER	STATUS = ERROR
.F

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I R$CR50
.I MRC08
R$CR50		MRC08	This procedure converts a character to its
			radix 50 code.

			ENTRY CONDITIONS
			R0 =	CHARACTER TO CONVERT

			EXIT CONDITIONS
			R0 =	CONVERTED CHARACTER
				IF STATUS = SUCCESS
			R0 =	-1 IF STATUS = ERROR

.I R$DELC
.I MRC05
R$DELC		MRC05	This procedure deletes a character within a character
			string at a specified position.

			ENTRY CONDITIONS
			R1 ->	STRING ADDRESS
			R2 =	CHARACTER POSITION TO DELETE

			EXIT CONDITIONS
			R1 ->	STRING ADDRESS
			R2 =	CHARACTER POSITION TO DELETE
			EXITERROR IF INVALID CONDITIONS OR OPERATION FAILED

.F


NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I R$GETC
.I MRC01
R$GETC		MRC01	This procedure extract a character from a character
			string from a requested position.

			ENTRY CONDITIONS
			R1 ->	STRING ADDRESS
			R2 ->	CHARACTER POSITION TO EXTRACT

			EXIT CONDITIONS
			R0 HOLDS EXTRACTED CHARACTER
			EXITERROR IF INVALID CONDITIONS OR OPERATION FAILED

.I R$INSC
.I MRC04
R$INSC		MRC04	This procedure inserts a character after a noted
			position in a string.

			ENTRY CONDITIONS
			R0 =	THE CHARACTER TO INSERT
			R1 ->	STRING ADDRESS TO HAVE CHARACTER INSERTED
			R2 =	THE POSITION AFTER WHICH THE CHARACTER
				IS INSERTED

			EXIT CONDITIONS
			EXITERROR IF INVALID CONDITIONS OR OPERATION FAILED

.I R$LCUC
.I MRC10
R$LCUC		MRC10	This procedure converts a lowercase alpha to
			an uppercase alpha all other characters remain
			unchanged.

			ENTRY CONDITIONS
			R0 =	CHARACTER TO CONVERT

			EXIT CONDITIONS
			R0 =	CONVERTED CHARACTER

.I R$MODC
.I MRC02
R$MODC		MRC02	This procedure modifies/overwrites a character
			within a character string at a requested position.


			ENTRY CONDITIONS
			R1 ->	STRING ADDRESS
			R2 ->	CHARACTER POSITION TO EXTRACT
			R0 =	REPLACEMENT CHARACTER

			EXIT CONDITIONS
			EXITERROR IF INVALID CONDITIONS OR OPERATION FAILED



.F


NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I R$MOVC
.I MRC07
R$MOVC		MRC07	This procedure removes the first character out of
			a string and reduces the string length
			by one character.

			ENTRY CONDITIONS
			R1 ->	STRING ADDRESS

			EXIT CONDITIONS
			R0 =	EXTRACTED CHARACTER
				IF STATUS = SUCCESS

.I R$POSC
.I MRC06
R$POSC		MRC06	This procedure locates a character within a character
			string.

			ENTRY CONDITIONS
			R0 =	CHARACTER TO LOCATE
			R1 ->	CHARACTER STRING
			R2 =	START POSITION FOR LOCATE TO START

			EXIT CONDITIONS
			R2 =	POSITION OF CHARACTER
				IF STATUS = SUCCESS

.I R$POSS
.I MRC06
R$POSS		MRC06	This procedure locates a character within a character
			string.

			ENTRY CONDITIONS
			R0 =	CHARACTER TO LOCATE
			R1 ->	CHARACTER STRING

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY
.F

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I R$R50C
.I MRC08
R$R50C		MRC08	This procedure converts a radix 50 code to an
			ASCII character.

			ENTRY CONDITIONS
			R0 =	CHARACTER TO CONVERT

			EXIT CONDITIONS
			R0 =	CONVERTED CHARACTER
				IF STATUS = SUCCESS
			R0 =	-1 IF STATUS = ERROR

.I R$UCLC
.I MRC11
R$UCLC		MRC11	This procedure converts an uppercase alpha to
			a lowercase alpha all other characters remain
			unchanged.

			ENTRY CONDITIONS
			R0 =	CHARACTER TO CONVERT

			EXIT CONDITIONS
			R0 =	CONVERTED CHARACTER

.T File and Block control routines

NAME		MODULE			DESCRIPTION
----		------			-----------

.I F$NAME
.I MF01
F$NAME		MF01	This procedure validates a filename and
			sets up an internal default filename
			descriptor block (DFNB).

			ENTRY CONDITIONS
			R0 ->	FILENAME STRING ADDRESS

			EXIT CONDITIONS
			R0 ->	DEFAULT FDB
				IF STATUS = SUCCESS

.I F$GETR
.I MF02
.I F$FDB
F$GETR		MF02	This procedure reads a record from the
			file specified by the FBD pointed at
			by the location F$FDB. The record length
			and data buffer information is taken from
			the string address.

			ENTRY CONDITIONS
			R0 ->	STRING BUFFER TO BE LOADED

			EXIT CONDITIONS
			R0 ->	LOADED STRING
				IF STATUS = SUCCESS

.I F$SHUT
.I MF03
.I F$FDB
F$SHUT		MF03	This procedure closes down the file specified
			by the FDB pointed at by the location F$FDB.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			STATUS FLAG ONLY

.I F$PUTR
.I MF04
.I F$FDB
F$PUTR		MF04	This procedure writes a record to the
			file specified by the FDB pointed at
			by the location F$FDB. Information about the
			record is taken from the string for output.

			ENTRY CONDITIONS
			R0 ->	STRING TO BE OUTPUT

			EXIT CONDITIONS
			STATUS FLAG ONLY

.F
NAME		MODULE			DESCRIPTION
----		------			-----------

.I F$OPEN
.I F$FDB
.I MF05
F$OPEN		MF05	This procedure opens the file specified by the
			FDB pointed at by the location F$FDB.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			STATUS FLAG ONLY

.I F$SETUP
.I F$FDB
.I MF06
.I F$TYPE
F$SETUP		MF06	This procedure sets up the FDB controlled by
			the flags set in location F$TYPE.

			ENTRY CONDITIONS
			R0 ->	STRING HOLDING DEFAULT FILENAME BLOCK

			EXIT CONDITIONS
			STATUS FLAGS ONLY


.I F$DIAG
.I MF07
.I F$FDB
F$DIAG		MF07	This procedure output the state of the present
			FDB (file descripter block) and the DFNB
			(default filename block) onto the terminal.
			The location F$FDB points to the FDB that will
			be processed.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			NONE

.I F$SWITCH
.I F$LUN
.I F$FDB
.I MF08
F$SWITCH	MF08	This procedure uses the location F$LUN to switch
			the FDB (file descriptor block) address in location
			F$FDB ie. this is the channel switch routine.

			ENTRY CONDITIONS
			F$LUN MUST BE VALID

			EXIT CONDITIONS
			NONE

.T General purpose routines

NAME		MODULE			DESCRIPTION
----		------			-----------

.I R$ADDRESS
.I MG01
R$ADDRESS	MG01	This procedure checks that a string address is
			a valid address.

			ENTRY CONDITIONS
			R0 =	STRING ADDRESS

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY

.I R$BITSET
.I MG06
R$BITSET	MG06	This procedure sets up a bit mask.

			ENTRY CONDITIONS
			R1 =	POSITION OF BIT TO BE SET

			EXIT CONDITIONS
			R1 =	BIT MASK

.I R$BITPOS
.I MG07
R$BITPOS	MG07	This procedure indicates the position of the
			lowest positioned bit set in a bit pattern.

			ENTRY CONDITIONS
			R1 =	BIT PATTERN/MASK

			EXIT CONDITIONS
			R1 =	POSITION
				IF STATUS = SUCCESS

.I R$PARITY
.I MG13
R$PARITY	MG13	This procedure checks the parity state of a
			binary value and also counts the number of
			bits set.

			ENTRY CONDITIONS
			R0 =	BIT PATTERN

			EXIT  CONDITIONS
			-8.(SP) = ONE'S COUNT OF R0
			STATUS  = SUCCESS IF PARITY = EVEN
			STATUS  = ERROR   IF PARITY = ODD

.I R$SAVE
R$SAVE		MG14	This procedure saves the registers R0 to R5
			on the stack. It has no entry or exit condi
			-tions.

.I R$UNSAVE
R$UNSAVE	MG14	This procedure is the converse of R$SAVE and
			unsaves registers R0 to R5 from the stack.It
			has no entry or exit conditions.

.T Queue manipulation routines



NAME		MODULE			DESCRIPTION
----		------			-----------

.I R$QADD
.I MR23
R$QADD		MR23	This procedure adds/appends a character to
			queue ring buffer.

			ENTRY CONDITIONS
			R0 =	THE CHARACTER TO LOAD INTO THE QUEUE
			R4 ->	THE ADDRESS OF THE QUEUE BUFFER

			EXIT  CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY


.I R$QREM
.I MR24
R$QREM		MR24	This procedure extracts/removes a character
			from a queue ring buffer.

			ENTRY CONDITION
			R1 ->	THE ADDRESS OF THE QUEUE BUFFER

			EXIT  CONDITIONS
			R0 =	EXTRACTED CHARACTER
				IF STATUS = SUCCESS


.I R$QTST
.I MR25
R$QTST		MR25	This procedure tests that there is enough
			room in the queue to allow another character
			to be added to the buffer.
 
			ENTRY CONDITIONS
			R4 ->	THE ADDRESS OF THE QUEUE BUFFER
 
			EXIT CONDITIONS
			STATUS OR ERROR ONLY  ERROR = NO FREE SPACE
 
.T Terminal input/output routines
.I V$LUN
.I TI0:

	The following procedures automatically assigns logical unit V$LUN
	assigned to TI0:


NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I V$IO
.I MG02
.I L7A
.I VDU
V$IO		MG02	This procedure performs both input and output
			operation on the terminal TI0: where the mode
			string controls a series of screen operations.
			(See VDU module L7A for information on the format)
			(of the mode string)

			ENTRY CONDITIONS
			R1 ->	MODE STRING
			R2 ->	DATA STRING

			EXIT CONDITIONS
			R0 ->	REPLY STRING

.I V$TX
.I MG04
V$TX		MG04	This procedure transmits the character string
			address held in R0 to the terminal TI0: .

			ENTRY CONDITIONS
			R0 ->	DATA STRING FOR OUTPUT

			EXIT CONDITIONS
			CHARACTERS ARE DISPLAYED ON THE TERMINAL TI0:

.I V$INPUT
.I MG03
V$INPUT		MG03	This procedure reads a character string from the
			terminal TI0: .

			ENTRY CONDITIONS
			ENTRY ADDRESS +0 READ WITH ECHO
			ENTRY ADDRESS +2 READ NO   ECHO

			EXIT CONDITIONS
			R0 ->	THE INPUTTED DATA STRING

.F
 
 
NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I V$ON
.I MG08
.I V$LUN
V$ON		MG08	This procedure assigns V$LUN to the terminal.
 
			ENTRY CONDITIONS
			NONE
 
			EXIT  CONDITIONS
			STATUS = SUCCESS OR ERROR
 

.I V$OFF
.I MG08
V$OFF		MG08	This procedure deassigns the terminal lun.
 
			ENTRY CONDITIONS
			NONE
 
			EXIT  CONDITIONS
			STATUS = SUCCESS OR ERROR
 
 

.I VDU
.I V$TERMINAL
.I MG08
V$TERMINAL	MG08	This procedure switches the VDU channel back
			to the users terminal.

			ENTRY	CONDITIONS
			NONE

			EXIT	CONDITIONS
			If the operation fails the programme will HALT

.I V$CHANNEL
.I V$DUNT
.I MG08
V$CHANNEL	MG08	This procedure set up the location V$DUNT to
			the device channel required to be exchanged
			for the VDU channel.

			ENTRY	CONDITIONS
			R0 =	THE DEVICE CHANNEL NUMBER

			EXIT	CONDITIONS
			NONE

.F
 
 
NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I V$DUNT
.I V$DDEV
.I V$CHANNEL
.I V$DEVICE
.I MG08
V$DEVICE	MG08	This procedure switches the VDU channel to a
			device selected by the locations V$DUNT the
			device unit number and the locations V$DDEV
			the device code letters. The standard default
			code letters are "TT" and the unit number is
			zero the unit number may be altered by the
			procedure V$CHANNEL.
			To prepare channel TT56: the following sequence
			would be used :-
			MOV #56,R0		;Hold channel number
			CALL V$CHANNEL		;Load new channel number
			CALL V$DEVICE		;Switch the channel
			Note once the channel number has been set up
			there should be no need to reuse the procedure
			V$CHANNEL unless the channel is to be changed.

			ENTRY	CONDITIONS
			LOCATIONS V$DUNT AND V$DDEV ARE SET UP

			EXIT	CONDITIONS
			STATUS = SUCCESS OR ERROR
			IF STATUS =	ERROR THEN THE CHANNEL IS RETURNED
					BACK TO THE VDU CHANNEL

.I V$SWITCH
.I MG08
V$SWITCH	MG08	This procedure reassigns the terminal channel
			to some other peripherial as specified by the
			locations V$UNIT and V$DEV .
 
			ENTRY CONDITIONS
			NONE
 
			EXIT  CONDITIONS
			STATUS = SUCCESS OR ERROR

.F



NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I V$TXA
.I MG09
.I V$TX
V$TXA		MG09	This proceduure enables an alternative method
			of passing data to the V$TX procedure.
			The format of this call is :-
				CALL V$TXA
				Address of string to be output

			ENTRY CONDITIONS
			STRING ADDRESS FOLLOWS CALL

			EXIT CONDITIONS
			DATA OUTPUT TO TERMINAL

.I V$TX
.I V$TXB
.I MG10
V$TXB		MG10	This procedure enables an alternative method
			of passing data to the procedure V$TX.
			The format of this call is :-
				CALL V$TXB
				length of character string
				character string

			ENTRY CONDITIONS
			STRING DATA FORMAT FOLLOWS THE CALL STATEMENT

			EXIT CONDITIONS
			CHARACTERS ARE DISPLAYED ON THE TERMINAL.
.F

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I V$TXC
.I MG11
V$TXC		MG11	This procedure enables repeats of a character
			to be sent to the terminal. The data follows
			the call to this procedure.
			The format of this call is :-
				CALL V$TXC
				.BYTE repeat count value in range 1 to 255
				.BYTE character to be transmitted to the
				      terminal.

			ENTRY CONDITIONS
			DATA FOLLOWS PROCEDURE CALL

			EXIT CONDITIONS
			CHARACTERS ARE DISPLAYED ON THE TERMINAL.

.I V$TXD
.I MG12
.I V$TX
V$TXD		MG12	This procedure enables an alternative method
			of passing data to the procedure V$TX.
			The format of this call is :-
				CALL V$TXD
				maximun string length (protection word)
				length of character string
				character string

			ENTRY CONDITIONS
			STRING DATA FORMAT FOLLOWS THE CALL STATEMENT

			EXIT CONDITIONS
			CHARACTERS ARE DISPLAYED ON THE TERMINAL.
.C CHARACTER/STRING MANIPULATION ROUTINES USING CD.DIC.
.T INTRODUCTION
.I CD.DIC
.I CD.SRC (source)
.I CD.DST (destination)
.I CD.CHR (character)
.I CD.CNT (count)
.I CD.POS (position)
.I CD.RES (result)
.I CD.KEY (table key)
.I COMMON DICTIONARY.
.I MGD03 (CD.DIC)
 
 
 
 

	These subroutines use labels in which to pass the parameters. All
registers are saved across the call.

	The locations are all words and are found in Module MGD03. They
are as follows:-

	CD.SRC	Address of main string (source) or table entry address.
	CD.DST	Address of secondary string (destination).
	CD.CHR	Contains the fill or operation character.
	CD.CNT	Contains the last input numeric count.
	CD.POS	Holds the character or string position to find or found.
	CD.RES	Contains the result of a previous macro (eg- COMPARE).
	CD.KEY	Holds the last table key entry that was accessed.

	The above locations are known as the COMMON DICTIONARY (CD.DIC)
and may be modified as required.

	NOTE:-	that the  table macros also use the COMMON DICTIONARY, and
		that after saving and setting the registers these routines
		call the appropriate register routine.

		Thus L$GETC calls R$GETC.

.T CHARACTER PROCEDURES USING COMMON DICTIONARY.

NAME		MODULE		DESCRIPTION
----		------		-----------

.I L$GETC
.I MLC01
L$GETC		MLC01	EXTRACT A CHARACTER FROM A STRING.

				ENTRY CONDITIONS

			CD.SRC	->	STRING TO PROCESS.
			CD.POS	=	CHARACTER POSITION TO EXTRACT.

				EXIT CONDITIONS

			CD.CHR	=	EXTRACTED CHARACTER.

			EXITERROR IF INVALID CONDITIONS.




.I L$MODC
.I MLC02
L$MODC		MLC02	REPLACE A CHARACTER IN A STRING.

				ENTRY CONDITIONS

			CD.CHR	=	REPLACEMENT CHARACTER
			CD.SRC	->	CHARACTER STRING ADDRESS
			CD.POS	=	CHARACTER POSITION TO MODIFY

				EXIT CONDITIONS

			EXITERROR IF INVALID CONDITIONS.




.I L$ADDC
.I MLC03
L$ADDC		MLC03	APPEND A CHARACTER TO A STRING.

				ENTRY CONDITIONS

			CD.CHR	=	CHARACTER TO ADD TO STRING.
			CD.SRC	->	CHARACTER STRING.

				EXIT CONDITIONS.

			ERROREXIT IF INVALID CHARACTER.




.F
NAME		MODULE		DESCRIPTION
----		------		-----------

.I L$INSC
.I MLC04
L$INSC		MLC04	INSERT A CHARACTER IN A STRING.

				ENTRY CONDITIONS.

			CD.CHR	=	CHARACTER TO INSERT
			CD.SRC	->	STRING ADDRESS.
			CD.POS	=	CHARACTER POSITION.

				EXIT CONDITIONS.

			ERROREXIT IF INVALID CONDITIONS.




.I L$DELC
.I MLC05
L$DELC		MLC05	DELETE A CHARACTER WITHIN A STRING.

				ENTRY CONDITIONS

			CD.SRC	->	STRING ADDRESS
			CD.POS	=	CHARACTER POSITION TO DELETE

				EXIT CONDITIONS

			ERROREXIT IF INVALID CONDITIONS.



.I L$POSC
.I MLC06
L$POSC		MLC06	LOCATE POSITION OF CHARACTER IN STRING.
	
				ENTRY CONDITIONS

			CD.CHR	=	CHARACTER TO LOCATE.
			CD.SRC	->	ADDRESS OF STRING.
			CD.POS	=	START POSITION TO START SEARCH 
					IN STRING.

				EXIT CONDITIONS

			CD.POS	=	UNCHANGED IF CHARACTER NOT 
					FOUND (EXITERROR).
			CD.POS	=	CHARACTER POSITION 
					(EXITSUCCESS).




.F
NAME		MODULE		DESCRIPTION
----		------		-----------

.I L$MOVC
.I MLC07
L$MOVC		MLC07	EXTRACT A CHARACTER FROM A STRING.

				ENTRY CONDITIONS

			CD.SRC	->	STRING ADDRESS

				EXIT CONDITIONS

			CD.CHR	=	CHARACTER IF STATUS EQUALS
					SUCCESS.


.I L$CMPC
.I MLC09
L$CMPC		MLC09	COMPARE TWO CHARACTERS.

				ENTRY CONDITIONS.

			CD.CHR	 =	FIRST CHARACTER (BYTE)
			CD.CHR+1 =	SECOND CHARACTER (BYTE)

				EXIT CONDITIONS.

			SUCCESS IF CHARACTERS ARE THE SAME.


.I L$ADDS
.I MLC12
L$ADDS		MLC12	ADD ONE STRING TO ANOTHER STRING.

				ENTRY CONSITIONS.

			CD.SRC	->	CHARACTER STRING TO ADD.
			CD.DST	->	CHARACTER STRING TO BE ADDED TO.

				EXIT CONDITIONS.

			ERROREXIT IF INVALID CONDITIONS.

	
.I L$DELETE
.I ML04
L$DELETE	ML04	CHARACTER DELETE WITHIN A STRING.

				ENTRY CONDITIONS

			CD.SRC	->	STRING TO PROCESS
			CD.POS	=	START POSITION WHERE DELETING 
					IS TO START.
			CD.CNT	=	NUMBER OF CHARACTERS TO DELETE.

				EXIT CONDITIONS

			NONE
.F
NAME		MODULE		DESCRIPTION
----		------		-----------

.I L$POS3
.I ML05
L$POS3		ML05	POSITION ROUTINE, 3 PARAMETERS.

				ENTRY CONDITIONS.

			CD.SRC	->	MASTER STRING
			CD.DST	->	SEARCH STRING
			CD.POS	=	START POSITION OF SEARCH.

				EXIT CONDITIONS

			CD.POS	=	POSITION OF FIRST CHARACTER 
					IF MATCH FOUND.(SUCCESS)
			CD.POS	=	'0' IF NO MATCH FOUND.	
					(ERROR)





.I L$POS2
.I ML05
L$POS2		ML05	POSITION ROUTINE, 2 PARAMETERS.

				ENTRY CONDITIONS.

			CD.SRC	->	MASTER STRING
			CD.DST	->	SEARCH STRING

				EXIT CONDITIONS

			CD.POS	=	POSITION OF FIRST CHARACTER 
					IF MATCH FOUND.(SUCCESS)
			CD.POS	=	'0' IF NO MATCH FOUND.(ERROR)





.I L$WEDGE
.I ML06
L$WEDGE		ML06	WEDGE ONE STRING WITHIN ANOTHER STRING.

				ENTRY CONDITIONS

			CD.DST	->	MASTER STRING ADDRESS.
			CD.SRC	->	WEDGE STRING ADDRESS.
			CD.POS	=	POSITION WHERE INSERT MUST START.

				EXIT CONDITIONS.

			NONE





.F
NAME		MODULE		DESCRIPTION
----		------		-----------

.I L$REVERSE
.I ML07
L$REVERSE	ML07	STRING REVERSAL PROCEDURE.

				ENTRY CONDITIONS

			CD.SRC	->	CHARACTER STRING TO BE REVERSED.

				EXIT CONDITIONS

			NONE


.I L$SHRE
.I ML08
L$SHRE		ML08	CHARACTER SHIFT RIGHT END AROUND.

				ENTRY CONDITIONS

			CD.SRC	->	CHARACTER STRING ADDRESS.

				EXIT CONDITIONS

			NONE


.I L$SHLE
.I ML09
L$SHLE		ML09	CHARACTER SHIFT LEFT END AROUND.

				ENTRY CONDITIONS

			CD.SRC	->	CHARACTER STRING ADDRESS.

				EXIT CONDITIONS

			NONE


.I L$SHR
.I ML10
L$SHR		ML10	SHIFT CHARACTER STRING ONE PLACE RIGHT.

				ENTRY CONDITIONS

			CD.SRC	->	CHARACTER STRING ADDRESS.
			CD.CHR	=	FILLER CHARACTER.

				EXIT CONDITIONS

			NONE
.F
NAME		MODULE		DESCRIPTION
----		------		-----------

.I L$SHL
.I ML10
L$SHL		ML10	SHIFT CHARACTER STRING ONE PLACE RIGHT.

				ENTRY CONDITIONS

			CD.SRC	->	CHARACTER STRING ADDRESS.

				EXIT CONDITIONS

			NONE






.I L$COMPARE
.I ML11
L$COMPARE	ML11	COMPARE TWO CHARACTER STRINGS.

				ENTRY CONDITIONS

			CD.SRC	->	CHARACTER STRING ADDRESS.
			CD.DST	->	CHARACTER STRING ADDRESS.
		
				EXIT CONDITIONS

			IF BOTH STRING IDENTICAL
				CD.RES = ZERO	(SUCCESS)
			IF SOURCE STRING LARGEST
				CD.RES = POSITIVE	(ERROR)
			IF DESTINATION STRING LARGEST
				CD.RES = NEGATIVE	(ERROR)

	NOTE:-	WHEN STRINGS OF DEFFERING LENGTHS ARE SUPPLIED THE
		CHARACTERS ARE COMPARED OVER THE LENGTH OF THE
		SHORTEST STRING, IF ALL CHARACTERS ARE THE SAME THE
		SHORTEST STRING IS ASSUMED TO BE THE SMALLER.





.F
NAME		MODULE		DESCRIPTION
----		------		-----------

.I L$ADDTO
.I ML12
L$ADDTO		ML12	ADD ONE STRING TO ANOTHER.

				ENTRY CONDITIONS

			CD.SRC	->	STRING TO APPEND.
			CD.DST	->	CHARACTER STRING TO BE APPENDED TOO.

				EXIT CONDITIONS

			NONE






.I L$CLEAR
.I ML13
L$CLEAR		ML13	CLEAR OUT A CHARACTER STRING.

				ENTRY CONDITIONS

			CD.SRC	->	CHARACTER STRING ADDRESS.

				EXIT CONDITIONS

			NONE





.I L$SEG
.I ML14
L$SEG		ML14	EXTRACT SEGMENT OF A CHARACTER STRING.

				ENTRY CONDITIONS

			CD.SRC	->	INPUT STRING ADDRESS.
			CD.POS	->	START POSITION.
			CD.CNT	->	NUMBER OF CHARACTERS.
			CD.DST	->	OUTPUT CHARACTER STRING ADDRESS.

				EXIT CONDITIONS

			CD.DST ->	OUTPUT STRING ADDRESS.





.F
NAME		MODULE		DESCRIPTION
----		------		-----------

.I L$PAD
.I ML16
L$PAD		ML16	PAD A CHARACTER STRING.

				ENTRY CONDITIONS

			CD.SRC	->	INPUT STRING ADDRESS.
			CD.CNT	=	NUMBER OF CHARACTERS TO PAD 
					WITH OR '0' FOR REST OF STRG.
			CD.CHR	=	CHARACTER TO PAD WITH.

				EXIT CONDITIONS

			NONE

.C Node manipulation routines
.T Introduction







	A node in this context is a block of memory which may be
	accessed as a fixed or variable length data area controlled
	within a limited area of program memory.
	The node software is suitable as the basis for editors
	interpreters screen formatting and sorting programs and
	various other data manipulation software.


.T Node routines
NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I N$DIAG
.I MN01
N$DIAG		MN01	This procedure prints onto the terminal the state
			of the control nodeblock data table.

			ENTRY CONDITIONS
			LUN ONE ASSIGNED TO THE TERMINAL

			EXIT CONDITIONS
			NONE

.I N$DUMP
.I MN02
N$DUMP		MN02	This procedure prints onto the terminal the contents
			of the present node the next sequential nodes as
			specified by a count value in R0.

			ENTRY CONDITIONS
			LUN ONE ASSIGNED TO THE TERMINAL
			R0 =	NUMBER OF SEQUENTIAL NODES TO DUMP

			EXIT CONDITIONS
			NONE

.I N$INIT
.I MN03
N$INIT		MN03	This procedure sets up the node control block to
			access a new node table. If a node table is being
			processed the old data is copied back to old node
			table before new data copied in.

			ENTRY CONDITIONS
			R0 ->	ADDRESS OF NODE TABLE

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY

.I N$CREATE
.I MN09
N$CREATE	MN09	This procedure will try to create a node in the
			node table.

			ENTRY CONDITIONS
			R0 =	SIZE IN BYTES REQUIRED BY NODE
			R1 =	MARKERS TO LOCATE NODE WITH

			EXIT CONDITIONS
			R0 ->	NEW NODE ACCESS ADDRESS
				IF STATUS = SUCCESS
.F


NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I N$DELETE
.I MN06
N$DELETE	MN06	This procedure will try to delete a node in the node
			table.

			ENTRY CONDITIONS
			R1 =	MARKER TO LOCATE NODE WITH

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF NEXT NODE
				IF STATUS = SUCCESS

.I N$PROTECT
.I MN08
N$PROTECT	MN08	This procedure disables the delete procedure from
			deleting a node and when a node is used as a character
			string the string is marked write protect.

			ENTRY CONDITIONS
			R1 =	MARKER OF NODE TO PROTECT

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF PROTECTED NODE
				IF STATUS = SUCCESS

.I N$UNPROTECT
.I MN08
N$UNPROTECT	MN08	This procedure removes any protect flags set on a node.

			ENTRY CONDITIONS
			R1 =	MARKERS TO LOCATE NODE WITH

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF NODE
				IF STATUS = SUCCESS

.I N$SEEK
.I MN04
N$SEEK		MN04	This procedure locates the position in the node
			table of a specified node.

			ENTRY CONDITIONS
			R1 =	MARKERS TO LOCATE NODE WITH

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF NODE
				IF STATUS = SUCCESS

.I N$SQUEEZE
.I MN10
N$SQUEEZE	MN10	This procedure compresses the node table removing
			any nodes marked for delete.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY



.F


NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I N$FIRST
.I MN05
N$FIRST		MN05	This procedure locates the first node in the
			node table.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF FIRST NODE
				IF STATUS = SUCCESS

.I N$LAST
.I MN05
N$LAST		MN05	This procedure locates the last node in the
			node table.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS

			R0 ->	ACCESS ADDRESS OF LAST NODE
				IF STATUS = SUCCESS

.I N$PRESENT
.I MN05
N$PRESENT	MN05	This procedure locates the position of the node
			presently being pointed at in the node table.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF PRESENT NODE
				IF STATUS = SUCCESS

.I N$SETUP
.I MN05
.I N$INIT
N$SETUP		MN05	This procedure verifys that the node table has been
			set up by the N$INIT routine.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY

.I N$NEXT
.I MN07
N$NEXT		MN07	This procedure steps onto the next node in the
			node table, nodes are assumed to end wrap around
			no checks are made regarding the state of the
			node.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF NEXT NODE
				IF STATUS = SUCCESS
.T Node table generation MACRO and data formats
.I NODEBLOCK
 
 
 
 
 
 
 
 
 
NODEBLOCK [number of bytes in table]
			This macro is used at least twice. The macro
			is specified once without the number of
			bytes being specified this macro then expands
			all the global symbols required for the correct
			operation of the node control software.
			All further uses of the NODEBLOCK macro are
			used to create node tables.


		NODE FORMAT
		-----------

BYTES 0,1		Location of marker word
			BIT 15 indicates the node is deleted.
BYTES 2,3		Maximum size in bytes of the node.
			BIT 15 SET indicates this node is protected
BYTES 4,5		Free byte or indicates length when node is a
			string.
BYTES 6->		User workspace in node


.C Table manipulation routines
.T Introduction







	A table in this context is a block of memory which may be
	accessed as a fixed or variable length data area controlled
	within a limited area of program memory.
 
	It differs from the node software in that the key is held in
	sorted order in an internal string, thus all table lookups and
	creates are automatically put in key order.
.I KEYS 
	NOTE:-	1. no key may be greater than 32766 (Octal 77776).
		2. an allowance must be made in the length declaration
		   for the sort string of approximately 12 bytes for
		   each required string.
 
	The table software is suitable as the basis for editors
	interpreters screen formatting and sorting programs and
	various other data manipulation software.

.T Table routines

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I T$DIAG
.I MT01
T$DIAG		MT01	This procedure prints onto the terminal the state
			of the control data table.

			ENTRY CONDITIONS
			LUN ONE ASSIGNED TO THE TERMINAL

			EXIT CONDITIONS
			NONE

.I T$DUMP
.I MN02
T$DUMP		MN02	This procedure prints onto the terminal the contents
			of the present entry the next sequential entrys as
			specified by a count value in R0.

			ENTRY CONDITIONS
			LUN ONE ASSIGNED TO THE TERMINAL
			R0 =	NUMBER OF SEQUENTIAL ENTRYS TO DUMP

			EXIT CONDITIONS
			NONE

.I T$INIT
.I MT03
T$INIT		MT03	This procedure sets up the entry control block to
			access a new table. If a entry table is being
			processed the old data is copied back to old entry
			table before new data copied in.

			ENTRY CONDITIONS
			R0 ->	ADDRESS OF TABLE

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY
.F

 
NAME		MODULE			DESCRIPTION
----		------			-----------

.I T$CREATE
.I MT09
T$CREATE	MT09	This procedure will try to create an entry in the
			table.

			ENTRY CONDITIONS
			R0 =	SIZE IN BYTES REQUIRED BY ENTRY
			R1 =	MARKERS TO LOCATE ENTRY WITH

			EXIT CONDITIONS
			R0 ->	NEW ENTRY ACCESS ADDRESS IF STATUS = SUCCESS
 
.I T$CREATE
.I T$SCHK
.I MT09
T$SCHK		MT09	This procedure is used by T$CREATE to check if sort
			table string can be inserted.
 
			DO NOT USE.
 
.I T$CREATE
.I T$IKEY
.I MT09
T$IKEY		MT09	This procedure is NOT TO BE USED  on its own. It is
			used by T$CREATE to insert an item in the sort string
 
			ENTRY CONDITIONS
			R0 =	ADDRESS OF STRING.
 
			EXIT CONDITIONS
			R0 =	ACCESS ADDRESS IF SUCCESS.
 
.I T$DELETE
.I MT06
T$DELETE	MT06	This procedure will try to delete an entry in the
			table.

			ENTRY CONDITIONS
			R1 =	MARKER TO LOCATE ENTRY WITH

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF NEXT ENTRY
				IF STATUS = SUCCESS
 
.I T$DELETE
.I T$DKEY
.I MT06
T$DKEY		MT06	This procedure is NOT TO BE USED on its own. It is used
			by T$DELETE to remove item from the sort string
 
			ENTRY CONDITIONS
			(set up by T$DELETE)
 
			EXIT CONDITIONS
			(same as T$DELETE)

.F

 
NAME		MODULE			DESCRIPTION
----		------			-----------

.I T$PROTECT
.I MT08
T$PROTECT	MT08	This procedure disables the delete procedure from
			deleting an entry and when an entry is used as a
			character string the string is marked write protect.

			ENTRY CONDITIONS
			R1 =	MARKER OF ENTRY TO PROTECT

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF PROTECTED ENTRY
				IF STATUS = SUCCESS

.I T$UNPROTECT
.I MT08
T$UNPROTECT	MT08	This procedure removes any protect flags
			set on an entry.

			ENTRY CONDITIONS
			R1 =	MARKERS TO LOCATE ENTRY WITH

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF ENTRY
				IF STATUS = SUCCESS
 
.I T$SEEK
.I MT04
T$SEEK		MT04	This procedure locates the position in the entry
			table of a specified entry.

			ENTRY CONDITIONS
			R1 =	MARKERS TO LOCATE ENTRY WITH

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF ENTRY
				IF STATUS = SUCCESS

.I T$SQUEEZE
.I MT10
T$SQUEEZE	MT10	This procedure compresses the table removing
			any entrys marked for delete, and rebuilds the
			sort string.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY

.I T$SORT
.I MT10
T$SORT		MT10	This procedure compresses the table removing
			any entrys marked for delete, and rebuilds the
			sort string.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY

.F

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I T$FIRST
.I MT05
T$FIRST		MT05	This procedure locates the first sorted entry in the
			table.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF FIRST SORTED
				ENTRY IF STATUS = SUCCESS

.I T$LAST
.I MT05
T$LAST		MT05	This procedure locates the last sorted entry in the
			table.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS

			R0 ->	ACCESS ADDRESS OF LAST SORTED ENTRY
				IF STATUS = SUCCESS

.I T$PRESENT
.I MT05
T$PRESENT	MT05	This procedure locates the position of the entry
			presently being pointed at in the table.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF PRESENT ENTRY
				IF STATUS = SUCCESS

.I T$SETUP
.I MT05
.I T$INIT
T$SETUP		MT05	This procedure verifys that the entry table has been
			set up by the T$INIT routine.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			STATUS = SUCCESS OR ERROR ONLY

.F

NAME		MODULE			DESCRIPTION
----		------			-----------
 
.I T$NEXT
.I MT07
T$NEXT		MT07	This procedure steps onto the next entry in the
			table. If the routine attempts to step beyond the
			last entry, it will exit with an error and the
			address of the last entry.

			ENTRY CONDITIONS
			NONE

			EXIT CONDITIONS
			R0 ->	ACCESS ADDRESS OF NEXT ENTRY
				IF STATUS = SUCCESS
			R0 ->	ACCESS ADDRESS OF LAST ENTRY
				IF STATUS = ERROR.
 
.I T$PREVIOUS
.I MT07
T$PREVIOUS	MT07	This procedure steps back to the previous entry in the
			table.If the routine attempts to step beyond the first
			entry  it  will  exit with an error and the address of
			the first entry.
 
			ENTRY CONDITIONS.
			none
 
			EXIT CONDITIONS.
			R0 ->	ACCESS ADDRESS OF PREVIOUS ENTRY
				IF STATUS = SUCCESS
			R0 ->	ACCESS ADDRESS OF FIRST ENTRY
				IF STATUS = ERROR

.I T$RSEQ
.I MT11
T$RSEQ		MT11	This procedure resequences the keys in a table.
			Thus if the  resequence  point is '3' then keys
			'1' and '2' will remain untouched, key '3' will
			become '4' and '4' will become '5' etc.

			If  the  resequence point is '0', then all keys
			will  be  sequentially  resequenced starting at
			'1'.

				ENTRY CONDITIONS

			R0 ->	ADDRESS OF RESEQUENCE POINT IN SORT STRG.
				    MOV TPRESENT,R0	;makes hole.
				    CLR	R0		;complete resequence.

				EXIT CONDITIONS

			EXITSUCCESS ONLY.

.T Entry table generation MACRO and data structures
.I TABLEBLOCK
.I ENTRYBLOCK
.I TABLE [bytes]

TABLEBLOCK 
			This macro sets up the common 'TABLE/NODE' area
			and must only be specified once within a 
			program. When specified this macro then expands
			all the global symbols required for the correct
			operation of the entry control software.
			All further uses of the ENTRYBLOCK macro are
			used to create entry tables.

			NOTE:-	It is important to realise that
				'TABLEBLOCK' is the same as 'NODEBLOCK'
				(with no size param), their action is
				identical and only one or other should 
				be specified once.

TABLE	[Total number of bytes required in table]
			This macro defines the size of the Table, and
			is called once for each table required. It must
			be preceeded by a label with which it can be
			referenced


		ENTRY FORMAT
		-----------

BYTES 0,1		Location of marker word,
			MUST BE LESS THAN 32766 (O'77776).
			BIT 15 indicates the entry is deleted.
BYTES 2,3		Maximum size in bytes of the entry.
			BIT 15 SET indicates this entry is protected
BYTES 4,5		Free byte or indicates length when entry is a
			string.


BYTES 6->		User workspace in entry


.C Device channel routines
.T Magnetic tape routines	General information
 
 
 
 
 
 
 
 
 
 

			GENERAL INFORMATION
			===================

		Use of the magnetic tape controller
		-----------------------------------

	This software uses a series of reserved data locations to indicate
	which magnetic tape controller is to be used.
	These locations may be altered or examined to switch channels
	or to observe the effects of data transfer error etc..

.T Magnetic tape routines	Data area functions

NAME		MODULE			FUNCTION
----		------			--------

.I MT$UNIT
.I MMTD0
.I OPEN
MT$UNIT		MMTD0	This location indicates which controller
			is to be opened by the OPEN call.
			[default = unit number 0 ie. MM0: ]


.I MT$LUN
.I MMTD0
MT$LUN		MMTD0	This location indicates which logical
			unit will be assigned to the magnetic tape
			controller.
			[default = lun 2]


.I MT$EFN
.I MMTD0
MT$EFN		MMTD0	This location indicates which event flag
			will be used for I/O operations etc.
			[default = event flag 2]


.I MT$DSW
.I MMTD0
MT$DSW		MMTD0	This location hold the status of the last
			I/O operation.


.I MT$ISB
.I MMTD0
MT$ISB		MMTD0	This is the address of the INPUT/OUTPUT
			STATUS block.

.T Magnetic tape routines	Procedure functions

NAME		MODULE			DESCRIPTION
----		------			-----------

.I MT$EXIT
.I MMT01
.I DSW
MT$EXIT		MMT01	This procedure is the general exit routine
			for the magnetic tape input output control
			routines.

			ENTRY CONDITIONS
			This routine is entered via a jump or branch
			order just after an I/O operation has occured
			in order to save the DSW and return to the
			calling program.

			EXIT CONDITIONS
			status flag = success or error


.I MT$GET
.I MMT02
MT$GET		MMT02	This procedure reads a block of data from
			the magnetic tape controller.

			ENTRY CONDITIONS
			R0 ->	string address

			EXIT  CONDITIONS
			status = success or error


.I MT$SHUT
.I MMT03
MT$SHUT		MMT03	This procedure closes down the magnetic
			tape channel being used.

			ENTRY CONDITIONS
			none

			EXIT CONDITIONS
			status = success or error


.I MT$PUT
.I MMT04
MT$PUT		MMT04	This procedure writes a block of data to
			the magnetic tape controller.

			ENTRY CONDITIONS
			R0 ->	string address

			EXIT CONDITIONS
			status = success or error



.F

NAME		MODULE			DESCRIPTION
----		------			-----------


.I MT$OPEN
.I MMT05
MT$OPEN		MMT05	This procedure opens up a magnetic tape
			controller channel.

			ENTRY CONDITIONS
			none

			EXIT  CONDITIONS
			Status = success or error

.I MT$FIND
.I MMT06
MT$FIND		MMT06	This procedure finds the next end of file
			marker on the magnetic tape.

			ENTRY CONDITIONS
			none

			EXIT  CONDITIONS
			Status = success or error

.I MT$BACK
.I MMT07
MT$BACK		MMT07	This procedure requests the magnetic tape
			controller to backspace one block on the
			present magnetic tape.

			ENTRY CONDITIONS
			none

			EXIT  CONDITIONS
			Status = success or error


.I MT$REWIND
.I MMT08
MT$REWIND	MMT08	This procedure requests the magnetic tape
			controller to rewind the present magnetic
			tape.

			ENTRY CONDITIONS
			none

			EXIT  CONDITIONS
			Status = success or error

.I MT$MARK
.I MMT09
MT$MARK		MMT09	This procedure marks the tape with an end of
			file mark.

			ENTRY CONDITIONS
			none

			EXIT  CONDITIONS
			Status = success or error

.C Message checking routines.
.T Introduction and routines.

	These routines macros were developed to check and validate
	input messages with as little software effort as possible.


NAME		MODULE			DESCRIPTION
----		------			-----------
.I M$CHECK
.I MMC01

M$CHECK		MMC01	This procedure compares an input message with
			a selected message table and reply -1 if the
			message/keyword is not found.

			ENTRY CONDITIONS
			R0 ->	MESSAGE TO BE VALIDATED
			R1 ->	ADDRESS OF A MESSAGE TABLE

			EXIT CONDITIONS
			R0 =	-1 IF MESSAGE/KEYWORD NOT FOUND
			R0 =	REPLY VALUE IF MESSAGE/KEYWORD FOUND

.I M$HUNT
.I MMC02
.I REPORT
M$HUNT		MMC02	This procedure uses the data structure set up
			by the macro REPORT to use a binary value to
			ascociate it with a text message hence giving
			a simple method of relating error reports to
			plain language messages.

			ENTRY CONDITIONS
			R0 =	BINARY VALUE TO BE LOCATED
			R1 ->	ADDRESS OF A REPORT TABLE

			EXIT CONDITIONS
			IF STATUS = SUCCESS	R0 = ADDRESS OF TEXT
			IF STATUS = ERROR	R0 = 0


.T Data structures and generation macros.

		Message table generating macro.
		-------------------------------


MODULE	NAME				DESCRIPTION
------	----				-----------
.I MESSAGE
.I MX02

MX02	MESSAGE	[minimum characters for match,reply value,check string]
			This macro set up an entry in a message table.
			If no parameter is specified this indicates the
			message table terminator.
			The reply value can be any integer value except
			the value -1. This field could be set up to
			contain a series of switch jump values
			to enable automatics command line processing.
			The minimum characters for match field enables
			this routine to distinguish between say the
			words XXXz and XXXy when only three characters
			have been input.
			The string is the group of characters you wish
			to locate as an answer.

			Note the start of the message table is indicated
			by setting a label just before the first occurance
			of the macro MESSAGE.  for example
			TABSTART:	MESSAGE 1,55,"RUBBISH"
					MESSAGE			;END OF TABLE

.I MX02
.I REPORT
MX02	REPORT	[CONTROL CODE, HUNT VALUE, TEXT STRING]
			This macro sets up an entry in the REPORT table.
			If no parameter is specified this acts as the
			report table terminator and must be used once
			at the end of every report table.
			The HUNT VALUE may be any value including symbolic
.I DSW
			offsets and DSW error reports in symbolic form.
			The CONTROL CODE is normally defaulted as this
			is only used to create text strings that exceede
			one printed line. When an extended string is
			generated the macro automaticaly inserts a line
			feed , carriage return at the start of each
			continuation line and on the last line.
			The permisiable CONTROL CODES are
			FIRST	CONT	LAST
.I FIRST
.I CONT
.I LAST
			The code FIRST indicates the start of the message
			CONT indicates a continuation line and LAST is the
			last line of the report text.
			example report table generation.
			REPORT ,IE.SUC,<"Success status">
			REPORT START,207.,<"Oh Dear">
			REPORT CONT,,<"Something has gone wrong">
			REPORT LAST,,<"try pressing the RETURN key">
			REPORT		;REPORT TERMINATOR

.C Stand alone Serial device line handler/driver.
.T Introduction
.I DEVIO
 
 
 
 
 

	DEVIO MACRO	DEVICE Input Output controler routine.
	================***====*=====*========================

	This is a customed designed general purpose serial line device
driving routine created by a common MACRO 11 macro.
 
	The  DEVIO  macro enables the user to develop an absolute app-
lication device driver from a single line of MACRO code.

	DEVIO allows you to specify the following options :-

Option	Default		Remarks
======	=======		=======

(1)	none	The interupt vector address.
(2)	none	The base control and status registers address.
(3)	none	A one or two letter/number identifier for multiply routines.
(4)	STRING	The mode of transfer of the output section.
(5)	CHAR	The mode of transfer of the input  section.
(6)	8	The number of characters allowed in the read ahead buffer
(7)	0	The number of filler character to follow a line feed sequence.
(8)	strip	The condition of the parity bit on input.
(9)	ON	Auto-matic character echo option
(10)	YES	Input  code required ?
(11)	YES	Output code required ?
(12)	TERM	If handler to behave as terminal or device.
(13)	SMART	If smart (VDU) erase option required.
(14)	ESC	If ESCAPE is allowed to terminate a string (if selected).
(15)	0	Size of input string buffer.

.T Building and usage

 
 
 
	Depending on the parameters declared a selection of the foll-
owing labels will be available.
 
	For compatablility with 'SERIO' -
 
		SOUT'aa'	equates to OUTS'aa'
					   OUTC'aa'
 
		SINP'aa'	equates to INPS'aa'
					   INPC'aa'
 
		SINT'aa'	equates to DINT'aa'
 
.I DEVICE LABELS
	DEVICE LABELS -
	=============
 
		DFLG'aa'	Flag storage location.(see next topic)
 
		DINT'aa'	Device initialisation routine.
 
		INPS'aa'	String input. (R0 holds address.)
 
		INPC'aa'	Character input. (R0 holds the character.)
 
		OUTS'aa'	string output. (R0 holds address.)
 
		OUTC'aa'	character output. (R0 holds the character.)
 
		SSIZ'aa'	Holds input buffer size.
.F
 
 
 
 
	CALLING	:-	'DEVIO' (and 'SERIO') must be defined as required,
			this definition can be carried by 'CONFIG' instead.
 
	USE	:-	.MCALL	DEVIO
			DEVIO	P1,P2,P3,<P4>,P5,P6,P7,P8
 
			- see parameter options and note that 'P4' is a
			  multiple parameter field.
 
		eg:-
 
		DEVIO KB,176500,60,<NOOUT,DEVICE,NOPAR>,32
 
			- note that the last three parameters are not req-
			uired and so are left blank.
 
 
		PROGRAM CALLS	:-
 
			- In the above "CALL INPC'aa'" is "CALL INPCKB"
			('aa') denotes the channel identifier.
 
			Character mode	-	R0 holds the character.
			String mode	-	R0 holds the string address.

		ERROR RETURN	:-
 
			On input means that no character or string has 
			been received.
 
 		NOTE	:-
 
			In non-buffered string output, the string must not
			be changed untill the output has finished.
			(Check bit 6 of the flag word (DFLGKB)),.
 
.T PARAMETER OPTIONS
 
 
PARAM	DEFAULT	OPTION	DETAILS
=====	=======	======	=======

P1	NONE	'aa'	The channel identifier - any two alpha numeric
			characters which form the last two character of
			any label, eg:- 01 or AA.
			(see calling information)
 
P2	NONE	-	The base 'CSR' address - eg:- 176500
 
P3	NONE	-	The base vector address - eg:- 60
 
P4			Multiple parameter field where some or all of
			the options may be selected, seperated by a ','
			and surrounded by argument indicators.
 
	OSTRING	OCHAR	The mode of transfer to the output section.
	 
	ICHAR	ISTRING	The mode of transfer from the input section.
 
	PARITY	NOPAR	Parity bit stripping option.
 
	INPUT	NOIN	Appropriate input code generation.
 
	OUTPUT	NOOUT	Appropriate output code generation.
 
	TERM	DEVICE	Set it as a terminal or a device handler.
 
	ECHO	NOECHO	Auto echo option.				*
 
	ESCAPE NOESCAPE	Escape sequence option.				*
 
	SCOPE	NOSCOPE	Smart scope funtion option. (erase function)	*
 
	TAB	NOTAB	Horizontal tab option. (not yet implemented)	*
 
	FF	NOFF	Form feed option. (FF to LF's) (not implemented	*
 
P5	8	'num'	Read ahead buffer size.
 
P6	0	'num'	Input string buffer size (if 'ISTRING' defined).
 
P7	0	'num'	Number of filler characters required after a
			Line feed.					*
 
P8	0	'num	Output ring buffer size.
 
  
  
   
 	Note:- * denotes terminal handler only options.

.T DEVICE FLAG BITS
 
 
 
 
 

BIT			Function
===			========

0  = 1		Handler requires re-initialising.
1  		Not used
2		Not used
3  = 1		Disable the output section.
4	*	'Internal use' (CRLF)
5	*	'Internal use' (CNTR'R)
6  = 1	*	Transmitter section is busy
7  = 1	*	Input characters have been lost.
8  = 1	*	Escape character terminated the last string
9	*	'internal use' ('NOINC' tx pointer)
10 = 1	*	'internal use' (filler output required)
11 = 1	*	'internal use' (input echo buffer busy)
12 = 1	*	This handler is a terminal handler
13 = 1		Smart scope is enabled.
14 = 1		Read no echo function enabled.
15 = 1		Do not strip input parity bit.

	Treat all flags marked with an * character as READ ONLY
	setting or clearing other flags may cause unpredictable results
	other than those indicated above.

.C Stand alone Serial line device handler/driver.
.T Introduction
.I SERIO
 
 
 
 
 

	SERIO MACRO	SERial Input Output controler routine.
	================***====*=====*========================

	This is a customed designed general purpose serial line device
driving routine created by a common MACRO 11 macro.
	The SERIO macro enables the user to develop an absolute application
device driver from a single line of MACRO code.

	SERIO allows you to specify the following options :-
Option	Default		Remarks
(1)	none	The interupt vector address.
(2)	none	The base control and status registers address.
(3)	none	A one or two letter/number identifier for multiply routines.
(4)	STRING	The mode of transfer of the output section.
(5)	CHAR	The mode of transfer of the input  section.
(6)	8	The number of characters allowed in the read ahead buffer
(7)	0	The number of filler character to follow a line feed sequence.
(8)	strip	The condition of the parity bit on input.
(9)	ON	Auto-matic character echo option
(10)	YES	Input  code required ?
(11)	YES	Output code required ?
(12)	TERM	If handler to behave as terminal or device.
(13)	SMART	If smart (VDU) erase option required.
(14)	ESC	If ESCAPE is allowed to terminate a string (if selected).
(15)	0	Size of input string buffer.

.T Building and usage
 
 
 
 
 
 
 
 
 
	SERIO	Created routines have :-

Three entry points
	Entry point +0		Output a string/character
	Entry point +2		Input  a string/character
	Entry point +4		Initialise package

Start address +6 contains the control flagword and the flags may be
accessed to observe the state of the control handler.
Where :-
	The following flags may be of use
BIT			Function
0  = 1		Handler requires re-initialising.
3  = 1		Disable the output section.
6  = 1	*	Transmitter section is busy
7  = 1	*	Input characters have been lost.
8  = 1	*	Escape character terminated the last string
12 = 1	*	This handler is a terminal handler
13 = 1		Smart scope is enabled.
14 = 1		Read no echo function enabled.
15 = 1		Do not strip input parity bit.

	Treat all flags marked with an * character as READ ONLY
	setting or clearing other flags may cause unpredictable results
	other than those indicated above.

At location Start address +8 (Only when string input selected) holds a
count of maximum number of characters to be read to terminate string if
an escape or line feed sequence is not detected. By default this value
is set to input string maximum size.

.F
	How to use the SERIO macro.

	.MCALL SERIO

	SERIO p1,p2,p3,<p4>,p5,p6,p7,p8

Where :-

p1	Is the channel identifier		ie. 01 or AA
p2	Is the base CSR    address		ie. 176500
p3	Is the base Vector address		ie.    300
p4	Is a multiple parameter field where
	some or all of the following options
	may be selected seperated by commas.
	NOECHO		disable auto echo option
	NOESCAPE	disable escape sequence option
	NOSCOPE		disable smart scope function
	NOIN		remove input  code generation
	NOOUT		remove output code generation
	NOPAR		disable parity stripping option
	DEVICE		remove terminal handling functions
	STRING		indicate input section recives data in string form
	OCHAR		indicate output section recives data in character form
p5	Is the read-ahead buffer size
p6	Is the input string buffer size
p7	Is the number of filler characters after line feed sequence
p8	Is the output buffer size (NOT incorporated)

USAGE:-
-----
	CALL SINP**		;(** - is the channel identifier)

	IF SUCCESS	-character mode.	R0 =  ascii character.
			-string mode.		R0 -> string address.

	IF ERROR	-no input.		(buffer empty)

	CALL SOUT**

			-character mode.	R0 =  ascii character.
	!!!		-string mode.		R0 -> string address. 

!!! 	'DON'T' alter the buffer until output finished (check bit 6).

.C MACROS FOR SYSTEM CONFIGURATION AND SERIAL IO DEFINITIONS.
.T SYSTEM CONFIGURATION
MACROS FOR SYSTEM CONFIGURATION AND SERIAL IO DEFINITIONS.
**********************************************************

AUTHOR	:-	J.S.CLIFTON
DATE	:-	21st SEPTEMBER 82.

.I CONFIG
CONFIG MACRO.
*************

.I SYSTEM CONFIGURATION
.I MACHINE
.I MACRO GROUP
	This macro sets the system configuration, namely the machine
that the program will run on, the operating system it will use,  the
Macro group that will be defined and standard constants if required.

	It will be called at the beginning of the program, or in the
'prime' module. The parameters may be specified in any order, and if
not specified then the default parameters will be assumed.

The call is of the form:-

.I MACHINE
.I OP.SYS
.I MACROS
.I LIST FLAG
.I STANDARD DEFS
.I TRACE FLAG
.I PDP70
.I LSI03
.I LSI23
.I IAS
.I RT11
.I ALONE
.I BASMAC
.I IOMACS
.I STGMACS
.I TBLMAC
.I SUPMAC
.I DTBMAC
.I RTMACS
.I NOMACS
.I LIST
.I NOLIST
.I DEFS
.I NODEFS
.I TRACE
.I NOTRACE
.MCALL	CONFIG
CONFIG	"machine","op.sys","macros","list flg","std defs","trace flg "

	  PDP70	    IAS	    BASMAC     LIST	  DEFS	     TRACE
	  LSI03	    RT11    IOMACS    NOLIST	 NODEFS	    NOTRACE
	  LSI23	    ALONE   STGMAC
			    TBLMAC
			    SUPMAC
			    DTBMAC
			    RTMACS
			    NOMACS
			    SERIO
			    DEVIO

Machine:-	This defines the machine that the program is
		to run on.

Operating Sys:-	This gives the operating system that the ma-
		chine will  be  using, note that ALONE means
		in the STAND  ALONE  mode  on an LSI machine 
		and the output routines will be built accord
		-ingly.

Default:-	If  Config  is  defined  on its own then the
		following default parameters will apply.

		PDP70,IAS,NOMACS,NOLIST,NODEFS,NOTRACE

NOTE:-		Parameters  may be put in any order and more
		than one set of Macros may be included.

.F
Macros:-	Different levels of Macros can be easily def
		-ined  for  different  jobs. Note that Macro
		calls  of  a higher level will automatically
		generate some lower level macro calls.

.I BASMAC
	BASMAC	- A limited  number  of  macros  for  simple
		macro programming.

.I IOMACS
	IOMACS	- This includes all the macros  designed for
		IO includeing those in BASMAC.

.I STGMAC
	STGMAC	- The basic set of string handling  macros -
		including those in BASMAC.

.I TBLMAC
	TBLMAC	- This  includes  all the 'NODE' and 'TABLE'
		macros plus STGMAC and BASMAC.

.I SUPMAC
	SUPMAC	- These are the SUPER-MAC macros and include
		STGMAC and BASMAC.

.I DTBMAC
	DTBMAC	- This  includes  all  the  'DECISION TABLE'
		macros plus SUPMAC, STGMAC and BASMAC.

.I RTMACS
	RTMACS	- This calls the RT11 macros for test build
		purposes only, it does not automatically
		include any other macros.

.I SERIO
	SERIO	- Serial input/output macro.
 
.I DEVIO
	DEVIO	- Device serial input/output macro.
		(Similar to 'serio').
 
		NOTE -	A  few  very  special purpose macros 
			are not  defined  by this macro, see
			the table below.

	BASMAC	IOMACS	STGMAC	TBLMAC	SUPMAC	DTBMAC	RTMACS
	******	******	******	******	******	******	******

BASMAC	  X
IOMACS	  X	  X
STGMAC	  X		  X
TBLMAC	  X		  X	  X
SUPMAC	  X		  X		  X
DTBMAC	  X		  X		  X	  X
ALLMAC	  X	  X	  X	  X	  X	  X
RTMACS							  X

 
.T STANDARD DEFINITIONS.
.I STANDARD DEFINITIONS.
 
	Table of 'STANDARD DEFINITIONS' defined by 'CONFIG'.
	====================================================
 
		Operating System.
		=================
 
	RT11		=		1
.I RT11
	IAS		=		2
.I IAS
	ALONE		=		4
.I ALONE
 
	OPSYS		=		'Defines the Operating System.'
.I OPSYS
 
		'DEC' Machine.
		==============
 
	PDP70		=		70
.I PDP70
	LSI03		=		0
.I LSI03
	LSI23		=		23
.I LSI23
 
	MACHINE		=		'One of the above defines machine'
.I MACHINE
 
.I Standard Definitions.
		Standard Definitions.
		=====================
 
	NULL		=		0
.I NULL
	STX		=		2	Start of text.
.I STX
	ETX		=		3	End of text.
.I ETX
	EOT		=		4	End of transfer.
.I EOT
	CNTC		=		'C-100	Control characters.
.I CNTC
	CNTD		=		'D-100
.I CNTD
	CNTZ		=		'Z-100
.I CNTZ
	TAB		=		11	Tabulation character.
.I TAB
	HT		=		TAB
.I HT
	LF		=		12	Value for a Line Feed.
.I FF
	FF		=		14	Value for a Form Feed.
.I CR
	CR		=		15	Value for a Carriage Return.
.I ESC
	ESC		=		33	Value for an 'Escape' character.
.I SPACE
	SPACE		=		40	Value for a 'Space' character.
.I ERASE
	ERASE		=		177	Value for an 'Erase' character.
.I PARITY
	PARITY		=		200	Parity bit for byte operations.
 
	SET		=		1	Flag setting definitions.
.I SET
	CLEAR		=		NULL
.I CLEAR
	ON		=		SET
.I ON
	OFF		=		CLEAR
.I OFF
 

.I MACRO LIBRARY TABLE
.T MACRO LIBRARY
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I ADDCHR  
 ADDCHR  	.	.	.   X	.	.	.	.	.
.I ADDSTR  
 ADDSTR  	.	.	.   X	.	.	.	.	.
.I AND     
 AND     	.	.	.	.	.   X	.	.	.
.I ANDB    
 ANDB    	.	.	.	.	.   X	.	.	.
.I A.      
 A.      	.	.	.	.	.	.   X	.	.
 
.I BEGIN   
 BEGIN   	.	.	.	.	.   X	.	.	.
.I BITDEF  
 BITDEF  	.   X	.	.	.	.	.	.	.
 		BIT DEFINITIONS.
.I BRJ     
 BRJ     	.	.	.	.	.   X	.	.	.
 
.I CALLG   
 CALLG   	.	.	.	.	.   X	.	.	.
.I CASE    
 CASE    	.	.	.	.	.   X	.	.	.
.I CASEB   
 CASEB   	.	.	.	.	.   X	.	.	.
.I CLRSTR  
 CLRSTR  	.	.	.   X	.	.	.	.	.
.I CMPSTR  
 CMPSTR  	.	.	.   X	.	.	.	.	.
.I CONFIG     
     CONFIG	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		This macro. (.MCALL "mac defs")
.I C.      
 C.      	.	.	.	.	.	.   X	.	.
 
.I DEBUG     
     DEBUG   	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special macros for debugging. (NOTE 1)
.I DELCHR  
 DELCHR  	.	.	.   X	.	.	.	.	.
.I DETAB   
 DETAB   	.	.	.	.	.	.   X	.	.
.I DETEND  
 DETEND  	.	.	.	.	.	.   X	.	.
.I DEVIO
 DEVIO	 	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
.I DMPBIT     
     DMPBIT  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special macros for debugging. (NOTE 1)
.I DMPOFF     
     DMPOFF  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special macros for debugging. (NOTE 1)
.I DMPSYM     
     DMPSYM  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.	
 	Special macros for debugging. (NOTE 1)
.I DO      
 DO      	.	.	.	.	.   X	.	.	.
.I DOWNTO  
 DOWNTO  	.	.	.	.	.   X	.	.	.
.I DUMP     
     DUMP  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special macros for debugging. (NOTE 1)
 
.I ELSE    
 ELSE    	.	.	.	.	.   X	.	.	.
.I END     
 END     	.	.	.	.	.   X	.	.	.
.I ENTRYP  
 ENTRYP  	.	.	.	.	.   X	.	.	.
.I EXIT    
 EXIT    	.	.	.	.	.	.   X	.	.
.I EXITER  
 EXITER  	.   X	.	.	.	.	.	.	.
.I EXITFA  
 EXITFA  	.	.	.	.	.	.   X	.	.
.I EXITSU  
 EXITSU  	.   X	.	.	.	.	.	.	.
.I EXITTR  
 EXITTR  	.	.	.	.	.	.   X	.	.
 
.I FI      
 FI      	.	.	.	.	.   X	.	.	.
.I FILEFU     
     FILEFU  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.	
 		Special IAS file macros. (NOTE 2)
.I FLODEF  
 FLODEF  	.   X	.	.	.	.	.	.	.
 		Floating point accumulator definitions.
.I FNAMDE     
     FNAMDE  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special IAS file macros. (NOTE 2)
.I FOR     
 FOR     	.	.	.	.	.   X	.	.	.
.I FOR.AB  
 FOR.AB  	.	.	.	.	.   X	.	.	.
.F 
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I GENMAC     
     GENMAC  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Defines general macros. (NOTE 3)
.I GOTO    
 GOTO    	.	.	.	.	.   X	.	.	.
 
 
.I IF      
 IF      	.	.	.	.	.   X	.	.	.
.I IFB     
 IFB     	.	.	.	.	.   X	.	.	.
.I IFERRO  
 IFERRO  	.   X	.	.	.	.	.	.	.
.I IFFALS  
 IFFALS  	.	.	.	.	.	.   X	.	.
.I IFSUCC  
 IFSUCC  	.   X	.	.	.	.	.	.	.
.I IFTRUE  
 IFTRUE  	.	.	.	.	.	.   X	.	.
.I INITIA  
 INITIA  	.   X	.	.	.	.	.	.	.
.I INPUT   
 INPUT   	.	.   X	.	.	.	.	.	.
.I INPUTN  
 INPUTN  	.	.   X	.	.	.	.	.	.
.I INSCHR  
 INSCHR  	.	.	.   X	.	.	.	.	.
  
.I JUMPTO  
 JUMPTO  	.	.	.	.	.   X	.	.	.
 
.I LEAVE   
 LEAVE   	.	.	.	.	.   X	.	.	.
.I LET     
 LET     	.	.	.	.	.   X	.	.	.
.I LIST    
 LIST    	.   X	.	.	.	.	.	.	.
 
.I MACBAS    
     MACBAS	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Macro calls. (called by config)
.I MACDTB     
     MACDTB	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Macro calls. (called by config)
.I MACIO     
     MACIO	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.	
 		Macro calls. (called by config)
.I MACSTG     
     MACSTG	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Macro calls. (called by config)
.I MACSUP    
     MACSUP	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Macro calls. (called by config)
.I MACTBL     
     MACTBL	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Macro calls. (called by config)
.I MESSAG  
 MESSAG  	.	.	.   X	.	.	.	.	.
.I MFUNCT  
 MFUNCT  	.	.	.   X	.	.	.	.	.
.I MODCHR  
 MODCHR  	.	.	.   X	.	.	.	.	.
.I MOVSTR  
 MOVSTR  	.	.	.   X	.	.	.	.	.
.F 
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I MOVTEX  
 MOVTEX  	.	.	.   X	.	.	.	.	.
 
.I NCC     
 NCC     	.	.	.	.	.   X	.	.	.
.I NCS     
 NCS     	.	.	.	.	.   X	.	.	.
.I NEQ     
 NEQ     	.	.	.	.	.   X	.	.	.
.I NEWLIN  
 NEWLIN  	.	.   X	.	.	.	.	.	.
.I NGE     
 NGE     	.	.	.	.	.   X	.	.	.
.I NGT     
 NGT     	.	.	.	.	.   X	.	.	.
.I NHI     
 NHI     	.	.	.	.	.   X	.	.	.
.I NHIS    
 NHIS    	.	.	.	.	.   X	.	.	.
.I NLE     
 NLE     	.	.	.	.	.   X	.	.	.
.I NLO     
 NLO     	.	.	.	.	.   X	.	.	.
.I NLOS    
 NLOS    	.	.	.	.	.   X	.	.	.
.I NLT     
 NLT     	.	.	.	.	.   X	.	.	.
.I NMI     
 NMI     	.	.	.	.	.   X	.	.	.
.I NNE     
 NNE     	.	.	.	.	.   X	.	.	.
.I NODE    
 NODE    	.	.	.	.   X	.	.	.	.
.I NODEBL  
 NODEBL  	.	.	.	.   X	.	.	.	.
.I NOLIST  
 NOLIST  	.   X	.	.	.	.	.	.	.
.I NOTRAC  
 NOTRAC  	.	.	.	.	.   X	.	.	.
.I NPL     
 NPL     	.	.	.	.	.   X	.	.	.
.I NVC     
 NVC     	.	.	.	.	.   X	.	.	.
.I NVS     
 NVS     	.	.	.	.	.   X	.	.	.
 
.I ON.ERR  
 ON.ERR  	.	.	.	.	.   X	.	.	.
.I ON.NOE  
 ON.NOE  	.	.	.	.	.   X	.	.	.
.I OR      
 OR      	.	.	.	.	.   X	.	.	.
.I ORB     
 ORB     	.	.	.	.	.   X	.	.	.
.I PAD     
 PAD     	.	.	.   X	.	.	.	.	.
.I POP     
 POP     	.	.	.	.	.   X	.	.	.
.I POPB    
 POPB    	.	.	.	.	.   X	.	.	.
.I POPCHR  
 POPCHR  	.	.	.   X	.	.	.	.	.
.I PRESET  
 PRESET  	.	.	.   X	.	.	.	.	.
.I PRINT   
 PRINT   	.	.   X	.	.	.	.	.	.
.I PRINTA  
 PRINTA  	.	.   X	.	.	.	.	.	.
.I PRINTB  
 PRINTB  	.	.   X	.	.	.	.	.	.
.I PRINTC  
 PRINTC  	.	.   X	.	.	.	.	.	.
.I PRINTD  
 PRINTD  	.	.   X	.	.	.	.	.	.
.I PRINTH  
 PRINTH  	.	.   X	.	.	.	.	.	.
.I PRINTO  
 PRINTO  	.	.   X	.	.	.	.	.	.
.I PRINTR  
 PRINTR  	.	.   X	.	.	.	.	.	.
.I PROBE   
 PROBE   	.	.	.	.	.   X	.	.	.
.I PROBEB  
 PROBEB  	.	.	.	.	.   X	.	.	.
.I PROCED  
 PROCED  	.	.	.	.	.   X	.	.	.
.I PTEXT   
 PTEXT   	.	.   X	.	.	.	.	.	.
.I PUSH    
 PUSH    	.	.	.	.	.   X	.	.	.
.I PUSHB   
 PUSHB   	.	.	.	.	.   X	.	.	.
.I PUSHCH  
 PUSHCH  	.	.	.   X	.	.	.	.	.
.I P.D     
 P.D     	.	.   X	.	.	.	.	.	.
 
.I QUEBUF     
     QUEBUF  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Defined by SERIO and DEVIO. (NOTE 4)
 
.F 
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I RCC     
 RCC     	.	.	.	.	.   X	.	.	.
.I RCS     
 RCS     	.	.	.	.	.   X	.	.	.
.I REPCHA  
 REPCHA  	.	.   X	.	.	.	.	.	.
.I REPEAT  
 REPEAT  	.	.	.	.	.   X	.	.	.
.I REPORT  
 REPORT  	.	.	.   X	.	.	.	.	.
.I REQ     
 REQ     	.	.	.	.	.   X	.	.	.
.I RESERV  
 RESERV  	.	.	.   X	.	.	.	.	.
.I RGE     
 RGE     	.	.	.	.	.   X	.	.	.
.I RGT     
 RGT     	.	.	.	.	.   X	.	.	.
.I RHI     
 RHI     	.	.	.	.	.   X	.	.	.
.I RHIS    
 RHIS    	.	.	.	.	.   X	.	.	.
.I RLE     
 RLE     	.	.	.	.	.   X	.	.	.
.I RLO     
 RLO     	.	.	.	.	.   X	.	.	.
.I RLOS    
 RLOS    	.	.	.	.	.   X	.	.	.
.I RLT     
 RLT     	.	.	.	.	.   X	.	.	.
.I RMI     
 RMI     	.	.	.	.	.   X	.	.	.
.I RNE     
 RNE     	.	.	.	.	.   X	.	.	.
.I ROLSTR  
 ROLSTR  	.	.	.   X	.	.	.	.	.
.I RORSTR  
 RORSTR  	.	.	.   X	.	.	.	.	.
.I RPL     
 RPL     	.	.	.	.	.   X	.	.	.
.I RVC     
 RVC     	.	.	.	.	.   X	.	.	.
.I RVS     
 RVS     	.	.	.	.	.   X	.	.	.
 
.I SAVE    
 SAVE    	.   X	.	.	.	.	.	.	.
.I SERIO   
 SERIO    	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		.MCALL QUEBUF
.I SETERR  
 SETERR  	.   X	.	.	.	.	.	.	.
.I SETFAL  
 SETFAL  	.	.	.	.	.	.   X	.	.
.I SETREG  
 SETREG  	.   X	.	.	.	.	.	.	.
.I SETSUC  
 SETSUC  	.   X	.	.	.	.	.	.	.
.I SETTRU  
 SETTRU  	.	.	.	.	.	.   X	.	.
.I SHLSTR  
 SHLSTR  	.	.	.   X	.	.	.	.	.
.I SHRSTR  
 SHRSTR  	.	.	.   X	.	.	.	.	.
.I SMCALL     
     SMCALL  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Defines SUPMAC maros. (NOTE 3)
.I SOJ     
 SOJ     	.	.	.	.	.   X	.	.	.
.I SPACES  
 SPACES  	.	.   X	.	.	.	.	.	.
.I SPPAD   
 SPPAD   	.	.	.   X	.	.	.	.	.
.I STRING  
 STRING  	.	.	.   X	.	.	.	.	.
.I SUBSTR  
 SUBSTR  	.	.	.   X	.	.	.	.	.
.I SUPMAC     
     SUPMAC  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		SUPMAC definitions. (NOTE 3)
.I SWABST  
 SWABST  	.	.	.   X	.	.	.	.	.
 
.F 
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I TABDEF     
     TABDEF  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Defines DTBMAC macros. (NOTE 3)
.I TABLE   
 TABLE   	.	.	.	.   X	.	.	.	.
.I TABLEB  
 TABLEB  	.	.	.	.   X	.	.	.	.
.I TABMAC      
      TABMAC  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		DTBMAC definitions. (NOTE 3)
.I TCLOSE  
 TCLOSE  	.	.	.	.   X	.	.	.	.
.I TCREAT  
 TCREAT  	.	.	.	.   X	.	.	.	.
.I TERMIN  
 TERMIN  	.   X	.	.	.	.	.	.	.
.I THEN    
 THEN    	.	.	.	.	.   X	.	.	.
.I THRU    
 THRU    	.	.	.	.	.   X	.	.	.
.I TINSER  
 TINSER  	.	.	.	.   X	.	.	.	.
.I TKILL   
 TKILL   	.	.	.	.   X	.	.	.	.
.I TLOOKU  
 TLOOKU  	.	.	.	.   X	.	.	.	.
.I TO      
 TO      	.	.	.	.	.   X	.	.	.
.I TPROTE  
 TPROTE  	.	.	.	.   X	.	.	.	.
.I TRACE   
 TRACE   	.	.	.	.	.   X	.	.	.
.I TREAD   
 TREAD   	.	.	.	.   X	.	.	.	.
.I TREMOV  
 TREMOV  	.	.	.	.   X	.	.	.	.
.I TSTSTR  
 TSTSTR  	.	.	.   X	.	.	.	.	.
.I TUNPRO  
 TUNPRO  	.	.	.	.   X	.	.	.	.
.I TWRITE  
 TWRITE  	.	.	.	.   X	.	.	.	.
.I T..ALL  
 T..ALL  	.	.	.   X	.	.	.	.	.
 
.I UNSAVE  
 UNSAVE  	.   X	.	.	.	.	.	.	.
.I UNTIL   
 UNTIL   	.	.	.	.	.   X	.	.	.
.I UNTILB  
 UNTILB  	.	.	.	.	.   X	.	.	.
 
.I WHILE   
 WHILE   	.	.	.	.	.   X	.	.	.
.I WHILEB  
 WHILEB  	.	.	.	.	.   X	.	.	.
 
.I ZPAD    
 ZPAD    	.	.	.   X	.	.	.	.	.
 
.I $CALL   
 $CALL   	.	.	.	.	.   X	.	.	.
.I $EOFFS     
     $EOFFS  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special auto label generation. (NOTE 5)
.I $LAB     
     $LAB    	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special auto label generation. (NOTE 5)
.I $MOFFS     
     $MOFFS  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special auto label generation. (NOTE 5)
.I $RETUR  
 $RETUR  	.	.	.	.	.   X	.	.	.
.I $SET$K  
 $SET$K  	.	.	.	.	.   X	.	.	.
.I $WOFFS     
     $WOFFS  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special auto label generation. (NOTE 5)
.I $$END   
 $$END   	.	.	.	.	.   X	.	.	.
.I $$EOFF     
     $$EOFF  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special auto label generation. (NOTE 5)
.I $$LAB     
     $$LAB   	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special auto label generation. (NOTE 5)
.I $$MOFF     
     $$MOFF  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special auto label generation. (NOTE 5)
.I $$WOFF     
     $$WOFF  	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.  ---	.
 		Special auto label generation. (NOTE 5)
 
.F 
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I .ARITH  
 .ARITH  	.	.	.	.	.   X	.	.	.
.I .CDFN   
 .CDFN   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CHAIN  
 .CHAIN  	.	.	.	.	.	.	.   X	.
.I .CHCOP  
 .CHCOP  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CLOSE  
 .CLOSE  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CMKT   
 .CMKT   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CNTXS  
 .CNTXS  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CRAW   
 .CRAW   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CRRG   
 .CRRG   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CSIGE  
 .CSIGE  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CSISP  
 .CSISP  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CSTAT  
 .CSTAT  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .CTIMI  
 .CTIMI  	.	.	.	.	.	.	.   X	.
.I .DATE   
 .DATE   	.	.	.	.	.	.	.   X	.
.I .DELET  
 .DELET  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .DEVIC  
 .DEVIC  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .DRAST  
 .DRAST  	.	.	.	.	.	.	.   X	.
.I .DRBEG  
 .DRBEG  	.	.	.	.	.	.	.   X	.
.I .DRBOT  
 .DRBOT  	.	.	.	.	.	.	.   X	.
.I .DRDEF  
 .DRDEF  	.	.	.	.	.	.	.   X	.
 		.MCALL	.DRAST,.DRBEG,.DRBOT,.DREND,
 			.DRFIN,.DRSET,.DRVTB,.FORK,
 			.QELDF,.TIMIO,.CTIMI
.I .DREND  
 .DREND  	.	.	.	.	.	.	.   X	.
.I .DRFIN  
 .DRFIN  	.	.	.	.	.	.	.   X	.
.I .DRSET  
 .DRSET  	.	.	.	.	.	.	.   X	.
.I .DRVTB  
 .DRVTB  	.	.	.	.	.	.	.   X	.
.I .DSTAT  
 .DSTAT  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .ELAW   
 .ELAW   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .ELRG   
 .ELRG   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .EMIT   
 .EMIT   	.   X	.	.	.	.	.	.	.
.I .EMITL  
 .EMITL  	.   X	.	.	.	.	.	.	.
.I .EMITR  
 .EMITR  	.   X	.	.	.	.	.	.	.
.I .ENTER  
 .ENTER  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .EXIT   
 .EXIT   	.	.	.	.	.	.	.   X	.
.F 
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I .FETCH  
 .FETCH  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .FORK   
 .FORK   	.	.	.	.	.	.	.   X	.
 
.I .GENBR  
 .GENBR  	.	.	.	.	.   X	.	.	.
.I .GMCX   
 .GMCX   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .GOTO   
 .GOTO   	.	.	.	.	.   X	.	.	.
.I .GTIM   
 .GTIM   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .GTJB   
 .GTJB   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .GTLIN  
 .GTLIN  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .GVAL   
 .GVAL   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .HERR   
 .HERR   	.	.	.	.	.	.	.   X	.
.I .HRESE  
 .HRESE  	.	.	.	.	.	.	.   X	.
.I .IFOPR  
 .IFOPR  	.	.	.	.	.   X	.	.	.
.I .INTEN  
 .INTEN  	.	.	.	.	.	.	.   X	.
.I .IS     
 .IS     	.	.	.	.	.   X	.	.	.
.I .LEAVE  
 .LEAVE  	.	.	.	.	.   X	.	.	.
.I .LOCK   
 .LOCK   	.	.	.	.	.	.	.   X	.
.I .LOOKU  
 .LOOKU  	.	.	.	.	.	.	.   X	.
.I .MACS   
 .MACS   	.	.	.	.	.	.	.   X	.
 		.MCALL	...CM0, TO ,...CM6
.I .MAP    
 .MAP    	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MFPS   
 .MFPS   	.	.	.	.	.	.	.   X	.
.I .MRKT   
 .MRKT   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTATC  
 .MTATC  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTDTC  
 .MTDTC  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTGET  
 .MTGET  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTIN   
 .MTIN   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTOUT  
 .MTOUT  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTPRN  
 .MTPRN  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTPS   
 .MTPS   	.	.	.	.	.	.	.   X	.
.I .MTRCT  
 .MTRCT  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTSET  
 .MTSET  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MTSTA  
 .MTSTA  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .MWAIT  
 .MWAIT  	.	.	.	.	.	.	.   X	.
.I .OPADD  
 .OPADD  	.	.	.	.	.   X	.	.	.
.I .OPSUB  
 .OPSUB  	.	.	.	.	.   X	.	.	.
.I .OR     
 .OR     	.	.	.	.	.   X	.	.	.
.F 
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I .PRINT  
 .PRINT  	.	.	.	.	.	.	.   X	.
.I .PROTE  
 .PROTE  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .PURGE  
 .PURGE  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .QELDF  
 .QELDF  	.	.	.	.	.	.	.   X	.
.I .QSET   
 .QSET   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .RCTRL  
 .RCTRL  	.	.	.	.	.	.	.   X	.
.I .RCVD   
 .RCVD   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .RCVDC  
 .RCVDC  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .RCVDW  
 .RCVDW  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .RDBBK  
 .RDBBK  	.	.	.	.	.	.	.   X	.
.I .RDBDF  
 .RDBDF  	.	.	.	.	.	.	.   X	.
.I .READ   
 .READ   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .READC  
 .READC  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .READW  
 .READW  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .REGDE  
 .REGDE  	.	.	.	.	.	.	.   X	.
.I .RELEA  
 .RELEA  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .RENAM  
 .RENAM  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .REOPE  
 .REOPE  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .RSUM   
 .RSUM   	.	.	.	.	.	.	.   X	.
 
.I .SAVES  
 .SAVES  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SCCA   
 .SCCA   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SDAT   
 .SDAT   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SDATC  
 .SDATC  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SDATW  
 .SDATW  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SDTTM  
 .SDTTM  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SERR   
 .SERR   	.	.	.	.	.	.	.   X	.
.I .SETTO  
 .SETTO  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SFPA   
 .SFPA   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SIMPL  
 .SIMPL  	.	.	.	.	.   X	.	.	.
.I .SPCPS  
 .SPCPS  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .SPFUN  
 .SPFUN  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.F 
 MACRO LIBRARY	 BASMAC	 IOMACS	 STGMAC	 TBLMAC	 SUPMAC	 DTBMAC	   RT11
 *************	 ******	 ******	 ******	 ******	 ******  ******	   ****
 
.I .SPND   
 .SPND   	.	.	.	.	.	.	.   X	.
.I .SRESE  
 .SRESE  	.	.	.	.	.	.	.   X	.
.I .SYNCH  
 .SYNCH  	.	.	.	.	.	.	.   X	.
.I .TIMIO  
 .TIMIO  	.	.	.	.	.	.	.   X	.
.I .TLOCK  
 .TLOCK  	.	.	.	.	.	.	.   X	.
.I .TRPSE  
 .TRPSE  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .TTINR  
 .TTINR  	.	.	.	.	.	.	.   X	.
.I .TTOUT  
 .TTOUT  	.	.	.	.	.	.	.   X	.
.I .TTYIN  
 .TTYIN  	.	.	.	.	.	.	.   X	.
.I .TTYOU  
 .TTYOU  	.	.	.	.	.	.	.   X	.
.I .TWAIT  
 .TWAIT  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .UNLOC  
 .UNLOC  	.	.	.	.	.	.	.   X	.
.I .UNMAP  
 .UNMAP  	.	.	.	.	.	.	.   X	.
.I .UNPRO  
 .UNPRO  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .WAIT   
 .WAIT   	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .WDBBK  
 .WDBBK  	.	.	.	.	.	.	.   X	.
.I .WDBDF  
 .WDBDF  	.	.	.	.	.	.	.   X	.
.I .WRITC  
 .WRITC  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I .WRITE  
 .WRITE  	.	.	.	.	.	.	.   X	.
.I .WRITW  
 .WRITW  	.	.	.	.	.	.	.   X	.
 		.MCALL	,MACS	(...CM0, TO ,...CM6)
.I ..ACT   
 ..ACT   	.	.	.	.	.	.   X	.	.
.I ..ARLE  
 ..ARLE  	.	.	.	.	.	.   X	.	.
.I ..BRAN  
 ..BRAN  	.	.	.	.	.   X	.	.	.
.I ..COND  
 ..COND  	.	.	.	.	.	.   X	.	.
.I ..CRLE  
 ..CRLE  	.	.	.	.	.	.   X	.	.
.I ..ERLE  
 ..ERLE  	.	.	.	.	.	.   X	.	.
.I ..GET   
 ..GET   	.	.	.	.	.   X	.	.	.
.I ..LB10  
 ..LB10  	.	.	.   X	.	.	.	.	.
.I ..LB21  
 ..LB21  	.	.	.   X	.	.	.	.	.
.I ..LB22  
 ..LB22  	.	.	.   X	.	.	.	.	.
.I ..LB23  
 ..LB23  	.	.	.   X	.	.	.	.	.
.I ..POP   
 ..POP   	.	.	.	.	.   X	.	.	.
.I ..PUSH  
 ..PUSH  	.	.	.	.	.   X	.	.	.
.I ..TAG   
 ..TAG   	.	.	.	.	.   X	.	.	.
.I ..TEST  
 ..TEST  	.	.	.	.	.	.   X	.	.
.I ..TPRM  
 ..TPRM  	.   X	.	.	.	.	.	.	.
.I ..V1..  
 ..V1..  	.	.	.	.	.	.	.   X	.
.I ..V2..  
 ..V2..  	.	.	.	.	.	.	.   X	.
.I ...CM0  
 ...CM0  	.	.	.	.	.	.	.   X	.
.I ...CM1  
 ...CM1  	.	.	.	.	.	.	.   X	.
.I ...CM2  
 ...CM2  	.	.	.	.	.	.	.   X	.
.I ...CM3  
 ...CM3  	.	.	.	.	.	.	.   X	.
.I ...CM4  
 ...CM4  	.	.	.	.	.	.	.   X	.
.I ...CM5  
 ...CM5  	.	.	.	.	.	.	.   X	.
.I ...CM6  
 ...CM6  	.	.	.	.	.	.	.   X	.
.F
 NOTES:-
 =====
 
 	1. These are special MACROS for debugging purposes, and
 	   must be defined independently when used.
 
 	2. These are special IAS file handling macros which must
 	   be defined independently.
 
 	3. These macros are 'macro defining macros' and are
 	   uneccessary when using CONFIG. They are retained for
 	   previous compatability.
 
 	4. These are defined by other macros when required.
 
 	5. These are auto label generation macros which are only
 	   for use by experienced programmers. If in any doubt
 	   then DON'T USE, you have been warned. They are defined
 	   by existing macros when required.
 

.C SUPER-MAC REFERENCE GUIDE - VERSION 47.
.T SUPER-MAC HEADER.




	LDM 106
	DOC #130-380-007-00
















			      SUPER-MAC
			      =========
			   REFERENCE GUIDE
			   ===============
			      VERSION 47
			      ==========




.T SUPER-MAC DISCLAIMER.



COPYRIGHT (C) 1975	(SUPER-MAC)


DIGITAL EQUIPMENT CORPORATION


The information in this document is subject to change  without  notice
and  should  not  be  construed  as  a commitment by Digital Equipment
Corporation.  Digital Equipment Corporation assumes no  responsibility
for any errors that may appear in this manual.

The software described in this document is furnished to the  purchaser
under  a license for use on a single computer system and can be copied
(with inclusion of DIGITAL's copyright notice) only for  use  in  such
system, except as may otherwise be provided in writing by DIGITAL.

Digital Equipment Corporation assumes no responsibility for the use or
reliability  of  its  software  on  equipment  that is not supplied by
DIGITAL.

NOTE:-

Since the appearance of SUPER-MAC in the public domain, numerous enha-
ncements have been made which improve both the applicability and port-
ability  of  SUPER-MAC  source  code.  During this enhancement process 
every  effort  has been made to maintain compatability for source code
generated under earlier version of SUPER-MAC.

				       Arthur P. Gaughan, JR. 5-dec-78

This manual documents Super-Mac version 47.

In addition the following changes have been made.

	'SOB' to 'SOJ'		(to avoid MACRO-11 conflict)
	TRACE FACILITY in 'PROCEDURE' and 'ENTRYPOINT'.
	'SAVE' macro call in 'PROCEDURE'.
	Listing error correction.
	'LIST' and 'NOLIST' implementation.
						J.S.Clifton. 31-Dec-81


.T SUPER-MAC INTRODUCTION.
.I SUPER-MAC.
	Introduction
	============

SUPER-MAC is a  set  of  structured  programming  macros  that  allows
programs  to  be  written in a high level, easily understood language.
It is assumed that the user is familiar with  macros  in  general  and
with MACRO-11 in particular.

The language statements and clauses within this guide are divided into
three  categories:   Assignment  statement, Conditional statements and
Miscellaneous statement.  The Conditional category  of  statements  is
further  divided  into  Conditional Execution type statements and Loop
Control statements.

There are three branch type statements:  LEAVE, GOTO and JUMPTO.   The
LEAVE  and GOTO statements are cased special branches used with the IF
statement.  They are, therefore, included in the conditional category.
The JUMPTO statement is included in the Miscellaneous category.

As a general  rule,  most  SUPER-MAC  statements  can  be  single-line
statements  or multiple-line (nested) block statements.  A single-line
statement must be completed on one source line;  no continuation lines
are  allowed.  Single-line statements should be as short and simple as
possible.  Comments may also be included on a source  line.   All  the
general  rules,  conditions,  etc.,  that  govern MACRO-11 also govern
SUPER-MAC.  Spacing on a source lne is very important.   The  elements
should  be separated by a comma or a space.  Tabs should never be used
for  spacing.   For  example:   The  expression  A+B  is   interpreted
different than A + B.

All the conditional statements can be written as multiple-line  nested
blocks.   Each level of nesting within a block must be terminated with
an associated END statement.  Each level of nesting should be indented
two spaces.

User written macros or assembly language instructions may be  included
in  a  program if desired.  All  programs  must  begin  with the macro 
call  supmac.  This  call  initializes  SUPER-MAC and TABMAC.MAC. This 
guide contains examples of all statements. In nested  block  examples,
the END statements associated  with  a particular statement are noted.   
When an example includes assembly language instructions, that instance 
is pointed out.  A list of possible error codes is included as well as 
an  assembled  listing  of  some  typical examples.   All legal PDP-11 
source and destination operands are legal in SUPER-MAC.


.T ASSIGNMENT STATEMENT.
.I ASSIGNMENT STATEMENT.
	Assignment Statement
	====================

LET is the only assignment statement contained in SUPER-MAC.

.I LET statement.
	LET STATEMENT
	=============

The  LET  statement  is  an  arithmetic  assignment   or   replacement
statement.

The form of the statement is:

          LET [Destination] <assignment operator> expression
              [Operand   ]

expression is in the form:

          (unary operator) operand  (binary  operator  operand  binary
operator...)

Where:

          (     ) means optional

.I LET statement warning.
                                 NOTE
				 ====

Care must be taken in the  construction  of  a  LET  statement.   Some
constructions   (where  the  destination  operand  type  modifies  the
register used on the formation of the destination address)  appear  to
be  what  the programmer desired, but the assembler will generate code
that is different from the intent.

Example:-
=========

     The statement

          LET (R5)+ := R1 + R2

     will generate the code   MOV R1,(R5)+
                              ADD R2,(R5)+

     not the desired          MOV R1,(R5)
                              ADD R2,(R5)+

In order to get the desired  result,  the  following  construction  is
necessary:

     LET (R5) := R1           ;MOV R1,(R5)
     LET (R5)+ := (R5)+ + R2  ;ADD R2,(R5)+

.F
SUPER-MAC recognizes all the special characters accepted  by  MACRO-11
as  well  as  some  additional assignment/replacement characters.  The
additional assignment or replacement characters are listed below:

.I :=
.I :W=
          := OR :W=           ;These are assignment or replacement
                              ;characters that imply WORD movement.

Example:-
=========

     LET R0 := .PSTPT

Moves the WORD represented by .PSTPT into R0.

.I :B=
.I :==
          :B= OR :==          ;These are assignment or replacement
                              ;characters that imply BYTE movement.

Example:-
=========

     LET R0 :B= @.PSTPT

In this case, the BYTE that is pointed to by PSTPT is moved to R0.

SUPER-MAC has some special operators that are used for bit set and bit
clear operations.  The operators are listed below:

.I LET - bit operators.
.I BIT OPERATORS.
	BIT CLEAR OPERATORS           INSTRUCTION GENERATED
	===================	      =====================

.I NAND
	NAND                          BIC

.I OFF.BY
	OFF.BY                        BIC

	Either can be used since they produce the same code.

	BIT SET OPERATORS             INSTRUCTION GENERATED

.I SET.BY
	SET.BY                        BIS

.I OR
	OR                            BIS

	Either one can be used since they produce the same code.

Examples:-
==========

     LET T.FLAG(R2) := T.FLAG(R2) SET.BY #TP.ENB

     LET T.FLAG(R2) := T.FLAG(R2) OFF.BY #TP.ENB

     LET $SYSCL := $SYSCL OFF.BY #CL.NER

     LET (R2) := (R2) NAND R1
.F

SUPER-MAC accepts all the symbols recognized by MACRO-11.  The special
symbols utilized by SUPER-MAC are listed below:

     SYMBOL                   DESCRIPTION
     ======		      ===========

.I CARRY
     CARRY                    C BIT (carry bit)

.I PUSH
     PUSH                     Keyword destination for pushing on
                              to stack

.I POP
     POP                      Keyword for popping off of stack.

.I TOP
     TOP                      Keyword for top of stack.


The legal binary operators for use in SUPER-MAC are described in Table
1-1.   Table  1-1  shows  the  relationships  that  can be established
between expression terms through the use of binary operators and  also
shows the machine instruction generated when the macro is assembled.

.I LEGAL BINARY OPERATORS.
                              Table 1-1
			      *********
                        Legal Binary Operators
			**********************

  BINARY     EXPLANATION         EXAMPLE              MACHINE
  ======     ===========	 =======	      =======
OPERATION                                           INSTRUCTION
=========					    ===========

.I +
     +       Addition            A + B                  ADD
.I -
     -       Subtraction         A - B                  SUB
.I *
     *       Multiplication      R0 * #2                MUL
.I /
     /       Division            R0 / #2                DIV
.I L.SHIFT
L.SHIFT      Arithmetic
             Left Shift          R0 L.SHIFT1*           ASL
.I R.SHIFT
R.SHIFT      Arithmetic
             Right Shift         R0 R.SHIFT 1*          ASR
.I L.ROTATE
L.ROTATE     Left Rotate         R0 L.ROTATE 1*         ROL
.I R.ROTATE
R.ROTATE     Right Rotate        R0 R.ROTATE 1*         ROR
.I SHIFT
SHIFT        Shift
             Arithmetically      R0 SHIFT #2            ASH
.I C.SHIFT
C.SHIFT      Arithmetic Shift
             Combined            R0 C.SHIFT #3          ASHC
.I XOR
XOR          Exclusive OR        A XOR R5               XOR
.I NAND
NAND         Not AND             (R2) NAND R1           BIC
.I OFF.BY
OFF.BY                           (R2) OFF.BY R1         BIC
.I SET.BY
SET.BY       Inclusive OR        (R2) SET.BY R1         BIS
.I OR inclusive.
OR                               (R2) OR R1             BIS

* = Number designates the number of times the instruction is repeated;
i.e., the number of shifts.

.T UNARY OPERATORS.
.I UNARY OPERATORS.
The legal unary operators are:-
===============================
.I NOT
.I NEG
.I COM
.I -

        -    Negation            NEG
        NOT  Complement          COM

If the assignment operator in a LET statement is not a legal SUPER-MAC
operator, an error message will be generated.
.I LET examples.

Examples:-
==========

     LET (R2) := (R2) - #1              ;This generates DEC (R2)

     LET (R2) := (R2) - #01             ;This generates SUB #01,(R2)

     LET (R2) := (R2) OR R1

     LET R2 := #0                       ;This generates CLR R2

     LET R2 := R1

     LET T.VAL(R2) := $VAL2

     LET R0 := R0 L.SHIFT 3

     LET R1 := R1 + #1                  ;This generates an INC R1

     LET R1 := R1 + #01                 ;This generates an ADD #01,R1

     LET R0 := R0 + CARRY               ;This generates on ADC R0


.T CONDITIONAL EXECUTION STATEMENTS.
.I CONDITIONAL statements.
	Conditional Statements
	**********************

This category of SUPER-MAC statements  is  subdivided  into  Condition
Execution statements and Loop Control statements.



	Condition Execution Statements
	******************************
.I IF statement.
.I IFB statement

		IF STATEMENT
		============
		IFB STATEMENT
		=============

An IF statement causes a conditional transfer or statement  execution.
The IFB statement forces a byte operation.

IF statements can be either a single-line statement or a multiple-line
(block) statement.  The single-line statement takes the form:

.I GOTO statement.
.I LEAVE statement.
.I THEN statement.
.I TEST statement form.
.I GOTO statement.
.I LEAVE statement.
.I THEN statement.
     IF <TEST>      [GOTO ]   SUPER-MAC statement
                    [LEAVE]
                    [THEN ]

The test portion of the IF statement takes the form:

.I CC
                    [CC]
.I CS
                    [CS]
.I EQ
                    [EQ]
.I GE
                    [GE]
.I GT
                    [GT]
.I HI
                    [HI]
.I HIS
Source              [HIS] Destination
.I LE
Operand             [LE] Operand
.I LO
                    [LO]
.I LOS
                    [LOS]
.I LT
                    [LT]
.I MI
                    [MI]
.I NE
                    [NE]
.I PL
                    [PL]
.I VC
                    [VC]
.I VS
                    [VS]

(Note:  these are the MACRO-11 branch instructions  without  the  "B".
GE not BGE.)

A single line  statement  may  have  as  many  arguments  as  desired,
provided that all arguments can be completed on the single line.
IF $NVAL HI #2 GOTO REJ1
.F
.I IF AND statement.
.I IF ANDB statement.
.I AND statement.
.I ANDB statement.

		IF AND STATEMENT
		================
		IF ANDB STATEMENT
		=================

The AND statement is a logical conjunction.  The  expression  is  true
if,  and  only if, both A and B are true.  The ANDB statement forces a
byte operation.  AND can only be used with the IF.  The form is:

     A AND B

Example:-
=========

     IF (R2) EQ (R1) AND 2(R2) EQ 2(R1) THEN RETURN/$RETURN NOERROR

.I IF OR statement.
.I IF ORB statement.
.I OR statement.
.I ORB statement.
		IF OR STATEMENT
		===============
		IF ORB STATEMENT
		================

The OR statement is a logical disjunction.  The expression is true if,
and only if, either A or B, or both is true.  The ORB statement forces
a byte operation.  The OR can only be used with an IF statement.   The
form of the OR is:

     A OR B

Example:-
=========

     IF A EQ #0 OR A NE C THEN LET A := D

The block IF statement requires an END and takes the form:

.I IF block statement.
.I IF ELSE END.
.I END statement.
     IF...........
       coding
          .
          .
          .
          .
          .
        coding
     END

Example:-
=========

     IF A EQ #0
          LET $VAL2 := T.VAL(R2)
     END

.F
.I ELSE statement.
		ELSE CLAUSE
		===========

The ELSE clause is only used with an IF  block.   Used  in  any  other
statement, an error message will be generated.  ELSE must stand on its
own line with no arguments.

Example:-
=========

     IF RESULT IS EQ
       LET $VAL2 := T.VAL(R2)
     ELSE
       LET $VAL1 := R2 + #T.VAL
     END

.I IF statement (nesting).
Multiple IF statements can be nested.  Each multiple-line IF statement
within the nest requires an END.

Example:-
=========

     IF .PNUMH EQ #0
       LET $NVAL := $NVAL + #1
       IF $NVAL LOS #2
         IF RESULT IS EQ
           LET $VAL2 := .PNUMB
         ELSE
           LET $VAL1 := .PNUMB
         END
       END
     END
Special cases of the IF statement perform bit tests.  One  case  tests
to  determine  if the bits are set and the other tests to determine if
the bits are CLEAR.

Examples:-
==========

     IF A SET.IN B THEN...
     IF A OFF.IN B THEN...

.F
Another special case IF statement is a test for zero.

Example:-
=========

     IF A GT #0 THEN...

A third special case is a test  of  current  condition  code  setting.
This is indicated by RESULT IS.
.I IF RESULT IS .. statement
.I SUCCESS
.I ERROR

	NOTE:-	that  SUCCESS  and  ERROR can follow an IS which tests
		the state of the C bit.

		IF RESULT IS SUCCESS THEN .......
		IF RESULT IS ERROR THEN ......

Example:-
=========

.I ON.ERROR
.I ON.NOERROR
     IF RESULT IS EQ THEN...

		ON.ERROR STATEMENT
		==================
		ON.NOERROR STATEMENT
		====================

Both of these statements are special case IF statements that check the
condition  of the C bit.  The ON.ERROR statement tests to determine if
the C bit is set and the ON.NOERROR statements tests to  determine  if
the  C  bit is cleared.  Both statements require an END statement if a
multiple line procedure is required to rectify the  problem  indicated
by the condition of the C bit.  Both statements result in an IF RESULT
IS type statement.

.F
Examples:-
==========

     ON.ERROR
       IF #CL.NER OFF.IN $SYSCL
         CALL/$CALL  $MGOUT
       END
       $POSYM
       CLC                    ;Macro instruction
     ELSE
       $POSYM
       CLC
     END

     ON.ERROR LEAVE SETBLK

     ON.ERROR
       $PUSH #STSPT
       CALL/$CALL  $FCSYM
       INC (SP)+              ;Macro instruction
       ON.ERROR
         LET 16(SP) := 16(SP) + #2
       END
     END

     ON.ERROR
       LET PUSH := T.VAL(R2)
       CALL/$CALL  $RPREG
       CALL/$CALL  @(SP)+
       CALL/$CALL  $SPREG
     END

     ON.NOERROR THEN LET T.FLAG(R2) := T.FLAG(R2)


	LEAVE STATEMENT
	===============
	GOTO STATEMENT
	==============

.I LEAVE statement.
.I GOTO statement.
These statements are similar in that  they  transfer  program  control
from one point to another point.  Their use and purpose are different.

The LEAVE statement is used when it is necessary to transfer out of  a
program  block  or loop due to some condition within the block or loop
that can be tested.  The test is usually made with an IF expression.

.F
.I BEGIN/END named block.
Example:-
=========

     BEGIN ALPHA
          .
          .
       IF RESULT IS NE LEAVE ALPHA
          .
          .
     END ALPHA

In this example, the result of a previous action is  tested.   If  the
result  does  not  equal  zero,  program control is transferred to the
expression that follows the END.
.I WHILE statement.

     WHILE A NE B
          .
          .
         coding
     IF C EQ #0 LEAVE LOOP
          .
          .
     coding
     END <WHILE LOOP>

In this example, if C is equal to zero,  the  LEAVE  will  generate  a
branch outside of the WHILE loop.

The GOTO statement also creates a branch instruction.  The pointer  of
the  branch instruction is the value of the symbolic name given by the
programmer.  The form is:

.I GOTO statement.
     GOTO name

Examples:-
==========

     GOTO SETCM

     IF A EQ B GOTO SETCM

Program control transfers to a routine labelled SETCM.


.I THEN statement.
	THEN CLAUSE
	===========
	
The THEN clause is used in conjunction  with  other  statements.   The
first  statement  performs  a  designated  action  and THEN performs a
second action.  The THEN clause takes the following form:

     THEN arguments

Example:-
=========

     IF (R2) EQ (R1) AND (R2) EQ 2(R1) THEN RETURN/$RETURN NOERROR
.T LOOP CONTROL STATEMENTS.

	Loop Control Statements
	***********************

		FOR STATEMENT
		=============
.I FOR
.I TO
.I DOWNTO
.I BY
.I END
The FOR statement is a means of controlling  loop  execution  used  to
change  the  value  of  an  operand by a designated amount until a set
limit is reached.  The FOR statement is used with the TO,  DOWNTO  and
BY statements.  The form of the FOR statement is:
.I LIMIT
.I INCREMENT

     FOR operand [TO    ] limit [BY increment (optional)]
                 [DOWNTO]
     END

The default condition of the increment is one.  The FOR statement must
contain  an  END statement unless the statement is a single-line entry
followed by a THEN statement.  The THEN statement must be followed  by
arguments:

Example 1:-
===========

     FOR A := B TO C BY D
          .
          .
        coding
     END  .

This example causes B to be moved to A, D is added to A and A compared
with C.  If the comparison fails, the loop process continues until the
comparison passes.  The FOR statement is a  WORD  operation  statement
only.

Example 2:-
===========

     FOR A := B DOWNTO C BY D
          .
          .
        coding
     END

This examples causes B to be moved to A, D is subtracted from A and  A
is  compared  with  C.  If the comparison fails, the process continues
until the comparison passes.

Example 3:-
===========

     FOR R0 := R1 TO R2 THEN LET R4 := R4 / #2

This example causes the contents  of  R1  to  be  moved  to  R0.   The
contents  of  R4  are divided by two and R0 is incremented.  R0 and R2
are compared.  If the comparison fails, the  process  continues  until
the comparison passes.

.F
Example 4:-
===========

     FOR R0 := R1 DOWNTO R2
     LET R4 := R4 * #2
     END

This causes the contents of R1 to be moved to R0.  R4 is multiplied by
two  and  R0  is decremented.  The contents of R0 and R2 are compared.
If the comparison fails, the process continues  until  the  comparison
passes.


		REPEAT STATEMENT
		================
		UNTIL STATEMENT
		===============
		UNTILB STATEMENT
		================

.I REPEAT statement.
.I UNTIL statement.
.I UNTILB statement.

The REPEAT statement  causes  a  procedure  to  be  repeated  until  a
specified  condition  is  met.   The  REPEAT  statement  executes  the
procedures, tests the specified condition and stops  the  repeat  loop
when   the  desired  condition  is  met.   REPEAT  statements  can  be
single-line statement or multiple line  statements.   The  single-line
REPEAT takes the form:

     REPEAT UNTIL condition

Example:-
=========

     REPEAT UNTIL (R0)+ EQ (R1)+

This example can best be illustrated by examination  of  the  assembly
code generated.  The assembler generated the following code:

     B1;;;;;;;
          CMP (R0)+,(R1)+
          BNE B1
     E1;;;;;;;

As can be seen the comparison is repeated until it  passes,  then  the
action stops.

There are two types of multiple-line  REPEAT  statements.   The  first
type  repeats  a  procedure  until  a specified condition is met.  The
second type is an infinite repeat (repeat loop) and is termiated by an
END statement.

.F
.I REPEAT statement.
.I UNTIL statement.
.I UNTILB statement.
Examples:-
==========

     REPEAT
          CALL/$CALL  C,<R0,R2>
     UNTIL R4 NE, R0

The next examples contains a LEAVE statement and was  coded  within  a
BEGIN block.

     BEGIN ALPHA
          .
          .
          .
     REPEAT
       CALL/$CALL  F <FOO,BAR>
       IF RESULT IS NE LEAVE ALPHA
          .
          .
     END <REPEAT LOOP>
          .
          .
     END ALPHA

The UNTIL statement can only be used within a REPEAT  statement.   The
UNTIL  statement  defines  the  condition(s) that stop the REPEAT from
looping.  The UNTILB forces a byte operation.  An error  message  will
be generated if UNTIL is used in a statement other than a REPEAT.

		THRU STATEMENT
		==============

.I THRU statement.
.I END statement.
The THRU statement is used  to  control  loops.   The  statement  must
contain an END statement.

The  THRU  statement  generates  an  SOB  (subtract  one  and  branch)
instruction.  The statement takes the form:

     THRU arguments
     END

The first argument must be a register or an expression  (LET)  with  a
register as the destination.  If the first argument is not a register,
an error message will be generated.  The register  contains  a  number
that represents the number of times the action must loop.

.F
Example 1:-
===========

     IF R2 HI # 6 THEN LET R2 := #6
     THRU R2
          MOVB (R0)+,(R1)+ ;Note macro instruction
     END

In this example, R2 contains an integer between 1 and  6.   Each  time
the  MOVB  instruction  is  executed,  the  SOB subtracts one from the
contents of R2.  When R2 becomes zero, the loop is left.

		WHILE STATEMENT
		===============
		WHILEB STATEMENT
		================

.I WHILE statement.
.I WHILEB statement.

The WHILE statement establishes a condition  that  permits  (controls)
action  from  other  statements.  As long as the condition exists, the
action(s) will be permitted.  The form of the statement is:

     WHILE condition
       coding
          .
          .
          .
       coding
     END

The WHILEB statement forces a byte operation.

Example:-
=========

     LET R5 := (R4)+                    ;Get start addr of table
     WHILE R5 LO (R4)
       CALL/$CALL  DTBL                       ;Go display entry
       LET R5 := R5 + #S.SYCT           ;Get next entry
     END

		$$END STATEMENT
		===============

.I $$END

The $$END statement supplies an END if those  statements  are  missing
within  nested  blocks.   The  $$END  prints a message on the assembly
listing for the missing END(S).  The user should check the source code
to determine if the assembled code will execute as intended.  $$END is
intended for  the  detection  of  user  "error"  (i.e.,  missing  END)
conditions.



.T MISCELLANEOUS SUPER-MAC STATEMENTS.
	Miscellaneous Statements
	************************

	BEGIN/END STATEMENT
	===================

.I BEGIN statement.
.I END statement.

The BEGIN/END statement provides  a  mechanism  for  escaping  from  a
routine  in  case some problem develops.  The block of code associated
with the BEGIN statement is terminated with the  END  statement.   The
statement takes the form:

     BEGIN name                         ;Begins a contiguous block
                                        ;of code known as 'name'
     IF RESULT ... LEAVE name           ;A conditional method of
                                        ;escape
                                        ;from 'name'. The Branch
                                        ;pointer points to END name.
     ON.ERROR LEAVE name                ;Another method of escape
     END name                           ;End of block.


Following are two examples of the BEGIN/END statement:

Example 1:-
===========

     BEGIN SETBLK
       $PHSYM                           ;PUSH symbols (macro call)
       CALL/$CALL  $SCHLT                     ;Search table.
       ON.ERROR
         LET...
         CALL/$CALL ...
         ON.ERROR LEAVE SETBLK          ;Escape if C bit set.
         IF...
          LET...
         ELSE
          LET...
         END
         LET...
         LET...
         LET...
       END                              ;END of ON.ERROR
       LET
       $POSYM                           ;POP of symbols (macro call)
       RETURN/$RETURN
     END SETBLK                         ;END of SETBLK

.F
Example 2:-
===========

     BEGIN ALPHA
            IF...GT...B THEN CALL/$CALL ...   ;One line IF statement
            REPEAT UNTIL...             ;One line REPEAT
            REPEAT                      ;Multiple line REPEAT

              CALL/$CALL ...
            UNTIL...EQ...               ;Terminate condition
            CALL/$CALL 
            REPEAT                      ;REPEAT loop

            CALL/$CALL ...
            IF RESULT...LEAVE ALPHA     ;One line IF and a LEAVE

            WHILE...IS...THEN...
            END <REPEAT LOOP>           ;End of the REPEAT loop
     END ALPHA                          ;End of the Alpha block



.F
	CALL/$CALL  STATEMENT  (USE CALL FOR -11D/IAS AND $CALL FOR -11M)
	=====================

.I CALL statement.
.I CALL$ statement.

The ($) CALL statement is used to transfer control (via a JSR PC) from
one  program  unit to another.  It may also be used to pass parameters
in the registers (R0-R5) between those program units.  Upon completion
of  the  call,  execution  is  returned to the statement following the
CALL/$CALL .  The form of the CALL/$CALL statement is:

     CALL/$CALL  NAME, <ARGS>

NAME is the symbolic name of the program unit being  called  and  ARGS
are parameters.  ARGS is optional and if used must be in brackets.  If
ARGS is used without brackets, an error  message  will  be  generated.
The  ARGS  may  have  six  parameters.  The position of the parameters
within the ARGS brackets indicate the register that will contain  that
particular  parameter.   Register designations are from left to right,
with R0 as the first.  If more  than  6  parameters  are  included,  a
warning message will be generated.

Examples:-
==========

     CALL/$CALL  $SCHLT <#$DYNTB,R1>

     CALL/$CALL  $FLSYM

     CALL/$CALL  DTBL

     CALL/$CALL  F <FOO,BAR>

In the last example, FOO is moved to R0, BAR is moved to R1 and a  JSR
PC  is  generated to F.  In the next example, #X is moved to R0, #Y is
moved to R1, Z is moved to R2 and the JSR PC is to E.

     CALL/$CALL  E <#X,#Y,Z>

When macros are nested, ARGS must have multiple brackets, for example:

     IF A EQ B THEN CALL/$CALL  C <<<R0,#D>>>

The example shown uses one bracket pair for each statement,  one  pair
for the IF, one for the THEN and one for the CALL/$CALL.

.F
	CALLG STATEMENT
	===============

.I CALLG statement.
.I FORTRAN PARAMETER BLOCK

The  CALLG statement (call with general arguments) is used to transfer
control  from  one  program  unit to another and to pass parameters to 
program  unit  via a FORTRAN COMPATIBLE PARAMETER BLOCK. The parameter
block  is built at runtime and follows the FORTRAN convention for null
arguments  (C.F.  The FORTRAN IV and the FORTRAN IV+ USER'S GUIDE) and
arguments  count.  General purpose register R5 is first saved, used to
point  to the head of the parameter block on the call out of line, and
then restored on return. No other registers are used/preserved - it is
the  user's responsibility to save/restore registers as necessary. The
.I FORTRAN LIBRARY CALLS.
CALLG statement may be used to call either FORTRAN LIBRARY SUBROUTINES
which  expect  an  R5 call or any MACRO-11 subroutine which is FORTRAN
CALLABLE.

N.B!!!!!

In either of these cases care must be used in formatting the parameter
list  in the CALLG statement to ensure that "CALL BY NAME" is employed
rather  than  "CALL  BY  VALUE".  In  most  cases this will mean using
immediate mode addressing (mode 2 - register 7). However, the require-
ment simply stated is as follows:-

The  parameter  list must be a list of "ADDRESSES" of arguments rather 
than the arguments themselves!

The  CALLG  statement  may also be used to call NON-FORTRAN compatible
MACRO-11  subroutines  in  which  case  the resolution of the "CALL BY
NAME"  - "CALL BY VALUE" conflict is at the discretion of the program-
mer. In all calls the nesting rules described for $CALL apply.

Examples:-
==========
	CALLG	SPLAT		;No arguments  -  use only for FORTRAN 
				;type  compatability,  else use $CALL/
				;CALL.

	CALLG	SPLAT	<#ARG1,,#ARG3>

	CALLG	SPLAT	<#ARG1,,R0,,STIPL>

.F
	RETURN/$RETURN 	(USE RETURN FOR -11D/IAS AND $RETURN FOR -11M)
	==============
.I RETURN statement.
.I $RETURN statement.

The RETURN statement is used to return control from a subprogram  unit
to  the  calling  program  unit.   The  statement allows a return with
status, with a register or both.  The statement takes the form:

     RETURN/$RETURN STA,REG

Examples: -                    Machine Instructions
==========

RETURN/$RETURN WITH R5                RTS R5

.I ERROR
RETURN/$RETURN ERROR R2               SEC
	                              RTS R2

.I NOERROR
RETURN/$RETURN NOERROR R5             CLC
	                              RTS R5

RETURN/$RETURN ERROR                  SEC
	                              RTS PC

RETURN/$RETURN NOERROR                CLC
	                              RTS PC

.I STAT
RETURN/$RETURN STAT R5                MOVB STAT,-(SP)
	                              ROLB (SP)+
	                              RTS R5

RETURN/$RETURN R4                     MOVB R4,-(SP)
	                              ROLB (SP)+
	                              RTS PC

RETURN/$RETURN ,R5                    RTS R5


.F
	POP Statement
	=============

.I POP statement.

The POP statement is used for popping word data  off  the  stack.  The
statement takes the form:

     $POP P1,P2,P3,...P10

The  argument(s)  (P1,P2...) can be any legal destination WORD operand
of  they  may be TOP in which case the TOP (WORD) element on the stack
is POPPED into never-never land.

Example: -                     Generated Code
=========

	POP R0,R4              MOV (SP)+,R0
                               MOV (SP)+,R4

.I TOP
	POP R0,TOP	       MOV (SP)+,R0
			       MOV (SP),(SP)+	

The  user  will  note that since MOV instructions are used throughout,
the CARRY BIT is preserved across all POPS.

	POPB Statement
	==============
.I POPB statement.

The  POPB  statement  provides  a similar facility fo BYTE dat as that
provided by POP. The arguments (P1,P2...) can be any legal destination
BYTE  operand. However, they may NOT be TOP. The POPBed byte is always
the  low-order  byte  on  the  top  of  the stack. Remember, each BYTE
POPBed  from  the  stack  actually  pops  one WORD from the top of the 
stack.

.F
	PUSH Statement
	==============

.I PUSH statement.

The  PUSH  statement provides a method for pushing WORD data on to the 
stack. The statement takes the form:

     PUSH P1,P2,P3...P10

Example:-                     Generated Code
=========

     PUSH R4,R0               MOV R4,-(SP)
                              MOV R0,-(SP)

	PUSHB Statement
	===============

.I PUSHB statement.
The  PUSHB  statement  provides  a method for pushing BYTE data on the 
stack.  The  argument(s)  (p1,p2...)  can  be  any  legal  source BYTE
operand. The  PUSHed operand always occupies the low-order byte on the
top  of  the  stack  with  the high-order byte on the top of the stack
CLEAR.  Remember,  each byte  PUSHed actually reserves one WORD on the
stack.
.F
	JUMPTO Statement
	================

.I JUMPTO statement.

The JUMPTO statement creates a jump (JMP) instruction with the pointer
pointing to a symbolic name given by the programmer.  The form is:

     JUMPTO name



	CASE(B) Statement
	=================

.I CASEB statement.
.I CASE statement.

CASE(B)  are  statement(s) that will issue a call to a subroutine that
can  be selected  by a variable.  CASE(B) must be terminated by an END 
statement.
The form of the CASE(B) statement is:

     CASE(B) variable

     Routine 0
     Routine 1
     Routine 2
     Routine 3
        .
        .
     Routine n
     END

where:  variable is 0,1,2,3...n
.I TOP

The  selector  variable  can  be any legal BYTE (CASEB) or WORD (CASE)
operand  that  contains  the  desired  number  or  it can be TOP.  TOP
signifiies  either  the  low-order  BYTE (CASEB) or WORD (CASE) on top 
of  the stack. If TOP is used, the TOP WORD/BYTE entry on the stack is
altered.

Example:-
=========

     LET R0 := #2
     CASE R0             or        CASE #2
       ADDVAL
       SUBVAL
       ORVAL

     END

Upon  completion  of the CASE(B) (END), control will be transferred to 
the ORVAL subroutine.  When the ORVAL has finished, i.e., has executed
a RETURN, execution will be resume at the statement following the END.
The  programmer  must be careful to validate the range of the variable
for  use  with the CASE(B) statement. (Note: CASE(B) does not generate 
PIC position independent code).

.F
	PROCEDURE Statement.
	====================

.I PROCEDURE statement.

PROCEDURE  is  a  statement  which allows the programmer to implicitly
establish an entry point for a subroutine (procedure). The form of the
PROCEDURE statement is:-

	PROCEDURE	NAME,TYPE,SAVE

Where  NAME  is  any legal MACRO-11 label. TYPE may be assigned either 
the  keyword  LOCAL  or  GLOBAL. If TYPE is unspecified the default is
LOCAL. If type is unrecognised the default is GLOBAL. SAVE may be used
as a savereg by calling the appropriate macro.

	ENTRYPOINT Statement
	====================

.I ENTRYPOINT statement.

ENTRYPOINT  is  a  statement which allows the programmer to implicitly
establish  an  alternate  entry  point label for a procedure. The form
of the ENTRYPOINT statement is:-

	ENTRYPOINT	NAME,TYPE

Where  NAME  is  any legal MACRO-11 label. Type may be assigned either 
the  keyword  LOCAL  of  GLOBAL. If TYPE is unspecified the default is
LOCAL. If TYPE is unrecognised the default is GLOBAL.

	PROBE and PROBEB Statement
	==========================

.I PROBE statement.
.I PROBEB statement.

PROBE  and  PROBEB  enable the programmer to generate an inline TST or 
TSTB  instruction and thus set up the condition codes for a subsequent
IF RESULT IS ... conditional test.



.T SUPER-MAC ERROR MESSAGES.
.I ERROR MESSAGES, SUPMAC.
	ERROR MESSAGES
	==============

Listed below are the error messages generated by SUPER-MAC.

     STACK UNDERFLOW!!!

     IF SYNTAX ERROR --- IS

     ELSE SEEN IN OTHER THAN IF BLOCK

     UNTIL SEEN IN OTHER THAN REPEAT BLOCK

     --- MUST BE A REGISTER

     --- STRANGE SUPER-MAC STACK VALUE

     --- ...ARGS MUST BE WITHIN <>

     --- NOT A LEGAL ASSIGNMENT OPERATOR

     6 ARG MAX (R0-R5)

     --- NOT A LEGAL OPERATOR



.C DECISION TABLES - REFERENCE GUIDE.
.I CAA DISCLAIMER.
 
 
 
 

COPYRIGHT (C) 1981 (TABLE-MAC)
 
 
CIVIL AVIATION AUTHORITY
 
 
The  information  in this document is subject to change without notice
and  should  not  be  contrued  as  a commitment by the CIVIL AVIATION 
AUTHORITY  who assume no responsibility for any error which may appear
in this manual.
 
 
 
 

	AUTHOR:-     	      J.S.Clifton
		       Civil Aviation Authority.
		      Air Traffic Evaluation Unit.
			     Hurn Airport,
			     Christchurch.
			        Dorset.
			        England.




.T DECISION TABLES IN MACRO - 11.
.I DECISION TABLE THEORY.
 
 
 
 
 
 
	DECISION TABLES IN MACRO - 11, THEORY
	=====================================
     

.I FLOW DIAGRAM.
Decision  tables  may  be  considered  to  be  an affective substitute
for,  or  an  auxiliary  aid  to the flow diagram as well as a program
in their own right.
     
The  decision  table  provides  information  concerning  problems  and
solutions   in  a  concise  tabular  format  that  is easy to read and
understand.   This  tabular  approach  is  particularly useful in sit-
uations involving complex logic.
     
The  basic  structure  of  the  table  forces the  person concerned to
formulate  a  clear  statement  of conditions  and actions and to con-
sider ALL POSSIBLE LOGICAL combinations of the conditions.
       
.T DECISION TABLE ELEMENTS.
.I DECISION TABLE ELEMENTS.
 
 
 
 
 
 
	BASIC ELEMENTS
	==============
              
.I CONDITION STUB.
.I CONDITION ENTRY.
	CONDITION STUB          CONDITON ENTRY.
	==============          ===============
     
	List of relevant	All combinations of conditions
	conditions              that must be considered seperately


      
.I ACTION STUB.
.I ACTION ENTRY.
	ACTION STUB		ACTION ENTRY
	===========		============
	Actions to be taken	Actions to be taken for each 
	in all circumstances	particular set of conditions.
      
Example:-
=========
       
We  wish  to  play  golf on Saturday.  It will depend on two things  -
whether  or  not  the grass  needs cutting and the weather.  VIZ, - if
the  weather  is  fine  and  the grass needs cutting, cut the grass in
the  morning  and  play golf in  the afternoon. If the weather is fine
but  the  grass  does  not  need  cutting, play golf in the moring. If
its raining do neither.

      						R1  R2  R3  R4

	C1	Is the weather fine.		Y   Y   N   N
	C2      Does the grass need cutting.	Y   N   Y   N
 
	A1	Cut the grass Sat. a.m. 	X
	A2	Play golf     Sat. a.m.             X
	A3	Play golf     Sat. p.m.		X
       

.T TYPES OF DECISION TABLE.
 
 
 
 
 
 
	TYPES OF DECISION TABLE.
	========================

There are 3 types of Decision table.
       
.I LIMITED ENTRY.
		LIMITED ENTRY.
		==============         
        
The  previous  table  falls, into  this  category. The  condition stub
specifies  completely  the  question  and  the  condition  entries are
YES(Y),  NO(N)  or  Not  Applicable  (-).  Logically,  question  order 
doesn't  matter  but  practically  it could be important when it comes
to condensing.
         
.I EXTENDED ENTRY.
		EXTENDED ENTRY.
		===============
      
Suitable  for  initial  problem  definition as it gives greater flexi-
bility  in  expressing  each  condition and action.  In this form only
part  of  the  condition  is contained in the stub, the rest appearing 
in the entry area.
       
Example:-
=========
	STUB		ENTRY
        ----            -----
        age             under 21   over 21   over 25   over 25
      
.T DASH RULE/NESTING OF.
 
 
 
 
 
 
.I MIXED ENTRY.
		MIXED ENTRY.
		============
        
A  combination   of  (a) and (b). The most flexible form for manual or
program  use.  It  can  be used  to  represent  the single and complex 
case with equal ease.

       
.I THE DASH RULE.
	THE DASH RULE.
	==============
      
Enables   the   tables   to   be  considerably  condensed  in  certain 
circumstances.
     
In certain  situations, when one of the major conditions is satisfied, 
the  motion specified is independent of the minor conditions.
       
In this case the minor condition entries are replaced by dashes.
	(see Problem 2).
       

.I NESTING TABLES.
	NESTING TABLES.
	===============
      
If  there  are  so many conditions that the decision table becomes too
large  to  handle,  the  problem  may be easily segmented. This can be 
achieved  by  defining  some  of the actions so that control is trans-
ferred to another table.
         
Example:-
=========

	GOTO Table 2.
        
.I GOTO   
.I OPEN AND CLOSED TABLES.
	OPEN AND CLOSED TABLES.
	=======================
       
.I GOTO
A  table  is  said  to be  'open' if the last action is  GOTO  another 
table  name.  In  a  closed  table the  final action does not  specify 
entry  to  another  table.  If  the  closed  table  is  to represent a 
subroutine of  a  program  then  control  will  return  to  the master
table.
        
         
.T DECISION TABLE CONVERSION INTO OPERATIONAL COMPUTER PROGRAMS.
 
 
 
 
 
 
	CONVERSION INTO OPERATIONAL COMPUTER PROGRAMS.
	==============================================
       
	FOUR MAIN WAYS:-
	----------------
      
	1. By a programmer, using accepted conversion techniques.
      
.I PRE-PROCESSOR.
	2. By  a   Pre-processor,  a  software  program  that works on 
	Tables  where  Condition  and Action statements have been  ex-
	pressed  in,  say,  COBOL or FORTRAN and produce a program  in
	that language.
       
.I DIRECT COMPILER.
	3. By a Direct Compiler, producing machine Code programs.
       
.I INTERPRETATIVE PROCESSOR.
	4. By  an  Interpretive   Processor, an object  program loaded 
	into  the   computer,  which  both  interprets  and  processes 
	data at runtime.
             
          
.T ADVANTAGES CLAIMED FOR USE OF DECISION TABLES.
.I ADVANTAGES CLAIMED FOR.
 
 
 
 
 
 
	ADVANTAGES CLAIMED FOR USE OF DECISION TABLES.
	==============================================
        
            
	1. The  person  concerned is  forced to make a clear and comp-
	lete statement of the problem.

	2. The table is easy to read and use.

	3. Decision  tables  allow  a  problem  to  be segmented, each 
	segment being represented by a separate table.
      
	4. Condition  tests  are  separated from  actions to be taken, 
	making  it  easy  to isolate the set of conditions which hold.
       
	5. The  table  presents  a  standard  format which immediately 
	shows up any anomalies.
         
	6. Tables are easy to modify and maintain.
                
	7. A  table  can readily provide input to a program which will 
	permit direct coversion to a computer program.
      
	8. The  decision  table permits a problem to be fully recorded 
	without  imposing  a  particular sequence of operations on its 
	solution.
      
      
A  computer  consultant  who has used Decision tables rather than flow
charts  as  a  means of communication between Analysts and programmers 
makes the following claims:-
         
	        
	1. Provide  clear  communication  of  the  requirements to the 
	programmer.
        
	2. Clear  connection  between the program written and the sys-
	tem required.
      
	3. Simplicity  of  coding decreasing the work load on the dep-
	leted programming staff.
       
	4. Ease of checking logic of program written.
      
	5. Capability of splitting long programs into modules.

        
.T DECISION TABLE IMPLEMENTATION IN MACRO - 11.
 
 
 
 
 
 
	DECISION TABLE IMPLEMENTATION.
	==============================
         
     
	INTRODUCTION.
	=============
        
The  decision  table  facility  in  MACRO-11 allows the user to define 
program logic in a concise yet powerful manner.
       
              
.I FACILITIES AND USES.
	FACILITIES AND USES OF DECISION TABLES IN MACRO-11.
	===================================================
      
MACRO-11 can process limited or extended entry decision tables.
       
.I SUPERMAC.
.I IF
.I CALL
.I REPEAT
.I EXIT
Multiple  decision  tables  may be specified and mixed with 'SUPERMAC'
procedures  and  statements  as  well  as  basic macro-11 instructions 
and  linkage  may  be  carried  out  from  conditions  (via IF or CALL 
verbs) or actions (via CALL,GOTO,REPEAT,EXIT verbs).
        
Supermac  statements,  actions  and   conditions  may  be mixed in any 
order in  decision   tables  but  decision  tables  cannot  be  nested 
within  each  other,  though  a decision table can be nested within an 
IF,THEN,ELSE statement.
.I THEN
.I ELSE
         
All  'MACRO-11'  and  'SUPERMAC'  arithmetic  operations  can be perf-
ormed (LET statement).
       
Else rules can be defined.
        
      
.T INTERPRETATION OF MACRO-11 DECISION TABLES.
.I DETAB INTERPRETATION.
 
 
 
 
 
 
	INTERPRETATION OF MACRO-11 DECISION TABLES.
	===========================================
        
.I RULE MASK TECHNIQUE.
.I DETAB
.I CONDITION CHECKS.
Decision  tables  in  MACRO-11  are  interpreted  using  a  rule  mask 
technique. When  the  DETAB MACRO is defined it sets  up 2 words,  one
which  sets  the else rule and one with all bits set, whose bits  will
be  cleared  as  the  results  of condition checks. Each condition  is
evaluated   serially  and  actions corresponding to the rule or  rules
satisfied  are  carried  out  in  turn.  It  is important to note that
MACROS  will  process  decision  tables in which more than one rule is
satisfied. Consider the following decision table.
            
	C.	IF    SEX    EQ    MALE   [   Y   -   ELSE
     
	C.	IF    AGE    GT    #21    [   -   Y    -
       
                   
	A.	LET COLUMNS:=  SPACE      [   X   X    X
                
	A.	LET COL1 := "*"           [   X   -    -
     
	A.	LET COL2 := "*"           [   -   X    -
     
	A.	LET COL3 := "*"           [   -   -    X
        
            
Assuming the data presented consists of:-
                
		NAME -	Edwards     sex - male     age - 18
			Thomas            female         30
			Jones             female         16
			Jenkins           male           35
        
- then the output produced is as follows:-
          
		NAME        COL1        COL2        COL3
               
		Edwards      *
		Thomas                   *
		Janes                                *
		Jenkins      *           *
        
        
.F
.I ELSE rule.
 
 
 
 
 
 
Having  evaluated  the  two  conditions for 'Edwards' MACRO would find
that  only  rule  1  can be satisfied. For 'Thomas' and 'James' rule 2
and  the  ELSE  rule  are  satisfied  respectively,  in  the  case  of
'Jenkins'  after  evaluating  the  two  conditions  it  is  found that 
rules   1  and  2  are  both satisfied. This is a situation where more 
than  one  rule  is  satisfied. MACRO processes the actions by working 
serially  through  the  actions  and  carrying  out  any actions which 
have  at  least   one X specified  in a satisfied rule. Thus the first 
action  to  spacefill  the  columns  is  performed. Then an * is moved 
to  column  1  and  an  *  is  also  moved to column 2. Note that this 
method  implies  only  one  pass through the table;  i.e. Macro decis-
ion  tables  does  NOT  process  the conditions and actions for rule 1 
(if satisfied) --- and  then  return  to  the  start  of  the table to 
process  the  conditions   and  actions  for  rule 2.  It is important 
that  the  reader  appreciates  that  MACRO decision tables are inter-
preted in this way.
         
.I RELEVANCE TESTING.
Relevance  testing  has  been  incorparated  for  all  decision  table 
verbs and macros.
         
          
.T INCOMPLETE DECISION TABLES.
.I INCOMPLETE DECISION TABLES.
 
 
	INCOMPLETE DECISION TABLES.
	===========================
           
An  incomplete  discision  table  is  one  in  which  not all possible
combinations of conditions are catered for.
           
Example:-
=========

		C.   IF RECTYPE EQ #20      [   Y    Y    Y
                 
		C.   IF PRODCODE EQ #121    [   Y    N    N
      
		C.   IF PRODGP EQ #2        [   -    Y    N
      
		A.   GOTO TABA              [   X    X    -
      
		A.   GOTO TABB              [   -    -    X
       
The  above  table  is  incomplete  as  the  rule  for  the  case where 
RECTYPE  is  not  equal  to  20 has been omitted. An incomplete decis-
ion table can always be completed by the addition of an ELSE rule.
.I ELSE
.I IGNORE RULE.
.I IMPLIED ELSE.
      
Decision  table  MACROS  will  process an incomplete decision table by
always  providing  an  ELSE  rule  which is entered when no other rule 
is  satisfied.   Reaction  IGNORE  is  supplied by the MACROS for this 
implied  ELSE  rule.   The  above  decision table is interpreted as if 
it were.
        
		C.   IF RECTYPE EQ #20      [   Y    Y    Y   ELSE
     
		C.   IF PRODCODE EQ #121    [   Y    N    N     -
     
		C.   IF PRODGP EQ #2        [   -    Y    N     -
     
		A.   GOTO TABA              [   X    X    -     -
     
		A.   GOTO TABB              [   -    -    X     -
      
		A.   IGNORE                 [   -    -    -     X
       
         
The  rule  supplied  by  MACRO  for  any  incomplete decision table is
known as the implied ELSE/IGNORE action.
       
.I DETEND
The  results,  when  the  implied  ELSE rule is satisfied in the above
example  is  to  by-pass  the actions to the next in-line instruction.
If  the  DETEND  macro  is used then the 'error bit' will be set and a
RETURN generated.
       

.T MACRO DECISION TABLE FORMATS.
.I DECISION TABLE FORMATS.
 
 
 
 
 
 
	MACRO DECISION TABLE FORMATS.
	=============================
       
This  section  describes  the  format  and  rules governing the use of
decision  tables  in  MACRO.  Basically these  consists of four MACROS
(DETAB / C. / A. /DETEND)
.I C.
.I A.
.I DETEND
       
.I DETAB  name,global/local
		DETAB  name,global/local
		-----
       
Each  decision  table  is  introduced  by  this directive in the above
format.  Name  is  optional  and  may  be  any  MACRO-11 valid format, 
type  may  be  either  local  or global and if not specified, local is 
assumed.
       
'DETAB' also sets up the appropriate mask words and repeat label.
      
Following  the  DETAB  macro  the  user  may  specify  other   macros, 
instructions, conditions or actions.
     
.I INITIAL ACTIONS.
.I GENERAL ACTIONS.
Macros  and  macro  instructions  will  be actioned regardless and can
be considered as INITIAL or GENERAL actions.
      
There  is  no  limit  to the  number of details which may be specified
as initial actions, conditions or actions.
      
There  is  a  limit  to  the number of rules which may be specified in
a  MACRO  decision  table.   No  more  than 16 rules may be specified,
including an explicit or implicit ELSE rule.
.I EXPLICIT ELSE
.I IMPLICIT ELSE
       
Comments  may  be  made  in the standard MACRO way, namely following a
semi-colon.
       
        
.T ......CONDITIONS.
.I CONDITIONS.
.I C. test [ rules
 
 
 
 
 
 
		CONDITIONS.
		===========
      
		Format:-	C.  test    [   rules.
        
The  'test'  will  normally be  done with a SUPMAC 'IF' statement such 
as  IF  R0  EQ  R1,  or  it can be a Procedure, Detab or Label 'call'; 
or  a  macro  that  returns SUCCESS or ERROR. Note that IF may be used 
in place of CALL.

.I Delimiter '['         
The  '['  is  a  delimiter  used  in  both  conditions  and actions to
seperate the test or action from the rules.
        
The  following  items  may  appear  in  the rules section of a limited
entry MACRO decision table.
.I Y(es)
.I S(uccess)
.I T(rue)
.I N(o)
.I E(rror)
.I F(alse)
       
		Y, S, T      for  YES, Success or True.
   
		N, E, F      for  NO,  Error or False.
      
		-  or .      for  irrelevant or immaterial.
       
		ELSE         for  the ELSE rule.
           
ELSE  may  only  appear  in  the last rule of the first condition and
only - or . may  appear  in  this  rule  for  the remaining condition
entries.
       

.T ......ACTIONS/DETEND.
.I ACTIONS.
.I A. actions [ rules
 
 
 
 
 
 
		ACTIONS.
		========
        
	Format:-	A.  action  [  rules.
         
	             
The  'action'  can  consist  of  any  standard  macro  instruction  or 
macro with a limit of 5 additional parameters.
.I Delimiter '['         
        
After  the  delimiter  ([)  the items  allowed  in  the rules  (action 
entry) of a limited entry MACRO decision table are.

        
	X    	for	perform the action.
    
	- or .  for	do not perform the action.
        
If  the  entry  is blank the action macro assumes an X is required for 
every rule.
         
           
.I DETEND.
		DETEND.
		=======
         
This  is  an  optional  terminator  for  a  decision table, if  one or 
more  rules,  other  than  ELSE  are  true, then  its sets the success 
flag  and  issues  a  RETURN  or  if  ELSE  it sets the error flag and 
issues a RETURN.
.I RETURN
.I EXITING (detabs).
         

Exiting can be programmed by using the following macros.
      
	EXITTRUE / EXITSUCCESS / EXIT T / EXIT S  -  success return.
		
	EXITFALSE / EXITERROR / EXIT F / EXIT E   -  error return.
   
	GOTO  name	-  unconditional branch.
    
	REPEAT          -  control returns to start of present detab.
.I REPEAT
.I GOTO
      

.T ......EXTENDED ENTRIES.
.I EXTENDED ENTRIES.
 
 
 
 
 
 
	EXTENDED ENTRIES.
	=================
      
A  facility  included in  MACRO-11 decision tables is that of extended
entries,  where  in  both  conditions and actions one parameter can be
extended  into the rules section. Consider the following table.
      
        
	C.	IF    R0    EQ    #1    [  Y    -    -    ELSE
       
	C.	IF    R0    EQ    #2    [  -    Y    -      -
     
	C.	IF    R0    EQ    #3    [  -    -    Y      -
     
	A.	CALL ONE		[  X    -    -      -
     
	A.	CALL TWO		[  -    X    -      -
      
	A.	CALL THREE		[  -    -    X      -
       
In extended entry form this may be re-written as follows.
      
	C.	IF   R0     EQ ?	[  #1   #2    #3   ELSE
    
	A.	CALL  ?			[  ONE  TWO  THREE   -
        
	 
In  the  condition,  only  the  true test is made, for example compare 
the  two  tables. In  an  extended  macro  or call validity checks are 
made  first,  even  in  a  condition,  thus  all conditions may not be
actioned.  Only  one  (but  any)  parameter,  may  be  extended and is 
marked by a question mark.
       

.T DECISION TABLE EXAMPLE.
.I DECISION TABLE EXAMPLE.
 
 
 
 
 
 
	EXAMPLE.
	========
         
This  is  not  a  practicle  example  but  attempts  to show all macro
formats. Consider as possible statements.
       
        
DETAB	FIRST,GLOBAL.
        
	SAVE	R1,R2,R3
       
C.	IF    R0    EQ    #1		[   Y    Y    -    -    ELSE
     
C.	IF    R0    EQ    ?		[   -    -    #2   #3     -
     
	SAVE  R0
       
A.	LET   R0    :=    ?		[   #4   #5   #6    #7    -
     
C.	CALL ONE			[    -    Y    Y    -     -
     
C.	IF ONE				[    -    Y    Y    -     -
    
C.	IF  ?				[   ONE  TWO THREE FOUR   .
        
A.	TLOOKUP  R0,DSPMEM		[    X    X    X    X     .
     
A.	CALL  INITIALISE		[    .    X    .    .     .
    
A.	MOV  ?, R0			[    R1   R2   R3   .     .
       
	UNSAVE  R1,R2,R3,R0
      
DETEND.


.T DEBUGGING & TRACING FACILITIES.
.I DEBUGGING FACILITIES
 
 
 
 
 
 
	DEBUGGING FACILITIES
	====================
 
	THESE CAN ALSO BE USED IN 'SUPER-MAC' AND OTHER MACROS.

.I LISTING FACILITIES
		LISTING FACILITIES
		==================

.I LIST
.I NOLIST
		By using the word LIST and NOLIST around sections of program
	will cause the actual Macro generated code to be output to the list-
	ing file. Consider it as a Switch.

.I TRACING FACILITIES
		TRACING FACILITIES
		==================
.I TRACE
.I NOTRACE
		By using the terms TRACE and NOTRACE around program modules
	at run time the label will be printed on the VDU every time that  -
	LABEL is passed. In the case of a Decision Table then the LABEL name
	will be given when the first action is reached and the rules true at
	that time will be printed.


.C STRING HANDLING MACROS.
.T INTRODUCTION.

STRING HANDLING MACROS.
=======================
     
	The  following  macros  allow for easy manipulation of strings
and the  following  notes  should  be  born in mind. To make parameter 
passing easy from one macro to another a number of locations have been 
defined. Macro parameters are loaded into these locations and if a par
-ameter is a location it can be defaulted by the use of a '-'. In  add
-ition  the  results  of any macro action will also be loaded in these
locations  and  the 'C' bit appropriatly set. Thus the programmer does 
not have to bother about registers as all register values are retained 
when these MACROS are used.
	The  parameter passing locations may be accessed seperatly and 
those loaded or used are given for each macro. All locations use 'CD.'
(COMMON DICTIONARY) for  the  first  three characters.  All parameters 
must be defined or on error will result.
 

.I COMMON DICTIONARY
.I CD.
.I CD.SRC
.I CD.DST
.I CD.CHR
.I CD.CNT
.I CD.RES
.I CD.POS
.I CD.KEY    
.I LABEL parameter
.I SOURCE parameter
.I DESTINATION parameter
.I CHARACTER parameter
.I COUNT parameter
.I POSITION parameter

    LABEL parameter 	   _	string label or register holding a 
				string address.
				(CD.SRC/CD.DST)

    SOURCE parameter 	   _	a source string defined the same as
				label.
				(CD.SRC)

    DESTINATION parameter  _ 	a destination string defined the
				same as label.
				(CD.DST)

    CHARACTER parameter    _	number, register or label defining
				an ascii character.
				(CD.CHR)

    COUNT parameter        _	a number, register or label holding
				a numeric count
				(CD.CNT)

    POSITION parameter     _	a number, register or label holding
				a number giving a character position
				within a string.(or table KEY).
				(CD.POS/CD.KEY)

	In order to obtain a parameter from the Common Dictionory a
dash (-) must be used for that parameter. No parameter must be left 
undefined or an error will result.

.T STRING MACROS

ZPAD.  label,count
----
.I ZPAD [label]

	This macro fills up the remainder of a string with nulls, or
appends the number of spaces specified in 'COUNT'. It does not clear 
the string first.

	Parameter locations:-
	-------------------

	CD.SRC   holds the string address.
	CD.CHR   := #0
	CD.CNT   := characters inserted or "#0" for whole string.
						success/error

SPPAD  label,count
-----
.I SPPAD [label]

	This macro fills up the remainder of a string with spaces, or
appends the number of spaces specified in 'COUNT'.  It does not clear 
the string first.

        Parameter Locations:-
	-------------------

	CD.SRC    holds the string address.
	CD.CHR    := #40 (space)
	CD.CNT    := characters inserted or "#0" for whole string.
						success/error 


PAD     label,character,count
--- 
.I PAD [lab],[char],[cnt]

	This macro pads out a string with the number of specified 
characters,  or  appends  the  number  of characters specified as 
defined in count. It does not clear the string first.


        Parameter locations:-
	-------------------

	CD.SRC    holds the string address.
	CD.CHR    holds the ascii character value.
	CD.CNT    holds the number of characters to pad with.

						success/error
.F
ADDSTRING  source, destination
---------
.I ADDSTRING [src],[dest]

         This macro appends the source string to the destination 
string or as much as there is room for, the source string remains 
unaltered.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the source string address.
	CD.DST    holds the destination string address.

						success/error

CLRSTRING  label
---------
.I CLRSTRING [label]

	This macro fills the string with nulls and clears the string
 count.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the string address
						success/error
MOVSTRING.    source, destination.
----------
.I MOVSTRING [src],[dest]

	This macro is a combination of the CLRSTRING and ADDSTRING,
macrosIt clears the destination string and moves the source string to 
the destination string.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the source string address.
	CD.DST    holds the destination string address.

						success/error

.F
CMPSTRING   source, destination
---------
.I CMPSTRING [src],[dest]

	This macro compares  two strings exact and the status bits are 
set dependant on the result.

NOTE:- If the strings are of different lengths then the characters are 
compared over the length of the shortest string. If all characters are 
the same the shortest string is considered smaller.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the source string address.
	CD.DST    holds the destination string address.


	Result Locations:-
	----------------

	CD.RES    holds the result
 
 	If CD.RES  = 0 (success)	- both strings identical

		   = positive (error)	- source string largest

		   = negative (error)	- destination string largest


	Alternative result testing (SUPERMAC) :-
	-------------------------------------

	IF RESULT IS SUCCESS	(both strings identical)
 
	IF RESULT IS ERROR	(strings are not the same)

	IF RESULT IS GT     (source string largest)

	IF RESULT IS LT     (destination string is largest)

	IF RESULT IS EQ	    (strings not identical - but the length
			    is the same)

						success/error


.F
ROLSTRING   label
---------
.I ROLSTRING [src]

	This macro shifts a string one place to the left (ROLL LEFT).
	The last character in the string is moved to the start of the 
	string.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.
 
 						success/error

RORSTRING   label
---------
.I RORSTRING [src]

	This macro shifts a string one place to the right (ROLL RIGHT)
The first character in the string is moved to the end of string.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.

 						success/error

SHLSTRING   label
---------
.I SHLSTRING [src]

	This macro shifts a string one place to the left, removing the 
first character. 

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.

	Result Locations:-
	----------------

	CD.CHR    holds the first character removed

 						success/error
.F
SHRSTRING   label,character 
---------
.I SHRSTRING [src],[char]

         This macro shifts a string one place to the left, putting the 
defined character in the vacated first character slot.

	Parameter Locations:-
	-------------------

	CD.SRC   holds the label string address.

	CD.CHR   holds the ascii character.

 						success/error

SUBSTRING   source, destination 
---------
.I SUBSTRING [src],[dest]

	This macro locates the source string within the destination 
string and if there it subtracts it from the destination string. 
The source string remains untouched.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the source string address.

	CD.DST    holds the destination string address.

	Result Locations:-
	----------------

	CD.POS    holds the position in destination string where the 
		  source was found

	CD.CNT    holds the number of characters deleted.

						success/error.

.F
SWABSTRING  label
----------
.I SWABSTRING [src]

	This macro swaps or reverses all the characters held in a 
	string.

	Parameter Locations:-
	-------------------

	CD.SRC   holds the label string address.

						success/error.

TSTSTRING  label
---------
.I TSTSTRING [src]

	This macro allows a string lenght to be acted upon by 
appropriatly setting the status word condition codes.

	Parameter Locations:-
	-------------------

	CD.SRC   holds the label string address.

	Result Locations:-
	----------------

	CD.RES   holds the string lenght.


.T CHARACTER / STRING MACROS

THE FOLLOWING MACROS DEAL WITH CHARACTERS WITHIN STRINGS.
=========================================================


ADDCHRSTRG   character, label
----------
.I ADDCHRSTRG [char],[src]

	This macro adds or appends a character to a string.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.

	CD.CHAR   holds the character to be added.
           

INSCHRSTRG   character, position, label
----------
.I INSCHRSTRG [char],[pos],[src]

	This macro inserts a character within a string at a given 
position (insert after).

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.

	CD.CHR    holds the character to be inserted.

	CD.POS    holds the position to be inserted after.

						success/error.

MODCHRSTRG   character, postiion, label
----------
.I MODCHRSTRG [char],[pos],[src]

	This macro modifies a character within a string at a given 
	position.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.

	CD.CHR    holds the character which is modifying.

	CD.POS    holds the position of character to be modified.


						success/error.

.F
DELCHRSTRG   position, label
----------
.I DELCHRSTRG [pos],[src]

	This macro deletes or removes a character from a given 
position within a string.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.

	CD.POS    holds the position where character is or has been
deleted.

						success/error.

POPCHRSTRG   label
----------
.I POPCHRSTRG [src]

	This macro removes the first character from a string and 
leaves it in CD.CHR.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.

	Results Locations:-
	-----------------

            CD.CHR    holds the first character removed.

						success/error.

PUSHCHRSTRG   character, label
-----------
.I PUSHCHRSTRG [char],[src]
	This macro inserts a character ( byte ) at the begining of a 
string.

	Parameter Locations:-
	-------------------

	CD.SRC    holds the label string address.

	CD.CHR    holds the character to be inserted.

	Result Locations:-
	----------------

	CD.POS    becomes equal to #0


.C General purpose macros
.T Print macros
 
		MACROS TO BE FOUND IN MAC/LIB
		-----------------------------

	Note parameters in [square brackets] are optional.



MODULE	NAME				DESCRIPTION
------	----				-----------
 
.I MX08
.I PRINT
MX08	PRINT [label],[character string]
				Output a character string to the terminal
				If the character string is not specified
				the string for output is assumed to be
				pointed at by R0.
	eg.	PRINT ,<"DEMO TEXT">	;PRINT TEXT
		PRINT XX,<"DEMO 1">	;PRINT TEXT, LAB XX: APPENDED TO TEXT
		PRINT XX		;PRINT TEXT AT LABEL XX

.I PRINTA
MX08	PRINTA	[label/location],[BYTE]
				This macro outputs either the contents
				of R0 (by default) or contents of label
				to the terminal in ASCII representation.
				All bytes/characters decsribed by two
				ASCII characters to cover non-printing
				characters NB. 1 would be displayed as
				^A and the erase character as ^% all
				printing characters preceded by a space.
	eg.	PRINTA XX	;CONTENTS OF XX DISPLAYED AS 4 CHARACTERS


.I PRINTC
MX08	PRINTC [character],[BYTE]
				Output a character to the terminal. If
				the character is not specified the
				character for output is assumed to be
				held in R0.
	eg.	PRINTC #65.	;PRINT THE CHARACTER "A"
	eg.	PRINTC @#ODDADDRESS,BYTE
.F

NAME		MODULE			DESCRIPTION
----		------			-----------

.I PRINTB
.I MX08
MX08	PRINTB	[label/location],[BYTE]
				This macro outputs either the contents of
				R0 (by default) or the contents of the
				lable to the terminal in BASE 2 ASCII
				converted form.
	eg.	PRINTB #-1	;output = 1111111111111111
	eg.	PRINTB #-1,BYTE	;output = 00000000

.I PRINTD
MX08	PRINTD	[label/location],[BYTE]
				This macro outputs either the contents of
				R0 (by default) or the contents of the 
				label to the terminal in DECIMAL form.
	eg.	PRINTD #65.	;PRINTS THE VALUE IN FORM +00065
	eg.	PRINTD @R0,BYTE	;R0 POINTS TO AN ODD ADDRESS

.I PRINTH
MX08	PRINTH	[label/location],[BYTE]
				This macro outputs either the contents of
				R0 (by default) or the contents of the
				lable to the terminal in BASE 16 ASCII
				converted form.
	eg.	PRINTH #-1	;output = FFFF
	eg.	PRINTH #-1,BYTE	;output = FF

.I PRINTO
MX08	PRINTO	[label/location],[BYTE]
				This macro outputs either the contents of
				R0 (by default) or the contents of the
				label to the terminal in OCTAL form.
	eg.	PRINTO #101	;PRINTS THE VALUE IN THE FORM 000101
	eg.	PRINTO (R2)+,BYTE

.I PRINTR
MX08	PRINTR	[label/location]
				This macro outputs either the contents of
				R0 (by default) or the contents of the
				label to the terminal in RADIX 50 form.
	eg.	PRINTR #^RABC	;PRINTS THE VALUE IN THE FORM CCC

.I REPCHAR
.I V$TXC
MX08	REPCHAR character,repeat count
				This macro set up the data in the form
				suitable to be processed by the procedure
				V$TXC.
	eg.	REPCHAR <SPACE>,33	;OUTPUT 33 SPACE CHARACTERS

.I PTEXT
.I V$TXB

MX08	PTEXT string
				This macro set up the string in the form
				suitable to be processed by the procedure
				V$TXB.
	.eg	PTEXT <<CR><LF>"HAVE A NICE day">;SEND TEXT TO TERMINAL


 
 
.T Input / read macros

MODULE	NAME				DESCRIPTION
------	----				-----------
 
.I MX10
.I INPUT
MX10	INPUT [string]
				Read a character string from the terminal
				the address of the characters string is
				placed in R0 by default or the named string.
	eg.	INPUT A$	;READ CHARS FROM TERMINAL AND PUT IN STRING A$

.I INPUTNE
MX10	INPUTNE [string]
				Read a character string from the terminal
				with the no echo option. The address of the
				character string is placed in R0 by default
				or the character are copied into the string.
	.eg	INPUTNE A$	;AS INPUT BUT CHARS NOT ECHOED ON TERMINAL

.T Initialisation and Terminaltion macros


MODULE	NAME				DESCRIPTION
------	----				-----------

.I INITIALISE
.I MX07
MX07	INITIALISE [Lun number],[VDU event flag number]
				This must be the first macro to be used
				it initialises the terminal input output
				software. If file handling software is being
				used the default lun (one) can be set to any
				value, likewise the vdu event flag default
				(one) can also be altered.

.I TERMINATE
MX07	TERMINATE [status reply]
				This should be the last instruction in
				the program it closes down the terminal
				channel in an orderly manner.
				The valid status replys are :-
				SUC	indicating success
				WAR	indicating a warning
				ERR	indicating an error has occured
				SEV	indicating a severe error has occured
	eg.	TERMINATE SUC	;INDICATE JOB SUCSESSFUL


.T General utility macros

MODULE	NAME				DESCRIPTION
------	----				-----------
 
.I MX04
.I SAVE
MX04	SAVE [list of registers locations]
				This macro in the default mode saves
				the following registers on the stack
				R0,R1,R2,R3,R4 and R5. (R$SAVE)
				Otherwise the named registers will be
				saved on the stack.
	eg.	SAVE R0,R3,R5	;SAVE REGISTERS ON STACK

.I UNSAVE
MX04	UNSAVE [list of registers/locations]
				This macro performs the reverse operation
				of the macro SAVE ie. if no register/locations
				specified then registers R0,R1,R2,R3,R4
				and R5 (R$UNSAVE) will be restored.
				Otherwise the named registers/locations
				will be restored from the stack.
				Note the order for the parameters of 
				The macros SAVE and UNSAVE must be the same.
	eg.	UNSAVE R0,R3,R5	;RESTORE REGISTERS IN ORDER R5,R3,R0

.I STRING
.I MX01
.I FIRST
.I CONT
.I LAST
MX01	STRING Text,Label[,Control]
				This macro reserves a text string associated
				with the label and with write access denied.
				It has been found that sometimes a string
				is required that exceded that that can easily
				be typed onto a single line therfore a
				continuation option is allowed using the
				control parameter. The following control
				words are allowed FIRST indicating the start
				of the string, CONT indicating a continuation
				of the string but not the last segment and
				LAST used to terminate the string.
				Note that the Location/Register field may
				be ignored when using CONTROL = CONT or
				CONTROL = LAST.

	eg.	STRING <"LOAD THESE CHARACTERS INTO STRING A$">,A$
	eg.	STRING <"First line">,B$,FIRST
		STRING <"continuation line">,,CONT
		STRING <"further continuation">,,CONT
		STRING <"at last the end">,,LAST

.I RESERVE
MX01	RESERVE Size,Label
				This macro reserves a blank string associated
				with the label set with read/write access
				and limited to maximum number of characters
				size.
	eg.	RESERVE 100.,A$	;SAVE SPACE FOR STRING A$ 100 CHARS LONG

.F

MODULE	NAME				DESCRIPTION
------	----				-----------
 
.I MOVTEXT
.I FIRST
.I CONT
.I LAST
MX01	MOVTEXT String,Location/Register[,Control]
				This macro enable the programmer to assign
				a character string to a register or load
				the string address into a location.
				The [,Control] option allows you to create
				strings that would normally exceede the
				length of a 80 column line and so distort
				the MACRO 11 compiler listings.
				The [,Control] may be one of three words
				allowed FIRST indicating the start
				of the string, CONT indicating a continuation
				of the string but not the last segment and
				LAST used to terminate the string.
				Note that the Location/Register field may
				be ignored when using CONTROL = CONT or
				CONTROL = LAST.
 
	eg.	MOVTEXT <"Have a nice day">,R0
	eg.	MOVTEXT <"First line"<CR><LF>>,R2,FIRST
		MOVTEXT <"continuation line   "<10.><13.>>,,CONT
		MOVTEXT <"further continuation"<12><15>>,,CONT
		MOVTEXT <"at last the end">,,LAST
 
 
.I QUEBUF
MX01	QUEBUF	size,label
				This macro reserves a data area in queue
				buffer format with the label associated
				with the data area.
 
	eg.	QUEBUF	100.,A.	;SAVE SPACE FOR QUEUE CALLED A. 100 CHARS LONG
 
 
.F


NAME		MODULE			DESCRIPTION
----		------			-----------


.I MX01
.I PRESET
MX01	PRESET	Size,label[,aa][,bb][,cc]
				This macro reserves a preset string.
				Note the parameter size may be overwritten
				by the effect of parameters [aa],[bb],[cc].
				The parameter label is the label by which
				the character string is to be accessed.

					Three parameters specified
					--------------------------
				The parameter [aa] is the string to
				be loaded into the preset area.

					Four parameters specified
					-------------------------
				The parameter [aa] is the string to
				be loaded into the preset area and
				parameter [bb] is the number of repeats
				of string [aa] required.

					Five parameters specified
					-------------------------
				The parameter [aa] is now a value NOT
				A STRING , parameter [bb] is the repeat
				count and parameter [cc] is a step value
				on the entry value [aa].



.T Utility Terminal format  presentation macros


MODULE	NAME				DESCRIPTION
------	----				------------
 
.I MX09
.I NEWLINE
MX09	NEWLINE  [Number of newlines]
				This macro causes a newline to be displayed
				on the terminal.

.I SPACES
MX09	SPACES   [Number of spaces]
				This macro causes a number of spaces to
				be displayed on the terminal.

.I DUMP
.I MX11
MX11	DUMP Comment,value	
				This macro prints out a newline followed by
				the specified comment and the value entry
				printed both in decimal and octal.

.I DEBUG
MX11	DEBUG	Comment,[errlab],[level]
				This macro in not yet available.
.T MX12 modules


	COMMON INFORMATION for MX12 modules.
	------------------------------------

	The parameter SIZE indicates the number of bytes to be processed
	and may be any one of the following values 1,2,4,6
	The parameter FORMAT may be any one of the following symbols
	RAD for radix 50 display, ASC for ascii representation
	DEC for decimal display or OCT for an OCTAL display.
	All these MACRO's may require the use of the register R4.

.I MX12
.I DMPOFF
MX12	DMPOFF	OFFSET,SIZE,[FORMAT]
				This macro displays the OFFSET and the
				contents of the location pointed at by
				(R4 + the OFFSET) to the display in the
				format specified. The default format is OCTAL.

.I DMPSYM
MX12	DMPSYM	SYMBOL,SIZE,[FORMAT]
				This macro displays the SYMBOL and the
				contents of the symbol in the format
				specified. The default format is OCTAL.
				The parameter SIZE is limited to 1,2 only.

.I DMPBIT
MX12	DMPBIT	FLAG,[mask]
				This macro displays the FLAG and the logical
				state of the flag. The mask option allow a
				controlled area to be checked.
				The flag bits are required to be held in
				register R4.
				Usage	MOV @DATA,R4
					DMPBIT TF.RNE
					DMPBIT TF.TMO
.T Status control macros

MODULE	NAME				DESCRIPTION
------	----				-----------

.I SETERROR
.I MX06
MX06	SETERROR [branch label]
				This macro set the C bit indicating an
				error condition. If branch label is
				specified a branch will take place
				to the specified label.

.I SET SUCCESS
.I C BIT
MX06	SETSUCCESS [branch label]
				This macro clears the C bit indicating
				a successful operation. If branch label
				is specified a branch will take place
				to the specified label.

.I EXIT
.I EXITERROR
MX06	EXITERROR
				This macro sets the C bit and then
				returns to the calling routine via RTS PC.

.I EXITSUCCESS
MX06	EXITSUCCESS
				This macro clears the C bit and then
				returns to the calling routine via RTS PC.

.I IFERROR
.I RETURN
MX06	IFERROR label
				This macro tests the C bit and if it is
				set a branch to label takes place.
				The symbol label may be replaced by the word
				RETURN if RTS required on error condition.

.I IFSSUCCESS
MX06	IFSUCCESS label
				This macro tests the C bit and if it is
				clear a branch to label takes place.
				The symbol label may be replaced by the
				word RETURN if RTS required if successfull
				operation.
.I EXIT T/F/S/E
 
	NOTE:-		EXIT T		[EXITSUCCESS]
			EXIT F		[EXITERROR]
			EXIT S		[EXITSUCCESS]
			EXIT E		[EXITERROR]
.C TABLE HANDLING MACROS.
.T INTRODUCTION.

TABLE HANDLING MACROS.
======================
     
	The  following  macros  allow for easy manipulation of  tables
and the  following  notes  should  be  born in mind. To make parameter 
passing easy from one macro to another a number of locations have been 
defined. Macro parameters are loaded into these locations and if a par
-ameter is a location it can be defaulted by the use of a '-'. In  add
-ition  the  results  of any macro action will also be loaded in these
locations  and  the 'C' bit appropriatly set. Thus the programmer does 
not have to bother about registers as all register values are retained 
when these MACROS are used.
	The  parameter passing locations may be accessed seperatly and 
those loaded or used are given for each macro. All locations use 'CD.'
(COMMON DICTIONARY) for  the  first  three characters.  All parameters 
must be defined or an error will result.
 

.I COMMON DICTIONARY
.I CD.
.I CD.SRC
.I CD.DST
.I CD.CHR
.I CD.CNT
.I CD.RES
.I CD.POS
.I CD.KEY    
.I LABEL parameter
.I SOURCE parameter
.I DESTINATION parameter
.I CHARACTER parameter
.I COUNT parameter
.I POSITION parameter

    LABEL parameter 	   _	string label or register holding a 
				string address.
				(CD.SRC/CD.DST)

    SOURCE parameter 	   _	a source string defined the same as
				label.
				(CD.SRC)

    DESTINATION parameter  _ 	a destination string defined the
				same as label.
				(CD.DST)

    CHARACTER parameter    _	number, register or label defining
				an ascii character.
				(CD.CHR)

    COUNT parameter        _	a number, register or label holding
				a numeric count
				(CD.CNT)

    POSITION parameter     _	a number, register or label holding
				a number giving a character position
				within a string.(or table KEY).
				(CD.POS/CD.KEY)

	In  order  to obtain a parameter from the Common Dictionory a
dash  (-)  must be used for that parameter. No parameter must be left 
undefined or an error will result.
 
	The  table handling macros can be intermixed with the 'string
handling macros as they both use the 'COMMON DICTIONARY LOCATIONS'.

.F
 
.I TABLEBLOCK
	For setting up 'Table' areas (see 'Tableblock') then a common
area  calles 'TABLEBLOCK' must be defined once and then each seperate
table.

.I TABLEBLOCK (Example)
Example:-
=======
 
TABLEBLOCK
;
DSPMEM::	TABLE	6000.
FPLANS::	TABLE	2000.
;
 
	The above example defines 2 tables, one of 6000 bytes and one
of 2000  bytes. In program each table is set up by putting the 'Table
Label' in the 'TABLE' parameter location.
 
.I TABLEBLOCK (size)
	In order to calculate the 'TABLE SIZE' required in bytes,take
the average  string  length  (in bytes) add 12 and multiply it by the
maximum number of strings.

	DEFAULTS ('-')			ALTERNATIVES
	==============			============
 
	KEY		CD.KEY		'Location'
					'Register' (holding the address)
					FIRST
					PREVIOUS
					PRESENT
					NEXT
					LAST
					ALL	(TKILL)
 
	DESTINATION	CD.DST		'label'
					'Register' (holding the address)

	SOURCE		CD.SRC		NULSTG	(TINSERT)
					'label'
					'Register' (holding the address)

	LENGTH		CD.CNT		'Location'
					'Register' 

.T TABLE MACROS

.I TLOOKUP
TLOOKUP	KEY,TABLE
=======
 
	This  macro looks up a string in the table defined and returns 
its address.
 
	ON SUCCESS	(string located)
 
		CD.KEY		Holds the key.
		CD.SRC		Holds the table string address
 
	ON ERROR	(string not found)
	
		CD.KEY		Holds the key.
 
.I TREAD
TREAD	DESTINATION,KEY,TABLE
=====
 
	This  macro  looks up a string with the given key in the table
and if successful it copies the string to the destination given.
 
	ON SUCCESS
 
		CD.KEY		Holds the key.
		CD.SRC		Holds the table string address.
		CD.DST		Holds the destination string address.
 
.I TWRITE
TWRITE	SOURCE,KEY,TABLE
======
 
	This  macro looks up a string with the given key in the table
and  if  successful it writes the source string into it, any previous
onformation being overwritten. If the string will not fit, it will be
truncated.
 
	ON SUCCESS
 
		CD.KEY		Holds the key.
		CD.SRC		Holds the input string address.
		CD.DST		Holds the table string address.
 
.I TKILL
TKILL	KEY,TABLE
=====
 
	This  macro deletes a string with a given key from the table.
If  'ALL'  is  in  place  of 'KEY' then it performs as TCLOSE and re-
initialises the table.
 
	ON SUCCESS		(String deleted.)
 
	ON ERROR		(String not found.)

.F 
.I TCREATE
TCREATE	LENGTH,KEY,TABLE
=======
 
	This  macro  creates  a  string with the given key within the 
table. 'LENGTH' is the maximum number of bytes required.
 
	ON SUCCESS
 
		CD.KEY		Holds the key.
		CD.SRC		Holds the table string address.
		CD.CNT		Holds the length.
 
	ON ERROR		(String already created.)
 
		CD.KEY		Holds the key.
		CD.SRC		Holds the table string address.
		CD.CNT		Holds the length.
 
.I TPROTECT 
TPROTECT KEY,TABLE
========
 
	This  macro if successful marks a string as DELETE/WRITE pro-
tected,  except for 'TCLOSE' which operated regardless of protection. 
 
	ON SUCCESS
 
		CD.KEY		Holds the key.
		CD.SRC		Holds the table string address.
 
	ON ERROR
 
		CD.KEY		Holds the key.
 
.I TUNPROTECT 
TUNPROTECT KEY,TABLE
==========
 
	This  macro if successful marks a string as unprotected. 
 
	ON SUCCESS
 
		CD.KEY		Holds the key.
		CD.SRC		Holds the table string address.
 
	ON ERROR
 
		CD.KEY		Holds the key.
 
.T SEQUENCED TABLE MACROS.
 
.I SEQUENCED TABLE ACCESS.
SEQUENCED TABLE ACCESS.
=======================
 
	The  following  macros maintain the keys in a sequenced order
starting at '1'. Re-sequencing of the keys occurs automatically which
makes them very useful for sorting strings.
 
.I TINSERT
TINSERT	SOURCE,LENGTH.KEY,TABLE
=======
 
	This  macro  allows  for the insertion of a string within the
table.  If we have a string whose keys run from 1 to 5 and we wish to
insert  a string whose key is 4 the keys to strings 1 to 3 remain the
same, string 5 becomes string 6 and string 4 becomes string 5 and the
new  string is inserted. If a string with the same key does not exist 
then  it  is created and then all keys are automatically re-sequenced
from 1.  'NULSTG' is used in place of the source then an empty string
will be created of the length specified.
 
.I NULSTG
	CD.KEY		Holds the key.
	CD.SRC		Holds the source string address. (if defined)
	CD.DST		Holds the inserted table string address.
	CD.CNT		Holds the maximum length of the string.
 
.I TREMOVE
TREMOVE	KEY,TABLE
=======
 
	This  macro  is  the same as 'TKILL' except that the table is
automatically resequenced after the string has been removed.
 
	CD.KEY		Holds the key.
 
.I TCLOSE
TCLOSE	TABLE
======
 
	This macro, regardless of the state of protection, re-
initialises a string. (deletes all entries)


.C Module Reference Tables.
.T MACRO modules

MODULE		contents		MODULE		contents
------		--------		------		--------

MG0	common macros only		MG01	R$ADDRESS
MG02	V$IO				MG03	V$INPUT
MG04	V$TX				MG05	R$SWAP
MG06	R$BITSET			MG07	R$BITPOS
MG08	V$ON	V$OFF			MG09	V$TXA
MG10	V$TXB				MG11	V$TXC
MG12	V$TXD				MG13	R$PARITY

MGD1	VDU common data areas		MGD2	VDU fixed data areas


MR01	R$BDEC				MR02	R$BOCT
MR03	R$BINB	R$DECB	R$HEXB	R$OCTB
	R$STRB				MR04	R$DELETE
MR05	R$POS3	R$POS2	R$POS		MR06	R$WEDGE
MR07	R$REVERSE			MR08	R$SHRE
MR09	R$SHLE				MR10	R$SHR	R$SHL
MR11	R$COMPARE			MR12	R$ADDTO
MR13	R$CLEAR				MR14	R$SEG
MR15	R$BR50				MR16
MR17	R$R50L				MR18	R$BASC
MR19	R$UIC				MR20	R$CLK	R$DAT
MR21	R$NTDY				MR22
MR23	R$QADD				MR24	R$QREM
MR25	R$QTST				MR26	R$BHEX
MR27	R$BBIN				MR28

MRC01	R$GETC				MRC02	R$MODC
MRC03	R$ADDC				MRC04	R$INSC
MRC05	R$DELC				MRC06	R$POSC	R$POSS
MRC07	R$MOVC				MRC08	R$CR50	R$R50C
MRC09	R$CMPC				MRC10	R$LCUC
MRC11	R$UCLC				MRC12
MRC13					MRC14
MRC15					MRC16


.F




MODULE		contents		MODULE		contents
------		--------		------		--------


MN01	N$DIAG				MN02	N$DUMP
MN03	N$INIT				MN04	N$SEEK
MN05	N$FIRST	N$LAST	N$PRESENT
MN05	N$SETUP				MN06	N$DELETE
MN07	N$NEXT				MN08	N$PROTECT	N$UNPROTECT
MN09	N$CREATE			MN10	N$SQUEEZE
MN11					MN12
MN13					MN14
 
 
MT01	T$DIAG				MN02	T$DUMP
MT03	T$INIT				MT04	T$SEEK
MT05	T$FIRST	T$LAST	T$PRESENT	
MT05	T$SETUP				MT06	T$DELETE  T$DKEY
MT07	T$NEXT	T$PREVIOUS		MT08	T$PROTECT T$UNPROTECT
MT09	T$CREATE T$SCHK	T$IKEY		MT10	T$SORT	  T$SQUEEZE


MF01	F$NAME				MF02	F$GETR
MF03	F$SHUT				MF04	F$PUTR
MF05	F$OPEN				MF06	F$SETUP
MF07	F$DIAG				MF08	F$SWITCH

MFD1	FCS COMMON DATA AREAS

MX01	STRING	PRESET	RESERVE
	MOVTEXT	QUEBUF			MX02	MESSAGE	MFUNCTION REPORT
MX03	NODEBLOCK	TABLEBLOCK	MX04	SAVE	UNSAVE
MX05	FLODEF	BITDEF	FNAMDEF	FILEFUN	MX06	SETERROR	SETSUCCESS
						EXITERROR	EXITSUCCESS
						IFERROR		IFSUCCESS
MX07	INITIALISE	TERMINATE	MX08	REPCHAR	PTEXT	PRINT
						PRINTA	PRINTC	PRINTD
						PRINTO	PRINTR
MX09	NEWLINE	SPACES			MX10	INPUT	INPUTNE
MX11	DUMP	DEBUG			MX12	DMPOFF	DMPSYM	DMPBIT
MX13	TABMAC (ALL)			MX14	SUPERMAC MACROS (ALL)
MX15	TABLE ACCESS MACROS		MX16	STRING MACROS AND GENMAC
MX17	SERIAL I/O MACRO		MX18	RT-11 MACROS (ALL)

.F


MODULE		contents		MODULE		contents
------		--------		------		--------

MMC01	M$CHECK


MCC01	C$DECINT


MC01	LEN				MC02	COMPARE
MC03	SEG
MC03A	LSEG				MC04	COPY
MC05	POS	LPOS			MC06
MC07	VDU				MC08
MC09					MC10	VAL
MC11					MC12
MC13					MC14
MC15					MC16	ADDTO
MC17					MC18
MC19					MC20
MC21	CLEAR

MMTD1	MAGTAPE COMMON DATA AREAS

MMT01	MT$EXIT				MMT02	MT$GET
MMT03	MT$SHUT				MMT04	MT$PUT
MMT05	MT$OPEN				MMT06	MT$FIND
MMT07	MT$BACK				MMT08	MT$REWIND
MMT09	MT$MARK				MMT10



.T CORAL Procedures called by section. 

REF		NAME		PROCEDURES CALLED
L01		LEN
L02		COMPARE		L01
L03		SEG		L01
L03A		LSEG		L01
L04		COPY		L01
L05		POS		L01	L02
L05A		LPOS		L01 	L02
L06		ADD		L01	L04
L07		VDU		L03A	L05A	L07A	L10	QIO	WAITEF
L07A		VDUOUT		L05A	L7B	L7G
L07B		VDUTX		L07G	Q10	WAITEF
L07C		RTO4		L03A	L05A	L07E	L10	QIO	WAITEF
				DEFLUN RELEASE
L07D		VDUSP		L03A	L05A	L07A	L07G	L10	QIO
				QIOAST	WAITEF	[VDUAST]
L07E		RTOUT		L05A	L07B
L07G		VDULUN		L07L	DEFLUN	RELEASE
		VDUFLG
L07L		LUNTEST
		LUNBOOK
		LUNFREE
L07S		SYS		QIO	VDUFLG	VDULUN	WAITEF
L08		STR		FCHAR	AINT
L09		ASC
L10		VAL		L01
L11		FILEIN		READREC
L11A		LFILEIN		READREC
L12		FILEOUT		L01	WRITEREC
L13		CHR
L14		QUOTE
L15		FILE		L01	L03A	L04	L05A	L07	L08
				L10	L16
				DEFLUN	CREATE	DELETE	OPEN	CLOSE	RELEASE
L16		ADD TO		L01
L17		A SPACE
L18		A TAB
L19		FILL		L01	L03A	L16
L20		CRLF
L21		CLEAR
L22		DAT		L04	L08	L16	L17	GETTIM
L23		CLK		L04	L08	L16	L17	GETTIM
L24		TABLOAD		L01
L25		RADASC
L26		ASCRAD
L27		TERMINAL	L05A
L28		COMSORT		L01
L29		CHARVER		L01
L30		MULS		L16
L31		CVT		L01	L03A	L04	L05A	L06	L10	L13
				L16	L21	L29	L30	L32	AINT
L32		SRP		L01	L03A	L05A	L16	L21
L33		CYPHER		L01	L03A	L04	L05A	L16	L21
.T CORAL procedures used by section
 
REF		NAME			USED BY PROCEDURE
L01		LEN		L02	L03	L03A	L04	L05	L05A	L06
				L10	L12	L16	L19	L24	L28	L29
				L31	L32	L33
L02		COMPARE		L05
L03		SEG
L03A		LSEG		L07	L07D	L19	L31	L32	L33
L04		COPY		L06	L15	L22	L23	L31	L33
L05		POS
L05A		LPOS		L07	L07A	L07D	L15	L27	L31
				L32	L33
L06		ADD		L31
L07		VDU		L15
L07A		VDUOUT		L07	L07D
L07B		VDUTX		L07A	L07E
L07C		RTO4
L07D		VDUSP
L07E		RTOUT		L07C
L07G		VDUFLG		L07A	L07B	L07D
		VDULUN
L07L		LUNBOOK		L07G
		LUNFREE
		LUNTEST
L07S		SYS
L08		STR		L15	L22	L23
L09		ASC
L10		VAL		L07	L07D	L31
L11		FILEIN
L12		FILEOUT
L13		CHR
L14		QUOTE
L15		FILE
L16		ADD TO		L15	L19	L22	L23	L30	L31
				L32	L33
L17		A SPACE		L22	L23
L18		A TAB
L19		FILL
L20		CRLF
L21		CLEAR		L31	L32	L33
L22		DAT
L23		CLK
L24		TAB LOAD
L25		RADASC
L26		ASCRAD
L27		TERMINAL
L28		COMSORT
L29		CHARVER		L31
L30		MULS		L31
L31		CVT
L32		SRP		L31
L33		CYPHER
 
 
	NOTE:-  STRING DATA AREA PROCEDURES USED BY USERS PROGRAMS ONLY.
.T MACRO symbol reference tables
 
MODULE	<-------GLOBAL------->	<---------------CALLED/USED----------------->
NAME	SYMBOL	SYMBOL	SYMBOL			  SYMBOLS
====	======	======	======			  =======

MGD1	R$ADDRESS
MGD2	V$IO			R$POS2	V$S20	V$00	V$09	V$08
				V$TX	V$LST	V$S16	V$STR	V$FUN
				V$S12	V$S13	V$CNT	V$S14	V$S15
				R$POS3	C$DECINT V$S17 V$LUN	V$EFN
				V$ISB	V$S18	V$01
MG03	V$INPUT			V$FUN	V$ON	V$LUN	V$EFN
				V$ISB	V$STR	V$CNT	V$TX
MG04	V$TX			R$ADDRESS	V$ON	V$LUN	V$EFN
MG05	R$SWAP
MG06	R$BITSET
MG07	R$BITPOS
MG08	V$ON	V$OFF		V$STA	V$LUN
MG09	V$TXA			V$TX
MG10	V$TXB			V$TX
MG11	V$TXC			V$TX
MG12	V$TXD			V$TX
MG13	R$PARITY
MGD1	V$STA	V$LUN	V$EFN		
	V$CNT	V$FUN	V$ISB
	V$STR
MGD2	V$LST	V$00	V$01 
	V$02	V$03
	V$04	V$05	V$06
	V$07	V$08	V$09
	V$S01	V$S02	V$S03
	V$S04	V$S05	V$S06
	V$S07	V$S08	V$S09
	V$S10	V$S11	V$S12
	V$S13	V$S14	V$S15
	V$S16	V$S17	V$S18
	V$S19	V$S20
MF01	F$NAME			F$DFNB	R$POSS	F$MAXC	F$FLG1	R$RSOL	F$FLG0
				F$FLGO	R$CR50
MF02	F$GETR			F$FDB	.GET
MF03	F$SHUT			F$FDB	.CLOSE
MF04	F$PUTR			F$FDB	.PUT
MF05	F$OPEN			F$FDB	.OPEN
MF06	F$SETUP			F$FDB	F$LUN	F$TYPE	F$SIZE

.F
 
MODULE	<-------GLOBAL------->	<---------------CALLED/USED----------------->
NAME	SYMBOL	SYMBOL	SYMBOL			  SYMBOLS
====	======	======	======			  =======

MMTD1	MT$UNIT	MT$LUN	MT$EFN
	MT$DSW	MT$ERR	MT$ISB

MMT1	MT$EXIT			$DSW	MT$DSW	MT$ISB
MMT2	MT$GET			QIOW$S	IO.RLB	MT$LUN	MT$EFN	MT$ISB	MT$EXIT
MMT3	MT$SHUT			ALUN$S	$DSW	MT$DSW
MMT4	MT$PUT			QIOW$S	IO.WLB	MT$LUN	MT$EFN	MT$ISB	MT$EXIT
MMT5	MT$OPEN			ALUN$S	MT$LUN	MT$UNIT	$DSW	MT$DSW
MMT6	MT$FIND			QIOW$S	IO.SPF	MT$LUN	MT$EFN	MT$ISB	MT$EXIT
MMT7	MT$BACK			QIOW$S	IO.SPB	MT$LUN	MT$EFN	MT$ISB	MT$EXIT
MMT8	MT$REWIND		QIOW$S	IO.RWD	MT$LUN	MT$EFN	MT$ISB	MT$EXIT
MMT9	MT$MARK			QIOW$S	IO.EOF	MT$LUN	MT$EFN	MT$ISB	MT$EXIT

.F
MODULE	<-------GLOBAL------->	<---------------CALLED/USED------------------>
NAME	SYMBOL	SYMBOL	SYMBOL			  SYMBOLS
====	======	======	======			  =======

MFD1	F$SIZE	F$TYPE	F$FLG0
	F$FLG1	F$MAXC	F$LUN
	F$USED	F$FDB	F$DFNB
	F$FDBS
MR01	R$BDEC			R$REVERSE
MR02	R$BOCT			R$REVERSE
MR03	R$OCTB	R$DECN	R$STRB	R$HEXB	R$BINB
MR04	R$DELETE
MR05	R$POS3	R$POS2	R$POS
MR06	R$WEDGE
MR07	R$REVERSE
MR08	R$SHRE
MR09	R$SHLE
MR10	R$SHR	R$SHL		R$SHRE	R$GETC	R$ADDC	R$MODC
MR11	R$COMPARE
MR12	R$ADDTO
MR13	R$CLEAR
MR14	R$SEG			R$GETC	R$ADDC
MR15	R$BR50			R$R50C
MR16
MR17	R$R50L			R$CR50
MR18	R$BASC
MR19	R$UIC			R$BOCT
MR20	R$DAT	R$CLK		R$BDEC
MR21	R$NTDY			R$DELC	R$SHL
MR22
MR23	R$QADD
MR24	R$QREMMR25	R$QTST
MR26	R$BHEX			R$REVERSE
MR27	R$BBIN			R$REVERSE

MRC01	R$GETC
MRC02	R$MODC
MRC03	R$ADDC
MRC04	R$INSC
MRC05	R$DELC
MRC06	R$POSC	R$POSS
MRC07	R$MOVC
MRC08	R$CR50	R$R50C		R$POSC	R$GETC
MRC09	R$CMPC		 	R$LCUC
MRC10	R$LCUC
MRC11	R$UCLC

.F 
 
MODULE	<-------GLOBAL------->	<---------------CALLED/USED----------------->
NAME	SYMBOL	SYMBOL	SYMBOL			  SYMBOLS
====	======	======	======			  =======

MCC1	C$DECINT
 
MC01	LEN			R$ADDRESS
MC02	COMPARE			R$ADDRESS 	R$COMPARE
MC03	SEG			R$ADDRESS
MC03A	LSEG			R$ADDRESS
MC04	COPY			R$ADDRESS	R$ADDTO
MC05	POS	LPOS		R$ADDRESS	R$POS3
MC07	VDU			R$ADDRESS	V$IO
MC10	VAL			R$ADDRESS	R$POS2	R$POS3	R$DECINT
MC16	ADDTO			R$ADDRESS	R$ADDTO
MC21	CLEAR			R$ADDRESS	R$CLEAR

.C Utility program	XY Plotter emulator.
.T Introduction
 
 
 
 
 
 
 
 
 
	This program emulates the following X Y PLOTTER procedures :-

	TXT	MOV	PLT	CIR	RED	BLK	ARC	ARR
	SQR	PLS	CRS	SIZE	NEWFRM

	The procedure parameters are passed in the following form :-
	Procedurename<delimiter>parameter<delimiter>.....

	The valid delimiters are a space, a comma, a semi-colen or
	a oblique stroke. (Note multiple delimiters are assumed to be
	a single delimiter)

	To use the emulator first construct a text file of the
	commands required. After the emulator has been run a file
	call PLOTXY.TMP will have been created which then can be
	submitted to the XY PLOTTER.


.C Utility program	Indexer program.
.T Introduction

 
 
 
 
 
 
 
 
 
	This program has been produced to enable a user to
produce a cross-referenced indexed manual with minimal effort.
This program will allow the user to control the position of
form feeds, to include a Volume title, Chapter titles and Topic
titles within each chapter, all these items are build into
precedding indexes heading the data they refer too. It is also
posible with this program to produce a Global index to item refered
to throughout the volume being produced, this index is sorted and
appended to the end of the volume with reference page numbers for
easy access. This program will start each page with a header
containing the page number and a tile. All line will be truncted
to 75 characters any remaining text will spill onto the next line.
This program uses the SORT-11 sort package.


.T Data structures
 
 
 
 
 
 
 
 
 
 
	All commands for the indexer program are preceded by a
single full stop followed by a control function character.
NOTE the full stop must be the very first character on the line.
ie. .T would produce an entry in the topic index.
	The commands that are allowed are :-
	.V <volume title>		This is normally the first
					entry in the data file
	.C <chapter title>		This enters the chapter title
					into volume index and starts a
					new chapter index and contents
					file
	.T <topic title>		The enters the title into the
					chapter index and forces a new
					page header.
	.I <global index item>		This enters the item into the
					global index file. NOTE no more
					than 40000 items are allowed in
					the Global index.
					NOTE index items truncated to 31
					characters
	.F				This command causes a new page
					header to be produced.
	.B				This command causes a page number
					to be reserved for future
					insertions so as not to effect
					the overall page numbering.
	.! <comment>			This command allows comments to
					inserted in the text be not output
					on the main file.

.C Utility program	Simple Upper/Lower case EDITOR
.T Commands

 
	When using the character editor a special option has been fitted
	into this program so as to allow you to monitor the possible
	commands allowed, when the message COMMAND > appears on the screen
	you may type the character Z. This character is not used as an
	editor command therfore the diognostic section will give you a
	summary of all the posible commands.
	The following character are the only ones that will perform a
	legal editing action :-
		A B C D E F H I L M N P R S T U
	All commands must be terminated by either a space or by pressing
	the return key.
	
	COMMAND				ACTION
	  A	    Append a series of characters to the end of the present
		    line. The (append) series of characters is terminated by
		    pressing the return key.
	  B	    Move the line pointer to the bottom of the text
		    being edited. This would be used when quick access
		    to the end of the edited text is required.
	  C	    This option would be selected when a mistake or
		    correction is required in a piece of text.
		    You may correct one or any number of characters on
		    the present line. If you wish to delete a character
		    or number of characters on the line, you would select
		    the characters for deletion and change then to
		    a void input.
		    Void input is an input containing no characters created
		    by pressing return key alone.
	  D	    Delete the present line of text and move the line
		    pointer to the next line and print that line.
	  E	    Exit from editor program ie used when you have finished
		    your editing job.
	  F	    One of the limitations of this editor is that you
		    cannot go back a line therfore the FRONT command
		    has been introduced to allow you to insert a line 
		    a line of text in front of the present line.
		    Note this action does not disturb the present line.
	  H	    This command is used in conjunction with the M command
		    by inserting all information held in the move file
		    below the present line. Note H stands for insert HERE.
	  I	    This command allows you to insert a new line of text
		    below the present line.

.F

	COMMAND				ACTION
	  L	    This command allows you to locate a character or
		    group of characters in any line following the present
		    line.
		    If the location is succesful then the line the
		    characters have been found on becomes the present line.
	  M	    This option allows you to move lines of text to
		    other locations within your file being edited.
		    Note the move file may contain any number of lines
		    and they are held in the order they are entered.
		    Please note that the H command does not remove one
		    line at a time but all lines that have been put in
		    the move file.
	  N	    Move line pointer to the next line. This option
		    may also be performed by pressing the return key
		    without any characters being typed.
		    Note the new line will be print on the VDU when this
		    operation has been performed.
	  P	    This command allows you see what is on the present
		    line by printing then present line.
	  R	    This command allows you to replace the present line
		    with the text you will be requested to type in.
	  S	    This command allows you show the whole contents of
		    the file/section you are editing.
		    When this operation is complete the line pointer will
		    be at the start of the file/section.
	  T	    This command allow you to reposition the line pointer
		    back to the start of the file/section being edited.
		    ie back to TOP of the buffer.
	  U	    This command allows you insert a number of line of
		    text into a file/section, you can contine inserting
		    line of text UNTIL the return key is pressed alone
	
	
.C Utility program	Tidy and Document program.
.T General information.
	
	
	
	
GENERAL INFORMATION ON EXPAND AND TIDY LAYOUT AND DOCUMENT PROGRAMS
-------------------------------------------------------------------
 
 
ACTION REQUIRED TO USE THIS PACKAGE.
ENTER AFTER PDS> THE FOLLOWING INFORMATION AS SO :-
 
PDS> TDY
     ---
 
Now we have the option of selecting the
tdy program or document program, when the
following message is output.
 
WHICH PROGRAM DO YOU WISH TO RUN OPTIONS
AVAILABLE 'EXPAND AND TIDY' OR 'DOCUMENT'
PLEASE REPLY TDY/DOC ?
 
		'If you reply TDY continue as below'
		'Otherwise follow DOC instructions'
INDENTS AFTER BEGINS YES/NO ?
 
		(This message allows you to specify where the
		(text after will start ie. 'BEGIN'
		(			       TEXT DATA
		(is an example of indents after begins
		(if the answer was no to this question then the
		(output would be 'BEGIN'
		(		 TEXT DATA etc.
 
IS A DOCUMENTATION COPY TO LINEPRINTER WANTED YES/NO ?
 
		(If reply is YES then a copy of program is sent
		(lineprinter with each line numbered
 
EXPANSIONS YES/NO ?
 
		(The reply to this question determines if
		(the expansions are to be used
MONITOR YES/NO ?
 
		(This facility allows the user to monitor the
		(progress of program and will assist if any error
		(reports are generated.
 
.F
INPUT FILE  ?
OUTPUT FILE ?
		(Default options for input and output is your
		(own UIC and .COR. ie. an input of TDY is assumed
		(to be TDY.COR.  If the monitor is not being used
		(the next message output will be
 
PLEASE WAIT
 
		(At end of program the following message will
		(be output
 
DO YOU WISH TO RERUN PROGRAM
PLEASE REPLY         YES/NO ?
 
		(If the reply is YES the program will restart
		(if the reply is SAME the program will restart
		(at message 'INPUT FILE'
		(If the reply is NO the program will output the
		(following message and return you to PDS>
 
GOODBYE
.T FACILITIES OF THE TIDY LAYOUT PROGRAM
 
 
 
FACILITIES OF THE EXPAND TIDY AND LAYOUT PROGRAM
 
(1)	The program will layout coral source code/s.
	procedures will be preceded by two newlines, comments
	will be preceded by one newline
	Begins and ends will be aligned and will be indented
	across the page as they are nested within the program
	and will be started on a newline. If there is an excess of
	BEGINS or ENDS an error message will be generated to
	inform the user.

(2)	Special action words
	'CHANGE' will cause the program to request a new output file
		 for the output coral code to be sent to
	'IGNORE' will cause the program to stop transferring
		 coral code to the output file
	'RESTART'will cause the program to resume transferring
		 the coral code to the output file
 
(3)	Expansion facility
	When the expansion facility is required an abreviated form 
	of CORAL(66) may be presented to this program which will be
	then expanded into a coral source code suitable for the 
	PDP11/70 coral compiler.
 
(4)	General information
	The program will always remove any ASCII character with a code
	value of less than 32 ie. non printing characters hence
	hopefully reducing compiling errors
 
(5)	The following language words are checked for validity
	AND	ABSOLUTE	ANSWER	ARRAY	BEGIN	BITS	BYTE
	CODE	COMMENT		COMMON	CORAL	DEFINE	DELETE	DIFFER
	DO	DOUBLE  END	ELSE	EXTERNAL	ENTER	FIXED
	FINISH	FLOATING	FOR	GOTO	IF	INCLUDE	INTEGER
	LABEL	LIBRARY LIST	LITERAL	LOCATION	NOLIST	OCTAL
	OVERLAY	OR	MASK	PRESET	PROCEDURE	RECURSIVE
	RAD50	STEP	SEGMENT	SWITCH	TABLE	TEST	THEN	UNION
	UNSIGNED UNTIL	WHILE	WITH
	
.F
(6)	Error reporting system
	If the program suspects that a language word is in error
	the program allows the option of changing the source text
	directly from the keyboard and inserting the new data in the
	output file.  Note this is a very limited checking procedure
	and therefore it is possible for genuine error to bypass this
	error checking section
	Other checks that are performed are a count of all () [] brackets
	ensuring that they all match up.  There is also a count of 'GOTO'
	statements though this is for the users benefit only.
	Other checks performed are :-
		Matching of 'FOR' 'DO'       language words
		Matching of 'OVERLAY''WITH'  language words.
		Matching of 'IF' 'THEN'      language words.
		Matching of 'BEGIN' 'END'    language words.
	and syntax of 'LITERAL' CONSTANTS.
	If this program suspects it has found a error you will be given
	the option to destroy the output file this sometimes can avoid you
	getting into a mess with version numbers.
	Note: If the batch command option is selected and errors found the
	output file is deleted automatically as you may have decided
	to run this program without wishing to watch the display.
 
(7)	Highlight mode
	Should you wish to identify special characters or groups of characters
	eg. TIDEF TNEW etc.
	When processing your program/s if you have selected the documentation
	copy option you will be allowed to select the highlight mode.
	If you select the highlight mode every time the program detects a
	occurrence of your identify character/s these character/s will be
	underlined on the documentation copy which is sent to the lineprinter.
	If you have selected to use highlights the message identify > will
	come on your terminal.  You can select to a maximum of 5 character
	groups of maximum 50 characters to identify.
		Note: If you required only two character groups to identify
	the remaining three identify groups would be terminated by
	pressing the return key these would then become void fields.
 
(8)	Command batch controller
	If you have many programs which require tidying up then when
	the message INPUT FILE? appears you can submit a command file
	by preceding the command file name with an @ character.
		Note: When the @ character is detected the command
	file default option is assumed ie.  .CMD and your own UIC
	See Topic for special file control characters.
		Note: Filenames read by the command controller are assumed to
	be your own UIC and .cor as this program is only suitable for coral
	programs.
 
.T SINGLE EXPANSIONS
 
 
SINGLE EXPANSIONS DATA GROUP
 
'A'	CONVERTS TO	'AND'
'ABS'	CONVERTS TO	'ABSOLUTE'
'ANS'	CONVERTS TO	'ANSWER'
'AR'	CONVERTS TO	'ARRAY'
'B'	CONVERTS TO	'BEGIN'
'BY'	CONVERTS TO	'BYTE'	
'BEG'	CONVERTS TO	'BEGIN'
'COM'	CONVERTS TO	'COMMENT'
'CMN'	CONVERTS TO	'COMMON'
'COR'	CONVERTS TO	'CORAL'
'D'	CONVERTS TO	'DO'
'DEF'	CONVERTS TO 	'DEFINE'
'DEL'	CONVERTS TO	'DELETE'
'E'	CONVERTS TO	'END'
'EL'	CONVERTS TO	'ELSE'
'EX'	CONVERTS TO	'EXTERNAL'
'ENT'	CONVERTS TO	'ENTER'
'F'	CONVERTS TO	'FOR'
'FIN'	CONVERTS TO	'FINISH'
'FLO'	CONVERTS TO	'FLOATING'
'G'	CONVERTS TO	'GOTO'
'I'	CONVERTS TO	'INTEGER'
'INC'	CONVERTS TO	'INCLUDE'
'L'	CONVERTS TO	'LONG'
'INT'	CONVERTS TO	'INTEGER'
'LAB'	CONVERTS TO	'LABEL'
'LIB'	CONVERTS TO 	'LIBRARY'
'LIT'	CONVERTS TO 	'LITERAL'
'LOC'	CONVERTS TO	'LOCATION'
'O'	CONVERTS TO	'OCTAL'
'OVR'	CONVERTS TO 	'OVERLAY'
'M'	CONVERTS TO	'MASK'
'P'	CONVERTS TO	'PROCEDURE'
'PR'	CONVERTS TO	'PRESET'
'PROC'	CONVERTS TO	'PROCEDURE'
'REC'	CONVERTS TO	'RECURSIVE'
'S'	CONVERTS TO	'STEP'
'SEG'	CONVERTS TO	'SEGMENT'
'SW'	CONVERTS TO	'SWITCH'
'T'	CONVERTS TO	'THEN'
'TE'	CONVERTS TO	'TEST'
'TAB'	CONVERTS TO 	'TABLE'
'VAL'	CONVERTS TO	'VALUE'
'U'	CONVERTS TO	'UNTIL'
'W'	CONVERTS TO	'WITH'
'WI'	CONVERTS TO 	'WHILE'
 
.T  MULTIPLE EXPANSIONS	
 
 
 
 
 
 
 
 
 
 
MULTIPLE EXPANSION DATA GROUP
 
'BA'	CONVERTS TO	'BYTE''ARRAY'
'DA'	CONVERTS TO	'DOUBLE''ARRAY'
'FA'	CONVERTS TO	'FLOATING''ARRAY'
'LA'	CONVERTS TO	'LONG''ARRAY'
'IA'	CONVERTS TO	'INTEGER''ARRAY'
'LB'	CONVERTS TO	'LOCATION''BYTE'
'LD'	CONVERTS TO	'LOCATION''DOUBLE'
'LF'	CONVERTS TO 	'LOCATION''FLOATING'
'LI'	CONVERTS TO	'LOCATION''INTEGER'
'LL'	CONVERTS TO	'LOCATION''LONG'
'VB'	CONVERTS TO	'VALUE''BYTE'
'VD'	CONVERTS TO	'VALUE''DOUBLE'
'VF'	CONVERTS TO 	'VALUE''FLOATING'
'VL'	CONVERTS TO	'VALUE''LONG'
'VI'	CONVERTS TO	'VALUE''INTEGER'
'BP'	CONVERTS TO	'BYTE''PROCEDURE'
'DP'	CONVERTS TO 	'DOUBLE''PROCEDURE'
'FP'	CONVERTS TO	'FLOATING''PROCEDURE'
'IP'	CONVERTS TO	'INTEGER''PROCEDURE'
'LP'	CONVERTS TO	'LONG''PROCEDURE'
 
.T Document program general information.
 
 
 
 
 
 
 
 
  
GENERAL INFORMATION ON DOCUMENT PROGRAM
---------------------------------------
 
 
DOCUMENTATION COPY PROGRAM
--------------------------
 
DO YOU WISH TO USE IDENTIFY HIGHLIGHT MODE YES/NO ?
 
		(If you reply YES you may now select up to five
		(character strings which you wish to identify.  After each
		(line is printed out, if the characters you have selected
		(occur in the line they will be underlined on the output
		(hard copy.
 
SOURCE FILE ?
 
		(At this point you type in the name of the file
		(you wish to be presented to the lineprinter
		(the default options are
		(Your UIC and the extension .COR
 
DO YOU WISH TO RERUN THIS PROGRAM
PLEASE REPLY              YES/NO ?
	
 		(If you reply YES the program will restart
		(If you reply SAME program will restart
		(as message SOURCE FILE?
		(YES and NO reply may be shortened to Y or N
		(but for YES YE is not acceptable.
		(If your reply is NO or N the program returns
		(you back to PDS.
 
.T Facilities of document program.
 
 
 
 
 
 
 
 
 
 
 
FACILITIES OF DOCUMENT PROGRAM
 
 
(1)	This program presents to the lineprinter a header which will tell you
	which file has been processed the time of day and the date and a note
	that the documentation program presented the data.
 
(2)	This program has the option of numbering each line of data as so:-
	  EDITOR PAGE NUMBER	LINE IN PAGE	SEQUENTIAL LINE NUMBER COUNT
	If this option is not required precede the source filename with
	a minus		eg.	-DOC
	When this option is selected 8 spaces will precede each line of data.
 
(3)	When a number of files are required for printing you can present a
	batch command source to this program in the following manner:-
	   SOURCE FILE?   @MANYFILES.CMD
	The program will now scan through the file manyfiles.cmd processing
	Each file with a new header.
	  Note:  .CMD is assumed when first character is @ and your own UIC.
	structure of command file is:-
	  (MINUS OPTION)(FILENAME .COR AND OWN UIC STILL ASSUMED IF MISSING)
	eg.
	  -DOC.CMD
	  DOC
	  TDY
	  -TDY.CMD
	Note:  No terminator required on command file
	When all files processed program will check if any files
	to be processed.
 
.T common information to both TIDY and DOCUMENT programs
 
 
 
 
 
 
 
 
 
  
COMMON INFORMATION
-------------------
 
        FILE CONTROL CODES.
 
	If a filename is preceded by a * character the file is assumed to be
	a void file and the file is not processed.  If a filename is preceded
	by a - character the file is not modified but if lineprinter is
	selected it is copied out to lineprinter through the Document
	program without line numbering facility.
	If a filename is preceded by a # character if you are using the
	document program the # is ignored.  If you are using the
	TDY program comments are left in the form you typed them
	in ie.  # = don't format comments.
 
 
 
		
.C GENERAL INFORMATION AND REVISION LIST
.T GENERAL INFORMATION
.I CORAL STRINGS

 
			CHARACTER STRINGS
			-----------------
 
	STANDARD FORM OF PROCEDURE STRINGS
				BYTES 0,1	STRING BUFFER LENGTH
				BYTES 2,3	NUMBER OF CHARACTERS IN STRING
				BYTES 4,+	STORED CHARACTERS
	STRING ADDRESS RELATED TO BYTE [2]


	STANDARD FORM OF CORAL STRING
				BYTES 0,1	NUMBER OF CHARACTERS IN STRING
				BYTES 2,+	STORED CHARACTERS
	STRING ADDRESS RELATED TO BYTE [0]
 
 
	THE FOLLOWING PROCEDURE STRINGS ARE AVAILABLE FOR CORAL.
		STRING NAME		MAX LENGTH
		AS			256
		BS			256
			UNTIL
		YS		  	256
		ZS			256
		BIGS			1996
 
 
.I CORAL MACROS
.I CORAL INTEGERS
.I CORAL FLOATING REGISTERS 
 
 
		INTEGER AND FLOATING REGISTERS FOR GENERAL USE
		----------------------------------------------
 
	THE MACRO (INTEGER REGISTERS)  WILL DECLARE 26 INTEGERS NAMED A TO Z.
	THE MACRO (FLOATING REGISTERS) WILL DECLARE 26 FLOATING LOCATIONS
	NAMED FA TO FZ.
 
 





			AUTHORS
			=======

J. S. Clifton.				R. J. Spriggs.
13th May 1982				3rd September 1981
Telephone Christchurch 472352		Telephone Christchurh 472208




.T REVISION LIST
.I R$POS
.I R$COMPARE

			Revision list
			-------------
Date		Area			Remarks
----		----			-------
22/10/81	R$POS R$COMPARE		Enable upper/lower case matching
22/10/81	Cross reference		Insertion of macro symbol
					reference table
13/12/81	Device control		New section for device routines.
13/12/81	Table routines		New section Tables similar to Nodes.
13/12/81	Queue routines		New section Queue processing routines.
13/12/81	Macros			Usage description appended.
22/04/82	String conversions	More routines added
11/05/82	All			Manual reformated for index program
					utility programs incorporated.
13/05/82	Supermac and Tabmac	New Sections.
25/06/82	String macros		New Sections.
27/10/82	Configuration macros	Macros for setting configuration
					definitions and declarations.
05/11/82	Alone device macros	Stand alone Device/terminal Handler.
05/11/82	Table Macros		New section - Table accessing Macros.
 
 
 

          ********************DM0:[312,315]README.1ST;1********************
          ********************DM0:[312,315]README.1ST;1********************

	[312,315] README.1ST
	FALL 1982 COLLECTION

	The following new or revised programs await your delectation:
BIGTPC   .MAC	-	The standard RSX SIG format independent tape
		copy utility. An assembly conditional $VAX will, if
		defined, allow a version to be built which will handle
		buffers up to 11000. bytes, large enough for VMS
		backup tapes (and of course BRU or whatever, or UNIX dd
		standard format... or anything else desired.) This version
		is otherwise like the one on S82. It can be run in
		compatibility mode on VMS V2.5 or VMS V3 and runs faster
		there than most native mode utilities.


DDTBLD   .CMD	-	The latest and greatest DDT. This version has had
		some more work with the I / D space option of RSX11M+ V2
		and is smoother in operation and has some minor bugs fixed.
		Also, it allows register sets to work from a second task;
		the old version did not (BUG). This increases the kernel
		a few words in the case of I/D space separation, but not
		otherwise. DDTINTRO.DOC has also had some updates to reflect
		the I/D space functionality.
DDTINTRO .DOC
DDTKNL   .MAC
DDTMU    .MAC
DDT22    .MAC


FPEM     .MAC	-	The famous Floating Point Emulator for RSX11M. I have
		added support for RSX11M+ in this version and also added some
		logic for RSX11M V4 to let it work with headers in new locat-
		ions. The test site has not told me how it works in M+ as yet
		though I believe it will work correctly. This version needs
		no system generation (the exec must NOT think there's any
		floating point). See the initial part of the source for
		assembly conditionals to set for M+ or RSX V4 operation.
		Assemble and build as any /PR:5 task and link with RSX11M.STB
		and run in its own partition (or noncheckpointable, non-
		shuffleable in GEN). If it shuffles, the system crashes!
		To use with F4P or F77 include F4PEIS in your OTS (replace
		it into your library). This was developed from the Los
		Alamos floating point emulator which was a great start but
		didn't work. This does. Under RSX11M+ V2 I have not tested
		this version, though I hope it will work. Under M V4 it will
		work. Note however that it grabs and does not return some pool
		when run, so only fix it, and run it in your system's
		startup.cmd file. Unstopping it will get it to replace the
		system's vectors and exit.


GHASP    .FTN	-	A Generalized Histogram and Scatter Plot routine for
		ordinary printers. The program was submitted a few years
		ago but the source now contains documentation on use. Also
		runs well on VAX.


RECOVER  .MAC	-	The version of Ray French's file recovery program
		from the "Reese's Pieces" tape of Frank Borger. Handles
		multiheader files, works well on RSX. No RSX installation
		should be without it. Use it when your long-running task
		aborts with a 20000 block output file that you want to
		recover up to the point of failure...


TECEDT   .DOC	-	This is a TECO macro that runs (RSX or VMS) in TECO
		to emulate EDT V2. I have cleaned up the draw and overprint
		modes (which EDT lacks) and added text justification. Note
		that the ^W key is used to set width (a la straight TECO)
		for justification. This makes it able to do some crude
		word processing for those with time but not much money. The
		TECO.INI here allows TEC/ED file to load [1,1]EDT.TEC
		or TEC/VT to load [1,1]VTEDIT.TEC. The only glitch in it
		that I've seen is that to create a file I need to say
		file=NL:, and TEC/ED all by itself will not work; it requires
		a file (or an output=input). Using this macro, one need
		not have VTEDIT.TEC in each UIC to avoid having terminals
		set to VT52 mode, and it makes using the EDT emulator
		easy. Note that TECO.INI seems not to run well on VMS;
		I haven't investigated.
TECEDT   .HLP
TECEDT   .TEC
TECEDT   .TES
TECO     .INI


BLDTRUNC .CMD	-	Truncate will truncate all files needing to be
		truncated but not alter any revision dates. This version
		adds 2 switches to enable listings of errors or
		summaries of what it did (defaults to a quiet truncate)
		and can execute a canned command if scheduled. At our
		site it does a global truncate every 3 hours, started
		up by STARTUP.CMD. It must have a terminal set with
		COLOG to run; if CO: is redirected to TT0:, TRUNC will
		not execute its default commands.
TRUNC    .MAC
WLDCRD   .MAC

FFL      .MAC	-	This version of FFL knows how to handle in image
		mode some extra file types. In particular, it will now
		recognize files of type .ULB, .HLB, .CLB, .DSK, and .DOS
		as image mode files and transfer them in that way. The
		list of types is parametrized now so you can alter it at
		will.

	(watch this space for a public domain spreadsheet in S83.)

          ********************DM0:[312,322]README.1ST;1********************
          ********************DM0:[312,322]README.1ST;1********************

	VEDRV (Modified VDDRV)

ABSTRACT:
	The VE: package is an RSX M/M+ Virtual Disk package
permitting multiple files or devices (or mixtures) to be associated
together as single virtual disks. Currently up to 8 such may be
so associated, though more can be added easily by reassembly.
The mnemonic was changed to VE: from VD: in order to permit the
old virtual disks to coexist with it. They provide greater
protection against inadvertent errors, but less capability for
free association of devices. This version has extra security code
built in, permitting protections and privacy measures beyond any
available from standard RSX11M.

DESCRIPTION:

For the security virtual disk mods, see SECUR.TXT on this account.
The new task LVE (Lock Virtual Disk) controls these attributes
and is best used from a command file.

This version of VEDRV is a mod from the VDDRV on [307,100] of F81RSX
for M or M+. It incorporates changes which will allow it to link
multiple files into a single virtual disk. It assumes that the
virtual disk is 1 block longer than would be obtained from each
file, with the extra block being a pseudo block that will always
return an error on access. Thus, if you create a virtual disk and
run BAD, those blocks will be marked bad, RSX will never attempt a
QIO$ across file boundaries, and the driver is nearly as simple as
the original. At present, AVE will allow up to 8 files to be assigned
to a virtual disk (change VEPRE to increase). You must define M$VE$$
in VEPRE to enable this stuff.
     The driver's name was changed to VE: so that the 2 types of virtual
disks can coexist in a system. Because there are NUMEROUS ways you can
screw up with this driver (for instance, command errors in AVE will zero
the disk size, or you can forget the order in which parts of a VE: are
assigned), it was thought that you would be best off able to use the old
VD: drivers where only single file assigns are needed. It also makes it
easier to test VE: if all blocks are on a virtual disk.)
	Some minor kludges and caveats:
	1. AVE will not lock the files any more and DVE won't unlock
		them. I thought that keeping multiple filename blocks
		in pool is too costly. Only the first is even kept and
		it is not really used.
	2. Checking is rather minimal and if you don't run BAD first
		to add bad blocks to a badblock file, you'll screw up.
	3. The driver will actually generate a bad block between physically
		accessible disk areas or real physical disks. BAD will
		find these. Up to 8 files or devices may be associated with
		each VE: unit (as presently done; re-edit VEPRE to alter
		this if more are needed). If you try to assign more, the
		AVE program is supposed to tell you. The message is that
		the VE: unit is already assigned.
	Further additions include the AVEX program, which is also off an
old DECUS tape but modified for this package. It allows you to use all or
part of physical disks for virtual ones, by logical block number, so
you can make several small disks look like one bigger one. Thus, you can
make your 2 RL01's look like an RL02 or some such thing. It is a good
idea to use the /INitialize switch on the first AVE to a virtual disk,
just in case the old size was not zeroed in the UCB of the thing. DVE
will zero the size, but if you ever bypass it, it'll be just too bad.
	This AVEX is also handy for preventing wild BRUs from clobbering
your disk...as was the original. Since this version derives from one that
is OK on M or M+, it should be so again. Note the UCB (I think) gets another
4 words in V4 of M or V2 of M+. It should be clear from the manuals where.
Make that change before using on V4 or V2 or your system'll crash!
	Because of the ease with which one can forget the names of files
or disks which are assigned, I recommend STRONGLY that you ALWAYS DRIVE
AVE or AVEX from COMMAND FILES (i.e., using indirect MCR). This will give
you a way to trace what you have.

		Glenn Everhart


Further Note:

	This package can be built for various systems by the command file
VEGEN. It allows VE: to be set up for single file use or the multifile
use described above, and configured for the old versions of M or M+
(V3.2 or V1), or for M V4 or M+ V2. The thing is tested in M+ V2 but not
in M V4 since I don't have an RSX11M V4 system handy. However, it looks
like it'll be OK for M V4.
	There are some extra versions of AVE, DVE, and AVEX with longer
filenames as well as the ones VEGEN uses. They attempt to support the
new M+ V2 functionality of external headers by the DEC-suggested
code changes. However they are NOT tested; try at your own risk. VEGEN
will built the normal ones with no external header; they work but take
a bit of pool for the headers. This may not be a problem however, if
you use CCL to install-run-remove AVE and DVE rather than leaving them
installed permanently.
		Glenn Everhart

          ********************DM0:[312,332]README.1ST;1********************
          ********************DM0:[312,332]README.1ST;1********************

[312,332]README.1ST
	These files are revised versions of the [312,332] files from
the S82 RSX tape. They implement one simple correction: the /BK switch
will, if given, insert some blanks ahead of file names in SRD listings.
The default with these files is that there is no such spacing. This is
compatible with old SRD formats, so the SRD output files now have the
same format as the old ones and may be used with post processors
without special case handling. This version of SRD is in heavy use at
our site and works well, but the summary information, the command line
header, and the extra spacing are now printed only when specifically asked
for in the command line. The .UP5 file has already been applied to this
SRDLST but is shown in case anyone needs to make the correction incrementally.

          ********************DM0:[312,332]README.3RD;1********************
          ********************DM0:[312,332]README.3RD;1********************

This is an improved version of SRD, dated 3-DEC-1980.

  From: Phil Stephensen-Payne,
        c/o Systime Ltd.,
        Concourse Computer Centre,
        432 Dewsbury Road,
        LEEDS LS11 7DF,
        England.

 This version is intended to combine all the versions of SRD I know of
 (Ray  van  Tassle's,  Bob  Turkelson's  and  my own) into one (easily
 tailorable)  unit,  which  can  then  hopefully be used as a base for
 future  modifications.    The  changes  from 'standard SRD' fall into
 three categories, as follows:-

 1.  Those made by:-

	Ray Van Tassle
	Motorola
	1301 E. Algonquin Rd.
	Room 4135
	Schaumburg, Ill.

 It  has  been  sporadically updated over the last year and a half, so
 long that I  forgot  what  it's  original  base  was.  I think it was
 the version distributed with our IAS V 2.0 system.

 The  original  SRD  had  a  massive number of bugs, the worst one was
 probably  that  it would loose files on a Write-back (but mostly only
 on very large directories) !!!!!!!

 This  version  has had all the bugs I could find fixed, plus a lot of
 enhancements.
 Some of the key things are:
     Write-back works properly, and it also re-tries if it gets an I/O
        error on the write.
     It    will  dynamically  expand  it's  core  buffer  (via  EXTSK$
        directive) if the directory won't fit.
     If  the entire directory won't fit, it will do it in chunks, each
        of which is sorted properly; along with a warning message.
     A trailer line for each directory is given, showing the number of
        files  in  the  UFD,  and  the  number of files selected. If a
        switch  that  causes  the  file header to be read is specified
        (/MI,    /FU,   or  a  date  switch),  the  number  of  blocks
        used/allocated is also given.
     A  "nolist"  switch  is  added,  so you can get the above trailer
        info,  without  getting  a  list of the individual files (very
        handy for scanning an entire disk).
     The user write-up has been re-written.
     On  date  select,  the "before" and "after" dates can now both be
        specified.
     The  format  of  the  output has been slightly modified so that a
        simple  TECO  macro  can  make  a PIP command file to copy (or
        whatever)  the  selected files. Two macros to do just that are
        also on this tape, in my UFD for TECO macros. To use them, do:
		SRD XXX.CMD=????
		TEC XXX.CMD
		*EISTRIP$$
		*EIGET$$
		* (any other edit you may want to do)
		*EX$$
 
 2. Those made by:
 
		BOB TURKELSON
		NASA/GODDARD SPACE FLIGHT CENTER
		CODE 934
		GREENBELT, MARYLAND  20771
		(301) 344-8864
 
		Dave Parker, Henry Tumblin
		Duke University Medical Center
		Box 3181
		Durham, NC 27710
		(919) 684-6804
 
     Support  for /CO/LO/MU switches (to select contiguous, locked, or
        multi-header files).
     Support  selection  of  files created between two dates when both
        /BE and /AF are used in the same command line.
     Yes/No/Quit/Go  responses  for  selective  delete  (obtained from
        another version of SRD).
     Support  /OV:[n]  switch  to  select  obsolete versions of files,
        which  are  those  files which would be deleted if the /PU:[n]
        switch were used, and those which would not be selected if the
        /SV:[n]  switch  were  specified.  This  provides a convenient
        method  for  users to see their obsolete files, and for system
        managers  to  determine  which users are not regularly purging
        their files.
     Fixes  for  a few bugs (including the one reported in the October
        1979 Multi-Tasker).
     Remove the requirement that a period must be included in the /SE:
        switch  file  specification, even if the file searched for has
        the null type.
     If  the  conditional symbol WILD$ is defined in SRDPRE.MAC, treat
        the  file specification string given in the command line as if
        it  has  wild  card  matching  after  the name and type fields
        given,  unless /DE, /SD, or /PU is specified (but never if the
        file  specification  appears  in  an  /SE:  or /SD: switch). A
        previous version of SRD treated any file specification in this
        manner, even if it appeared in the /SE: switch. Thus there was
        no  method  of  obtaining  only *.CM files, if any *.CMD files
        existed,  or  only TALL.* files if any TALLER.* files existed.
        The  version from the New Orleans tape corrected this problem.
        However,  to  list  all  files  beginning  with OMSI, one must
        specify >SRD /SE:OMSI* rather than simply >SRD OMSI . In order
        to  make  SRD  easier  to  use  in  our most common situation,
        without  removing  its  new  capability, we chose to make this
        modification.  If  any  files  are  to  be  deleted, we always
        require  the  stricter  syntax, to help insure that no file is
        deleted  just  because  its name may be similar to those being
        deleted.
     Support  for  the  /ID switch to identify which version of SRD is
        being used. Current version is V5.0.
     Support  for  the /BF switch which displays how much buffer space
        is available for use by SRD to read in the directory file.
     The  code  for  reading  the  directory file into memory has been
        modified  to read in as much of the directory as possible into
        memory, compress the directory, then if there is still more to
        read, attempt to continue reading it in. This seems to work on
        directories which are large but not logically dense. 
     The  dynamic  checkpoint  allocation does not seem to be  working
        properly  and  SRD should not be built with this feature until
        it is resolved.

 3. Those made by me:-

        Phil Stephensen-Payne,
        c/o Systime Ltd.,
        Concourse Computer Centre,
        432 Dewsbury Road,
        LEEDS LS11 7DF,
        England.

     a. Modify SRD.CMD (as developed in 2) to contain all the code for
        building SRD, thus removing SRDASM.CMD.
     b. Set up initial values of switch masks from Task Builder GBLDEF
        statements  (and  add  code  to  SRD.CMD to set them up), thus
        allowing  users  to  configure various aspects of SRD defaults
        (e.g. inclusion/exclusion of [0,0]) as they wish.
     c. Replace  the  conditionalised code under WILD$ (from 2) with a
        pair  of switches /WI and /WD. If /WI is set (by specification
        or  task  builder  parameter)  then FRED implies FRED* (and so
        on).  In  addition  the  switch  /WD  indicates  whether  such
        wild-carding  is valid for delete operations. Note that if /WI
        is  not specified then FRED will still imply FRED.*, but FRED.
        will look only for files with a null extension.
     d. /BF switch (in 2) renamed to /SI (size) to avoid conflict with
        date switches.
     e. /DA,  /AF  and /BE modified to handle inclusion of time and/or
        date.
     f. Date handling extended to cover:-
           /AE = After or on a given date/time.
           /AF = After (but not on) a given date/time.
           /BE = Before or on a given date/time.
           /BF = Before (but not on) a given date/time.
           /DA = On a given date/time.
     g. Added /HE to provide help.
     h. Added  /AT to determine whether or not output device should be
        attached if a terminal.
     i. Added  /M2  to  allow  a  different  flavour  of 'Middle-Sized
        Listing'   (as  developed  in  1).  If  /M2  is  not  set  (by
        specification or TKB) then the format is as defined by Ray van
        Tassle viz:-

            Filename  Creation Date/Time  Revision Date/Time

        If it is set, the format is one I prefer, viz:-

            Filename  Filesize  CLM flags  File ID  Creation Date/Time

     j. Added a /00 switch to specify whether [0,0] should be included
        in [*,*] searches.
     k. Added  a  /SY switch to specify whether system accounts ([0,*]
        to [10,*]) should be included in [*,*] searches.
     l. Modified  output  so  that if /RD (Revision Date selection) is
        specified  with  a date selection or /MI/M2 the date output is
        the revision Date instead of the Creation Date.
     m. Combined   the  methods  of  1  and  2  for  coping  with  big
        directories,  so that now SRD will read the directory a bit at
        a  time  (if necessary), compressing as we go (as in 2) and if
        there  is still insufficient room, will do it in chunks (as in
        1).  As  far  as  I can tell the method works, but I have been
        unable  to test it properly as I cannot now create a directory
        too  big  for it to handle (I gave up after about 1600 files -
        if  you  have  more than that in one directory you've probably
        got problems anyway!).
     n. Updated the version to 6.0.

  For full details on this version of SRD consult SRD.DOC.

          ********************DM0:[312,332]README.2ND;1********************
          ********************DM0:[312,332]README.2ND;1********************

README.1ST
GLENN EVERHART - FALL 82
THIS UIC CONTAINS A MUCH-MODIFIED SRD WHICH BUILDS UNDER RSX11M /M+ /IAS?
AND TRIES TO MERGE MANY OF THE OLD SWITCHES IN PREVIOUS VERSIONS. THIS
VERSION ALSO ADDS GREATER CONTROL OVER OUTPUT AND ATTEMPTS TO BE FORMAT
COMPATIBLE WITH OLD VERSIONS OF SRD OUTPUT. THIS MERGES VERSIONS BY
PHIL STEPHENSON, BOB TURKELSON AND GLENN EVERHART.

 
			Bob Turkelson
			NASA/Goddard Space Flight Center
			Code 935
			Greenbelt, MD  20771
			(301) 344-5003
 
 
This UIC contains correction files for SRD V6.0, which was submitted to the
Spring 1981 Miami RSX SIG tape, in [373,4].
 
 
The modifications I made are:
 
  o  Corrected the problem with SRD.CMD which caused the generation of
	incorrect initialization defaults when the <ESCAPE> feature was used.
 
 
  o  Changed SRD.CMD so that a different SRD.ODL file is generated when SRD
	is built with FCSRES.
 
  o  Corrected a but which prevented /WB/-LI from working properly (the
	directory was not sorted before the write-back).
 
  o  Changed SRD so that when the /SE switch is specified, /WI and /WD are
        ignored; that is, there is no implicit wild-carding whenever the
	/SE switch is used.
 
  o  Added the /ZE switch to list zero used block files.
 
  o  Added code so that if the file attributes area of the header contains a
	value of 0 for the number of blocks allocated, SRD will calculate the
	number of allocated blocks from the retrieval pointers.
 
 
The SLP *.COR files assume the Version 6.0 *.MAC files are in the current UIC,
and that they have file version number 1.  The correction files create *.MAC;2.
 
Procedure:	SLP @SRD.COR	! Corrects all necessary files
 
		@SRD		! Asks configuration questions and builds SRD
 
 
I plan to make additional modifications before the next SIG tape.  I will keep
Version 6.0 *.MAC files as the base, and add on to these correction files.
 
I would appreciate hearing from those who have made changes or plan to make
changes to this version, so we can continue to improve this useful utility.
 
[352,1]README.1ST - END
 

          ********************DM0:[312,345]README.1ST;1********************
          ********************DM0:[312,345]README.1ST;1********************

	PortaCalc

	Brought to you courtesy of

	Glenn Everhart
	409 High St.
	Mt. Holly, NJ. 08060 USA
	609-261-3709

ABSTRACT:
	The PortaCalc spreadsheet is a FORTRAN written program able to
perform the usual "what if" types of calculations for anyone with a
compiler, 31KW of task space (more or less), and (in the present
version) an ANSI 3.64 terminal (e.g. VT100). The program is easily
recustomized for other terminals and designed for portability and
functionality. A data management system interface is built in, permitting
spreadsheets to access a potentially unlimited number of files and
records or parts of records in those files for user defined functions,
numbers, formulas, text, or whatnot. In fact it has many of the attributes
of a language.
	Three versions are provided, with complete source code for
all: a PDP11 version for I/D space machines that builds flat under
RSX11M+, an overlaid version for other mapped PDP11's under regular
RSX (11M or 11D/IAS), and a version for VAX that builds (flat of
course) under VMS. I assume the F77 compiler but the program is in
Fortran 66 (I use the /NOF77 switch). It is expected only minor changes
would be needed for the DEC Fortran IV compiler however.
	A separate graphics output task is documented in PCG.DOC
and provides histograms or scatterplots of any areas of the saved
spread sheets with a simple command syntax.

RESTRICTION:
	The overlaid version provides only a rather small spreadsheet,
though it is large enough to be useful in many applications. There are
some overlay tricks I haven't tried to increase the size.

BUILD:
	There are 4 build files.
	COMPIL.COM	Build for Vax/vms...only compiles. Concatinate
			the objects and link.
	MAKE.CMD	Non-overlay I/D space build for RSX11M+ V2
			(uses F77 Compiler in non-F77 mode)
	OMAKE.CMD	Overlay build. Medium sized overlay, small
			sheet. For 11M systems, any 11.
	SOMAKE.CMD	More compact overlay structure, bigger sheet.
			OK for any 11, RSX11M/M+.
Note: THERE ARE COMPILER WARNINGS (ABOUT FUNCTION "INDEX") WHICH SHOULD
	BE IGNORED DURING THE BUILDS.
		I ASSUME FORTRAN 77 IS INSTALLED AS ...F4P.
WRITEUP:


	This is a spreadsheet written in Fortran (the only universal
assembler) for portability. Its functions are described in the separate
document file; it assumes VT100, but the UVT100 routines are the
only places the VT100 is actually handled in screen mode, and may be
altered for other machines.
	The spreadsheet sizes may be defined by editing the parameter
file Vklugprm.ftn (caveats and restrictions are listed there). There
are 2 sheets -- a big physical sheet and a small display sheet which
is what's really shown on screen. Sheets may be saved/merged/restored/
linked (via saved files)/printed or hardcopy made onto files. Numerous
other functions exist. The thing is built with I/D space here but
ought to be able to be overlaid. Specifically, CALC and its routines
can be diskbased overlays, and DSPSHT should be able to be another leaf.
However this is not tested. You can tailor the size by editing physical sheet
size.

	WHEN BUILDING PORTACALC, YOU MAY ENCOUNTER FORTRAN WARNINGS
ABOUT THE INDEX FUNCTION BEING ASSUMED USER SUPPLIED. IGNORE THESE;
THERE IS AN INDEX FUNCTION SUPPLIED HERE, AND THE WARNINGS ARE OF
NO CONSEQUENCE, EITHER ON PDP11 OR VAX.

	The program has been tried overlaid. However, if you use the
module OXQTCMD instead of XQTCMD and OSPREDSHT instead of SPREDSHT, an
overlay structure could be used roughly like this:

	Root: Spredsht,Index, all commons, UVT100, VARSCN
		Leaf 1: XQTCMD
		Leaf 2: RECALC, CALC, and all subroutines of CALC
		Leaf 3: DSPSHT

	The subroutines of Calc may be possible to overlay so that
Leaf 2 (which will likely be the largest) can be shrunk. You will want
to edit Vklugprm.ftn to make a sheet the size you like. If it gets
bigger than rather small, you will possibly have to use virtual arrays
or some other trick. By the next DECUS symposium there may be a better
version or one that will work on smaller systems completely defined,
but you may be able to fit this on a small system by overlays. On a
VAX of course it all builds flat with as large a sheet as you like.

	REVISION:
	There are 2 ODL files, either of which can build a reduced
version when the fortran files are compiled with OVKLUGPRM.FTN
renamed to VKLUGPRM.FTN, included. There is a bit of extra space
so the parameters in that file can be enlarged somewhat. They use a
very overlain FCS and F4P OTS. You may be able to do similar things
clustering an FCSRES and a F4PRES together too. However, the overlay
versions (made with the OMAKE.CMD file) do work, though more slowly
than the I/D space one. This at least gets you something on a machine
with only normal 11/34 type resources. I assume the F4P or F77 compiler
here for the OTS part. You will need to tailor to other Fortran
compilers on PDP11's yourself.

		NOTE:
	If you get this program working on a non-PDP11, non-
VAX, the author would appreciate a (machine readable) copy of
the modified version.

BUGS:
	The functions here are mostly tested, but some bugs may remain.
	Fortran formats are used and any format entered will be used.
If you put something in that Fortran can't understand, you lose.
Conversely, you can use things like O or Z formats for octal/hex
or whatever you like. Formats A and L by themselves mean "display the
formula itself"; anything else means "display the number". On entering
numbers, any formula containing the characters ".","[","+", or "-" is
treated as a numeric; anything else is treated as a formula. The DF
command can fix up this if it's not what you want. Note too that the
multi-argument functions:
	SUM[args]	Sum
	MAX[args]	Maximum
	MIN[args]	Minimum
	AVG[args]	Average
	STD[args]	Standard Deviation
and the statement
	IF [v1.RL.v2]true-statement|false-statement
must appear at the start of a formula or formula substatement (substate-
ments are delimited by \ characters) and the value goes into the
current variable cell (which is universally named P## if you want something
location independent). It's a good idea to include an else statement in
IFs since something gets put in otherwise.
			Glenn Everhart

          ********************DM0:[312,347]README.1ST;2********************
          ********************DM0:[312,347]README.1ST;2********************

Editor's note:	This directory contains modified versions of 2 memory-
resident disk drivers.  The originals are also on this tape!  (See,
there really is some advantage to having the tape out so late)!
The driver FXDRVX.MAC is modified from [300,140]FXDRV.MAC, while
SLDRVX.MAC is modified from [343,32]SLDRV.MAC.  In both cases the
modifications are to provide for a call to $FORK in the middle of long
transfers, thus allowing other drivers to have access to the EXEC.
Otherwise your system response-time for interrupts will be significantly
degraded.

          ********************DM0:[326,1]README.1ST;1********************
          ********************DM0:[326,1]README.1ST;1********************

 
		The North Texas Local Users Group
 
  The files contained in [326,*] were submitted to the North Texas Local
Users Group Library. The submissions:
 
	[326,001] - 		README.1ST - This file.
				NTLUGNEWS.ULB - A Universal Library of the
				North Texas Local Users Group Newsletters.

	[326,112] 		Programs from Jeff Hamilton of E-Systems,
				Greenville Division.
				SPELL -	A spelling checker updated from
				the Spring '82 RSX/IAS SIG Tape.
				FLOPPY - A floppy disk data structure
				analysis program. 
				For more Information see the README.1ST
				MSTRMD - Mastermind game. See the file
				README.2ND 
 
	[326,114]		DOCEXT - Documentation Extractor from
				Mike Drabicky of Rockwell. See the file
				README.1ST.
 
If you need help in reaching the authors, please contact:
 
	John Jenkinson
	MOSTEK Corporation
	1215 West Crosby Road
	MS 32
	Carrollton, Texas  75006
 

          ********************DM0:[326,112]README.1ST;1********************
          ********************DM0:[326,112]README.1ST;1********************

*****************************************************************************
		S P E L L   &   F L O P P Y 
 
These two univeral libraries are the two submissions from E-Systems
Greenville Division.  The update to SPELL a spelling checker program
(current version 4.0) fixes several bugs and adds several features 
(dictionary lookup,...). To use extract the command file SPELLU.CMD from 
the universal library SPELL.  The FLOPPY program is a general purpose floppy 
data structure analysis program.  To use extract the command file FLOPPU.CMD.
In each universal library there is a readme file for further information. 

ATTENTION SIG TAPE COPY PEOPLE:  There are no task images or object 
files in the libraries.  SPELL.ULB contains the new sequential dictionary
and thus is rather long (1200 blocks).  All procedures are UIC independent
but are submitted under the UIC assigned last tape ([326,112]).

Jeff Hamilton
E-Systems Inc.
P. O. Box 1056  CBN 28
Greenville, Texas  75401
(214)454-4175
*****************************************************************************

          ********************DM0:[326,112]README.2ND;1********************
          ********************DM0:[326,112]README.2ND;1********************

THIS IS THE GAME OF MASTERMIND.  THE COMPUTER PLAYS BOTH GUESSER AND
GUESSEE.  IT WAS WRITTEN A LONG TIME AGO (79) AND THEREFORE IS
NOT DOCUMENTED AS MUCH AS IT SHOULD BE.  IT PROBABLY CAN BE IMPROVED UPON.
IT PLAYS FAIRLY WELL ( I HAVE NEVER BEEN ABLE TO BEAT IT OVER SEVERAL GAMES.)
I HOPE IT KEEPS YOU AMUSED.  

JEFF HAMILTON
E-SYSTEMS
P. O. BOX 1056 CBN27
GREENVILLE, TEXAS  75401
(214)454-4175

          ********************DM0:[326,114]README.1ST;1********************
          ********************DM0:[326,114]README.1ST;1********************










                               DOCUMENT EXTRACTOR




          The Document Extractor allows you to take  comments  out  of
          your  MACRO-11,  FORTRAN or Z80 programs and put them into a
          separate file.  With this tool, it then becomes practical to
          embed the program's documentation within the program itself.
          This has two distinct benefits:  one, it keeps  a  program's
          documentation  close  to  the program that it describes, and
          two, it allows for later extraction into a separate document
          that  can  be included as part of the program's formal docu-
          mentation.  Thus, as a program  changes,  the  documentation
          for  it  can  also change right in the program itself.  This
          means that you stand a far better chance of having the  pro-
          gram documentation updated than if the source code and docu-
          mentation are in two separate file.

          There isn't any RUNOFF file to describe the Document Extrac-
          tor.   In  its  place, the source code for the Documentation
          Extractor itself contains all the documentation for the  Do-
          cumentation Extractor.  However, you do not have to read the
          source code in order to find out how the  Documentation  Ex-
          tractor  works.   Instead, the procedure outlined below will
          assembly, task build and extract the necessary comments from
          the Documentation Extractor's source code.

          In order to get the Documentation Extractor running on  your
          system, you should issue the following command:

               >@DOC

          This command file will assembly the Documentation Extractor,
          task  build  both it and the cross-reference utility and fi-
          nally  extract   the   comments   from   the   Documentation
          Extractor's  source  code into the DOC.DOC file.  You should
          then read this file to find out how to use the Documentation
          Extractor.




          Submitted by:  Mike Drabicky
                         Rockwell International
                         1200 N Alma Way  MS 406-280
                         Richardson, TX  75081
                         (204) 996-5353

          ********************DM0:[330,2]README.DOC;1********************
          ********************DM0:[330,2]README.DOC;1********************

			F D T
			=====

	This UIC contains the ICR FORTRAN IV Plus Symbolic debugger.  It
is designed for IAS, but will also work under RSX-11M if you uncomment the
line ";RSX11M=0", which defines RSX11M, in FDT.MAC.  Please read FDTEXP.DOC
for more information.
 
If you have problems, corrections or comments please contact:
 
		Robert K. Stodola
		Computer Center
		The Institute for Cancer Research
		7701 Burholme Ave.
		Philadelphia, PA   19111
 
			215 728-2760

          ********************DM0:[330,2]README.1ST;4********************
          ********************DM0:[330,2]README.1ST;4********************

    This uic contains the modifications which I made to FDT to get it
working on RSX11M V4.0.  The TRACE program was modified to take into
account the changes to the task builder map, and FDT was modified to
allow F77 character string variables.  
   The files FDT.VAT and TRACE.VTN are the 'virgin' files from the Spring 82
DECUS tape; FDT.MAC and TRACE.FTN are the modified files.  The two .CMP
files list the changes made to these two programs.  I also changed the
documentation to reflect the changes -- the new documentation file
is FDT.RNO.  GBLREF=ZCI$ was also added to FDTRSX.TKB.
    Read README.DOC for more information concerning FDT in general.
  
   			Frank Keefer
			NASA/GSFC
			Bldg 21, Room G-39
			Greenbelt MD 20771
  
  
			(301) 344-5419

          ********************DM0:[332,12]README.1ST;1********************
          ********************DM0:[332,12]README.1ST;1********************

                              RUNOFF ENHANCEMENTS 
This new version of RNO now has many features from DSR as well  as  some  very 
useful  extra  features.   It runs under RSX11M, IAS, and VAX/VMS compatibilty 
mode.  SORRY, but no RSTS or RT11 version.  The  following  list  of  features 
have been added to RNO.  The RUNOFF.DOC file contains a more complete explana- 
tion. 
 
                    John Clement - Rice Univ, Houston, Tx. 
 
 
    (1)  More normal syntax is allowed in input parameters.  The numeric  par- 
         ameters  may be separated by multiple spaces,tabs, and 1 comma in any 
         combination. 
 
    (2)  Input command syntax is more free also.  In  addition  to  the  usual 
         runon syntax, multiple spaces or tabs may separate words. 
 
    (3)  DSR style flags and  enable/disable  commands.   The  FLAGS  commands 
         allow  you  change the default flag character as well as enabling re- 
         cognition of it.  The new commands are: 
         i-  .FLAGS OVERSTRIKE [new flag] 
        ii-  .FLAGS UPPERCASE [new flag] 
       iii-  .FLAGS LOWERCASE [new flag] 
        iv-  .FLAGS ACCEPT [new flag] 
         v-  .FLAGS CONTROL [new flag] 
        vi-  .FLAGS SPACE [new flag] 
       vii-  .ENABLE UNDERLINING 
      viii-  .ENABLE HYPHENATION 
       viv-  .ENABLE INDEXING 
         x-  .ENABLE OVERSTRIKING 
        xi-  and the corresponding NO FLAGS/DISABLE commands 
 
    (4)  User definable hyphenation. 
 
    (5)  .AUTOHYPHENATE command to allow user  hyphenation  without  automatic 
         hyphenation. 
 
    (6)  .REQUIRE 'filespec' command which allows multiple input files up to 5 
         levels  of nesting.  This has unlimited uses including the production 
         of UGH!!  form letters with personalized addresses and salutations. 
 
    (7)  Table driven parsing to make RUNOFF faster. 
 
    (8)  User definable escape sequences which include the following new  com- 
         mands. 
         i-  .RESET ESCAPE to clear current escape sequence table 
        ii-  .DEFINE ESCAPE to define an escape sequence 
       iii-  .FLAGS ESCAPE to enable recognition of the escape flag 
        iv-  .NO FLAGS ESCAPE to disable recognition of the escape flag 
         v-  .ENABLE ESCAPE to enable output of escape sequences 
        vi-  .DISABLE ESCAPE to disable output of escape sequences 
 
    (9)  Substitution has been added to RUNOFF.  This is used in DSR to  enter 
         time,  date  etc., but in this version has been generalized to incude 
         user defined substitution.  The substitutions may be nested  3  deep, 
         and as such constitute a form of macro facility.  This is very useful 
         for writing formulae or including the same phrase many times  in  the 
         text.   In essence this facility allows the definition and executions 
         of macros.  the new commands are: 
         i-  .FLAGS SUBSTITUTE [new flag] 
        ii-  .NO FLAGS SUBSTITUTE 
                                                                        PAGE 2 
 
       iii-  .ENABLE SUBSTITUTE 
        iv-  .DISABLE SUBSTITUTION 
         v-  .RESET SUBSTITUTE 
        vi-  .DEFINE SUBSTITUTE 
 
 
   (10)  The BREAK flag has been added to RUNOFF.  This allows optional break- 
         ing of expression or words without hyphenation. 
 
   (11)  .CENTER TEXT and .END CENTER to center a whole section of text.  This 
         is useful for headings, poems, and emphasized sections. 
 
   (12)  .RIGHT to right justify with ragged left margin. 
 
   (13)  The .FOOTNOTE command no longer needs to specify the number of  lines 
         to  reserve  at  the  bottom of the page and an .END FOOTNOTE command 
         ends the footnote. 
 
   (14)  .DISPLAY commands as in DSR have been added.  These allow the user to 
         select  the format of page,chapter, or appendix numbers as either de- 
         cimal numbers, letters, or Roman numerals.  In addition  Header  lev- 
         els, and Display elements may be reformatted. 
 
   (15)  .STYLE HEADERS reformats the  header  level  spacing,  capitalization 
         etc. 
 
   (16)  .LAYOUT command to allow control over where title/subtitle  and  page 
         number appear. 
 
   (17)  .HEADER PAGE and .HEADER NO PAGE enable or disable the word  PAGE  in 
         front  of the page number.  This is needed for Thesis and publication 
         quality output. 
 
   (18)  .HEADER SPACING n adjusts the spacing  between  the  header  and  the 
         text. 
 
   (19)  .TOP MARGIN sets a top margin before the header. 
 
   (20)  .PAGE SIZE now sets permenant RIGHT,LEFT, and TOP margins as well  as 
         the usual BOTTOM margin or page size. 
 
   (21)  The index format has been changed and it can be controlled using  the 
         .SET PARAGRAPH command. 
 
   (22)  /CH:l:h Switch allows selecting chapter numbers for output. 
 
   (23)  /AP:l:h Switch selects appendix numbers for output. 
 
   (24)  /-CR Switch has been added to produce output that may be normally ed- 
         ited.  The /CR value includes <CR> and <LF> in the file. 
 
 
                                     NOTE 
 
 
               This version of RNO uses  the  SOB  instruction. 
               If your machine does not have it you should sim- 
               ulate it by defining it in the RNPRE.MAC file. 

          ********************DM0:[332,115]README.1ST;1********************
          ********************DM0:[332,115]README.1ST;1********************

		CATCHALL TASK

		Submitted by J.A. LEES
		TEXACO U.S.A.
		P.O. Box 430
		4800 Fournace Place
		Bellaire, TX 77401

This version (CAT.MAC) of the catchall task lets you use DCL commands 
at an MCR terminal. It first checks for special commands. If it does 
not match one of these, it passes the command line to DCL. 

The special commands in this version of CAT.MAC include:

	CLR - Clear the screen
	CHD - DCL SET/SHO DEFAULT
	$   - Indirect to library: $XXX does an @[ggg,mmm]XXX

You may add other special commands, using the table-driven parser format.
See the I/O operations reference manual for full details.

Note that there are a few commands common to MCR and DCL (SET,MOU,MAC..)
These will be processed as MCR commands.

To use CAT, assemble it as you would a privileged task:

	MAC CAT,CAT=LB:[1,1]EXEMC/ML,[11,10]RSXMC/PA:1,SY:[ggg,mmm]CAT

Then build it using the indirect command file CATBLD:

	TKB @CATBLD

	CATBLD.CMD contains the following parameters:

	CA.DBG		Set to 1 for command type-out, 0 for no type-out
	CA.UIC		Command file library UIC 

	The format of CA.UIC is as in [1,24]ICMFSLBLD - See also the MCR
	Operations manual, page 4-4. It is currently set up for [1,10].

Then install CAT on your system.

		EXAMPLES (With TI: set up for MCR)

	DIR X*.*	A DCL directory command
	$XXX YYY	Executes [1,10]XXX.CMD with parameter YYY
	SET TE LOWER	Syntax error - taken as an MCR command
	CHD DR0:1,10	Sets default disk to DR0:, directory to [1,10]

          ********************DM0:[333,100]README.1ST;1********************
          ********************DM0:[333,100]README.1ST;1********************

THIS UIC CONTAINS a roadmap to contributions from THE BERGEN RECORD in 
[333,100] through [333,104].
It also contains an SLP correction file for Jim Downward's CCL to facilitate
use as both catchall and CLI under M-PLUS with DCL also on the system. See 
below for more info.

	Allen A. Watson
	Manager, Systems Technology
	THE RECORD
	150 River Street
	Hackensack, NJ 07602
	(201) 646-4111

[333,100] -- roadmap and SLP file for CCL. Jim Downward modified CCL so that 
it can be used as both a CLI and a catchall task. This is incredibly helpful;
see my notes in this UIC called CCLCLI.TXT.  However, there was a bug in his 
logic because when DCL is the primary CLI it uses different task naming 
conventions than MCR. Under MCR, when a CCL command is entered, the task which 
eventually executes as catchall is named "CA.Tnn", but under DCL, the task 
gets named after the CCL command entered, for example "BELL" produces 
"BELTnn". Under this convention, CCL failed to recognize properly when it was 
a catchall and not a CLI. (This only occurs if you have modified DCL's task 
build file to take the option to fall thru to MCR for unrecognized commands; 
otherwise the buck stops at DCL and you never get to CCL-as-catchall.)

Downward had CCL checking for a task name of "CA." to determine whether it was
executing as a catchall and not a CLI; my SLP file alters this so that the
logic is reversed -- that is, if the task name is "CCL" then we are running as
a CLI and not a catchall. 
---------------------------------------------------------------------------
Thrown in for free are help files for TECO and RUNOFF(RNO). The TECO one uses
advanced video on the VT100; if you don't have this, just edit out the escape
sequences using EDT or TECO.
------------------------------------------------------------------------------
M2MPTALK and SRDTALK contain the text of the handouts for my talks on RSX11M 
to RSX11M-PLUS migration and the SRD (sort directory) utility program.
-------------------------------------------------------------------------------
DOVMRV2.CMD is a command file for RSX11M-PLUS V2.0 to run a SYSVMR.CMD and 
save the newly VMR'ed system.
-----------------------------------------------------------------------------
EDTINI.EDT -- This EDTINI file is the one that appeared in recent issues of
the RSTS PROFESSIONAL and DEC PROFESSIONAL magazines, with only a few minor
modifications and additions. Most but not all of the keys defined in the file
are documented in EDTHINTS.DOC. Lots of super keys for massaging buffers, etc.
Undocumented (except here) is a CNTL/V key which prompts for a mode -- enter
BO (bold), UN (underline), BL(blink), RE(reverse) or OF(modes off) and the 
appropriate escape sequence for VT100 will be inserted at the cursor 
location -- and a GOLD H key which will turn a line of text into two lines 
with preceding escape sequences for double-height characters (must start with 
cursor at beginning of line to be doubled). Also CNTL/R which will do a global
search/replace on character strings. Uses internal key numbers for faster 
execution at startup; see the PRO magazine articles for number/key 
correlations.
-----------------------------------------------------------------------------
[333,101] Version of SRD which has been built multiuser for M-PLUS and
completely non-overlaid. Runs very fast. Better separation of PSECT's
for multi-user version.
-----------------------------------------------------------------------------
[333,102] SLP correction file to M-Plus Version 1.0 unsupported LOG utility,
changes name to "REC" to avoid conflict with DCL "LOGIN" command. This neat
"hidden" utility allows you to run an indirect command file on a virtual 
terminal AND on your screen at the same time, thus creating a log file of your
terminal session!! (Ever try to remember just what you typed into Datatrieve 
to do that neat function just half an hour ago? Ever want hard copy of 
something that produces terminal-only output?)
-----------------------------------------------------------------------------
[333,103] Numerous utilities, mostly in C, for creating indices of HELP files, 
reporting on UFD ownership, management of disk block usage by UFD; revised 
multi-column directory program (formerly DIR.C); TECO macros to aid in editing
HELP files; help files on utility programs distributed on earlier SIG tapes.

EDH.TES and EDH.TEC -- TECO macro useful for editing system HELP files in
	[1,2]. Uses EDT for editing.
TEH.TES and TEH.TEC -- Same as above, uses TECO for editing. 
	See EDITHELP.DOC (RNO file supplied) for more information.
HDX.TES and HDX.TEC, HFL.TES and HFL.TEC -- TECO macros to give quick inform-
	ation about HELP information available on a given topic. See 
	HELPINDEX.DOC.
TECO.INI -- you may need this initialization file to run the above macros. I
	know I originally encountered problems and modified TECO.INI but I
	forget whether I eventually found the problem in my macro and went
	back to the original. Try with your TECO.INI or none; if that doesn't
	work, this one will.
-----------------------------------------------------------------------------
The files for DIR.C and GETHDR.C in this directory are modified from Ray Van
Tassle's contribution on (I believe) Fall 81's tape.

Modifications: 
	1.	Made definitions of variables into "long" so that files with 
		more than 32,767 blocks allocated or used would be reported
		properly. Changed format from four to six digits.
	2.	Changed freopen statement for INDEXF.SYS, removed "b" option
		which caused "error reading file attributes" message (in 
		GETHDR) when compiled on M+ V2.0 using V2 of the C compiler.
	3.	Replaced call to IOVTOA (obsolete) with call to FGETNAM.
	4.	Replaced call to TIATT function (not present in standard
		library) with QIOW from C executive extensions, to attach
		the terminal.
	If you have the LBL tools package up, the files DIR.TCS and GETHDR.TCS
	will give you a history of the changes using GET. (If you don't plan on
	having the tools, you can delete the *.TCS files.)

	DIR.CMD will compile and task build the program if you have the C
	compiler installed as ...XCC and the C assembler as ...XAS. (On an
	RSX system...no files for other opsys.)
------------------------------------------------------------------------------
Hereafter is Ray's original README file.
Ray Van Tassle
Motorola
1301 E. Algonquin Rd, rm 4135
Schaumburg, Ill
(312)-576-6017

These require my fixes for block-mode reads to the C runtime library.

	DIR (revised from LC), a fast directory lister. (GETHDR.C reads
		file headers in a non-kludgy way).
	OD  File dumper, which now works properly in block-mode.

	GREP is from the SlangSPR81 [6,1]

For the benefit of those people who don't have C & don't want to put
it up, I have included TSK files of these 3 utilities.
Perhaps seeing them will persuade you to get & use C.

          ********************DM0:[333,101]README.1ST;1********************
          ********************DM0:[333,101]README.1ST;1********************

[333,101] -- Flattened out multi-user SRD for M-plus Version 2.0

		BERGEN RECORD

This SRD is unmodified from the one in [312,332] on the Spring '82 tape,
a conglomerate version by Turkelsen, Everhart, Stephensen-Payne, and Van Tassle

The only change is that we un-overlaid it and used FCSFSL to get space. It
seems to run a bit faster. We also put in proper PSECT info to be able to make
it into a multi-user task.

          ********************DM0:[333,102]README.1ST;1********************
          ********************DM0:[333,102]README.1ST;1********************

[333,102]
THIS UIC CONTAINS an SLP file for the M-Plus V1.0 LOG unsupported utility
to enable it to run on Version 2.0, by Carl Friedberg, In-House Systems.
You must have the original sources from the Version 1.0 distribution of RSX11M
PLUS.

	Allen A. Watson
	Manager, Systems Technology
	THE RECORD
	150 River Street
	Hackensack, NJ 07602
	(201) 646-4111

** LOG : LOG STREAM FROM VIRTUAL TERMINAL
	This delightful, but unsupported, tool was buried in [26,10], DEC's
Bag of Tricks UIC, on Mplus Version 1.0; it did not make it over to v2.
I discovered LOG while reading Kitty Bethe's notes on OPA for MPLUS.
She informed me that LOG runs fine on V 2.0, so here it is:
	(0) SET /UIC=[26,10] set terminal to MCR
	(1) create UFD [26,10],[26,24],[26,34] if it isn't already there
	(2) mount your V1 source pack, and copy over the files:
		[26,10]LOG.MAC and [126,10]PRE.mac into [26,10]
		warning DO NOT use the [126,10]PRE.MAC which comes with V2!
	(3) ins $SLPFSL
	(4) SLP @[333,100]LOGREC.COR which creates REC.MAC
	(5) MAC @[333,100]REC.ASM
	(6) SET /UIC=[1,24]
	(7) TKB @[333,100]RECBLD.CMD
	You are now ready to go.  To use it, see HELP/UNS LOG under V1.0;
format is:
	BE SURE YOU ARE IN YOUR LOGIN UIC (this runs a Virtual Terminal!)
	REC filespec-for-logfile[/TI to echo on TI]=filespec for indirect
	EXAMPLE:  to get an online pool dump (if you have made it work on V2):
	REC OPA.LOG/TI=TI:
AT.>	OPA <return>
 	.
	.
	.
AT.>	^Z
		Let me know if you have problems, but this version is
obsolete/unsupported.		Carl Friedberg


          ********************DM0:[333,103]README.1ST;1********************
          ********************DM0:[333,103]README.1ST;1********************

[333,103] -- C utilities. UFD ownership; disk usage manager

This UFD contains various C utilities in use at THE RECORD. Sources provided
can be built using VERSION 2.0 of the DECUS C compiler. Several of the
routines require the C executive extensions and the ".H" files, all of which
are provided with the DECUS C kit on the Spring 82 RSX tape. There are a few
home-grown subroutines (provided in CBER.OLB); you may want to place this in
[1,1] on your disk or edit the task build command files; sorry I had no time
to make a beautiful clean command file that works for everybody everywhere.

OWNER -- reports on and maintains a file, [1,5]UFDLIST.TXT, which records each
	UFD on a disk and a one-line description of its owner and contents.
	Written using Version 2.0 of DECUS C. Extremely useful for finding
	things on disks and finding out who is responsible for those 60,000
	blocks that got allocated last night. See OWNER.DOC and use OWN.CMD
	to build on system. Task images included for those who don't have C;
	but they have been built multi-user on an M-PLUS VERSION 2.0 system.

	Also provided with OWNER are two files, RSXS82.DIR and RSXF80.DIR,
	which give brief indices to the Spring '82 and Fall '80 RSX SIG tapes
	as an example of how OWN can be used.

MATCHUFDS.SH and MAKUFDLST.SH -- Two script files for use with the LBL tools
	shell program in conjunction with OWNER, above. MAKUFDLST will make
	a skeleton UFDLIST.TXT file for any disk if you don't want to go
	through the effort of doing it by hand with an editor. It lists all
	the UFD's as "UNDEFINED", and you can then edit in the ones you know
	and track down the ones you don't.
	MATCHUFDS.SH compares the contents of the MFD with the UFDLIST.TXT
	file and reports on any differences, e.g. directories not listed in
	UFDLIST or entries in UFDLIST that no longer exist on disk.

MCD -- Multi-column directory. Modified version of DIR.C by 
	from Fall '81 tape, fixed up to use standard C routines instead of
	special library routines (missing from original distribution), and
	also enhanced to handle files with size greater than 32,767 blocks.
	All sources etc. named "DIR*". Task build file gives task name of
	MCD to avoid conflict with DCL DIR. More info in MCD.HLP and MCD.TXT.

VT100 SUBROUTINES -- CURSOR, MODE, DISPLAY will in various ways manipulate
	the cursor or screen of a VT100 terminal. Some advanced video options
	included. Not all of these have been thoroughly debugged; MODE and
	DISPLAY work pretty well in a couple of applications we have, achieving
	an FMS-forms-like effect. See comments in the C sources.

FORMAT -- subroutine to convert a primitive UFD spec -- e.g. 1,2 -- into a
	expanded spec -- e.g. [001,002]. Used by OWNER, TOTBLK, and HOGBLK.

HDX --  This program reads and reports on HELP file indices in [1,2]. See
	HDX.HLP for more information. It provides a quick index to available
	HELP. See related TECO macros HDX.TES, TEH.TES and EDH.TES. The struc-
	ture of this program is terrible because it was based on the HDX TECO
	macro that I wrote first; however, it works beautifully.
	Here is an example of "HDX DCL TECO" for the TECO.HLP file in [333,100]

Help file qualifiers for: DCL TECO
rootfile is [1,2]DCL.HLP
1 TECO
    2 BEGINNER
      3 COMMANDS
      3 EXAMPLE
      3 MORE
    2 INITIALIZATION
    2 MANUAL
    2 MEMORY
    2 QUALIFIERS
    2 VTEDIT
      3 INITIALIZATION of VTEDIT
      3 LOCATION of VTEDIT
      3 COMMANDS(see KEYPAD)
      3 KEYPAD
      3 EXIT
      3 TERMINAL
    2 MUNG
      3 SEARCH
      3 TYPE
        4 ANNOUNCE
        4 HOLD
        4 SEEALL
        4 TRUNCATE
        4 SEARCH
        4 INSPECT
        4 FLAG
        4 SHORT
        4 OVERPRINT
    2 TERMINAL
	

TECO MACROS to index and edit help files. HDX.TES is an unsquished macro that
	does the same thing as HDX.C (only much slower). TEH.TES initiates a
	TECO edit on a given portion of a HELP file; EDH.TES does the same
	but switches to EDT for editing (it spawns EDT from TECO!) for those
	who prefer EDT. For example, MUNG TEH DCL SET TERMINAL will
	locate the help file text for DCL SET TERMINAL and open the file for
	editing at that point. If the named topic does not exist, TEH will
	position you at the end of the correct help file or sub-help file
	to allow you to add the new topic.

	Complete documentation is in EDITHELP.DOC (and .RNO) for TEH and EDH
	and in HELPINDEX.DOC (.RNO) for HDX.

	It is possible that these TECO macros will not work with your TECO.INI,
	so I have included ours.

TIATT -- C subroutine to attach TI: so that CNTL/O will work.

CBER.OLB -- contains object code of TIATT, DISPLAY, MODE, and FORMAT.

DISKUSE.CMD -- You must have the LBL tools installed to use this, and if you
	don't have them you ought to!  This command file goes through some
	strange gyrations to create a file called DISKUSE.RPT in [1,1], which
	shows the total blocks for each UFD on the disk combined with the
	text from UFDLIST.TXT that OWNER creates and maintains. The report
	is sorted in descending order by block usage. (I use a DISKUSE.BAT to
	submit this command file when I log off for the night; my LOGOUT.CMD
	file initiates the batch job automatically unless I cancel it.)

	DISKUSE currently relies on PIP /TB to get block usage; it really
	should use a special C program to do this since PIP is so slow.
	The strange stuff I go through with the OWN program is done because
	the output from PIP /TB is not in any predictable order; therefore
	I use OWN to look up each UFD in UFDLIST.TXT in the order they occur
	in PIP's output. I contemplated used SRD [0,0]/WB to sort the MFD
	each time DISKUSE is run, but I couldn't quite bring myself to trust
	that as a nightly procedure.

TOTBLK -- this C program is a spinoff of OWNER; it looks up a user name in
	DISKUSE.RPT and reports on the total blocks in use by that user as
	of last night's report. Requires running DISKUSE.CMD first.

HOGBLK -- another spinoff of OWNER. This one reads an interim file created
	by DISKUSE and compares today's version with yesterday's, and then
	reports only UFD's whose block usage changed between the two reports.
	Requires that DISKUSE.CMD be run twice first.

HELP FILES -- help files are included for the various programs above. In 
	addition I have thrown in help files I created for various other
	utilities that have appeared on past SIG tapes, such as LIST(T.C in
	the DECUS C tools), TIPE (the TYPE program in macro), CWD (the change
	working directory program; there should be an M-Plus V2 version on
	this tape from Jim Neeland), and TTY (report TT characteristics).
	Only the help files are here, you'll have to scrounge for the sources
	on past tapes.

APOLOGY: much of this stuff I did just before putting together this tape for
	Anaheim, and it is not yet polished up. I find it all so useful in
	the little time I've had it that I wanted to send it out. Next time
	around I will attempt to clean things up and document how it all
	hangs together just a little better.

          ********************DM0:[333,104]README.1ST;1********************
          ********************DM0:[333,104]README.1ST;1********************

[333,104] -- BERGEN RECORD
Tape utility from Milton Rogers. 

TMV - TAPE MOVE UTILITY

   TMV is an installed task to manipulate tapes as foreign volumes.  It can be
used to position a tape forward or backward, rewind a tape, write susccessive
tape marks or preform a rewind and unload.

   The command syntax is:   TMV MMn:/sw ,

where n is the tape unit number (0-3), and /sw is one of the following 
switches:

   /BS:nnn  - Backspace nnn (decimal) files.  Default is 1.
   /FS:nnn  - Forward space nnn (decimal) files.  Default is 1.
   /EOF:nnn - Write nnn (decimal) consecutive tape marks.  Default is 1.
   /RW      - Rewind tape to BOT.
   /UN      - Rewind tape and put unit off line. (Unload tape)

   Only one switch at a time is allowed and at least one switch must be 
specified.


          ********************DM0:[334,2]README.1ST;1********************
          ********************DM0:[334,2]README.1ST;1********************

This UIC contains two programs, submitted by:
 
	Scott Snadow
	General Dynamics
	P.O. Box 2507, Mail Zone 4-68
	Pomona, CA  91769
	Phone: (714) 620-7511 X8262
	(Member of Orange County LUG)
 
Both of the programs are used for modifying task-image files
(i.e., output from TKB or FTB).  Their purpose is to save you the time
and trouble of re-building a program when you wish to change some of
the options that the program was originally built with.
 
MODLUN is the first program; it is used to change the values specified
(or defaulted) for the /ASG= option of TKB (or FTB).  For example, if a
task was originally built to use MT0: on logical unit #1, you can use
MODLUN to "permanently" change the program's LUN 1 to MM1: (or anything
else, for that matter).  MODLUN, however, CANNOT be used to alter the
number of luns that a program has.
 
MODTSK is the other program; it is used to change a large variety of
task-build-time switches, options, etc.  MODTSK can change:
	1.  The task's installed name (TASK= option)
	2.  The task's partition name (PAR= option)
	3.  Position-independent code switch (/PI)
	4.  Header switch (/HD)
	5.  Ancillary control processor (ACP) switch (/AC)
	6.  Post-mortem dump on abort switch (/PM)
	7.  Task slaved switch (/SL)
	8.  SEND directive to task permitted switch (/SE)
	9.  Task privileged switch (/PR)
	10. Task built in compatibility mode switch (/CM)
	11. Task checkpointable switch (/CP)
	12. Task has memory-resident overlays (presence of ! in .ODL file)
	13. Task, if privileged, maps to I/O page switch (/IP)
	14. Task is a supervisor-mode library (CMPRT= option)
	15. Task has an external header switch (/XH)
	16. Task doesn't have an external header switch (/-XH)
	17. Date task built
	18. Task priority (PRI= option)
	19. Task extension (EXTTSK= option)
Note: Items 14, 15, and 16 apply only to RSX-11M-PLUS (these items are
      untested, since I don't use 11M-PLUS).  Also, I know 15 and 16 seem
      redundant, but look in the "Detailed Task Image File Structure"
      appendix of the Task Builder Manual!
 
Restrictions:
	Changing some of these items probably doesn't make any sense
	(and probably will make a task "un-runnable" if they are changed).
	As best as I can figure, the following items should probably be
	left unchanged when you run MODTSK:
	3.  Position-independent code switch (/PI)
	4.  Header switch (/HD)
	10. Task built in compatibility mode switch (/CM)
	12. Task has memory-resident overlays (presence of ! in .ODL file)
	14. Task is a supervisor-mode library (CMPRT= option)
 
	In addition, changing the following items would have only limited value:
	5.  Ancillary control processor (ACP) switch (/AC)
	9.  Task privileged switch (/PR)
 
	With /AC and /PR, I believe that modifying these switches would be
	meaningful ONLY if you are switching between /AC:0 and /-AC (or
	/PR:0 and /-PR).  (For example, you built a task that issues the
	ABORT directive for any arbitrary task on the system, and forgot
	to specify the /PR:0 switch; using MODTSK to change the /PR
	bit would fix the problem.  But MODTSK can't change how addresses
	are mapped by the Task Builder, so if you forgot to use the
	/PR:5 switch for a program that access the executive, MODTSK can't
	help you.)
 
MODTSK was originally written to enable me to change values that the Fast
Task Builder (FTB) doesn't support; by using FTB and MODTSK in certain cases,
you can get a task built (and modified) in less time than TKB alone takes.
These are the items that MODTSK gives you that FTB doesn't:
	1.  The task's installed name (TASK= option)
	2.  The task's partition name (PAR= option)
	6.  Post-mortem dump on abort switch (/PM)
	7.  Task slaved switch (/SL)
	8.  SEND directive to task permitted switch (/SE)
	13. Task, if privileged, maps to I/O page switch (/IP)
	15. Task has an external header switch (/XH)
	16. Task doesn't have an external header switch (/-XH)
	17. Date task built
	18. Task priority (PRI= option)
	19. Task extension (EXTTSK= option)
 
(And if you need the /AC:0 or /PR:0 switch, you can use FTB to build the
task (without specifying /AC or /PR), and use MODTSK to change the appropriate
bit for you.)
 
Both programs are written in Fortran-77.
 
To compile and build them, enter @MODLUN and/or @MODTSK.
(It is assumed that your SYSLIB contains the F77 OTS.)

          ********************DM0:[343,31]README.NOW;1********************
          ********************DM0:[343,31]README.NOW;1********************






                3M ES&T 1982 Fall DECUS Symposium SIG Tape Submission



               This is the 1982 Fall DECUS Symposium submission to the  RSX
          SIG tape from 3M Engineering Systems and Technology Laboratories.
          Three UFDs will be found in this kit.

               The first UFD contains this README.NOW file.

               The second UFD contains source and command files to build  a
          main  memory  resident pseudodisk driver for 22-bit PDP-11s.  The
          function of this package is to allow the use of a block  of  main
          memory  as  a  high-speed  disk emulator.  This software has been
          tested under RSX-11M-Plus V2.0.  This UFD contains  92/95  blocks
          in 7 files.

               The third UFD contains source and command files to build the
          idle  terminal  monitor  for  RSX-11M or M-Plus.  The function of
          this package is to enforce  security  on  industrial  systems  by
          logging  out  terminals  which have been inactive for a specified
          period of time.  This software has been tested under RSX-11M V3.2
          and  V4.0,  and  under  RSX-11M-Plus  V1.0  and  V2.0.   This UFD
          contains 88/88 blocks in 5 files.

               Caveat:  3M makes no warranty, expressed or implied,  as  to
          the  fitness  of this software for any application, and expressly
          disclaims  responsibility  for  any  damages,  consequential   or
          otherwise, resulting from the use of this software.

          ********************DM0:[343,32]README.1ST;1********************
          ********************DM0:[343,32]README.1ST;1********************






                  A Memory Resident Disk Driver for RSX-11M/M-Plus





          1.0  General


               This distribution kit contains source and command  files  to
          build  a  memory resident pseudodisk for RSX-11M or RSX-11M-Plus.
          The driver builds as a DX:  RX01 floppy disk driver emulator.

               You absolutely MUST have a 22-bit machine in  order  to  use
          this   driver   as   distributed;    this   currently   means   a
          PDP-11/23-Plus, 11/44, 11/70 or 11/74.



          2.0  Building the Driver


               To build the driver, put all the  distribution  files  in  a
          (preferably)  empty UIC and invoke the build command file, SLGEN.
          This build  file  is  quite  intelligent  and  almost  completely
          automatic.   It  should  be able, without manual intervention, to
          build a driver for your system.



          3.0  When Starting Up Your System


               A template command file to install and remove  the  resident
          disk  is provided.  RESDSK.STA is the startup file.  Note that it
          makes use of (M V3.2 and M-Plus V1.0) unsupported features in the
          indirect command file processor to parse and pass a command line.
          RSX-11M users will have to forget about the single  command  line
          feature  unless  the  proper  patches  to BIGIND to support those
          features have been made.

               Please note that RSX-11M systems must have previously  VMRed
          a  RESDSK partition into the system;  RSX-11M-Plus loads the disk
          partition in GEN, on the high end.   If  you  have  other  things
          which  go  in the high end of GEN, the resident disk and its data
          partition must be loaded first.



          4.0  If Your System Already Supports a DX: Driver


               If your system  already  supports  a  DX:   driver,  certain
          changes  in in the data base, file names, and the command file to
          reflect a different driver  name  must  be  made.   This  is  not

                                                                     PAGE 2



          difficult.   As  most  systems  do  not support both DX:  and DY:
          devices, a good alternate name for this "device" might be DY:.



          5.0  Caveat, RSX-11M Users


               Conditionalization of the data base  for  RSX-11M  has  been
          done,  but no guarantee is made that this driver works on RSX-11M
          systems.  This is particularly true on systems with less than 128
          K, because this disk builds for a 512 block (128 K) disk.



          6.0  Problems, Suggestions, Further Information


               For those who may  be  interested,  a  formal  treatment  of
          theory  and implementation of memory resident disks will be found
          in the Proceedings of the Fall 1982 DECUS Symposium.

               If you have problems or suggestions regarding  this  driver,
          please submit them - in writing with pertinent documentation - to
          the author at the  address  below.   Phone  calls  and  in-person
          visits regarding this package will be politely refused.



                                   Bruce R. Mitchell
                                   3M Engineering Systems and Technology
                                   Building 518-1
                                   3M Center
                                   St. Paul, Minnesota
                                   55144

          ********************DM0:[343,33]README.1ST;1********************
          ********************DM0:[343,33]README.1ST;1********************






               This  distribution  kit  contains  the  RSX-11M/M-Plus  user
          monitor  files.  Please note that this version of the monitor was
          written for RSX-11M V3.2 and RSX-11M-Plus V1.0;  no guarantee  is
          made that it will run under RSX-11M V4.0 or RSX-11M-Plus V2.0.

               This distribution corrects the bugs in the version which was
          distributed in the Multi-Tasker and corrects the deficiency which
          prevented the monitor from logging out its own TI: .

               To build the user monitor,  it  is  necessary  to  copy  the
          distribution files into a chosen UIC and invoke the build command
          file, USERGEN.   The  command  file  is  reasonably  intelligent,
          UIC-independent,  and  should  be  able  to  build a task with no
          intervention.  If this is not the case, it may  be  necessary  to
          run  the  command  file  with  the /-MC switch and build the task
          manually from the produced build command files.

               Anyone with suggestions on how  to  beat  the  problem  with
          logouts  of  terminals logged in to remote systems should contact
          the author, as this is an extremely irritating problem.



                                   Bruce R. Mitchell
                                   3M Engineering Systems and Technology
                                   Building 518-1
                                   3M Center
                                   St. Paul, Minnesota
                                   55144

          ********************DM0:[344,1]README.1ST;30********************
          ********************DM0:[344,1]README.1ST;30********************

			       K M S K I T
			   R E A D M E . 1 S T
				V 4 . 0


        The following UIC's are part of the KMSKIT RSX11M  V4.0  Enhancements
   Package.
 
[344,1]		Documentation files.  All FCSRES features supported in
		previous releases are now supported by DEC with the
		PLAS ANSI FCSRES.  KMS no longer supports the command
		and ODL files for the 4K non-ANSI, non-PLAS FCSRES.


[344,2]		HELP files specific to using this kit.

[344,3]		Command files (.COM) and what not which has been useful to
		us in migrating from RSX to VMS.  Note, that we have command
		files which do identical things on both our systems.
		Note, also the super-dooper SPR generator for VMS, and
		the MEMO and word processing files.
 
[344,5]		Useful command files. MEMO is used for automatic memo
		generation and filing.  WP converts a VT100 to a menue
		driven word processing terminal.  BUILD is an indirect
		command file which is used in dynamically creating
		procedure files for PIN.  These files use BLD.CMD and 
		OPT.CMD when they run to do the taskbuilding.
		COMPILE and LINK are also supplied as examples of
		using indirect command files to provide a CCL command.

		SPR.CMD - The RSX group likes this one.  It will produce
		legible, machine generated SPR addendums.  SPR
		administration will now accept these if you send
		in a preprinted form with your name attached and
		6 or so copies of the addendum.  In addition it will keep
		a file of all SPR's sent which you can use to keep track
		of where they are in the system.
 
 
[344,40]	Terminal and disk accounting, privlege allocation,
   		modifications to HELLO, HELP and BYE, account utilities
   		and report programs. Mark Johnson's MAIL Utility
		for V4.0. Run privlege checking and searching both
		LIBUIC, NETUIC and SYSUIC on a RUN $ command. 
		SET /LIBUIC for RSX11M (just like M-Plus).
		Enhancements to ...AT. to implement the /-LI switch.

    
[344,43]	Utilities. An enhanced version of RMC which uses 
		the RPOI$ (Chain) directive if available so RMC
		can exit at once before command completes and still
		have exit status passed on.  This version of RMC was
		written to use the new F77 compiler.

 
[344,44]	Here is a version of the old RMDEMO which runs on VT100's
		which are in ANSI mode.  This version is almost half as
		small as the new version and supports reploting and
		easy exit. In addition, if KMS Accounting is present
		and active, it provides a dynamic display of the percent
		of total system utilization.  This version (less
		my mods) was distributed with the field test kit of 
		RSX11M V3.2 and is distributed here courtesy of the the
		RSX group.  It runs only on a RSX11M V4.0 system.
    
[344,45]	PDQ -- Program Development Queues.   PDQ is a multi-
		queue command file despooler (using QMG...).  Submit
		a command file for execution.  When a program development
		queue becomes free, the command file executes at your TI:

		Also included is a Procedure Interpreter (PIN) for use with
		BATCH.  PIN is used as a replacement for ...AT. by PDQ
		When built with FCSRES, PIN is 4 times smaller than ...AT.

		The previously released version of BATCH can be obtained from
		previous SIG tapes.  It still should work but is not now
		in active use on our system.  We use PDQ.  However, include
		is an updated VTDRV.  The update only is for its data bas
		so it can work on a multi-CLI system.
    
[344,61]	CCL V8.0.  Alternate CLI support.  Uses the RPOI$ directive.
		Need I say more?  Almost too useful to be free.

[344,65]	A complete SYSTEM ACCOUNTING package for RSX11M.
		While oriented towards providing performance measurement,
		it provides the basis for implementing a versitile and
		reasonable charge-back accounting system.  Some reports
		are provided which will do this.  Please read SYSLOG.DOC.
 
[344,66]	This UIC contains programs and command files to aid in 
		measuring system performance.  LOAD.CMD will measure system
		performance for from 1 to 'n' concurrent program development
		sessions.  To fully utilize its features it is best to have
		implemented KMS accounting, but some rough benchmarks can be
		done with a vanilla flavor RSX11M V4.0 system.

		For systems with KMS Accounting, program SNPSHT will
		produce a snapshot of the system performance statistics
		which are collected by SYSLOG.  SNPSHT produces a command file
		for setting global parameters(.SETN $PARM val) so that a
		controling command file can use the values.  Also a program
		(DSKMON) is provided to measure the load on one's system disk
		(how much time it spends busy).
 
     To create the kit documentation, SET /UIC=[344,1] and type 
				@CREATEDOC.CMD.
A version of RNO is on [344,1] which will be used if you do not have
RNO installed on your system.  Please, create and read the documentation
before leaping in and trying to use the kit!

     A discription of all the modifications and enhancements and most of
the  utilities is in KMSKIT.DOC.  The command file [344,40]KMSGEN.CMD will 
provide all required information (or most of it)for building the  KMS  
Enhancements and a number of the other programs. Read KMSKIT.DOC before 
trying to include the executive data base changes.
 
     To use this kit, transfer the files to their respective UIC's.  The 
user with an RK05 system (like I used to) is going to have a bit (a lot) of
trouble since there are a lot of files. If the HELP and documentation files
are all transfered to a seperate disk, then a RK05 can be constructed
containing just the kit sources, command files, SLP files, and DEC virgin
distribution source files and .OLB files. (with room left over for
taskbuilding). However it will be tight. Read all the documentation over
twice. Set /UIC=[344,40] and type @KMSGEN/-MC and run through a KMSGEN asking
for a long dialog. Place the required DEC sources in the correct places,
KMSGEN will try and do all the SLP patches both to MCR sources, the EXEC
modules and the SYSGEN command files. If KMSGEN sucessfully SLPs the MCR, EXEC
and SYSGEN command files, stop, place the OLB's and sources on your SYSGEN
disks and do a SYSGEN if you are incorporating data structures (accounting)
requiring a SYSGEN. Once the SYSGEN is done use KMSGEN again to create all
needed files. 
 
     It is very important that any user implementing these enhancements
to register its use with me.  If any bugs are found that are of consequence
I am prone to mail out bug fixes to the current distribution list.  Also
direct feedback to me is important for deciding if features/programs are
to be enhanced, maintained and supported from one RSX11M release to the 
next.
 
     These programs have been extensively tested for the case where all KMS
options are selected and where most DEC sysgen options are selected.
KMSGEN and the command files to implement KMSKIT for the general user have
had almost no testing since I do all patches one at a time checking results
as I go.  The first user to try KMSKIT found a bunch of bugs in the command
files.  These I tried to fix.  But, as we all know, bugs are hard to 
completely stamp out.  Be warned, be careful, and be alert.  Since, I know
the SLP patches once incorporated work, I am sure they can be incorporated
with a bit of perseverence.  I appologize in advance for any potential
inconvenience, but current government regulations (let alone my family)
preclude me spending in excess of 24 hours daily at work.  I simply do not
have time to do all that I have to do as well as all that I would like to
do.

     Other options/configurations of this KIT are possible, but until I start
getting feeback from other users who have configured their option selection
option selection differently, I will not know if I got all the conditional
code correct.  

						Good Luck,
 
 
						James G. Downward
						KMS Fusion, Inc.
						3941 Research Park Dr.
						Ann Arbor, Mich. 48104
						(313)-769-8500
						05-May-1982

          ********************DM0:[350,50]README.1ST;1********************
          ********************DM0:[350,50]README.1ST;1********************

Submission for Fall Decus Tape 1982 in Annaheim from Bankers Trust Co.

					Kitty Bethe
					130 Liberty St., 37th floor
					NY, NY	10006
					(212) 775-4190

This submission consists of some of our troubleshooting utilities and
operator command files which might be of general use. Our systems are
PDP 11/70s running Mplus version 1; unless otherwise noted these
programs are expected to work under 11M and Mplus v2. No command files
are expected to work for other environments; where already converted
to Mplus v2, the command file is included with an extension of .MV2 .

Conventions:  Task build command files are nameBLD.CMD, where not
vanilla (MAC name=name) macro assembly files are nameASM.CMD. No
additional documentation other than this file and the source code
is available at this time. Sorry, we didn't have the time; please
don't call us to ask us how to use it or tell us it doesn't work
in an environment different than ours (fix it and resubmit it !).
Control Z will exit any of these programs that are interactive.
	** correction, we've included our Help files from
		our utility uic [2,1] which covers more
		than we've submitted (most of the rest is
		from previous Decus tapes)
Warning, almost all of the troubleshooting utilities were originally
written to deal with real emergencies and may or may not have been 
cleaned up later on.

	PROGRAMS in this account:
		(Fortran IV Plus and non priviledged unless
		  otherwise noted)

FILEID
	If you input the 2 octal numbers of a file id it will give
	you the name and owner UIC for the file.  Used to follow
	up on crytic error messages from BRU. (Assign desired
	pack to SY: to use for satellite drives)
FNDBLK
	If you input a decimal physical block number on the pack
	assigned to SY: it will tell you the filename, owner UIC
	and block number within the file in question. Used to 
	correlate data corruption with errorlog entries.
ERC
	If installed (as ...ERC) then the command ERC n, where n
	is a number, will add n to the error sequence (used by
	QUICKERR.CMD)    Macro, Priviledged.
ERRSUM
	Does a 1 page error summary, including device timeouts.
	Only for Mplus v1 (possibly RSX-11M pre v.4)
DSKZAP
	Copies a physical block number from an input pack to an
	output pack (they can be the same), displays the block
	in specified format (octal,decimal,ascii,byte octal)
	suppressing lines of all zeros, then allows you to edit
	it in same format. It asks you if you are sure !
	Mount both packs foreign and be priviledged, unfortunately
	does not do CRC calculations for you (for repairing index
	files). Originally written to rewrite the home block from
	the previous days backup in a dire emergency, used since
	for index file repairs (CRC done manually)
ERRCHK
	Exits with status equal to the error count, used in command
	files to check if any errors occured during an operation
	(for example BRU).   Macro, Priviledged.
TCI
	Compares task images, outputs information about task header
	differences and does up to 50 code differences (the number
	50 is a parameter at beginning of fortran source), for each
	code difference lists the segment name and memory address
	of the difference. With the debug switch on it will also
	list the segment table (even when ZAP won't) - a small bug
	exists whereby the segment names are sometimes garbage but
	the table will still match in order the one on the map,
	(occurs rarely, haven't had the time to resolve it). Used
	to periodically check out integrity of production task
	images. Warning, a patch to the F4P compiler back in 1980
	causes very old tasks not to compare because data storage
	in IDATA (and thus PDATA call lists) is in different order.
	**** probably will not work in Mplus V2 or RSX-11M V 4***
VT100TST
	Simple Fortran program that demonstrates most advanced
	graphics features on a VT100.

 All the .MAC files in this account are supporting subroutines for
the Fortran programs above.

		COMMAND FILES
	Since these are specific to our environment do not
	use without reading them and modifying as necessary

BRUDSK
	Command file to do the nightly disk to disk backups
	done by operators; checks exit status all over the place,
	tells them what is likely to be the problem and what to
	do about it. Assumes a round robin ( pack A to B to C ...
	and back to A again) for audit trail purposes. The audit
	trail mechanism is used to check if they are about to
	copy over the current pack or make a copy of a non current
	one - they are warned with large banners but in our
	environment it wasn't reasonable to completely disallow
	the operation (they are asked if they are sure).
		This command file assumes the utilities ERRCHK,ERRSUM
	and TIME (not included here - prints the time and error
	count on the invoking terminal) are located in uic [2,1] ;
	it also assumes that a command file [1,2]SYSID.CMD defines
	$SYSID to be a system id string and a command file [1,7]LP11
	exists to set up a terminal line as a printer for long error
	logs (for your conveniance LP11 and NOLP11 are included)
		Another assumption is that all disk packs have a
	unique number form 1-9999 (disk pack id) for audit trail
	purposes. A further assumption is that the Bru is done in
	UIC 1,7 and that that is the UIC for the audit trail also
	(the files DISK.ID and BACKUP.ID are the audit trail created
	on the output pack and updated on the input pack
MULTIBAD
	does multiple BADs, preserving audit trail, no warnings yet
COPY
	does the nightly backup using DSC (when all else fails) -
	audit trail not maintained here yet
QUICKERR
	does an error summary of all current errors and those in
	ERROR.SYS (we rename ERROR.SYS to ERROR.SAV at Shutup and
	have other command files to get at saved error info) then
	restores the error count by adding back the number it had
	before the ERF. Prompts for errors from specific devices
	or device classes after the summary.
		The MV2 version is completely different, with
	similar functionality (we don't have to remember all those
	new switches !)

          ********************DM0:[350,60]README.1ST;1********************
          ********************DM0:[350,60]README.1ST;1********************

 PSZ allows for the easy creation/removal of COMMON partitions.
It is especially useful on RSX11M systems used for program development;
where testing different applications requires frequent shuffling of
common partitions in and out of memory.
 
PSZ will create a COMMON partition in the smallest memory hole in which
the partition will fit; if there is no such hole, it will attempt to
shrink GEN and put the common on top of GEN.  When a partition is
removed, PSZ makes GEN as large as it can.
 
PSZ can also be used to change the size of existing partitions, in a
variety of ways (see PSZ.HLP).
 
PSZ has been tested extensively under versions 3.2 and 4.0 of RSX11M.
 
This version of PSZ is presented by
			RGTI Systems Software
			1 Penn Plaza, rm. 4310
			NY, NY 10001
			(attn: Ross Amann, 212-695-5001)
This is a heavily modified version of the PSZ on the fall 81 RSX SIGtape
under UIC [300,125] (by Rodger S. Miles)

          ********************DM0:[350,61]README.1ST;1********************
          ********************DM0:[350,61]README.1ST;1********************

This is a re-release of a RUNOFF from the Spring 81 tape.
As a further identification aid, the most recent changes appear to have
been the table of contents and change bars by Dan Curtis and Ray Van Tassle.
 
Some bugs have been fixed; some new features added.
The new features allow RNO to process the output of another program
or of a preprocessor.  We have used this version as the next-to-last
step (PRT is last) in automatic documentation of application programs.
A particularly useful feature is the multi-index capability; e.g.,
you can have one index of subroutine calls, one of global references,
one of special symbols, etc.
 
Other items of interest:
	1.) Underscore and dark work for &
	2.) Underscore/dark switches make sense
	3.) Improved table of contents format
	4.) Minor improvements in headers (underscore problems remain)
	5.) You can turn off word separation on a new input line.

			presented by:	RGTI Systems Software
					1 Penn Plaza, Room 4310
					NY, NY 10001
					attn: Ross Amann (212-695-5001)


    To install runoff:  Type "@MAKRNO", then throw away the .TSK  file
    you  don't  want.   You  may  want  to edit the task-build file to
    modify defaults.






          ********************DM0:[351,20]README.1ST;1********************
          ********************DM0:[351,20]README.1ST;1********************

	THIS TAPE CONTAINS TWO PROGRAMS. THE FIRST IS A COMPLEX
RADIX2 FFT WITH UNSCRAMBLING IN PLACE. ADDITIONAL ROUTINES PERMIT
CALCULATING THE FOURIER COEFFICIENTS, OR GENERATING THE TWO SIDED
TRANSFORM FROM COEFFICIENTS PRIOR TO INVERSE TRANSFORMING. 
	THE SECOND PROGRAM IS A BI-CUBIC SPLINE WITH CONTROL AND
ERROR FEEDBACK THROUGH THE ARGUMENT LIST FOR ADDITIONAL CONTROL.

	COMMENT LINES IN THE FORTRAN SOURCE PROGRAM PROVIDE SELL
DOCUMENTING. IN ADDITION BOTH PROGRAM HAVE SAMPLE DRIVERS INCLUDED
ON THE TAPE TO DEMONSTRATE FEATURES.
	IN ADDITION TO THE SOURCE FILES FOR BOTH THE ROUTINES AND
DRIVERS, OBJECT FILES FOR BOTH F4P AND F77 ARE INCLUDED. ALL OF THE
OBJECT FILES WERE CREATED USING THE /FP SWITCH AND NONE ARE LINKED
TO ANY RESIDENT LIBRARIES.
	TASK IMAGES TO RUN ON A MAPPED PDP 11/70 UNDER RSX 11-M
V3.2D OR LATER OR V4.0 ARE ALSO INCLUDED.
 
	THESE PROGRAMS ARE PROVIDED WITHOUT SUPPORT. NEITHER
C.B.S.- CTC NOR I CAN PROVIDE SUPPORT. BOTH PROGRAMS HAVE BEEN
USED FOR AN EXTENDED PERIOD AND SEEM TO WORK WELL.
	IF YOU HAVE ANY DIFFICULTY USING EITHER PROGRAM, FEEL FREE
TO WRITE OR PHONE BUT HELP CANNOT BE PROMISED.
	IF YOU FIND ANY BUGS PLEASE LET ME KNOW AND I WILL ATTEMPT
A FIX. NOTHING'S GAURENTEED BUT I REALLY BELIEVE BOTH OF THESE ARE
BUG FREE. (I'LL PROBABLY LIVE TO EAT THOSE WORDS). ANYWAY I WOULD
LIKE TO HEAR FROM ANYONE THAT FINDS THEM USEFUL.
 
		BENSON ACKERMAN
		MGR. SYSTEMS ANALYSIS
		C. B. S. TECHNOLOGY CENTER
		227 HIGH RIDGE ROAD
		STAMFORD CT. O6905
		TEL: (203) 327-2000
 


          ********************DM0:[351,30]README.RSX;1********************
          ********************DM0:[351,30]README.RSX;1********************


Brian Nelson
Computer Services
University of Toledo
2801 West Bancroft
Toledo, Ohio 43606
(419) 537-2841
      537-2511

Contributions to the FALL 82 RSX Sig Tape

 [300,300]	A text editor used here under both RSX and RSTS
		For more information, see WHYTED.RNO and MODS.TXT

		Please note that the following files are not
		ascii text files. They must be copied in image
		mode.

		 EDRT.RTS		the RSTS version. For RSTS
					a 'run time system' is one
					way of building  shareable
					code. It predates reslibs.

		 *.HLB			help files. See INSTAL.DOC

		 


          ********************DM0:[351,46]README.1ST;1********************
          ********************DM0:[351,46]README.1ST;1********************

	Building the FILEDEF System.
	---------------------------

     The operation of the FILEDEF system is described in the
documentation file FILEDEF.DOC. The purpose of this note is to
give instructions on building the package.

     Assemble the open subroutine patch:

	MAC OPEN.POB=OPEN.PAT

     Extract the open subroutine from the system library, apply
the patch and replace the module:

	SET /UIC=[1,1]
	LBR OPENF77.ORG=SYSLIB/EX:$OPEN
	PAT OPEN.OBJ=OPENF77.ORG/CS:155507,[g,m]OPEN.POB/CS:127615
	LBR SYSLIB/RP=OPEN.OBJ
	SET /UIC=[g,m]

Here [g,m] is the UFD containing the FILEDEF files.
(If the FORTRAN object time system is in a different library,
say F77OTS.OLB, then you should reference this rather than the
system library.) Note that the original file OPENF77.ORG can be
used in any FORTRAN program that wishes to use files without
going via the FILEDEF system. The FILEDEF system itself uses
these files to avoid an infinite loop.

     FILEDEF requires a FORTRAN-77 compiler, installed as F77,
and runs on RSX-11M V4.0 only. To build the system, type:

	@FILEDEF ALL

     You may want to inspect the parameter file FILPARAM.INC
before you do this in order to set the limits on logical unit
and terminal numbers. Individual members of the system may
be compiled by just typing @FILEDEF and answering the questions.

     Install the tasks that run the system:

	INS FILEDEF	(installs as ...FIL)
	INS FILMAN	(installs as FIL...)

     Initialise the system by running FILINI:

	RUN FILINI

This initialisation should be done each time the system is booted,
in order to clear any assignments that may not have been properly
cleared, eg. by a system crash. The startup command file is the
best place to do this.

     If you have any problems, please drop me a line:

	Steve Thompson
	School of Chemical Engineering
	Olin Hall
	Cornell University
	Ithaca NY 14853
	(607) 256 4616	(office)
	(607) 256 3895	(computer room)

     Good luck!


          ********************DM0:[351,47]README.1ST;1********************
          ********************DM0:[351,47]README.1ST;1********************






     Building the Batch System
     -------- --- ----- ------

          Note:  these notes apply to RSX-11M V3.2.  The system runs  OK
     under  V4.0  but  the  procedure  described  here  may  be slightly
     different in the SYSGEN section.  I apologise in advance  for  this
     not  being  fully  documented,  and also for the documentation file
     BATCH.DOC being somewhat specific.   There  is  a  new  and  vastly
     improved  version  of the batch system being developed (Version 3).
     If you are interested in getting a copy of it, or have  suggestions
     for  improvements or bug fixes to the current version, please write
     to me.  If you want to use the package at all, please let  me  know
     so  that  I can put you on my mailing list for improvements.  I can
     be reached at:
      
          Steve Thompson
          School of Chemical Engineering
          Olin Hall
          Cornell University
          Ithaca NY 14853
          (607) 256 4616 (office)
          (607) 256 3895 (computer room; rather noisy)
      

          The virtual terminal driver is loadable but  it  must  have  a
     resident  data  base.   Therefore,  a  SYSGEN  must be performed to
     incorporate the batch system.  In what follows, [g,m]  is  the  UIC
     under  which  the batch system files are stored.  Go straight ahead
     and perform the SYSGEN;  the following support *must* be included:

          (i) Spawn directive (Parent/Offspring tasking)

          (ii) Stop bit support.

          (iii) Loadable Driver support.

          (iv) Support for user-written drivers.  The  virtual  terminal
     driver does not require the Executive routines $GTWRD and $PTWRD.

          (v) Read-after-prompt support in the terminal driver.

          (vi) Crash dump support with a magnetic tape as the crash dump
     device  (this  is optional but necessary if you want to restore the
     state of the batch system in the event of a system crash).

          You should also modify IND.TSK (...AT.)  as  per  the  release
     notes  to  include  spawning  and  stop bit support (RSX-11M V3.2).
     This involves a source change (in INDIMP.MAC and INDPDW.MAC) and  a
     change  in  the task builder command file, INDBLD.CMD.  When SYSGEN
     pauses and asks for  you  to  assemble  your  drivers,  proceed  as
     follows:

     	SET /UIC=[g,m]

                                                                  PAGE 2



     	EDI VTTAB.MAC	(jocks use TECO here)

          Now locate the line NVT=...  and  change  the  number  to  the
     largest  number  of  batch  streams that you will ever want to have
     running jobs simultaneously;  the value set can  be  from  1  to  4
     inclusive  (in  fact it could be 20 if you wanted it but this would
     give the loader a hard time).  The batch system can  be  built  for
     any number of batch streams up to this number so that by specifying
     4 you don't commit yourself  to  running  4  batch  streams.   Each
     virtual  terminal  that  you specify in excess of your batch stream
     requirements in this manner costs you only 32 words of pool.   Once
     the  basic data base has been incorporated into the system, you can
     change the number of batch streams up to the SYSGEN  limit  at  any
     time,  providing  that  there  are  no jobs active.  Note also that
     batch streams are only represented  by  VT1:   and  up;   VT0:   is
     always  added  and  is  the exclusive property of the Batch Manager
     program.  If you have other user-written drivers  in  your  system,
     this procedure will have to be diddled slightly, but this should be
     straightforward.

          Once you have edited VTTAB.MAC to your satisfaction,  continue
     as follows:

     	LBR [1,1]EXEMC.MLB/RP/SZ=[g,m]QUEDF.MAC
     	MAC VTTAB=[1,1]EXEMC/ML,[11,10]RSXMC,[g,m]VTTAB
     	MAC VTDRV=[1,1]EXEMC/ML,[11,10]RSXMC,[g,m]VTDRV
     	SET /UIC=[11,24]

          If any errors occurred, repeat the procedure until  everything
     is  fixed.   Then,  making  sure  that  the  UIC is set to [11,24],
     continue with

          UNS AT.  or

          RES AT.

          depending on whether the version of AT.   you  are  using  has
     stop bit support in it or not.

          Some time later, you will get a prompt from LBR together  with
     instructions  to  add  your  modules to the Executive object module
     library.  The modules for the virtual terminal driver and its  data
     base can be inserted with the command

          LBR>RSX11M/RP=[g,m]VTDRV,VTTAB

          After this, SYSGEN will carry on as it is wont to do, and  you
     will  come  to  a  place  where  the  Executive build file is to be
     edited.  When SYSGEN prompts with

          EDI RSXBLD.CMD

          the only EDI commands that you need to issue are

                                                                  PAGE 3



     	SC/SYSTB/SYSTB:VTTAB/
     	EX

          Of course, this may have to be  modified  if  you  have  other
     user-written drivers.

          The executive should now  task-build  ok.   Some  time  later,
     SYSGEN will ask if you want to build any loadable drivers.  To this
     question answer YES, and specify VT as  a  (or  the)  device  name.
     Don't  forget  that  just  before the new system is configured with
     VMR, edit SYSVMR.CMD and include LOA VT:  just after the definition
     of  DRVPAR.  The size of the partition needed by VTDRV is 600 octal
     bytes.

          After SYSGEN, when the system (V3.2) is up  and  running  (?),
     you  will  probably want to select certain options available in the
     batch system.  The various possibilities are  fully  documented  in
     the  source files.  You will have to examine the first few pages of
     BAT.MAC and BATMAN.MAC and comment  out  the  conditional  assembly
     parameters you don't need support for.  By default you get the lot.
     Also, you will want to change the number of active batch streams by
     looking  for  where  the  macro  "STREAM"  is called in BATMAN.MAC.
     There it gives instructions on what to do.  You will also  need  to
     edit BATBLD.CMD and BATMANBLD.CMD and possibly also STACKBLD.CMD if
     you want to change the default maximum stack size.  It's probably a
     good  idea  to  read  the Batch System User's Guide first, but this
     step can be skipped if you really can't face it.  The RUNOFF source
     for  the  guide is included in the file BATCH.RNO.  To assemble the
     system, issue the command

          @BATCHASM

          Any questions that may be  asked  are  self-explanatory.   The
     whole lot can be task-built by typing

          @BATCHBLD

          You  can  now  run  the  batch  system.   The   command   file
     BATCHINIT.CMD  will  initialise  everything.   You may want to edit
     this first, so have a look at it (it's only short, honest).

          The following approximate task sizes are a guide to the memory
     used  by  the  batch manager program (BATMAN).  The MCR command BAT
     (the task BAT.TSK) is large and will always lead to an  overlapping
     I/O page message when it is installed - ignore it.

     	NUMBER OF	SIZE OF BATMAN		SIZE OF BATMAN
     	STREAMS		WITH ALL OPTIONS	WITH MINIMUM OPTIONS
     	(NOT # OF VT:'S)   (WORDS)		   (WORDS)

     	    1		    5000		    4700

     	    2		    5350		      -

                                                                  PAGE 4



     	    3		    5670		      -

     	    4		    6020		    5700

          Building BATMAN.TSK (but *not* BAT.TSK) with an  FCS  resident
     library  is a good idea if you have one since it reduces these task
     sizes by anything up to 2900 words.

          All the batch system tasks run  in  partition  GEN.   You  can
     change  the  partition  for  BATMAN  to a dedicated user-controlled
     partition if batch will always be running, but one thing to note is
     that  it should *never* be built as checkpointable.  BATMAN will at
     times have two I/O operations outstanding, and nearly  always  one,
     so if it is checkpointable it will just not work!

          The task CQR will restore the state of the batch  queue  if  a
     system  crash should occur, but only if you have taken a crash dump
     on magtape (CQR reads the dump on the tape).   Running  CQR  is  an
     option in the startup file BATCHINIT.CMD.  If you want to perform a
     normal system shutdown when there are jobs in the queue, run SHUTUP
     as normal.  The file [1,2]SHUTUP.CMD should contain the command

          @[g,m]BATCHCLOS.CMD

          This command file will cause the queue to wind down in such  a
     way  as  to  cause BATMAN to exit at the end of the current job(s).
     If there are any jobs in the hold queue, you will have  to  release
     them  at  this  point  with BAT /RL:n.  (Note that you cannot BRO a
     message to a batch job:  VTDRV allows the operation and marks it as
     successful,  but  does  not  actually perform a data transfer.  The
     original intention behind  this  was  to  stop  someone  running  a
     program  in one batch stream that had got a LUN assigned to another
     stream from corrupting someone else's log file by  writing  garbage
     into  it.   VTDRV  could easily be modified to insert a subfunction
     bit so that IO.WBT's could be used to send external messages to log
     files.)

          When the system has halted as a result  of  SHUTUP,  you  must
     force  a system crash.  To do this, load address 40 and restart the
     processor.  The normal system crash display will  appear,  and  you
     can then take a crash dump in the usual way.





                                                                  PAGE 5



     Batch System Operator Commands
     ----- ------ -------- --------

          The following switches are  accepted  by  BAT  (at  privileged
     terminals  only)  to  perform  various queue maintenance functions.
     All these switches fall into a single class of  commands  with  the
     /ID  switch, and may be used in any combination in a single command
     line.  All of the specified characters are required.

          /SAVE

          This switch is accepted but no action is performed.  It is  to
     be used for a future extension where the queues will be copied to a
     disk file.

          /RESTORE

          Like /SAVE, this is a  dummy  switch,  which  will  eventually
     restore  the  queues from a disk file created with /SAVE.  The idea
     is to make machine shutdown a tidier looking affair.

          /RUNDOWN

          This switch puts  the  batch  system  in  a  state  where  all
     currently  running  jobs will be allowed to finish, but no new jobs
     will be started.  New jobs will still be accepted into  the  queue.
     It can be used to wind down operations preparatory to shutting down
     the system (see also  /STOP).   Don't  forget  that  you  must  use
     /RUNDOWN  whenever  you  SET /NOLOGON, or jobs may terminate due to
     logon failure.

          /CLOSEDOWN

          This switch puts  the  batch  system  in  a  state  where  all
     currently  running  jobs  will  be allowed to finish, all currently
     waiting jobs will be allowed to start and to run to completion, but
     no  new  jobs will be accepted into the queue.  This is a different
     condition to that implied by  /RUNDOWN.   Setting  /CLOSEDOWN  will
     cause the job queues to empty.

          /STOP

          This switch puts the queue in rundown, and  causes  BATMAN  to
     exit  when  all the currently running jobs have finished, providing
     there are no jobs in hold.  If there are jobs in hold, BATMAN  will
     exit when all the hold conditions have expired.  This switch can be
     used to terminate BATMAN activity, while still allowing jobs to  be
     accepted  into the queue.  If you wish to set /STOP at a particular
     time of day without being present, putting the task BQSTOP into the
     clock  queue  to  execute at the desired time will accomplish this.
     BQSTOP issues a BAT /STOP in internal form and  then  exits.   When
     BATMAN  finally  exits,  it  will  do  so  with an exit status of 4
     (severe error).  This is intentional.

                                                                  PAGE 6



          /RUNJOBS

          This switch clears all three conditions:  /RUNDOWN, /CLOSEDOWN
     and  /STOP.   If the queue is in rundown and closedown, the rundown
     condition alone can be  cleared  with  /RUNJOBS/CLOSEDOWN,  or  the
     closedown condition alone can be cleared with /RUNJOBS/RUNDOWN.

          /QUESIZE:n

          This switch sets the maximum  size  of  the  job  queue.   The
     number  of jobs, n, is octal by default;  to specify decimal append
     a decimal point.  The number  sets  the  largest  number  of  jobs,
     including executing jobs, that can be in the queue at any one time.
     The size cannot be set lower than the number of jobs already in the
     queue.  After the execution of this command, BAT displays

          QUESIZE=n:m

          where n is the (decimal) maximum queue  size,  and  m  is  the
     (decimal)  number of jobs currently in the queue.  This text can be
     displayed by omitting :n  on  the  switch  (just  /QUESIZE)  or  by
     specifying  a  zero  or negative switch value.  The assembly source
     VTTAB.MAC sets the default maximum queue size at 15(10) entries.

          /NEXTJOB:n

          This switch sets the number to be assigned  to  the  next  job
     accepted to be (n+1).  Again n is octal by default.  The value of n
     can be lower than the largest job number already in the queue,  but
     it should not be too close to avoid the situation arising where two
     different jobs might have the same job  number.   The  system  will
     function  correctly  under  such  circumstances, with the exception
     that the cancel or release commands may not be able to act  on  the
     right  job,  depending  on  the  order  of the jobs with duplicated
     numbers in the queue.  After the execution  of  this  command,  BAT
     displays

          NEXTJOB=n

          where (n+1) is the (octal) number that will be assigned to the
     next job submitted.  If /NEXTJOB is used without a switch value, or
     a zero or negative value is specified, BAT  will  display,  in  the
     above  format,  the  job  number  that was assigned to the last job
     accepted, or the value at the last /NEXTJOB  command  if  this  was
     later.

          ********************DM0:[351,70]README.1ST;1********************
          ********************DM0:[351,70]README.1ST;1********************

Project Software & Development, Inc.
14 Story St.
Cambridge, Ma. 02138
617-661-1444

Title:		LIST
Author:		Robin Miller
Date:		December 3, 1982

Description:

	The LIST program is used to list file(s) at the terminal.  It lists
one screen full at a time so you can easily scroll through the file.  On the
VT52, VT100, and Tektronix scope, it keeps the file name and creation date at
the top op the screen.  Typing a /HE to the LIS> prompt displays the valid
switches.  Typing "HELP" or question mark ("?") while listing a file displays
help on additional commands.

Operating procedures:

	>LIST file_name

Where:
	The file_name may be any legal VAX/RSX-11M file specification,
	and may have wildcards (*) for the file names.  If wildcards
	are used, the version number also defaults to * automatically.

	Wildcard listing on the VAX is available by using a command file
	called LIST.COM.  To use this command file, define the following
	symbol in your login command file "LIST :== @LIST.COM".  This
	command procedure will probably need modified for your installation.

Examples:
	*.MAC		*.*		TEST.*		file.ext

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

There have been several changes made to the LIST program.

1.  First, LIST presumes you are running on a VT100 with the Advanced
    Video Option (AVO).  If your VT100 doesn't have the AVO, you must
    specify /VT or the VT command within LIST.  This is only needed
    if you are listing in 132 column mode.  The AVO, adds an additional
    10 lines of 132 column lines for display; otherwise only 14 lines
    can be displayed.

2.  The Find Next (FN) command has been added to search for a previous
    search string.  The Find command now always prompts for a search
    string where previously it would use the previous search string
    if there was one.

3.  The most important change and the most requested, is the keypad on
    the VT100 is now enabled.  The PF2 key can be used to display the
    keypad help just like EDT.  Only those keys which make sense are
    enabled.  For example, FILL, WORD, EOL, CHAR, etc., are all disabled.

    The arrow keys are also enabled.  The right and left arrow keys are
    used to move the margin left or right, and the up and down arrow
    keys are used to backup or advance 1 line.

    I'm open to suggestions as to how the undefined keys should be defined.
    Some of the commands which could be used for these keys are:

    	SEEALL, RULER, NARROW, and WIDE.

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

    The PRINT command has been added to the LIST program.  The command can
    be issued either by typing "PR(int)" to the prompt at the bottom of the
    screen, or by typing the COMMA key on the VT100 auxiliary keypad.

    The file is spooled to logical name SYS$PRINT.  If you want the file to
    be printed on a particular line printer, direct SYS$PRINT to the
    appropriate queue.  For example, to print files on our lowercase line
    printer, issue the following command before running LIST:

	$ DEFINE SYS$PRINT LPB0

   After the file is spooled to the line printer, it is automatically closed
   and the next file (if any) is listed.

   Also, any key on the VT100 auxiliary keypad can now be used to terminate a
   LIST command at the bottom of the screen (i.e., EXIT).  Previously, any
   command terminated by a key on the auxiliary keypad was ignored.

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

Problems:

  1.  The search command only searchs forward through the file.
  2.  Scrolling backward through a file, such as embedded carriage control,
      does not update the screen properly on a VT100.  A temporary solution
      is too type the REFRESH command to get an accurate display.
  3.  Moving the margin by less than a tab stop sometimes causes problems.

Notes:

  1.  The largest record size that can be listed is 512 bytes.
  2.  When listing binary data such as task images and librarys, use the
      /-VFU (disable vertical format conversion) and /SEEALL mode to
      display non-printable characters.


          ********************DM0:[351,73]README.1ST;1********************
          ********************DM0:[351,73]README.1ST;1********************

Project Software & Development, Inc.
14 Story St.
Cambridge, Ma. 02138
617-661-1444

Title:		RSXNET
Author:		Robin Miller & Gary Larsen
Date:		February 18, 1982

Description:

      RSXNET  is  a  program  which  allows  asynchronous communcations
      between  two  computers  (systems).  Communications can be either
      directly  between  the  computers  using a synchronous null modem
      patch  cable (see "HELP PATCH" for the wiring diagram), or over a
      dialup  line (modem).  Communications with the remote system (the
      system  you  want to talk to) is accomplished using a second port
      (asynchronous line) on the local system.

     Help can be obtained on a particular topic by typing :
        HELP  topic  subtopic  subsubtopic  ...

     Examples:
        HELP GET

    Additional information available:

    BAUD_RATE    COMMANDS     DUMP_FILE    EXIT           FILE_TYPES
    GET_FILE     INTERRUPT    INI_FILE     INTRODUCTION   LOG_FILE
    MCR_COMMAND  MODEM_USAGE  NOLOG_FILE   PATCH_CABLE    REMOTE_PORT
    SEND_FILE    SNDRCV       STARTUP      STATUS         SYSTEM_TYPE

          ********************DM0:[351,74]README.1ST;1********************
          ********************DM0:[351,74]README.1ST;1********************

Project Software & Development, Inc.
14 Story St.
Cambridge, Ma. 02138
617-661-1444

Title:		VTM
Author:		Robin Miller
Date:		June 10, 1982

Description:

     VTM is a program used to format messages for a VT100 terminal.
     Various options are available and are listed below.  If no options
     are specified, the default is to clear the screen and write the message
     in double height characters centered in the middle of the screen.

     Help can be obtained on a particular topic (option) by typing :
        HELP VTM subtopic subsubtopic ...

     Get help on "Startup" and "Format" before attempting to use VTM.

     Additional information available:

     ALL      ACSET    ANSI      BLINE    BELL     BLINK    BOLD     BOX
     CLEAR    COLUMN   CENTER    CBOL     CEOL     CLIN     CBOS     CEOS
     DATE     DELAY    DHEIGHT   DWIDTH   Format   JUMP     HOME     ITERATION
     KEYPAD   LINE     LED       LJUSTIFY LMARGIN  NARROW   OUTPUT   OFF
     PLINE    REVERSE  REGION    RESET    RJUSTIFY RMARGIN  RULER    TLINE
     SKIP     SCREEN   SGRAPHICS SMOOTH   Startup  TIME     TEST     TERMINAL
     TTY      UNDERSCORE         UKSET    USSET    WIDE

          ********************DM0:[351,75]README.1ST;1********************
          ********************DM0:[351,75]README.1ST;1********************

Project Software & Development, Inc.
14 Story St.
Cambridge, Ma. 02138
617-661-1444


Title:		RSXMSG
Author:		Robin Miller
Date:		November 10, 1981

Description:

	This module contains a complete list of all the RSX-11M error
codes (both I/O and Directive error codes).  It will either return the
error (or success) messsage to a specified buffer, or will write the
message to the terminal.  In either case, control is returned to the
user program for further processing.


          ********************DM0:[351,76]README.1ST;1********************
          ********************DM0:[351,76]README.1ST;1********************

Project Software & Development, Inc.
14 Story St.
Cambridge, Ma. 02138
617-661-1444

Title:		WHO
Author:		Gary Larsen & Robin Miller
Date:		July 21, 1982

Description:

   WHO is a program used to display information in the accounting file.
 
    Help can be obtained on a particular topic by typing :
       HELP WHO subtopic subsubtopic ...

    Mulitple switches can be appended together.

	Example:
		WHO /GROUP=201/CLI=DCL

	Displays all entrys in group 201 using DCL.
 
 	Switches can be abbreviated to one character.

    Additional information available:

    EXIT     HELP     ME        SHOW      /CLI      /DEVICE  /FULL
    /GROUP   /HEADER  /OUTPUT   /SUMMARY  /TRAILER  /UIC     /USER

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

The following changes were made to the ACTFIL distributed by DEC:

July 28, 1982 by Robin Miller - Version 4.1
		Changed buffer size from 2048. to 512. to save space.

July 29, 1982 by Robin Miller - Version 4.2
		Remove FSRSZ$ macro to save space.  It isn't needed
		 when not using GET$ and PUT$ to accounting file.

          ********************DM0:[351,77]README.1ST;1********************
          ********************DM0:[351,77]README.1ST;1********************

Project Software & Development, Inc.
14 Story St.
Cambridge, Ma. 02138
617-661-1444

Title:		USERS
Author:		Robin Miller
Date:		July 27, 1982

Description:

   USERS is a program used to display the users logged on the system.
You can display all users logged on, or a specific user by specifying
the user name to display.

    Help can be obtained on a particular topic by typing :
       HELP USERS subtopic subsubtopic ...

	Examples:
		USERS

	Displays all logged on terminals and associated user names.  The
	user names are obtained from the accounting file using the login UIC.

		USERS M

	Displays all users with the first or last name starting with "M".

     Additional information available:

     /FULL     /HEADER    /OUTPUT    /SUMMARY    /USER

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

The following changes were made to the ACTFIL distributed by DEC:

July 28, 1982 by Robin Miller - Version 4.1
		Changed buffer size from 2048. to 512. to save space.

July 29, 1982 by Robin Miller - Version 4.2
		Remove FSRSZ$ macro to save space.  It isn't needed
		 when not using GET$ and PUT$ to accounting file.


          ********************DM0:[351,120]README.1ST;1********************
          ********************DM0:[351,120]README.1ST;1********************

The files in this account will enable you to build a Multi-user KED editor
for use on an RSX11-M+ system.  If you are running a heavily used develop-
ment system  this can save you a lot of usable  memory and reduce the load
placed on your system  disk due to  task-loading and  checkpointing.   The
methods used are straight-forward and easily implemented. The only problem
I encountered was the use  of self-modifying(yuck) code in the editor.  To
resolve this I used a disassembler(courtesy of DECUS) to get a pseudo-MACRO
listing which I then poured over to find the glitch. A patch file was then
produced to move the self-modifying code to a  R/W section.  The resulting
task image must be installed with an /INC=XXXXXX.  The size of XXXXXX will
determine how much text can be CUT/PASTED. At our site we install KEDFSLMU
twice, once with an /INC=10000 for normal editing and as  ...KEX/INC=40000
when we need a  bigger buffer.  Also this  version of the  editor uses the
FCSFSL library to eliminate any overlays.

Files included:

	(1)	KEDFSLMU.ODL	- overlay descriptor file (non-overlayed)
	(2)	KEDFSLMU.CMD	- command file to build KEDFSLMU
	(3)	KEDPAT.PAT	- the patch file to make above fix
	(4)	KEDPAT.CMD	- the command file to patch and build KED

	I am available to help with any problems on a limited basis.  The
best and easiest method to contact me is by mail at the following address:

	Derek Franks				(306) 569-4421
	c/o Saskatchewan Wheat Pool
	2625 Victoria Ave.
	Regina, Saskatchewan
	S4P  2Y7
	CANADA

          ********************DM0:[351,130]README.1ST;1********************
          ********************DM0:[351,130]README.1ST;1********************

>>	ADVENTURES IN PASCAL

	Barry C. Breen
	P.O. Box 1964
	Bellevue, Washington 98009

	28-OCT-80
	Rev. 3-DEC-82

 >>	History -- This version of the "Adventures"  game  is  written  in  OMSI
	PASCAL  V1.2 running under RSX11M V3.2 BL26 on a PDP 11/23.  It contains
	special  display  text  files  for  the VT-100 which makes use of double
	width and double height characters for special effect.  It  was  written
	as an exercise in learning PASCAL and RSX while developing software  for
	the  Sundstrand Data Control  Digital Ground Proximity Warning  Computer 
	for the Boeing 767/757 series aircraft.

 	Adapted from a FORTRAN-IV-PLUS version found in a cave, not from the
	latest DECUS version.

	The comments on the original read as follows:
 	    ADVENTURES
 	    MODIFIED BY KENT BLACKETT
		    ENGINEERING SYSTEMS GROUP
		    DIGITAL EQUIPMENT CORP.
	  	    15-JUL-77
	
	    ORIGINAL VERSION WAS FOR DECSYSTEM-10
	    THIS VERSION IS FOR FORTRAN IV-PLUS UNDER
	    THE IAS OPERATING SYSTEM ON THE PDP-11/70

 	The FORTRAN  version also had a notice in the text files  (listed in the 
	instructions at the beginning of the game) which credited  the  original 
	authors as follows:

 	THIS PROGRAM WAS ORIGINALLY DEVELOPED BY WILLIE CROWTHER.  MOST OF THE
	FEATURES OF THE CURRENT PROGRAM WERE ADDED BY DON WOODS (DON @ SU-AI).
	CONTACT DON IF YOU HAVE ANY QUESTIONS, COMMENTS ETC.

 	I have retained most of the data structures and  algorithms as they were 
	in the F4P version with the following changes:

 	  1)	 The  entire  game  is  organized  into  separately  compileable
	    PASCAL modules which run overlaid  when  built  into  a  task.   The 
	    resulting task file is huge,  but  the  task image runs in less than
	    12  Kwords of memory.   Modules  and  procedures which correspond to
	    subroutines in the F4P version  have  the  same  or  similar  names,
	    as do the data variables and constants.   Also the original comments
	    were retained where  applicable.   These  features  should  make  it 
	    easy for someone familiar with the original to follow this  version.
	  
	  2)	The travel  array,  vocabulary data,  and  "atloc"  arrays  make
	    use of PASCAL  pointer  types  and  linked  lists  rather  than  the 
	    integer array linkage used in the F4P version.

 	  3)	The ASCII text and data file is split up into smaller  files  by 
	    a special  "files initialization"  task  before  installation;  then 
	    these smaller files are used  when  running  the  game  rather  than 
	    re-initializing from the main database  each time the  game is  run.
	    The main data files  (ADVENTURE.DAT and ADVENTURE.100) are organized
	    similar to the original F4P database file  (TEXT.TXT),  which  makes
	    them  easy  to  edit.   The  smaller  files  (ADVTXT.DTA  (or .100),
	    ADVDAT.DTA  (or .100),  KATAB.DTA,  and   ADVENT.DTA)   are   PASCAL 
	    structured file types.   Refer to the comments in the initialization
	    module  (ADVINI)  for a description  of  the  database.   Constants,
	    variables and type structures  are  described  in  the  comments  in
	    the global declarations module (ADVGBL).

 	  4)	Vocabulary searches  are  done  on  a  letter  by  letter  basis
	    via a linked tree file structure rather than searching a  vocabulary
	    table  for  a  word  match.    This  results  in  much  faster  word
	    recognition time.

 	  5)	Maintenence and wizardry  routines which had only been partially
	    implemented in the Blackett F4P  version I worked from were restored 
	    and enhanced slightly:

		1. All  wizardry  data  and  variables  are saved in an external
		file of integers, ADVWIZ.DTA.

		2. The  "message  of  the  day"  works  and  allows  wizards  to 
		put out a 10 line by  70  character  message  at  the  beginning
		of the game.

		3. The test for  wizards  now  requires  knowledge  of  a  magic
		word and number and a new algorithm for correct response.

		4. The pause feature does  not  require  saving  a  core  image;
		player name and variables are written to ADVWIZ.

		5. POOF  (wizardry data initialization) was made into a separate
		task; it simply creates an initial ADVWIZ file.   I  also  added
		a task named PEEK which allows  the  "Grand Wizard"  (presumably
		the system manager) to cheat and list out the  current  contents
		of ADVWIZ.	

 	If you come across a copy of this program  and  have  any  questions  or
	comments, write to me at the address at the start of this  readme  file.
 
>>	Contents of Distribution:

 	1 ** PASCAL Source Files Library

 		ADV.ULB

 		Besides containing  the  source  files  for  each  of  the  game
	modules  (see  list  below),  this  file  contains  the source for PEEK,
	POOF,  and  the files  initialization  tasks,  ADVFLS  and  100FLS.   It
	also includes the overlay description file for the main task, ADVBLD.ODL.
        You  need  to  add  an  overlay  description  for the OMSI and RSX stuff,
	derived  from  their  PAS.ODL,  and  rename  it ADVPAS.ODL.  It need only
 	reference  the  SYSLIB tree (if no FCSRES) and the  following OMSI PASLIB
	modules:
		$INIT,$IO,$INPUT,$OUTPT,$ERROR,$WRINT,$DYNMM,$GETF,$PUTF,$CLOSE,
		$RSIM,ERROR,$ARITH,$OPEN,$READI,$SEEK,$FTIME,$FPSIM,$CNVRT	

 	2 ** Assembled Object Code Library

 		ADV.OLB

 		OMSI compiled and improved and MAC assembled version of all  the 
	game modules.  The OMSI Improver was used to  condense  the  code,  some 
	modules are reduced in size by as much as 12% from the compiler  output. 
	Compiler used was the EIS/FIS V1.2 but no floating math is  used.   Note 
	that the modules recommended to include in the  overlay description  for
	the  PASCAL runtime stuff has the floating math packages removed (except
	for the "time" function, which is used to seed the pseudo-random number
	generator and in DATIME).

 	All modules were compiled with the following command to PAS:

 		PAS	<module>=ADVGBL,<module>/E 
		
	except  MAIN  which is the  main  program  block  and  doesn't  use  the
	"/E" switch.
 
	3 ** Useful Command Files

		It is recommended that you read and modify to suit your
		installation before using.

 		ADVEDT.CMD   -- "Do-all" command  file  for  extracting  modules
				from the source library,  editing,  replacement,
				compilation,   improvement,  assembly,  listing,
				task  build,  library  compression,  etc.    You
				may want to edit this to suit your own needs.

 		ADVPRT.CMD   -- Prints source listings from  ADV.ULB  using  the
				serial print spooler or QMG.

 		ADVBLD.CMD   -- Task building sub-set of ADVEDT.
 
	4 ** Database Files

 		ADVENTURE.DAT -- ASCII format data
		ADVENTURE.100 -- ASCII format data (VT100 version)
		ADVTXT.DTA    -- Text Files from ADVENTURE.DAT
		KATAB.DTA     -- Tree-structured version of vocabulary
				from ADVENTURE.DAT (or ADVENTURE.100)
		ADVDAT.DTA    -- Arrays of record pointers into text and
				vocabulary files.
		ADVTXT.100    -- Text Files from ADVENTURE.100
		ADVDAT.100    -- Record pointers into vocabulary and VT100
				text files.
		ADVENT.DTA    -- Remainder of data from ADVENTURE.DAT
				(same as ADVENTURE.100)
 
>>	General Instructons:

	You need at least EIS instructions to use the object library as  is  for
	task building.  In this case, modify a copy of the OMSI supplied PAS.ODL
	to include only the modules in the above list (see ADV.ULB description).
	Use PIP to rename it ADVPAS.ODL and insert into ADV.ULB using LBR.  Then
	invoke ADVBLD.CMD, it does the rest.

	If you wish to recompile everything first, examine and  edit  ADVEDT  so
	that task names, devices, and UIC's correspond to your  installation and
	then use it.  All three command files may be used  as a  guide for doing
	it all by hand.	

	I have supplied enough  goodies  so  you  can  easily  change  the  game
	at any level of the process.  Note that  the  source  files  make  heavy
	use  of  OMSI  extentions  to  standard  PASCAL  so  if  you  are  using
	someone else's PASCAL watch out for the following:

 		1)  Random files access using the OMSI "SEEK" procedure
		   and non-standard REWRITE and RESET procedures.
 		2)  ELSE clause in CASE statements.
 		3)  EXIT statement.
 		4)  TIME function.
 		5)  EXTERNAL declarations, {$E+} imbedded switch,
		   and handling of globals.
 		6)  Imbedded MACRO code using the {$C} switch.
 
	Have fun!!


>>	Index to Source Modules -- 

 		Here is a list of what procedures are contained in each of the
	game modules.   Only the global level procedures are listed.

		ADVINI   	--	INITIALIZE
		ASK		--	ASK, ASKM, ASKR, WIZARD
		BACKUP		--	BACKUP
		CALSCO		--	CALSCORE, WRTSCORE
		DATIME		--	DATIME
		DROPOB		--	DROPOBJ
		DUMPWD		--	DUMPWD1, DOWHAT, NOTHERE, SMALL, VERBHUH
		FILLIT		--	FILLIT
		FINISH		--	FINISH, WAKEDWARVES
		GETIN		--	GETIN, CAPS
		GETIT		--	GETIT
		HOURS		--	HOURS, LIQLOC
		KILLIT		--	KILLIT, KILLOBJ
		LOOP0		--	ALIVE, BLOCKED, DEATH, DWARFSTUFF,
					PITDEATH, WHATSHERE, WHEREAREWE
		LOOP1		--	CAVECLOSING, CLOSECAVE, CLSECLUE, 
					ENDDEMO, HINTROUTINE, LAMPDIM, LAMP0,
					LAMP1, LAMP2, 
		MAGICM		--	MAINTINENCE, MOTD, NEWHRS
		MAGICW		--	ECHO, FEEFOO, MAGIC
		MAIN		--	MAIN PROGRAM BLOCK
		NOWAY		--	NOWAY
		PARSE		--	PARSE, DOOBJ, DOVERB
		PLOVER		--	PLOVER
		PRIMET		--	PRIMETIME
		RDWIZ		--	RDWIZ, BIT
		RESPON		--	RESPONSE
		SAVNAM		--	SAVNAME
		SAVVAR		--	SAVVAR
		SAYIT		--	SAYIT
		SPEAK		--	SPEAK, CSPEAK, MSPEAK, RSPEAK
		START		--	START, UNSAVE
		SUBS0		--	BITSET, DARK, FORCED, HERE, PCT, RAN,
					TOTING
		SUBS1		--	AT, CARRY, DESTROY, DROP, JUGGLE, LIQ,
					MOVE, PSPEAK, VOCAB
		TAKE		--	TAKEIT, GETOBJ
		THROWO		--	THROWOBJ
		TRANSI		--	TRANSITIVE
		TRAVEL		--	TRAVEL, TRVTBL, SEARCH
		TROLLB		--	TROLLBRIDGE
		VERBS0		--	BREAKIT, FINDIT, LAMPOFF, LAMPON,
					WAVEIT
		VERBS1		--	LOCKED, LOCKIT, READIT, READOBJ
		VERBS2		--	BLASTIT, DRINKIT, EATIT, EATOBJ, POURIT
		VERBS3		--	FEEDIT, SNARF, THROWAXE
		VERBS4		--	ASKSCORE, SAVE, WRWIZ, WRWIZB, WRWRD
		VERBS5		--	BRIEF, QUITGAME, TSTOBJ, WHATYOUGOT
		WIZMAG		--	CHKMAG, GETMAG, WRTMAG
		WIZMAG		--	CHKMAG, GETMAG, WRTMAG

>>	Final Notes and Novice Wizard's Disclaimer, 2-DEC-82:

	I have yet to run this on V4 RSX or the VAX AME, but if OMSI works there,
	so should this.  It is currently up and running on a friend's 11/23 and
	another's 11/34A, both running V3.2.  It will be re-written in VAX PASCAL
	when I find the time.  Current work address:
				Barry C. Breen
				Senior Design Engineer
				Sundstrand Data Control
				Redmond, Wash. 98052


          ********************DM0:[352,2]README.1ST;1********************
          ********************DM0:[352,2]README.1ST;1********************

 
[352,2]README.1ST - ANAHEIM FALL 82 - FILES SUBMITTED BY:
 
			Bob Turkelson
			NASA/Goddard Space Flight Center
			Code 935
			Greenbelt, MD  20771
			(301) 344-5003
 
 
This UIC contains files for the TALK program, version V06.00.
 
TALK is a terminal emulation program which enables a user on an RSX-11M V3.2
or V4.0 system with the full duplex terminal driver to communicate with a
remote host computer over a single line interface (such as a DLV11 or DL11).
This version also allows the use of any terminal interface (such as a DZ11)
when the line is set to 300 baud.  The program begins in terminal mode, and
has the capability of bi-directional file transfers.  See the documentation
and program source for details.
 
NOTES.DOC also contains instructions for building TALK.
 
Kindly advise me of any changes you make to the program.
 
 
 
NOTES.DOC	TALK instructions and notes
 
TALKSYS.MAC	TALK prefix file for local and host system parameters.
 
*.MAC		TALK source files.
 
TALK.CMD	Command file to assemble and build TALK.
 
TALK.DOC	TALK documentation.  (Still the same - not updated.)
 
TALK.RNO	Runoff input file for TALK documentation.
 
 
[352,2]README.1ST - END

          ********************DM0:[352,4]README.1ST;1********************
          ********************DM0:[352,4]README.1ST;1********************

 
The SRD Working Group has not yet produced a version of SRD combining
the useful features of various versions.  The version submitted here
is an update provided by Bob Denny.  SRDMOD.DOC lists his modifications.
@SRD will update the files, then build the program.
 
					Bob Turkelson
					Code 935
					NASA/Goddard Space Flight Center
					Greenbelt, MD  20771
					301-344-5003
 

          ********************DM0:[370,130]README.1ST;1********************
          ********************DM0:[370,130]README.1ST;1********************

	DECUS FALL 1982 RSX/IAS SIG TAPE SUBMISSION
 
Submitted by:
	Michael N. LeVine
	Code 3513
	Naval Weapons Center
	China Lake
	Ca 93555
 
	(619) 939-2417
	(A/V) 437-2417
 
CONTENTS OF TAPE:
 
INDEX:FORTRAN CROSS REFERENCER V6.4
	This version contains mostly bug fixes and minor enhancements
	to the version submitted on the last fall tape. The most
	significant enhancement's to this version are: 1) that it does
	not expand to 32K words in size on  start up, rather it gives
	itself a certain minimum symbol table space and expands itself
	only if more space is required. 2) the document has been
	enhanced.
 
	Unlike the previous submission, no last minute inclusion of
	the latest bells and whistles has been made. Rather this version
	has been let to age to see if any bugs crop up so I do not
	forsee frantic patches being sent to the MULT-TASKER this time.
SUPERMAC:STRUCTURED PROGRAMMING MACROS
	Taken from a previous sig tape, I have enhanced parts of the
	SUPERMAC macro's:
		$CALL and CALLG now permit a limited amount of
		computation to be included in the argument lists.
 
		The addition of a new construct
		CONDITIONAL-SELECT-SELECT-...-[OTHERWISE]-END
		that is actually a way of doing 
		IF-elseif-elseif-[else]-endif
		in assembly.
 
FRAG:DISK FRAGMENTATION STATISTICS
	Take from a previous sig tape and modified so that it is no longer
	a privilaged task and can handle large disks (over 64K Blocks)
	properly.
 
3D PLOTTING ROUTINES.
		3-D Plotting Package
 
	This supplimental set of subroutines, was written
	to use the ZETA supplied plotting routines to generate
	3-D plots. Based on the CACM (Collected algorithms of the ACM)
	algorithm number 483  "Masked Three Dimensional Plot Program
	With Rotations [J4]".
	Included is a copy of the original CACM algorithm and a sample
	driver routine for the 3-D plotting package.
HP11C UTILITY ROUTINES:CONVERT TO/FROM FLOATING POINT BINARY FORMAT
	Included is a listing of 2 HP-11C programable calculator programs
	that will convert floating point numbers between decimal form
	and PDP-11/VAX single precision binary form.

          ********************DM0:[374,1]README.RNO;1********************
          ********************DM0:[374,1]README.RNO;1********************

.ps 58,80
.lm 0.rm 72
.nhy.nnm
.hd mixed
.s 3
.f
.hl 1 Getting Oriented
To build Decus C, first read NEW.DOC, KIT.DOC, all README.* files
and the command files needed to build Decus C on your operating system.
The command files may require editing before use on some operating
systems, especially RT11.
.s
You should also read CC.DOC and WIZARD.DOC to learn about Decus C and
its run-time library.
.hl 1 Getting on the Air with Decus C
If you currently have a Decus C distribution, be sure you make a backup
of your current system, then initialize (zero) the accounts used for
the new system -- some files that were on the previous distribution have
been deleted from this one.
.s
There are a few incompatibilities which will require editing and recompiling
your C programs; the edited software will then be simpler to transport to other
C compilers and operating systems.  These are discussed in NEW.DOC, CC.DOC,
and the run-time library documentation.
.hl 1 Installation Time Estimates
Assuming all goes well, installation on RSTS/E will require about
one-half hour to create accounts and read the distribution tape and
about two hours to build all programs (using command file [5,1]RBUILD.CMD).
This assumes an unloaded 11/70 system.
.s
Installation on VMS will require about two and
one-half hours to read the distribution tape (because the tape is
written in FLX format and must read the entire tape for each
account).  Building all programs using command file [.COMMAND]VBUILD.COM
will require about two and one-half hours on a reasonably-loaded
VAX-11/780.
.s
Installation time on other systems should be comparable and, in general,
proportional to the disk access time.

          ********************DM0:[374,1]README.601;1********************
          ********************DM0:[374,1]README.601;1********************

[6,1]		Software Tools
-----		-------- -----

This account contains source for a number of programs that are generally
useful.  You will probably have to modify the account names in the command
files to suit your own taste.  Of course, there's no accounting for taste.

The programs are:

comm	Compare the contents of two files, indicating what is common
	to both files, and what is different.  comm ? gives help.

diff	Differential file comparison program, as described in Bell Labs
	C.S. technical report 41.

echo	Echo arguments -- used mostly to debug the compiler and
	run-time system.

grep	"Global Regular Expression Pattern" -- search files for
	lines which satisfy an argument pattern.  grep ? gives help.

kwik	Kwik index program.  See kwik.rno/kwik.doc.  Link with sorts.c.

l	List on a screen terminal (you hit return every 23 lines).

mc	A multi-column print utility.

mp	A full macro processor for C source files, written by R.W.
	Harper of Rensalear Institute of Technology and originally
	distributed on a Unix SIG tape. It has been modified to
	interface with the Decus compiler; it generates the predefined
	#define's and otherwise interfaces just fine now. It supports
	the full functionality as described in Kernighan and Ritchie.

nm	Print "namelist" -- prints global symbols for an object module.
	Lots of options described in the source code, but nowhere else.

od	Octal dump of a file -- Options described in the source code only.
	As the RSX library doesn't mangle file attributes, some of the
	features don't work.  od dumps records on RSX, blocks on RT11

pr	Print with line numbers.

sortc	Sort a file.  Help in sort.rno/sort.doc

sorts	Sort library routines.  Help in the source code.  Used by kwik.

t	File type (on a video screen) utility.  Run T and see.  Works
	well on a network virtual terminal.  Handles random RMS file
	formats.

today	Print today's date in readable English.  Uses the following
	subroutines:

		datetx	Convert date to English
		moontx	Convert phase of the moon to English
		nbrtxt	Convert an integer to English
		timetx	Convert time of day to English

	Very good program, if I do say so myself.

uniq	Print unique lines from a file, uniq ? gives help.

wc	Word/line/byte counter

xrf	Cross reference listing for C programs


          ********************DM0:[374,1]README.1ST;1********************
          ********************DM0:[374,1]README.1ST;1********************


                                   DECUS C KIT
                                    04-Dec-82


          This account contains a complete binary distribution kit of
          the DECUS C compiler, assembler, run-time library, extensions
          library and a C tool library. A set of documentation in
          runoff format is also included.  The full sources will be
          available from the DECUS LIBRARY in a month or so.



                                 Timothy T. Coad
                             Creative System Designs
                              234 E. Colorado Blvd.
                                 Mezzanine Level
                               Pasadena, CA  91101

          ********************DM0:[374,3]README.1ST;1********************
          ********************DM0:[374,3]README.1ST;1********************


		Updated Loadable XDT for RSX-11M V4.0
		======= ======== === === ======= ====

	This version has a few minor fixes, and really was tested with
	a virgin EXDBT.MAC off the BL32 kit.  The BE:xxxxxx message now
	also goes to the selected terminal, rather than the 777560/60
	terminal.  Also, single step and multiple breaks work properly,
	thanks to Ralph pointing me in the right direction while chasing
	that one.

	If it wasn't for Loadable XDT's APR 6 "blind spot", it would be
	operationally indistinguishable from the resident one.


          ********************DM0:[374,4]README.1ST;1********************
          ********************DM0:[374,4]README.1ST;1********************


	Virtual Disk Package with error logging

	1.	Read VDXGEN.CMD and perform the edits required to [11,10]
		RSXMC.MAC.

	2.	Say ">@VDXGEN" and interact with the command file.

	3.	Copy VD.TSK, VD.STB, AVD.TSK and DVD.TSK to your system
		UIC (usually [1,54]).

	4. 	Load the VD driver.

	5.	Read VD.HLP, AVD.HLP and DVD.HLP.

	6.	Edit DCL.HLP and MCR.HLP to add the VD, AVD and DVD topics.
		It is a good idea to add a synonym for VD of "VIRTUAL_DISKS".

	7.	Edit the supplied HELP files for the number of VD units
		you chose to support at VDXGEN time.  The files are set
		up for 8 units (VD0: through VD7:).

	** In addition, if your system supports error logging:

	8.	Compile DISPATCH.CNF and DSP9M1.CNF, using the
		supplied command files. Insert/replace into
		LB:[1,6]ERRLOG.ULB.

			>INS $CFL
			>INS $LBR/INC=20000
			>@DISPATCH
			>@DSP9M1

		NOTE: DISPATCH MUST BE COMPILED FIRST, AS DSP9M1
		      REQUIRES DISPATCH.SYM TO COMPILE PROPERLY.

	9.	ERRLOG will log VD driver loads and unloads, AVD's
		and DVD's, mounts and dismounts.  Take a look at the
		FULL format report on an AVD, you'll see that it
		records the creation size and placement control
		if they are used on the AVD.

	NOTE:	See the file SPCCTL.MAC for the new "type 9" packet
		subpacket formats.