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 where 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 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 '@' 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]:=, 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 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,,P5,P6,P7,P8 - see parameter options and note that 'P4' is a multiple parameter field. eg:- DEVIO KB,176500,60,,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,,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] 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 [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 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, UNTIL R4 NE, R0 The next examples contains a LEAVE statement and was coded within a BEGIN block. BEGIN ALPHA . . . REPEAT CALL/$CALL F IF RESULT IS NE LEAVE ALPHA . . END . . 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 ;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, 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 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 <<>> 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 ,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 <"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">,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 :- Procedurenameparameter..... 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 This is normally the first entry in the data file .C This enters the chapter title into volume index and starts a new chapter index and contents file .T The enters the title into the chapter index and forces a new page header. .I 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. .! 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 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 and 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 . . . 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 =ADVGBL,/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.