This file is [307,23] README.2ND Executive correction files: CORAL.SLP,INITL.SLP,SYSCM.SLP These modifications are the basis for a pool-saving trick as follows: 1) A number of I/O packets are pre-allocated when the system boots for the very first time. These packets are reserved at the bottom (low addresses) of the Dynamic Storage Region where the module INITL.MAC ordinarily resides. To define the maximum number of pre-allocated packets, include the following line in your RSXMC.MAC: DS$OPT = 30. ;pre-allocate all possible packets 2) These pre-allocated packets will no longer be used by all sorts of system structures...they will only be allocated when the executive routine $ALPKT is called. $ALPKT is called in the exec to allocated I/O packets (DRQIO.MAC), send data packets (DRRAS.MAC), and send by reference packets (DRMAP.MAC). All other structures (sub-partition control blocks, file control blocks, window blocks, etc.) will be allocated from general system pool, even if they are the same size as I/O packets. This guarantees that the pre-allocated I/O packets are only used when necessary. 3) Pre-allocated I/O packets will no longer fragment the system pool since they will be deallocated back to general pool if fragmentation would occur. This renders the function of SET /MAXPKT useless. In general, there will be 15 - 17 I/O packets available. When system activity goes up and down, these packets will be recycled, but no additional packets will be reserved from general pool. These mods seem to work very nicely for us in keeping fragmentation way down without any adverse affects on system performance. DRSPW.SLP This correction file implements an additional flavor of task spawning. If a normal SPAWN directive is issued with an event flag of -1, which is normally illegal, the following happens: 1) If the spawn is successful and the requesting task has its MCR synchronization bit set (T3.MCR), then it is cleared for the requestor and set in the child's TCB. In this way, the parent can exit without the system issuing the '>' prompt and the child's exit will cause the '>' prompt to come out at the terminal. In this way, a non-privileged task may spawn a child and exit, with the '>' prompt not being issued. An example of the utility of this is when the catch-all task (...CA.) receives a command (eg. FREE DK0:) and spawns a task to process it (eg. PIP DK0:/FR) then exits. Without this change, the '>' prompt would be printed when ...CA. exits, rather than when PIP exits, as you would like. 2) If the spawn is successful and the requesting task has one or more parents (Offspring Control Blocks), then the OCB list is unlinked from the requestor and linked to the child. In this way, the child becomes the child of the requestor's parent, freeing the requestor to exit without screwing up the exit status for its parent. An example of this is when ...CA. is spawned from an indirect command file and ...AT. wants to get the status back. Using the previous example, if ...AT. spawns the command FREE DK0: to MCR..., then ...CA. will be spawned as the child of ...AT. and ordinarily would spawn the command PIP DK0:/FR, waiting for PIP to return status. ...CA. would then exit with the status returned from PIP, in order for ...AT. to get the final result. This means that there is a stopped copy of ...CA. in (or out of) memory until PIP exits. With many users, there could be many copies of the catch-all task hanging around. With this modification implemented, however, the catch-all task could spawn PIP and exit, with status returned properly to ...AT. and the MCR '>' prompt properly synchronized. 3) The ESB and AST parameters are ignored if the event flag of the spawn is -1. This is because the requestor task is, to all intents and purposes, becoming its child, and should have no need to synchronize its execution with that of its child. Under most circumstances, tasks that spawn with a -1 event flag will exit upon verifying that the spawn worked. 4) The event flag of -1 may also be used with the connect directive. In this case, the requestor's MCR synch bit and parent OCB list will be transferred to the task specified in the connect directive. 5) If the requesting task has more than one parent and is requesting a command line interpreter task, a directive error of IE.ITS is returned. This is because the MCR will crash if it gets a command line from more than one parent. This modification, coupled with the catch-all task (MC3.MAC) and INStall enhancements has made it possible to implement a CCL with very low system overhead. With very few catch-all tasks active, pool fragmentation stays pretty low (fewer TCBs, task headers, etc.). DREIF.SLP Adds a delayed T3.REM bit in T.ST3 for dynamic INStallation of tasks support in MC2. REQSB.SLP Modifies the $NXTSK routine to not allow a higher priority task that can't fit into memory to prevent tasks of a lower priority that can fit if checkpointing is enabled. TTATT.SLP,TTCAN.SLP,TTDAT.SLP,TTFP.SLP,TTICH.SLP,TTMAC.SLP,TTMIS.SLP TTMOD.SLP,TTODN.SLP,TTOIS.SLP,TTRW.SLP,TTSUB.SLP,TTYH.SLP,TTYZ.SLP These corrections apply only to the full-duplex terminal driver! Modifies TTRW.MAC so that checkpointing on terminal output is disabled, except for IO.RPR requests which are treated (as they should be) as input requests. Adds auto-baud support for DH11/DM11 and DZ11 lines. Auto-baud code is table driven off a table in TTDAT.MAC and is initially set up for 300, 1200, 2400 and 9600 baud with ctrl-c as the universal auto-baud character. See comments in TTDAT.COR for more details. Allows 19.2k baud to be a valid speed for DZ11 interfaces. Use: "SET /SPEED=ttn:A:A" to set a DZ line to 19.2K baud. Implements the control-y key which aborts the users current task. Current task is defined as: 1st) The task that is currently attached to the terminal. 2nd) The task that is currently reading from the terminal. 3rd) The task that is currently writing to the terminal. 4th) (This code is commented out in TTFP.SLP... To implement it, remove the ;** comments before applying the patch.) The first task found in the TCB list that is active on this terminal and is abortable. A "ABO tsknam" command is queued to MCR for the user and the abort messages from ABO identify which task got aborted. Modifies TTMOD to ignore CTS modem line and ignore RING line while a line is enabled. This should be changed if you need to use half/duplex modems and may help things if you use full duplex modems and your modems don't always return CTS correctly. Also changes TTMOD to ignore a change in the ring line as long as carrier is still asserted. Changes the default initial state for a remote line to 80. characters wide, lower-case and CRT rubout. ABOOV.SLP Allows users from one terminal to delete tasks initiated from another terminal if the tasks UIC is the same as the users UIC. BYE.SLP BEWARE: DECNET Phase 3 for RSX rebuilds the BYE task to include a module to get rid of per terminal alias node names on BYE. Make sure the MCR.OLB library it links to has the the updated BYE.OBJ module. If DS$LOG is defined in RSXMC.MAC, a connect-time accounting packet is sent to the task LOG... for logging. Make sure terminal I/O is cancelled or completed before exit. Clean up MCR spawn code (routine GIVMCR). Don't abort a catch-all task (...CA.) on this terminal. Spawn a fortune cookie message to the terminal, rather than printing GOOD MORNING/AFTERNOON/EVENING/NIGHT. Don't clear T3.MCR bit....when BYE is complete, '>' prompt is issued. HELLO.SLP Allow special users (privileged) to login even if system logins are disabled....by typing 'HELN' rather than 'HEL'. If user may not log in because of a SET /NOLOGON, type the file LB:[1,2]NOLOG.TXT at the user's terminal if s/he tries to log in. Establish slaved accounts that are reasonably secure....user is logged in slaved and LOGIN.CMD is executed. If ...AT. exits (watch out for user answering a question with ^Z), then the terminal is left slaved. Otherwise, LOGIN.CMD should end with a '.XQT BYE' command. Don't spawn the login command: 'ASN SY00:=SY0:/LOGIN' If GT$MAL defined in RSXMC.MAC prefix file: Print "You have mail." if the file LB:[10,3]grpmem.TXT exists. If DS$LOG defined in RSXMC.MAC prefix file: Adds login accounting support (login message packet sent to task LOG...). User prompted to enter a project number for billing purposes. DEVOV.SLP Remove the 'LOADED' string for devices printed by DEV command. Relax the syntax for DEV so that 'DEV DR1:' == 'DEV DR:' FIXOV.SLP Adds delayed T3.REM bit in T.ST3 needed for MC2 dynamic task INStallation support. INDAS1.SLP,INDERR.SLP,INDFDC.SLP,INDFIL.SLP,INDIMP.SLP,INDINX.SLP INDMCR.SLP,INDOPN.SLP,INDPDW.SLP,INDPO1.SLP,INDPRC.SLP,INDROT.SLP INDSU1.SLP,INDSU2.SLP Changes ...AT. to not display "@ " at end of command file if QUIET mode is enabled. Uses IO.RPR and cancel-^O for .ASK directives, so that ^R and ^U work nicely. Enable STOP-bit directives (a la Release Notes) in INDIMP.MAC and INDPDW.MAC. Implement /-LI switch to start up ...AT. in quiet mode. Allow comments beginning with ';' to be printed at the terminal if in quiet mode. Comments preceeded by '!' are not printed. Add .ENABLE NOMCR and NOTRACE to control state of /MC and /TR within an executing command file. Detach on .ENABLE QUIET. Add .SPAWN command...this works identically to the .XQT command, except that a spawn with an event flag of -1 is attempted first (see DRSPW.SLP). If the spawning enhancement is implemented, then and indirect command file could execute a .SPAWN command and exit immediately, with the MCR '>' prompt synchronized with the spawned task. To appreciate the problem, execute the following one-line command file: .XQT PIP /FR The MCR prompt will be printed for ...AT.'s exit, rather than PIP's. The file: .SPAWN PIP /FR will synchronize correctly if the DRSPW enhancement has been made. If DRSPW.SLP has not been applied, .SPAWN will map directly to .XQT. Ensure that all commands are printed at the terminal if /TR mode. Add support for LIBUIC (if DS$LUI defined in RSXMC.MAC and SYSCM.SLP patch has been applied). INSFL.SLP,INSHD.SLP,INSLB.SLP,INSPS.SLP Adds support for dynamic task INStallations used by MC2. Also changes it so that any RUN filename command uses a task name formed from the first 3 chars of the filename and his terminal device name. Add support for LIBUIC (if DS$LUI defined in RSXMC.MAC). Remove default uic propagation for privileged users. If a privileged user changes only the default uic (see SPROV.SLP), then tasks initiated from that terminal will have the same protection/default uic as the terminal. (Under vanilla RSX11-M, privileged users have their protection uic always following their default uic, making it difficult to manipulate system files from non-system uics. This modification, coupled with the SET /UIC enhancement, allow a system user to change uics without losing protection. Note that files created in other uic's still have the file ownership set to the protection uic of the creator. MCRDIS.SLP Remove default uic propagation for privileged users (see note above). Allows any number, instead of just one copy of a given task to invoked from each terminal. Each succeeding taskname is formed by incrementing the device code letter, example: "PIPT11, PIPU11, PIPV11 ...". Allows 1 or 2 character tasknames. Examples: "...LC., LC.T10, L..T12". SDSOV.SLP,SDSOVFDT.SLP,SETOV.SLP,SETOVFDT.SLP,SETOV2.SLP SPROV.SLP,SPROVFDT.SLP BEWARE: The sysgen does an unexpected replacement "/RP" of the xxxOVFDT modules in MCR.OLB to make sure that MCR.OLB contains the correct SET command support for the full/duplex terminal driver. Makes the "/" slash optional on SET's keywords. The SET /UIC=[x,y] command will no longer change the login UIC for privileged users. This makes the WHO command to be able to identify users using their login UIC. Since protection UICs are generated from the default UIC for privileged users and the login UIC for non-privileged users and since the login UIC for non-privileged users was never changed in the first place it appears that this change does not cause any problems. There are five new keywords added to SET. LOGGED-OUT, OFFLINE, ABSCAN (expecting an autobaud character), DISABLED, and CARRIER-WAIT. Used without an equals sign they present a list of terminals that have or do not have the specified mode set. All but CARRIER-WAIT when used (by privileged terminals) with an equals sign and a device name sets or clears these modes. Add SET /TOP command to change the top of a system-controlled partition (from Jim Downward--KMS Fusion). Add SET /LIBUIC support. Make "[" and "]" optional on SET /UIC commands. SYSOV.SLP Make CLQ command non-privileged. TASOV.SLP Adds optional task name parameter to TAS command (e.g.: TAS ...MCR) TKTN.SLP Makes all TKTN messages use IO.WBT to help prevent TKTN from getting hung up. Another useful thing to do is to install TKTN and SHF tasks in their own partition seperate from MCRPAR. This way also MCR... never gets checkpointed and is always in memory ready when needed. Allow TKTN to be fixed in memory.