New and modified material from KMS Fusion: The following is not guaranteed in any way. All the rights to the source code are owned by KMS Fusion, Inc. Anyone may use the programs, but not for resale, and please include a copywrite notice from Robert Hays, KMS Fusion, Inc., 1986 and from any other original authors as noted in the code comments. The subdirectories on this tape are: [344,1] - Various stuff, many SLP files, etc. [344,2] - CHCKPM [344,3] - Small library of subroutines. [344,4] - SBT, code to submit print jobs to a VAX [344,5] - MOVE, a SET DEFAULT program in FORTRAN [344,6] - RPTBLD, a command file to create RPT reports [344,1]IDLE -- The January, 1987 Multi-tasker ran an article on Idle Loop Lights for PDP-11/84s. There may be a better way.... When the 11/84 arrived, Jim Downward and I read through the 11/84 owners manual (or whatever its called). It turns out that the value displayed on the front panel is the octal value from the byte at address 177524, the Display register. The following code fragment increments this register every 25 ticks. You can reset the values for the MRKT$S call as you want. The Macro code, written by Jim Downward, follows: .mcall MRKT$S,WTSE$S DspReg=177524 START: MOV #77,R0 10$: MOVB R0,@#DspReg MRKT$S #1,#25,#1 WTSE$S #1 SOB R0,10$ BR Start .END START Note that your service people may not like you playing with their (huh??? Didn't we pay for this box...) diagnostic display. This seems like an easier way to do it than patching SYSXT and reGENning the system. [344,1]DVCDAT -- DVCDAT dumps V3.0A, B, C, and D device data bases. This is a modification of an old utility written by J. Neeland. Please note that, due to the use of certain Files-11 utilities in the code, the program is not vectorable yet. Also, the program works off of fixed length offsets and addresses; if the device data bases change a bit, the program will not work. It would be nice if it were written with DEC-defined named offsets instead.... To build DVCDAT, make sure that SY: is locally pointing to the location of DVCDAT.MAC and DVCDAT.CMD, and make sure that LB:[1,24]MCR.OLB is around, and just invoke @DVCDAT. To use, copy DVCDAT.TSK to your local library UIC and just type either: > DVC - or - > DVC device: where device: is the device whose data base you want to see. [344,1]CKPVEC -- This is a modification of a program written by Jim Downward, I think, but I cannot be sure; there is no author mentioned in my source version. This version runs on V3.0B, C, and D systems, and the task image is vectored, so that you should be able to use the task image on any 3.0 system. Of course, I will not guarantee this... I have copied the task from a 3.0B system to a 3.0C and D system successfully. A major change in RSX-11/M-PLUS V 2 or 3, I don't know which, was to checkpoint subpartitions, not tasks. Therefore, instead of pointing to the task header before calling the system routine to checkpoint an image, you point to the partition header. To build, just point SY: to the source UIC and invoke @CKPVEC. Copy CKPVEC.TSK to the library UIC and then, perhaps, include the following lines in your STARTUP.CMD file: .IFNINS CKP... INS $CKPVEC/TASK=CKP... RUN CKP... 0/RSI=20M This will clear out high memory at this point and will reschedule the task to clean out dead wood every 20 minutes. Make sure that your STARTUP.CMD file has used ACS to set up checkpoint space before running CKPVEC! The resulting mess if you don't is quite interesting from an S/M point of view.... We run the program initially in the startup file so that AT. is forced into low memory, allowing partition setting and loading of drivers, etc. into high memory contiguously. Of course, DECs answer is buy more memory, but this is cheaper and more consistent.... For those of you interested, I've also included CKP that works on V3.0B but is not vectored. For those interested, see the release notes for more information on vectoring tasks. BE CAREFUL, THOUGH, as not all symbols are defined in the RSXVEC.STB file. [344,5]OLDMOVE.CMD -- For those of you with CCL and V3.0, MOVE.CMD uses MCR and Indirect commands to parse a command of the form: >MOV string into device and/or UIC, and will set SY: to the device given, if one is entered, and the UIC to the UIC given, if any. No support is given for named directories, but if someone is enterprising... Also, if a command is entered with a number and a comma, such as: >MOV 5, - or - >MOV ,5 the user UIC or group UIC is changed only. Logical names are translated. Include in your SYSCCL.CCL file the following: $3400MOVE *@LB:[1,5]OLDMOVE %A% [344,5]MOVE -- After writing OLDMOVE.CMD, I desired something that finished executing today. Therefore, I wrote a FORTRAN equivalent. Well, almost. The code checks for a mounted device, and it will mount it /OVR/LOCK=N if the device is not mounted. The subroutine CHKMOU performs this which is called by CHKDEV. If the user is not privileged, the device is not mounted. You can edit this one up if you don't want to mount devices, or desire a differant set of switches. There is a character constant and integer length defining the switch string. See the inline comments. Also, $ and HOME take you back to your login UIC and device and . or PRE take you back to your last UIC and device. The logical name KMS$LAST and KMS$CURRENT are defined by MOVE as your last and current locations, respectively. I will replace the $ with _ when DEC decides how underscores should be dealt with; right now its not too good an idea to use underscores.... NOTE: if you don't log your console off after startup, the $ cannot work, since SYS$LOGIN is not defined for that terminal. Also added the * item, which lists UICs from the master file directory, prompting to set default there one at a time. An informational message, %DEF-I-NOEXIST, Directory does not exist, is displayed if the destination does not exist. If you don't want to change directory in this case, modify the code at the call to MCRCMD to change UIC in MOVE.FTN. To defeat the message and gain speed, comment out the call to DIRUIC in CHKUIC and set EXISTS to logical value .TRUE.. MOVEBLD.CMD rebuilds MOVE.TSK. The default name for the task is ...DEF. The command file can automatically install this if you uncomment the lines near the end of the command file. If you have CCL, you might try setting the following: $1700DEFAULT *DEF %A% This way D will display your default directory if you slip the MCR dispatcher (see later).... Otherwise just install it as ...DEF or whatever you like. [344,2]CHCKPM - After seeing a notice on December 16 that our system would be down for PM on November 18, I decided to try to decrease the margin for error in PM notices on our systems. This program uses the following files: KMS$COMMAND:PM.TXT KMS$COMMAND:NOTICE.TXT KMS$COMMAND:DATTIM.DAT to insert and delete a PM notice for user logins. The format for the DATTIM file is: dd-mmm-yy hh:mm for as many dates and times as you have. The program goes down the list and sees if any are within 7 days of the current day. If so, the file NOTICE.TXT is checked for the string PM NOTICE:, and if the string is not found, appends PM.TXT, inserting the date and time from DATTIM.DAT into the symbols and in PM.TXT. This file has not been tested at the end of year or end of century fully, so be careful. You would need to edit your SYSLOGIN.CMD file to type out the notice file. Notes on SYSLOGIN.CMD can be found in the SYSGEN manual under pre-genned kits or what to do when you are done and before the first beer at the bar.... This program would run each morning at say 3 AM. This way, resources aren't tied up, and the checks are done. If your PMs are always done in the morning, you could schedule it to run every 12 hours and your notice will disappear sometime during the day. I'm working on a better version for the VAX; if you're interested, let me know what YOU would like it to do.... I won't promise inclusion of ideas, but I will listen and think about it. Warning: I just found out that CHCKPM is NOT correct, and I don't have time to fix it now. It seems to fail checking the month vs. the day. If anyone wants to, go for it, otherwise, when I get to it, I will fix it. [344,1]CHK.MAC - This is built on a task assigned at DEC's RSX Internals class. It just lists checkpointed tasks by name. It would probably be easy to vector.... [344,4]SBT -- This is a FORTRAN program that uses DECnet-RSX calls to communicate with a VMS command file and program to print files on the remote node. The non-privileged DECnet account user name and password must be coded into the communication subroutine. The files PRNTER.COM and PRNTER.EXE(FORTRAN source provided) are needed on the VAX side. We use the NCP SET OBJECT command on the VAX to reset our target task object to a directory differant than the non-privileged one. This gets around needing to know the password and username for FTSing files and assuring deletion at the remote VMS node. Also, if you've never used DECnet calls, check it out; its not impossible, but tranparent DECnet (see VMS) is soooooo much better. [344,1]SYSBRU -- This is a modification of the BRU.CMD file by T. Wyant on the Spring 1985 tape. I have added default devices and an automatic label creator (which only works with DECwriters currently). You will need to build LABEL to use the labelling facility. I have included a version, modified from the Spring 1985 tape, that has been editted so that it builds on any RSX-11/M+ system and cannot write over device labels. The hooks remain for the original code (I commented a bunch of stuff out...). [344,6]RPTBLD -- A command file to interface to RPT. It prompts for the format, device, and date range for the RPT call, and then stops ELI from logging errors, executes RPT, and can delete the LOG.ERR files if desired and restart ELI logging. I did this because, in my infinite disability, I cannot remember to restart ELI, I can't remember the RPT switches, and I like to kill off old .ERR files occasionally. It uses the default file created by the APPNDFILE command file unless you edit the RPTBLD command file and change the initial setting of INFILE. RPTBLD uses the files created by APPNDFILE for searches in the past. [344,1]APPNDFILE.CMD and APPNDSUB.BAT -- APPNDFILE.CMD will merge your accounting and error logging files to a destination directory. APPNDSUB.BAT is a batch file that executes APPNDFILE, waits 3 minutes, and then resubmits itself for 23:58. We use the following commands for doing this in our STARTUP.CMD file: .SETT QueStr @LB:[1,5]KMSQMGSRT.CMD ! Start the queue manager. .IF = .GOTO DONE .; .; An error was encountered in starting the Queue Manager and .; associated tasks. Nest to the Queue Manager stop proceedure .; to back out of the startup. .; .DISABLE QUIET ; ; The queue manager could not be started properly, and ; it is being removed. Please see Bob Hays, X458. ; .ENABLE QUIET .SETF QueStr ! Set queue start error flag. @LB:[1,5]KMSQMGSTP.CMD ! Shut queues on error. .DONE: .; .; RLH09 -- Start up accounting and error logging merge file routine on .; the batch queue. .; .IFF QueStr .GOTO NoBat ! Skip on queue start error. .SETS uictmp ! Save current UIC. SET /UIC=[1,6] ! Move to [1,6], keep running .; ! it there. QUE BATCH:APPNDF/DEL ! If one is there, zap it. SUB APPNDF/AF:23:58=LB:[1,5]APPNDSUB.BAT ! Submit job. SET /UIC='uictmp' ! Go back where ya came from. .NoBat: Notice that you should only submit the job if the queues start. Please read the command files first to recognize needed logicals. Also note that the UIC selected should be a privileged UIC and should only be used for this purpose, I think. OTHER NOTES: The SLP files for SHT.MAC, AUXSUB.MAC and VTLSUB.MAC should allow correct use of VT2xx terminals. Also, a modification of the MCR dispatcher courtesy of Tony Scandorra. If the enclosed file MCRDIS.SLP is applied to the updated version of the RSX-11/M-PLUS V 3.0D kit, it should allow fewer than three character commands to pass to the catch-all task. Tony came up with the patch; I thought others might want to try it, as it is soooo nice. In all SLP cases above, rename the virgin source file .VGN. A .MAC file will be created by SLP. Then assemble and build the tasks. Remember, in the case of MCRDIS, that you must re-VMR your system for the new MCR... task, and FIX it, also. If you don't FIX it, you're system will boot and go to never, never land ( I wonder how he found that one out... ). Modified VT200SET also, so that it checks the TI: terminal type for a VT2xx. Very helpful for people with Tektronix, GraphOn, and other assorted terminals in-house and in-use. I've included a new copy of the source macro program and a build file that works at our site. There are two modules I've modified (hacked) for AUX: AUXIO and AUXKEY The changes allow VT2xx function key definition. The bad news is that you cannot hold down the right and left arrow keys any more. The IO system in AUX might require a rewrite to allow for the longer length of function escape sequences, and I don't want to take that on, as I find the cursor key restriction not as bad... Some general and perhaps useless notes on M-PLUS 3.0*: 1) Extended logical names are really neat in M-PLUS. If you have a VMS environment, you can almost make folks feel at home on the PDP. However, all tasks do not yet work with extended logicals, and the afor- mentioned underscore problem is not resolved. Some way of controlling extended logicals, like company identifier-underscore-logical, is needed. Perhaps our RSX NLO should get involved.... 2) Read and use disk caching. Your disk accesses will speed up IF you use sequential files OR you access random access files sequentially most of the time. Directory lists will go faster. And, it seems to work well IF you follow the directions in the system management manual and the release notes VERY carefully. 3) The GIN directive, while not supported, must be used to vector tasks. Much of the functions in GIN would be highly useful from other programming languages. I think DEC should consider supporting and documenting GIN in the future. PS - GIN may be supported in V4.0.... 4) While we're on the subject of vectoring (???), make sure to dump the RSXVEC.STB file with the program STB, released on an RSX DECUS symposium tape a year or two ago. Not all system symbols are in the vector table. This will save you time pouring over maps only to find that the symbol you want isn't there.... Requests: Finally, a request: someone, please make AUX work in named directory mode! I want to convert wholesale over to named directories for a number of reasons, but I want command line editting, especially with the extra bells and whistles that AUX gives. What a great program!!! If anyone can give me info on what might need changing, I would be interested in doing it, also. I tried changing the SPWN call, but that had no effect whatsoever.... Also, could someone tell me why ACNT can't act right when AUX is running? It must have to do with AUX trapping I/O from an installed task or locking out terminal I/O.... I need a way to tell, from a program in FORTRAN or a command file, if a given job (APPNDF) is on the BATCH queue. I've submitted an SPR on this; please feel free to add your voice if you'd like to. Good luck with all the above. I can be reached most daylight hours at (313) 769-8500 extension 458, or you can write (ugh) to Robert Hays KMS Fusion, Inc. 3621 South State Road Ann Arbor, MI 48106 If anyone has any problems with the programs in this directory, I can't promise to fix them, but I will try to answer the phone... And remember, nothing included here is guarenteed to work, and nothing included here can be sold for profit.