.ENABLE SUBSTITUTION
.ENABLE GLOBAL
.SETT $ASM
.SETT $TKB
.SETT $FDT
.SETF $LIST
.SETF $MAP
.SETF DIE
.SETF DEBUG
.SETF TRC
.SETS TRACE ""
.SETS UIC <UIC>
.IF P1 EQ "DEBUG" .SETT DEBUG
.;.SETS TMP "344"
.;.IF TMP EQ UIC[2:4] ; [344,*] IS SUPPOSED TO BE READ ONLY
.;.IF TMP EQ UIC[2:4] .ASK DIE FOR SAFETY, WILL YOU EXIT
.IFT DIE .GOTO EXIT
.IF <SYSUIC> EQ <UIC> .SETT DIE
.IFT DIE; THE BUILD UIC MUST NOT BE THE EVENTUAL SYSTEM UIC
.IFT DIE .GOTO EXIT
.IF UIC EQ "[1,54]" .SETT DIE
.IFT DIE ; THE BUILD FILE UIC MUST NOT BE THE SYSTEM UIC [1,54]
.IFT DIE .GOTO EXIT
.IF UIC EQ "[1,24] .SETT DIE
.IFT DIE ; THE BUILD FILE UIC MUST NOT BE [1,24]
.IFT DIE .GOTO EXIT

;      T H E   K M S   A C C O U N T   F I L E   E N H A N C E M E N T S
;                 A N D   U T I L I T I E S   P A C K A G E
;                         R E L E A S E   3 . 2 X D
;                            R S X  1 1 M  V 3 . 2
;                            0 6  -  D E C  -  7 9
;
; KMSGEN STARTED ON '<DATE>' AT '<TIME>'
.IFT DEBUG ;
.IFT DEBUG ; THIS IS A DEBUG RUN, HAVE FUN!
.IFT DEBUG ;
.IFT DEBUG .ASK TRC DISPLAY COMMAND FILE COMMANDS
;
;
;
.ASK LDLG LONG DIALOG?
;
; BE WARNED. This command file will auto-abort if you are not running on a
; RSX11M V3.2 system or if required exec options are missing.  Your exec
; options will be tested using the most recent version of [200,200]RSXMC.MAC.
;
.ASK ANS	ARE YOU RUNNING ON A V3.2 SYSTEM
.IFF ANS ; THE FILES ON THIS KIT WILL NOT TO WORK ON A V3.1 SYSTEM.
.IFF ANS .GOTO EXIT
;
.ASK DECNET HAVE YOU INCLUDED DECNET SUPPORT IN YOUR TARGET SYSTEM.
;
.IFF DECNET .GOTO NONET
; For reasons I do not understand at this time, if you request decnet support
; at SYSGEN, you also get multiple CLI support(like M-PLUS but you don't get
; DCL).  Including multiple CLI support(M$$CLI) forces an additional word
; (U.CLI) right above U.LUIC in each terminal UCB.  The first release of this
; package had not allowed for this situation and lucky users who had selected
; DECNET support came up with dead systems after doing a kmsgen.  All the
; correct conditionalization is now supposedly in the files.  If M$$CLI is
; defined in RSXMC.MAC, then the terminal accounting block is shifted up
; one word.  Of course, since I do not run DECNET, I have never tried this out
; on a live system.  If you try putting this package on a DECNET system, 
; please give me a call and let me know how things worked out.
.GOTO SKIPIT
.NONET:
; Changes to the accounting terminal accounting data base conditionalization
; code was recently done so that DECNET users would not wind up losing MCR
; if they incorporated this package.  I have tried out some of the new offset
; definitions on our system and all seems to work.  However, since there are
; many options(too many), you never can be sure.  So, if any problems develop
; please give me a call.  If any bugs exist they are probably very easy to
; fix if I know were to look.
.SKIPIT:
;
.IFT LDLG ; THE ACCOUNT FILE ENHANCEMENTS(SOURCES, CMD FILES, DOCMENTATION,
.IFT LDLG ; AND HELP FILES) REQUIRE OVER 3150 BLOCKS OF DISK STORAGE.
.IFT LDLG ; DEC .OLB FILES AND MACRO SOURCES PUSH THIS VALUE UP VERY
.IFT LDLG ; SUBTANTIALLY.  TO MAKE ROOM FOR TASKBUILDING USING AN RK05, DELET
.IFT LDLG ; [344,2] ON THE BUILD RK05.
.IFF <MAPPED> .SETT DIE
.IFT DIE ;
	.IFT DIE ;
	.IFT DIE ; These RSX11M system enhancements have not been tried on an
	.IFT DIE ; unmapped system.  Trying to use them is not encouraged.
	.IFT DIE ; the amount of core memory needed for efficient use of
	.IFT DIE ; multiuser protection, accounting enhancements etc., not
	.IFT DIE ; to mention the increased disk space required for task
	.IFT DIE ; storage, should cause some serious soul searching for
	.IFT DIE ; any prospective user of this package on an unmapped system.
	.IFT DIE ; While I believe the majority of programs(maybe all) will
	.IFT DIE ; work, no attempt will be made to support this package for
	.IFT DIE ; an ummapped V3.2 system. This build file now terminates.
	.IFT DIE ; You are on your own.
	.IFT DIE ; .GOTO EXIT
.IFF LDLG .GOTO SKIP0
.DISABLE QUIET
;
; It is assumed that the following SYSGEN options have been selected.
; The list may not be inclusive, please report problems.
;	1.  MULTIUSER PROTECTION
;	2.  ALTER PRIORITY DIRECTIVE
;	3.  SPAWN DIRECTIVE
;	4.  STOP BIT DIRECTIVES
;	5.  SEND /RECEIVE DIRECTIVES
;	6.  GET TASK DIRECTIVE
;	7.  EXIT WITH STATUS !!!
; 
; Multiuser protection is absolutely required, but minor code changes could
; be applied to circumvent the other requirements.  However, this release
; and this command file assume these executive options exist.
;
.SKIP0:
	.ASK ANS DOES THE SYSTEM INCLUDE THE REQUIRED EXECUTIVE DIRECTIVES
	.IFF ANS ;	
	.IFF ANS ; You are on your own, this build file requires 
	.IFF ANS ; the above options be be included in the system.
	.IFF ANS .GOTO EXIT
.TESTFILE LB:[200,200]RSXMC.MAC
.IF <FILERR> NE 1 ; 
.IF <FILERR> NE 1 ; LB:[200,200]RSXMC.MAC is missing.  EXITING
.ENABLE QUIET
.IFT DEBUG .DISABLE QUIET
.IFF DEBUG MAC NL:=LB:[200,200]RSXMC/PA:1,SY:'<UIC>'CHECK
.IF <EXSTAT> NE 1 .DISABLE QUIET
.IF <EXSTAT> NE 1 ; You are either trying to build this package for a non V3.2
.IF <EXSTAT> NE 1 ; system, or you are missing required executive options,
.IF <EXSTAT> NE 1 ; or, you have an incomplete RSXMC.MAC on [200,200].
.IF <EXSTAT> NE 1 ; EXITING.
.IF <EXSTAT> NE 1 .GOTO EXIT
	.IFF LDLG .GOTO SKIP1
.DISABLE QUIET
; The build files assume that the following files exist on  LB0:
;
;	[1,1]SYSLIB.OLB
;	[1,1]EXEC.MLB
;	[1,1]RSXMAC.MLB
;	[1,54]RSX11M.STB		FOR THE TARGET SYSTEM
;	[200,200]RSXMC.MAC		FOR THE TARGET SYSTEM
;
; All KMSKIT files should be on their distribution UICs.
;
; and the RSX11M source files on SY:
;	ACNT.VGN    rename from ACNT.MAC	ON [15,10]
;	BROAD.VGN   rename from BROAD.MAC	ON [15,10]
;	BYE.VGN     rename from BYE.MAC		ON [12,10]
;	HELLO.VGN   rename from HELLO.MAC	ON [12,10]
;	IND.OLB	    				ON [1,24]
;	INDERR.VGN    "     "   INDERR.MAC	ON [12,10]
;	INDFIL.VGN    "     "   INDFIL.MAC      ON [12,10]
;	INDIMP.VGN    "     "   INDIMP.MAC	ON [12,10]
;	INDINX.VGN    "     "   INDINX.MAC	ON [12,10]
;	INDOPN.VGN    "     "	INDOPN.MAC	ON [12,10]
;	INDPDW.VGN    "     "	INDPDW.MAC	ON [12,10]
;	INDROT.VGN    "     "	INDROT.MAC	ON [12,10]
;	INDSU1.VGN    "     "	INDSU1.MAC	ON [12,10]
;	INDSU2.VGN    "     "	INDSU2.MAC	ON [12,10]
;	INS.OLB					ON [1,24]
;	INSFL.VGN     "     "   INSFL.MAC       ON [12,10]
;	INSHD.VGN     "     "   INSHD.MAC	ON [12,10]
;	INSPS.VGN     "     "   INSPS.MAC	ON [12,10]
;	INSROT.VGN    "     "   INSROT.MAC	ON [12,10]
;	MCR.OLB	      				ON [1,24]
;	MCRDEF.VGN    "     "	MCRDEF.MAC	ON [12,10]
;	MCRDIS.VGN    "     "	MCRDIS.MAC	ON [12,10]
;	MGCML.VGN     "     "	MGCML.MAC	ON [12,10]
;	SDSOV.VGN     "     "	SDSOV.MAC	ON [12,10]
;	SDSOVFDT.VGN  "     "	SDSOVFDT.MAC	ON [12,10]
;	SETOV.VGN     "     "   SETOV.MAC	ON [12,10]
;	SETOVFDT.VGN  "     "   SETOVFDT.MAC	ON [12,10]
;	SGNTT.VMD     "     "   SGNTT.CMD	ON [200,200]
;	SPROV.VGN     "     "   SPROV.MAC	ON [12,10]
;	SPROVFDT.VGN  "     "   SPROVFDT.MAC	ON [12,10]
;	SYSCM.VGN     "     "	SYSCM.MAC	ON [12,10]
;	SYSROT.OBJ    				ON [1,24]
;	TDSCH.VGN     "     "	TDSCH.MAC	ON [11,10]
;
; MCR.OLB,IND.OLB,INS.OLB, and SYSROT.OBJ will be copied into this UIC.
;
; Additionally the following tasks must be installed and this terminal 
; must be privIleged.
;
;	PIP, MAC(BIGMAC), TKB(BIGTKB), LBR, SLP
;
; It is essential that BIGMAC is used as the small version will not
; like the format of the command files.  Also, build speed will be
; dramatically improved by setting the maximum task extend size to
; 32K or installing ...MAC and ...TKB with large increments to bring
; them up to 32k in size.
;
; A further requirement is that the MCR source files for many tasks exist
; on [12,10] with the extension .VGN(rather than .MAC).
; This is a safety measure we use so that we never purge source files.
; Either rename the source files or edit the SLP command files to reflect
; your method of SLPping files.
;
; Note that eventually you must decide whether on not to include the 
; ability for selective users to change their UIC within certain
; ranges (group manager, user manager privleges) and whether or  
; not to include support for 'LIBUIC' and 'TOP'.  Before building a new
; MCR.TSK(...MCR) you must decide whether or not you are using or
; will use the new full duplex terminal driver in the target system.
; The copy of MCR.OLB on [1,24] must be the virgin copy without the
; full duplex modules inserted if the non-full duplex tasks are to be
; built.
;
; As a part of the change in the SET command is also the code required
; to implement SET /LIBUIC command.  If you have not inserted the SYSCM
; data base changes(R$$PRV not defined), LIBUIC will default to [1,54].
; LIBUIC (an RSX11M+ feature) is an alternate system UIC like 'SYSUIC'.
; It is convenient sometimes to have all one's privileged tasks which must be
; built each sysgen on one UIC and all the standard utilities on another.
; the SYSCM mod inserts $LBUIC as a new EXEC entity.  The 'SET /TOP'  command
; allows one to move the top of a system controlled partition up and down
; with the system on-line and tasks installed in the partition(just like the
; VMR implementation without the wildcards).  It is thus possible to partially
; reconfigure partition layout on-line to add(for example) a test resident
; library.
;
; SETOV.SLP, SDSOV.SLP and SPROV.SLP modify the set parser of  ...MCR to
; support 'SET /LIBUIC', and 'SET /TOP' .  INSFL.SLP modifies INStall so
; that the command 'RUN $TASK' first searches for the task on LB:[SYSUIC]
; and then on LB:[LIBUIC].
;
; The build files will place tasks and objects on this UIC.
; The build files will delete previous task images, and object modules
; as they proceed.  Be sure your installed system tasks are not on this
; UIC!!  It would be a shame to delete ...INS from a working system.
;
; Do not be alarmed if commands of the form  TCF 7 appear.  TCF (Terminal 
; Control Function) decodes a string of octal numbers and sends them to
; the terminal in write pass all fashion.  Hence, TCF 7, is control G, or
; BELL.  A task image of TCF is provided for the this command file's use.
; Sources for TCF are also provided.
;
;   *** PLEASE NOTE, a large number of distribution files must be renamed
;   *** to have extension .VGN(.MAC) or .VMD(.CMD). Please do not try
;   *** and proceed until you have done this.
;
;
	.ASK ANS ARE ALL REQUIRED TASKS INSTALLED, AND FILES ON THEIR UICS
	.IFF ANS ;
	.IFF ANS ; The various programs can not now be built until either
	.IFF ANS ; the build files are altered or the proper files are 
	.IFF ANS ; placed on LB0: AND SY:.  We will now exit .
	.IFF ANS .GOTO EXIT
 
 
.SKIP1:.ENABLE QUIET
		.IFNINS PIP INS $PIP
		.IFNINS TKB INS $BIGTKB
		.IFNINS MAC INS $BIGMAC
.IFF DEBUG	.IFNINS LBR INS $LBR
.IFF DEBUG	SET /MAXEXT=32.K
.IFF DEBUG .DISABLE QUIET
.IFF DEBUG	.IFNINS TCF PIP TCF.TSK/CO/NV=TCF.TSK
.IFF DEBUG	.IFNINS TCF PIP TCF.TSK/PU
.IFF DEBUG	.IFNINS TCF PIP TCF.TSK;1/RE=TCF.TSK
.IFF DEBUG	.IFNINS TCF INS TCF
	.DISABLE QUIET
;
.IFT LDLG ; 	>>>> WARNING <<<<
.IFT LDLG ; If a new copy of MCR.OLB is requested, you will 
.IFT LDLG ; loose any changes you have to the old copy.
.IFT LDLG ;
.ASK COPY DO YOU WANT TO COPY A NEW VERSION OF MCR.OLB ONTO THIS UIC
.IFT COPY ; NOW WE COPY MCR.OLB,SYSROT.OBJ ONTO THIS UIC
.IFF COPY ; NOW WE COPY SYSROT.OBJ ONTO THIS UIC
 
	.; TEST FOR THE EXISTANCE OF REQUIRED FILES
	.SETF XIT
	.IFF DEBUG .TESTFILE SY:[1,24]MCR.OLB
	.IF <FILERR> NE 1 ; DUMMY, MCR.OLB IS NOT ON [1,24]
	.IF <FILERR> NE 1 .SETT XIT
	.IFF DEBUG .TESTFILE [1,24]IND.OLB
	.IF <FILERR> NE 1 ; DUMMY, IND.OLB IS NOT ON [1,24]
	.IF <FILERR> NE 1 .SETT XIT
	.IFF DEBUG .TESTFILE SY:[1,24]INS.OLB
	.IF <FILERR> NE 1 ; DUMMY INS.OLB IS NOT ON [1,24]
	.IF <FILERR> NE 1 .SETT XIT
	.IFF DEBUG .TESTFILE SY:[1,24]SYSROT.OBJ
	.IF <FILERR> NE 1 ; DUMMY, SYSROT.OBJ IS NOT ON [1,24]
	.IF <FILERR> NE 1 .SETT XIT
	.IFT XIT ;
	.IFT XIT ; You are missing a required file(s) on [1,24].  We will now
	.IFT XIT ; exit.  You can start up when the files are in place.
	.IFT XIT .GOTO EXIT
 
.IFT DEBUG .GOTO NOCPY:
.ENABLE QUIET
.IFT COPY PIP MCR.OLB;*/DE/NM,SYSROT.OBJ;*
.IFF COPY PIP SYSROT.OBJ;*/DE/NM
.IFT COPY PIP /NV=[1,24]MCR.OLB,SYSROT.OBJ
.IFF COPY PIP /NV=[1,24]SYSROT.OBJ
.DISABLE QUIET
 
.NOCPY:	.ASK MUX DOES YOUR SYSTEM HAVE ANY TERMINAL MULTIPLEXERS
	.SETS SWTCH ""
	.IFT DEBUG .SETS SWTCH "/-MC"
	.IFF MUX .GOTO NOMUX
	.IFF LDLG .GOTO SKIP2
 
;
; The KMS enhancement package includes the option for including a system 
; accounting package including CPU time, QIO  usage, global variables, memory
; usage, and a limited form of task accounting.  These features all require a 
; system generation to incorporate.  The user who has terminaDl multiplexers 
; must also perform a system gereration before incorporating this package.  
; A number of account file and run privilege allocation enhancements require 
; a privilege mask word to exist in each terminal"s UCB.
;  
; For those systems which only use dl11 terminal interfaces, the privilege
; mask word is U.CW3 in each terminal"s UCB. However, terminal multiplexers
; require the use of U.CW3.  Hence, the privlege mask word must be created in
; the UCB such that U.PRV1=U.LUIC-2.
;
; To simplify the process, the files, SGNTT.SLP, SGNEXEC.SLP and SGNPER.SLP
; are provided. move the SLP files to [200,200] on the sysgen disk(s) and
; type SLP @SGNTT.SLP, SLP @SGNPER.SLP, and SLP @SGNEXEC.SLP. These SLP files
; will allow SYSGEN to properly query you as to what accounting options you 
; wish to have included in your system.  At a bare minimum, the user with 
; terminal multiplexers, must opt for including KMS run privlege enhancements.
; selecting this option will reserve an additional word both for a user privi-
; lege mask word and for an account number in each terminal UCB. In addition,
; the system uic $LBUIC will be created.
;
; For the user who only wishes to use the terminal accounting time package
; and who does not wish to add the accounting data base to the executive,
; one only applies the SLP file to SGNTT.SLP.  This will create 1 additional
; word in each terminal UCB for use as a privilege mask word.  Note that doing
; so will bypass the sysgen dialog for prompting for various options.
;
; Now proceed with SYSGEN.  SYSTB.MAC, (and possibly SYSCM.MAC and TDSCH.MAC) 
; must be reassembled. Next build the EXEC and all the privileged tasks.
;
;
.SKIP2:	;
	.ASK ANS DO YOU WISH TO SLP THE EXEC SOURCES AND SYSGEN COMMAND FILES
	.IFT ANS ;
	.IFT ANS ;  We will now chain to @EXECSLP.CMD.  When it exits, do a
	.IFT ANS ;  do a SYSGEN.
	.IFT ANS @EXECSLP'SWTCH'
	.IFT ANS ;
.IFF DEBUG .IFT ANS ; We now exit and let you do a SYSGEN.  Good Luck!
.IFT DEBUG .IFT ANS ; We will continue with KMSGEN in DEBUG mode.
.IFF DEBUG .IFT ANS .GOTO EXIT
.NOMUX:
	.IFF LDLG .GOTO SKIP3
;
;     This release of the KMS ENHANCEMENT PACKAGE includes a very versatile 
; system accounting package.  This accounting package is aimed at providing 
; the user of RSX11M V3.2 with much the same accounting information as
; provided for the RSX11M-PLUS user.  If this option is selected data on
; CPU usage, logons/logoff, disk block usage, memory usage, pool usage,
; QIO activity and a selected tasks can all be logged to a F4P readable data
; file.  The system is dynamically reconfigurable on line, and imposes no 
; overhead on the operating system unless it is enabled.  While the system is
; primarily aimed at providing sufficient information for optimising system
; performance, it also provides sufficient information for implementing charge
; back accounting.  unfortunately, implementing this system will require
; a system generation and modifying two exec modules(very slightly).  First,
; the accounting data base in SYSCM must be created(SYSCM.MAC) and a global
; symbol created in TDSCH.MAC. In addition the various terminal UCB"s must be 
; modified to reflect the type of accounting desired.
;
;     These changes are all very simply implemented.  The interested user is 
; urged to read SYSLOG.DOC.  A V3.2 SYSGEN is rather simple(or almost so).
; three SLP files are provided (SGNTT.SLP, SGNPER.SLP, AND SGNEXEC.SLP)
; which will allow sysgen to ask the correct questions concerning the
; various system accounting options.  The files TDSCH.SLP and SYSCM.SLP
; are then applied, and a SYSGEN is done.  These exec changes will not
; adversely affect a system or cause flakey crashes as they primarily provide
; data bases for the enhancements contained in the other programs. 
;
; In addition the TDSCH.MAC modification allows the ROUND ROBIN interval
; and the SWAP time to be dynamically altered(on line) and displayed using
; the task SCH.
;
; If your system does not use multiplexers, a SYSGEN is not required to 
; to incorporate the account file and run privlege allocation enhancements.
; However to incorporate RUN PRIVLEGE ALLOCATION, it will be necessary to edit
; the INSHD.SLP file and define the symbol R$$PRV=0.
; If,  on the other hand,  you apply the SYSGEN command file slp patches and
; answer yes to the question asking if the KMS enhancements are desired, the
; symbol R$$PRV will be defined and terminal UCB"s will be created which have
; both a privIlege mask word and a word for a user account number.
;
; ACTFIL must be assembled and replaced in MCR.OLB for the the tasks to build
; correctly.  The only modifications to ACTFIL.MAC are to insert new bit
; ofset definitions for entries into the account file(RSX11.SYS).  The new
; ACTFIL will also correctly support the old versions of HELLO and BYE.  Once
; ACTFIL is built and inserted into MCR.OLB, it never need be built again.
;
; Note this master build file will not produce either listings or maps.
; If such are desired, the individual task assembly/build files may be
; sepreately run. They will prompt to ask if listings, and maps are
; desired.  Note, however, listings and maps go to TI:.  To create a
; disk file listing or map, the files must be edited to define the string 
; symbol MP: to be a file rather than TI:.
;
;
;
;     As an added feature are included the sources and files required to build
; a working pseudo-BATCH for RSX11M V3.2.  PSEUDO-BATCH requires using a
; virtual terminal driver(DAVE ELDERKIN - DEC).  The submit and batch programs
; were initially written by ERIC ROSDOL and included DECNET support.  Since
; we are not running DECNET, no DECNET code is included in the sources.
;
;     Both programs have been modified to enable them to operate a bit more
; smoothly and to fix some bugs that became obvious after trying to use
; BATCH on loaded system.  Look at the comments in SUBMIT.MAC, and BATCH.MAC
; to see indicate what problems still remain, what has been done, and 
; where improvements should be made.  All in all, PSEUDO-BATCH works well
; and has no serious problems.  
;
;    In this release of BATCH, BATCH no longer uses ...AT. for processing
; files.  This is because ...AT. has grown rather large for processing simple
; command files such as are used generally in compiling and taskbuilding
; programs.   Instead BATCH uses a procedure interpreter(...PIN) which with
; FCSRES is 4 times smaller than ...AT.
;
; *** PLEASE NOTE:  BATCH uses a virtual terminal(VT:) for which a driver is
; ***		    provideD(VTDRV).  Its UCB must look exactly like that for
; ***		    the standerd terminal.  
;
; The sources are also included for building an enhanced AT., MCR, and
; Console Command LanguagE(CCL -- the catchall TASK ...CA.).   The ...AT. 
; mods implement a default UIC to look for command files on and create a 
; /NOLI switch to externally set the .ENABLE QUIET mode.   The special
; symbol <LIBUIC> is enabled by commenting out a conditional.
; The MCR SLP file modifies MCR... to correct a known bug (it requires
; a CCL command to be 3 characters or longer before sending it to
; the catchall task).  DEC may publish this patch later.
;
.SKIP3:;
	.IFT MUX .GOTO SKIP3A
	.ASK ANS DO YOU WANT THE EXEC SOURCES AND SYSGEN COMMAND FILES SLPED
	.IFT ANS ; 
	.IFT ANS ; We will chain to @EXECSLP.  When it exits, do a SYSGEN
	.IFT ANS @EXECSLP'SWTCH'
	.IFT ANS ;
.IFF DEBUG .IFT ANS ; Now SYSGEN your target system.
.IFT DEBUG .IFT ANS ; We will contimue with KMSGEN in debug mode.
.IFF DEBUG .IFT ANS .EXIT	
.SKIP3A:
;
.IFT LDLG ; The KMS System Accounting Modifications consist of applying
.IFT LDLG ; TDSCH.SLP, SYSCM.SLP to the exec modules, applying SGNTT.SLP
.IFT LDLG ; SGNEXEC.SLP, and SGNPER.SLP to the sysgen command files, and
.IFT LDLG ; Performing A SYSGEN. SYSLOG.DOC describes these enhancements.
.IFT LDLG ; The modified SYSGEN allows one to select KMS RUN PRIVILEGE
.IFT LDLG ; ENHANCEMENTS and SYSTEM ACCOUNTING.
;
; Answer the next question with a YES only if 1) the symbol R$$PRV has been 
; added to RSXMC.MAC, 2) the SYSCM data base changes has been implemented and
; 3) The UCB for each terminal has been modified(SGNTT.SLP).  These changes
; are required before answering YES to the next question.  If these changes
; have not been made but your system contains no terminal multiplexers, most
; tasks will assemble correctly and provide a limited subset of functionality.
; the symbol R$$PRV must not be added to RSXMC.MAC unless the other changes 
; have been made.
;
.ASK $SYSAC HAVE THE KMS ENHANCEMENTS BEEN SELECTED AT SYSGEN
.ENABLE QUIET
.IFF $SYSAC .GOTO NORNCK
.OPEN RPRVCHK.MAC;1
.ENABLE DATA
	.TITLE	RPRV
	.IDENT /1/
;+
; MODULE TO TEST IF RUN PRIVLEGES HAVE BEEN INCLUDED AS A SYSGEN OPTION
;-
	.IFNDF	R$$PRV
	.ERROR	; SORRY KMS RUN PRIVLEGES HAVE NOT BEEN INCLUDED AS A SYSGEN
	.ERROR	; OPTION.  IF YOU WANT THESE FEATURES, APPLY THE SLP FILES
	.ERROR	; TO THE SYSGEN COMMAND FILES AND THE EXEC SOURCE FILES,
	.ERROR	; DO A SYSGEN, AND COME BACK AND THEN USE KMSGEN.CMD.
	.ENDC
	.END
.DISABLE DATA
.CLOSE
.ENABLE QUIET
.IFT DEBUG .DISABLE QUIET
MAC NL:=LB:[200,200]RSXMC/PA:1,SY:'<UIC>'RPRVCHK
.NORNCK:.DISABLE QUIET
.IFT $SYSAC .IF <EXSTAT> NE 1 ; YOU SPEAK WITH FORKED TOUNG, TRY AGAIN OR
.IFT $SYSAC .IF <EXSTAT> NE 1 ; ^Z TO EXIT SO YOU CAN ADD KMS RUN PRIVILEGE.
.IFT $SYSAC .IF <EXSTAT> NE 1 .GOTO SKIP3
.IFF DEBUG .ENABLE QUIET
.IFT $SYSAC PIP RPRVCHK.MAC;1/DE
.DISABLE QUIET
.IFF $SYSAC .IFT MUX ;
.IFF $SYSAC .IFT MUX ; FATAL ERROR. You must include this option at SYSGEN.
.IFF $SYSAC .IFT MUX ; .GOTO EXIT
.IFF $SYSAC .IFT LDLG ;
.IFF $SYSAC .IFT LDLG ; Even if you do not wish to include the accounting 
.IFF $SYSAC .IFT LDLG ; Data base changes requiring a SYSGEN, you can still
.IFF $SYSAC .IFT LDLG ; log some data (HELLO, BYE, UPD) to a log file.
.IFT $SYSAC .IFT LDLG ;
.IFF $SYSAC .ASK $LOGIT DO YOU WANT TO LOG HELLO/BYE/UPD STATISTICS ANYWAY.
.IFT LDLG ;
.IFT LDLG ; Substantial core and disk block savings result if tasks doing I/O
.IFT LDLG ; are built using an FCS resident library.  Such task include
.IFT LDLG ; BATCH, ACCLOG, WHO, RESET,HELLO, BYE, IND, INS, SYSLOG, etc.
.IFT LDLG ; If you answer YES to the next question, any Fortran tasks will
.IFT LDLG ; be built with a F4P resident library. If you do not have one you
.IFT LDLG ; must stop and edit these command files or insert a F4P resident
.IFT LDLG ; library in your system. note, that some of the privileged tasks
.IFT LDLG ; not be built with  FCSRES if you have 20K executive support.
.IFT LDLG ;
.ASK $RESLB BUILD ALL TASKS (IF POSSIBLE) WITH AN FCS/F4P RESIDENT LIBRARY
.ASK $20KEX DO YOU HAVE 20K EXECUTIVE SUPPORT
.SETS FDT ""
.IFT LDLG ;
.IFT LDLG ; ACTFIL.MAC contains the new account file offsets.  Old offsets
.IFT LDLG ; are unchanged.  The new offsets are required for building
.IFT LDLG ; the programs correctly.
.IFT LDLG ;
.ASK A$CTFL BUILD ACTFIL (REQUIRED FOR OTHER TASKS)!!
;
.ASKS UTLUIC ON WHAT UIC ARE THE UTILITY SOURCES(<CR> = [344,43])
.ASKS BATUIC ON WHAT UIC ARE THE BATCH SOURCES(<CR> = [344,45])
.ASKS CCLUIC ON WHAT UIC ARE THE CCL SOURCES(<CR> = [344,60])
.ASKS SLGUIC ON WHAT UIC ARE THE ACCOUNTING SYSTEM SOURCES(<CR> = [344,65])
;
.IF UTLUIC EQ "" .SETS UTLUIC "[344,43]"
.IF BATUIC EQ "" .SETS BATUIC "[344,45]"
.IF CCLUIC EQ "" .SETS CCLUIC "[344,60]"
.IF SLGUIC EQ "" .SETS SLGUIC "[344,65]"
.IFT LDLG ;
.IFT LDLG ; This version of HELLO supports all DEC standard features plus
.IFT LDLG ; a large number of enhancements.  If logon time, CPU time and run
.IFT LDLG ; privileges are desired, this new HELLO must be built.
.IFT LDLG ;
.ASK H$ELLO BUILD HELLO
.IFT LDLG ;
.IFT LDLG ; BYE must be built to account for logon time, CPU time, 
.IFT LDLG ; and for accounting(sends message to UPDATE).
.IFT LDLG ;
.ASK B$YE BUILD BYE
.IFT LDLG ;
.IFT LDLG ; ACNT should be modified to include the RSX11M-PLUS features
.IFT LDLG ; of providing each user with an ID and an account number.  This
.IFT LDLG ; is necessary to implement if you ever desire to account for
.IFT LDLG ; user system use on a user by user basis with the new System
.IFT LDLG ; Accounting and Performance measurement package.
.IFT LDLG ;
.IFT LDLG ; >>> PLEASE NOTE <<< If ACNT is to be rebuilt
.IFT LDLG ; either the new ACTFIL.OBJ must be in [1,24]MCR.OLB
.IFT LDLG ; or we must insert it before rebuilding ACNT.
.IFT LDLG ;
.ASK A$CNT BUILD ACNT
.ASK INSERT INSERT THE KMS ACTFIL.OBJ INTO [1,24]MCR.OLB
.IFT LDLG ;
.DISABLE SUBSTITUTION
.IFT LDLG ;
.IFT LDLG ; Two additional user classes may be defined; the 'GROUP LEADER'
.IFT LDLG ; and the 'USER MANAGER'.  The 'GROUP LEADER's login uic changes
.IFT LDLG ; with his current UIC if the group number is not changed.
.IFT LDLG ; The "USER MANAGER"'s login UIC changes with his current UIC
.IFT LDLG ; down to a certain level(currently [310,X]).    In additon
.IFT LDLG ; support is provided for 'SET /LIBUIC' so that privileged tasks
.IFT LDLG ; and unprivileged utilities may be kept on seperate UICS.
.IFT LDLG ; These modifications require building a new SYS.TSK(...MCR).
.IFT LDLG ;
.ENABLE SUBSTITUTION
.ASK S$SYS BUILD A NEW ...MCR
.IFT S$SYS .IFF $SYSAC ; WARNING - LIBUIC IS FIXED AT [1,54].
.IFT $SYSAC .IFF S$SYS ; WARNING YOU CAN NOT CHANGE LIBUIC FROM [1,54]
.IFT LDLG ; 
.IFT LDLG ; The next option is to rebuild MCR... to make it more useable
.IFT LDLG ; with CCL(...CA.).  A bug exists in the distributed version
.IFT LDLG ; of MCRDIS in which commands of less than 3 characters are
.IFT LDLG ; flagged as errors rather than being passed to ...CA.
.IFT LDLG ; DEC admits the problem exists and may issue the patch later.
.IFT LDLG ;
.ASK M$CR BUILD A NEW MCR... MORE SUITABLE FOR USE WITH CCL.
.IFT LDLG ;
.IFT LDLG .IFT S$SYS ; To correctly rebuild ....MCR we must select either the
.IFT LDLG .IFT S$SYS ; full duplex or non full duplex version of SPROV.MAC,
.IFT LDLG .IFT S$SYS ; SDSOV.MAC, and SETOV.MAC.
.IFT S$SYS .ASK $FDT ARE YOU USING THE NEW FULL DUPLEX TERMINAL DRIVER
.IFT $FDT .SETS FDT "FDT"
.IFT LDLG ;
.IFT LDLG ; A number of enhancements and bug fixes exist for ...AT.  Amoung
.IFT LDLG ; the features include is a default UIC for command files [1,5]
.IFT LDLG ; and the /NOLI switch.
.IFT LDLG ;
.ASK I$ND BUILD A NEW ...AT. WITH ENHANCEMENTS
.IFT LDLG ;
.IFT LDLG ; RSX11M V3.2 supports a catchall task ...CA.  CCL is such a task.
.IFT LDLG ; TRY IT! YOU WILL LOVE IT!
.IFT LDLG ;
.ASK C$CL BUILD CCL, THE CATCHALL TASK
.IFT LDLG ;
.IFT LDLG ; UPDATE only need be built if it is desired to do disk block 
.IFT LDLG ; accounting.
.IFT LDLG ;
.ASK U$PDAT BUILD UPDATE
.IFT LDLG ;
.IFT LDLG ; ACCLOG is a general report program to display the new information
.IFT LDLG ; in the account file.  The user may wish to edit the title line.
.IFT LDLG ;
.ASK A$CLOG BUILD ACCLOG
.IFT LDLG ;
.IFT LDLG ; PIN (procedure interpreter) is a task which is 4 times smaller
.IFT LDLG ; than ...AT. When built with FCSRES.  It is used to control the
.IFT LDLG ; compilations and taskbuilds the same way ...AT. does.  Pin spawns
.IFT LDLG ; commands to MCR, and has a limited number of internal
.IFT LDLG ; commands for controling output and exit status.  BATCH requires
.IFT LDLG ; PIN in order to work.
.IFT LDLG ;
.ASK P$IN BUILD THE PROCEDURE INTERPRETER, PIN
.SETF S$CH
.IFT LDLG .IFT $SYSAC ;
.IFT LDLG .IFT $SYSAC ; SCH is a task which can dynamically alter the ROUND 
.IFT LDLG .IFT $SYSAC ; ROBIN and EXECUTIVE SWAP intervals.  This is sometimes
.IFT LDLG .IFT $SYSAC ; useful in improving throughput on a system which is
.IFT LDLG .IFT $SYSAC ; so heavily loaded, that swaping has become thrashing.
.IFT LDLG .IFT $SYSAC ;
.IFT $SYSAC .ASK S$CH BUILD SCH(DISPLAY/CHANGE R. ROBIN/SWAP TIMES)
.IFT LDLG ;
.IFT LDLG ; RESET must always be built, if only to use in STARTUP.CMD
.IFT LDLG ; to reset any terminal LOGON FLAGS.
.IFT LDLG ;
.ASK R$SET BUILD RESET
.IFT LDLG ;
.IFT LDLG ; WHO is a convenience utility and not required.
.IFT LDLG ; WHO will display who is on the system and on which terminal.
.IFT LDLG ;
.ASK W$HO BUILD WHO
.IFT LDLG ;
.IFT LDLG ; INS must be rebuilt if it is desired to allocate RUN 
.IFT LDLG ; privIleges on a user by user basis or if RUN $ is to search LIBUIC
.IFT LDLG ; also for the task.
.IFT LDLG ;
.ASK I$NS BUILD INS
.IFT LDLG ;
.IFT LDLG ; If one has a large number of users and terminals scattered around
.IFT LDLG ; then MAIL is a very convenient utility for leaving messages.
.IFT LDLG ; MAIL is supplied curtesy of Mark Johnson.
.IFT LDLG ;
.ASK M$AIL BUILD MAIL
.;.IFT LDLG ;
.;.IFT LDLG ; TRUNCATE is a convenience utility for truncating a users file
.;.IFT LDLG ; to its logical EOF.  If every user routinely uses truncate on
.;.IFT LDLG ; all edited files, substantial disk space is recovered.
.;.IFT LDLG ; experience has shown it to be very important to use on RK05 
.;.IFT LDLG ; based systems with a large number of users and files.
.;.IFT LDLG ;  ** Experience now shows the PIP /TR switch works just as well.
.;.IFT LDLG ;
.;.ASK T$RUNC BUILD THE TRUNCATE UTILITY
.IFT LDLG ;
.ASK B$ATCH BUILD THE BATCH, BTQ, AND SUBMIT UTILITIES
.IFT B$ATCH .SETT P$IN
.IFF $SYSAC .SETF S$SLOG
.IFF $SYSAC .GOTO NOLOG
.IFT LDLG ;
.IFT LDLG ; SYSLOG/ACC/TASKLOG are the tasks required to implement
.IFT LDLG ; System Accounting for RSX11M V3.2.  These tasks require
.IFT LDLG ; the existance of the previously mentioned exec changes.
.IFT LDLG ;
.ASK S$SLOG BUILD THE SYSTEM ACCOUNTING TASKS
.IFF S$SLOG .GOTO NOLOG
.IFT S$SLOG .ASK CLK DO YOU HAVE A PROGRAMABLE CLOCK(VECTOR=104)
.IFT CLK .SETS $VEC "104"
.IFF CLK .SETS $VEC "100"
.IFF CLK .IFT S$SLOG ;>> SYSLOG WILL BE BUILT FOR A LINE CLOCK(VECTOR=100)
.SETN $TICS 0
.IFT S$SLOG .IFT CLK .ASKN [100:1000] $TICS HOW MANY TICS/SEC FOR YOUR CLOCK
.IF $TICS > 100 ; WARNING -- CPU TIME ACCOUNTING AT > 100 TICS/SEC WILL HAVE
.IF $TICS > 100 ; A LOT OF OVERHEAD.
;
; System accounting can be configured to account for the number of pages
; SPOOLED on a user by user basis.  To implement this feature you will
; have to do the following things after this command file exits.
;
; 1.  Replace the module JOBEND in LPP.OLB with the supplied object module
; 2.  Replace or modify existing command files to build LPP.  The command
;     file must contain a line of the form   GBLDEF=U.ACN:XXXX   where
;     the value of xxx depends on whether or not you have selected DECNET
;     support as a SYSGEN option.  See LPPFCSBLD.CMD to find the appropriate
;     values to use.
; 3.  Rebuild LPP with the modified command file.
;
.NOLOG:
.IFT LDLG ;
.IFT LDLG ; The POOL MONITOR is a freebe from the RXS11M group.  This
.IFT LDLG ; version of POOL is suitable for V3.2 using the STOP BIT
.IFT LDLG ; Directive.  Otherwise its the same as in the MULTITASKER.
.IFT LDLG ;
.ASK P$OOL BUILD THE POOL MONITOR
.IFT LDLG ;
.IFT LDLG ; SPQ is a task to display the print que for the old print spooler.
.IFT LDLG ;
.ASK S$PQ BUILD SPQ TO DISPLAY THE SPOOL QUE FOR THE OLD PRT...
.IFT LDLG ;
.IFT LDLG ; TCF is the program sending control character strings to terminals
.IFT LDLG ;
.ASK T$CF BUILD TCF
.IFT LDLG ;
.IFT LDLG ; RMC will force MCR command lines onto remote terminals using the
.IFT LDLG ; SPAWN Directive.  Good example of how to use the SPAWN Directive
.IFT LDLG ; from F4P.
.IFT LDLG ;
.ASK R$MC BUILD RMC
.IFT LDLG ; 
.IFT LDLG ; CVL is a program to display and change a disk volume lable
.IFT LDLG ;
.ASK C$VL BUILD CVL
.IFT LDLG ; FRAG is a utility to display disk fragmentation statistics
.IFT LDLG;
.ASK F$RAG BUILD FRAG.
.IFT LDLG ;
.IFT LDLG ; Eventually HELLO, BYE, SPROV, SDSOV, SETOV,  and  INSHD.OBJ must
.IFT LDLG ; be replaced in their object module libraries and the libraries
.IFT LDLG ; replaced on the system generation disk.  Note also that UPDATE
.IFT LDLG ; must be built each SYSGEN, so the user must transfer
.IFT LDLG ; UPDATE.OBJ and create a build file for it on the SYSGEN disk.
.IFT LDLG ;
.ASK R$PMCR REPLACE  HELLO.OBJ, BYE.OBJ, ETC.  IN MCR.OLB
.ASK R$PINS REPLACE INS.OBJ IN INS.OLB
.ASK C$MMCR COMPRESS MCR.OLB

.ASK C$MINS COMPRESS INS.OLB
.IFT DEBUG .SETF R$PMCR
.IFT DEBUG .SETF R$PINS
.IFT DEBUG .SETF C$MMCR
.IFT DEBUG .SETF C$MINS
.IFT DEBUG .SETF A$CTFL
.DISABLE QUIET
.IFT A$CTFL; ASSEMBLE ACTFIL
.IFF DEBUG  .ENABLE QUIET
.IFT A$CTFL .OPEN ACTFILASM.CMD;1
.IFT A$CTFL .DATA ACTFIL=LB:[1,1]EXEMC/ML,[200,200]RSXMC/PA:1,-
.IFT A$CTFL .DATA SY:'UIC'ACTFIL
.IFT A$CTFL .CLOSE
.IFT A$CTFL MAC @ACTFILASM
.SETS OURUIC <UIC>
.IFF DEBUG .IFT A$CTFL LBR MCR.OLB/RP=ACTFIL.OBJ
.IFT DEBUG .SETF INSERT
.IFT INSERT SET /UIC=[1,24]
.IFT INSERT LBR MCR.OLB/RP='OURUIC'ACTFIL.OBJ
.IFT INSERT SET /UIC='OURUIC'
.IFT A$CTFL PIP ACTFILASM.CMD;1/DE
.DISABLE QUIET
.IFT H$ELLO ;
.IFT H$ELLO ; BUILD HELLO  @HELLO
.IFF TRC .ENABLE QUIET
.IFT H$ELLO @HELLO'SWTCH'
.DISABLE QUIET
.IFT B$YE ;
.IFT B$YE ; BUILD BYE  @BYE
.IFF TRC .ENABLE QUIET
.IFT B$YE @BYE'SWTCH'
.DISABLE QUIET
.IFT A$CNT ;
.IFT A$CNT ; BUILD ACNT  @ACNT
.IFF TRC .ENABLE QUIET
.IFT A$CNT @ACNT'SWTCH'
.DISABLE QUIET
.IFT S$SYS ;
.IFT S$SYS ; BUILD ...MCR  @SYS
.IFF TRC .ENABLE QUIET
.IFT S$SYS @SYS'SWTCH'
.DISABLE QUIET
.IFT M$CR ;
.IFT M$CR ; BUILD MCR...  @MCR
.IFF TRC .ENABLE QUIET
.IFT M$CR @MCR'SWTCH'
PIP SYSROT.OBJ;*/DE/NM
.DISABLE QUIET
.IFT I$ND ;
.IFT I$ND ; BUILD ...AT.   @IND
.IFF TRC .ENABLE QUIET
.IFT I$ND @IND'SWTCH'
.DISABLE QUIET
.IFT U$PDAT ;
.IFT U$PDAT ; BUILD UPDATE  @UPDATE
.IFF TRC .ENABLE QUIET
.IFT U$PDAT @UPDATE'SWTCH'
.DISABLE QUIET
.IFT A$CLOG ;
.IFT A$CLOG ; @ACCLOG
.IFF TRC .ENABLE QUIET
.IFT A$CLOG @ACCLOG'SWTCH'
.DISABLE QUIET
.IFT R$SET ;
.IFT R$SET ; BUILD RESET  @RESET
.IFF TRC .ENABLE QUIET
.IFT R$SET @RESET'SWTCH'
.DISABLE QUIET
.IFT W$HO ;
.IFT W$HO ; BUILD WHO  @WHO
.IFF TRC .ENABLE QUIET
.IFT W$HO @WHO'SWTCH'
.DISABLE QUIET
.IFT I$NS ;
.IFT I$NS ; BUILD INS  @INS
.IFF TRC .ENABLE QUIET
.IFT I$NS PIP INS.OLB;*/DE/NM
.IFT I$NS PIP =[1,24]INS.OLB
.IFT I$NS @INS'SWTCH'
.DISABLE QUIET
.IFT R$PMCR ;
.IFT R$PMCR ; REPLACE OBJECT MODULES IN MCR.OLB
.IFF DEBUG .ENABLE QUIET
.IFT R$PMCR LBR MCR.OLB/RP=HELLO.OBJ,BYE.OBJ
.IFT R$PMCR .IFF $FDT LBR MCR.OLB/RP=SPROV.OBJ,SDSOV,SETOV,MCRDEF,MCRDIS
.IFT R$PMCR .IFT $FDT LBR MCR.OLB/RP=MCRDEF.OBJ,MCRDIS
.IFT R$PINS LBR INS.OLB/RP=INSHD.OBJ,INSFL.OBJ,INSPS.OBJ
.DISABLE QUIET
.IFT M$AIL ;
.IFT M$AIL ; BUILD MAIL AND MAITSK
.IFF TRC .ENABLE QUIET
.IFF DEBUG .IFT M$AIL .IFT $RESLB TKB @MAILFCS
.IFF DEBUG .IFT M$AIL .IFF $RESLB TKB @MAIL
.IFT M$AIL @MAITSK'SWTCH'
.IFF C$CL .GOTO GTUIC1
.GTUIC0: SET /UIC='CCLUIC'
.IF <EXSTAT> EQ 1 .GOTO HVUIC0
.ASKS CCLUIC ON WHAT UIC ARE THE CCL SOURCES(NO DEFAULTS)
.GOTO GTUIC0
.HVUIC0:.DISABLE QUIET
;
; BUILD CCL  @CCL
.IFF TRC .ENABLE QUIET
 @CCL'SWTCH'
.GTUIC1:SET /UIC='UTLUIC'
.IF <EXSTAT> EQ 1 .GOTO HVUIC1
.ASKS UTLUIC ON WHAT UIC ARE THE MISC. UTILITIES(NO DEAULTS)
.GOTO GTUIC1
.HVUIC1:.DISABLE QUIET
.IFT P$OOL ;
.IFT P$OOL ; BUILD POOL MONITOR
.IFF TRC .ENABLE QUIET
.IFT P$OOL @POOL'SWTCH'
.DISABLE QUIET
.IFT S$PQ ;
.IFT S$PQ ; BUILD SPOOL QUEUE DISPLAY
.IFF TRC .ENABLE QUIET
.IFT S$PQ @SPQ'SWTCH'
.DISABLE QUIET
.IFT T$CF ;
.IFT T$CF ; BUILD TCF   @TCF
.IFF TRC .ENABLE QUIET
.IFT T$CF @TCF'SWTCH'
.DISABLE QUIET
.IFT R$MC ;
.IFT R$MC ; BUILD RMC  @RMC
.IFF TRC .ENABLE QUIET
.IFT R$MC @RMC'SWTCH'
.IFT C$VL ;
.IFT C$VL ; BUILD CVL  @CVL
.IFF TRC .ENABLE QUIET
.IFT C$VL @CVL'SWTCH'
.IFT F$RAG ;
.IFT F$RAG ;
.IFF TRC .ENABLE QUIET
.IFT F$RAG @FRAG'SWTCH'
.GTUIC2:SET /UIC='BATUIC'
.IF <EXSTAT> EQ 1 .GOTO HVUIC2
.ASKS BATUIC ON WHAT UIC ARE THE BATCH SOURCES(NO DEFAULTS)
.GOTO GTUIC2
.HVUIC2:.DISABLE QUIET
.IFT B$ATCH ; 
.IFT B$ATCH ; BUILD BATCH, BTQ, SUBMIT, and VTDRV
.IFF TRC .ENABLE QUIET
.IFT B$ATCH @BATCHBLD'SWTCH'
.IFT B$ATCH @BTQ'SWTCH'
.IFT B$ATCH @SUBMIT'SWTCH'
.IFT B$ATCH @VTDRVBLD'SWTCH'
.IFT P$IN @PIN'SWTCH'
.GTUIC3:SET /UIC='SLGUIC'
.IF <EXSTAT> EQ 1 .GOTO HVUIC3
.ASKS SLGUIC ON WHAT UIC ARE THE SYSTEM ACCOUNTING SOURCES(NO DEFAULTS)
.GOTO .GTUIC3
.HVUIC3:.DISABLE QUIET
.IFT S$CH ;
.IFT S$CH ; BUILD SCH  @SCH
.IFF TRC .ENABLE QUIET
.IFT S$CH @SCH
.DISABLE QUIET
.IFT S$SLOG ;
.IFT S$SLOG ; BUILD SYSTEM ACCOUNTING TASKS
.IFF TRC .ENABLE QUIET
.IFT S$SLOG .IFT $SYSAC @SYSLOG'SWTCH'
.IFT S$SLOG .IFT $SYSAC @ACC'SWTCH'
.IFT S$SLOG .IFT $SYSAC @TASKLOG'SWTCH'
.IFT TRC .DISABLE QUIET
SET /UIC='OURUIC'
.IFT C$MMCR LBR MCR.OLB/CO=MCR.OLB
.IFT C$MMCR PIP MCR.OLB/PU
.IFT C$MINS LBR INS.OLB/CO=INS.OLB
.IFT C$MINS PIP INS.OLB/PU
.EEXIT:;
.EXIT:;
;
; KMSGEN IS NOW COMPLETE
;
; 1.  TRANSFER THE TASKS TO THE UICs OF YOUR CHOICE, TEST THEM AND
;     PERMANENTLY INSTALL THEM IF REQUIRED WITH VMR.
;
; 2.  IF YOU EVER DESIRE TO DO ANOTHER SYSGEN, ALL MCR TYPE MODULES
;     SHOULD BE REPLACED IN THE MCR.OLB WHICH IS COPIED WHEN ONE
;     DOES A SYSGEN WITH THE FULL DUPLEX TERMINAL DRIVER.  MCRTTFD.OBJ
;     SHOULD BE REPLACE THE DISTRIBUTION SOURCE.
;
; 3.  IF YOU EVER HAVE TO DO A SYSGEN WHICH CHANGES YOUR LEVEL OF
;     DECNET SUPPORT(IE BEFORE YOU DID NOT HAVE IT, BUT NOW YOU WANT IT),
;     YOU MUST FIRST DO THE SYSGEN USING ALL DEC DISTRIBUTION SOURCES.
;     THEN DO KMSGEN, TRANSFER AND INSTALL TASKS, AND UPDATE OBJECT
;     MODULES AND LIBRARIES FOR THE NEXT SYSGEN.
