RT-11 V5.6 RELEASE NOTES ADDENDA ================================ This file lists the new features of RT-11 Version 5.6. The features are described in the RT-11 System Release Notes, AA-5286L-TC. 1 FEATURES The following are the main features of RT-11 V5.6: o Support for separated I-D address space and Supervisor mode in two new monitors: ZB (single-job) and ZM (multi-job). Support in LINK for separated I-D address space o Creation of the 'completely virtual environment' by running background programs either manually or automatically through the rewritten VBGEXE utility. Inclusion of the new V and VRUN commands to manually run programs in the completely virtual environment. Inclusion of new data structures to support automatic loading and running of programs in the completely virtual environment. Support for maintaining the completely virtual environment when chaining from one program to another. o Inclusion of the SB single-job version of the FB monitor (replaces the SJ monitor.) o Inclusion of the XB single-job version of the XM monitor. o All monitors are now built from the same source file, RMON.MAC. (Replaces RMONSJ.MAC and RMONFB.MAC.) o Support for DH interfaces in the same manner as current support for DZ interfaces. o Support for building a multiterminal monitor and handlers such that handlers can use terminal lines instead of dedicated serial lines to connect to their devices. The distributed handler sources LS.MAC and XL.MAC can be built, using SYSGEN, for connection using multi-terminal lines. Documentation is included for coding user-written handlers for this support. o Support for virtual to physical address translation in the resident monitor (RMON), using the $JBREL subroutine. (Removal of ATX.SYS pseudohandler.) Page 2 o Removable message handler (MQ); MQ is now a system generation feature. Support for MQ is included with all distributed multi-job monitors, but can be removed at SYSGEN, if desired. o Selective command line interpreter (CLI) support through the SET CLI command. (Eliminates need for a customization patch to support UCF.) Current CLI support displayed by SHOW CONFIGURATION command. o Support for time-of-year (TOY) clock on 11/93 and 11/94 (KDJ11-E) processors. o Mapping context changes: Mapping context removed from a job's impure area and placed in a region in extended memory (MCA region). Preservation of the mapping context across context switches (mapping context no longer recomputed from the WCBs). Mapping context specified by new .CMAP, .GCMAP, and .MSDS programmed requests. o New run-time debugging message macros: .DEBUG and .DPRINT. o New system subroutines: ICMAP ICRAW ICRRG IERLG IGCMAP ICMCX IUNMAP MRCVD/MRCVDC/MRCVDW MREAD/MREADC/MREADW MSDAT/MSDATC/MSDATW MSDS MSPFN/MSPFNC/MSPFNW o New programmed requests: .CMAP .GCMAP .MSDS o Changes to existing system subroutines and programmed requests to support new functionality. o Totally revised and rewritten documentation. Page 3 2 CHANGES TO DEVICES, FEATURES, SOFTWARE, AND DOCUMENTATION CORRECTIONS The following information is not documented or is documented incorrectly for RT-11 V5.6. 2.1 Commands, Utilities And Procedures o Prior to V5.6, DIR would incorrectly report 'Output error' if the volume specified in a DIR/OUT:dev: command did not contain a valid RT-11 directory. This has been corrected in V5.6; DIR now reports 'Invalid directory'. o LINK maps produced using the /IDSPACE DCL option (/J CSI option) report only D-space values for the following items: - high limit - virtual high limit - next free address o Most SET commands to device handlers modify only the device handler file, not the copy in memory. The How Set Commands Work section on page 216 of the RT-11 Commands Manual states that you should unload and then load the set modified handler to get the changes to take effect. Unfortunately, resident handlers (such as the system handler) cannot be unloaded. (The UNLOAD command does nothing, rather than issue an error in such a case.) This means that you must reboot to get SET changes to take effect for a resident handler. For example, if you have DU as your system device, any SET commands issued to DU will not take effect until you reboot. 2.2 Device Handlers o The suite of MSCP disks supported by RT-11 has been expanded in V5.6 to include the RA60, RA90, and RA92. o The 16 bit I/O interface to MSCP units is now protected from accessing and possibly corrupting formatting and bad block replacement information. The DU handler will return a hard error upon any attempt to access a block beyond the host area of the MSCP unit. Page 4 The 32 bit I/O interface remains unprotected. The user is referred to the caution published in the RT-11 System Subroutine Library Manual in the description of JWRITE/JWRITC/JWRITF/JWRITW. o The DU handler has an extra SET option in V5.6. It is: SET DU [NO]HBTEST If HBTEST is SET (default), any reference to block 65,535 is not allowed for any of the 16 bit I/O interfaces. This new DU feature makes the maximum size reported in 16 bits (65,535) consistent with the last block accessible (65,534), which is the maximum size minus one. The 32 bit I/O interface for DU is not affected by HBTEST. o The default base address for the mapped VM handler has been changed from 1000000 to 760000. This means that the default has been changed from SET VM BASE=10000 to SET VM BASE=7600. This was done to accommodate UNIBUS systems that run with the UNIBUS mapping disabled (UB handler not resident). On such systems, DMA above 760000 is not supported. Thus, with VM beginning at 760000 and going to the top of system RAM, the system is protected from allocating memory that it cannot DMA into. 2.3 Restrictions o The IGETR system subroutine cannot currently be called from a program that was assembled and linked for separated I-D address space (SUP$Y=1). o Do not use RMON fixed offset $CNFG1 (CONFIG) bit 0 (FBMON$) as a test for any monitor (or other system) characteristics. For V5.6, all monitors are built with FBMON$ set. Use other documented data structures in the RMON fixed offset area to determine monitor characteristics. Digital recommends that you remove all references to FBMON$ from your programs. However, for unmapped user application programs that require a particular setting of FBMON$ to run, RT-11 provides a SET command (SET MODE [NO]SJ) that dynamically alters FBMON$. Digital recommends you clear the FBMON$ bit (if necessary) only immediately before running a program which requires that, and immediately set FBMON$ after running such a program. o The error message ?KMON-U-Insufficient memory for region can occur when there is insufficient memory to create an extended Page 5 memory region to hold a job's virtual overlays. When this message occurs while trying to FRUN or SRUN a job, the system is left in a suboptimal state. By the time the lack of memory for the job's virtual overlay region is detected, low memory has already been allocated for the job's impure area. It is not a simple matter to undo this reliably. SHOW MEMORY will show the USR as having grown in size and the USR cannot subsequently slide upwards in memory because it is blocked by the left over impure area of the aborted job. Thus the memory cannot be consolidated above the USR by unloading jobs or handlers after such an error occurs. Rebooting is the only way to reclaim the lost low memory. o Do not run the utility MSCPCK on a (T)MSCP controller in an MSCP Error Logging environment. MSCPCK clears all host-settable controller flags and will consequently disable MSCP Error Logging. o The SYSMAC.SML macro .DRDEF generates an incorrect value in offset 100 of block 0 if the handler name is AA and extended unit number support is requested. Use any of the other 26**2 names for a user written handler that supports extended unit numbers. o The error logger no longer logs memory errors although the error logger report continues to produce memory error statistics. (The counts are always 0). 2.4 Documentation The following errors are in the RT-11 System Release Notes: o Page 1-3, first bullet: Add MWRITE/MWRITC/MWRITW to the list o Page 1-5, first bullet, first dashed line: Replace "RT11mn.COM" with "RT11mn.SYS" o Page 1-7, second bullet, first dashed line: Replace "LA2100" with "LA210" o Page 1-11, second bullet: Delete the last sentence, which refers to supervisor libraries o Page 3-4, VM section: Page 6 Delete last bullet item. The more restrictive first bullet item is correct. o Page 3-8, third bullet [A system generated ...]: This restriction has been removed for V5.6 o Page 3-45, fifth bullet, second paragraph: Replace "wsa" with "was" o Page A-17 under "form": The 'shared', 'age', and 'local' entries should be aligned under 'private' The following corrections are to the manuals listed: o RT-11 System Utilities Manual Part I, page 15-21: The second bullet under The Optional Type Argument section should say: /B:value:INS specifies the lowest address to be used by the I-space code in the load module. o RT-11 System Internals Manual, page 2-61, table 2-29 and RT-11 Quick Reference Manual, page 7-31, table 7-29: Just before I.SCHP entry add: --- I.TRPS 2 Fully mapped (ZB or ZM) only; Address of super- visor mode trap to 4 and 10 routine defined via .TRPSET. --- I.FPPS 2 Fully mapped (ZB or ZM) and FPU only; Address of supervisor mode FPP exception routine defined via .SFPA. o RT-11 System Macro Library Manual, page 2-246, .SFPA: The description for the 'addr' argument incorrectly refers to Data space; 'addr' always refers to Instruction space. Add a sixth and seventh bullet under Notes: o The monitor maintains two separate FPU exception routines for each job under a fully-mapped monitor (ZB or ZM) -- one is for floating point exceptions taken in User mode and the other is for those taken in Supervisor mode. When 'addr' is even, .SFPA modifies the User mode exception routine address. When 'addr' is odd, .SFPA modifies the Supervisor mode exception routine address. There are Page 7 three values of 'addr' that are treated specially: #0 disables User mode floating-point exception routines. #1 disables User mode floating-point exception routines, but enables context switching of the FP registers under multi-job monitors. Under single-job monitors #1 is treated identically to #0. #3 disables Supervisor mode floating-point exception routines. o Under a fully-mapped monitor (ZB or ZM), when a user routine is activated, the monitor only disables the trap for the mode taken. The other mode's user trap routine is unmodified. o RT-11 System Macro Library Manual, page 2-271, .TRPSET: The description for the 'addr' argument incorrectly refers to Data space; 'addr' always refers to Instruction space. Insert the following after the first paragraph under Notes: Under the fully-mapped monitor (ZM or ZB), the monitor maintains two separate user trap routines for each job -- one is for traps taken in User mode and one is for traps taken in Supervisor mode. When 'addr' is even, .TRPSET modifies the User mode trap routine address. When 'addr' is odd, .TRPSET modifies the Supervisor mode trap routine address. There are two values of 'addr' that are treated specially: #0 disables User mode trap routines. #1 disables Supervisor mode trap routines. Under a fully-mapped monitor (ZB or ZM), when a user routine is activated, the monitor only disables the trap for the mode taken. The other mode's user trap routine is unmodified. The following MGETR system subroutine description was omitted from the RT-11 System Subroutine Library Manual: MGETR (Requires mapped monitor) The MGETR subroutine attaches to a specified global region (or creates a local region). MGETR can optionally initialize a region by reading a portion of a file into the region or by calling a specified subroutine. Page 8 MGETR does not fetch handlers. Any handler required by I/O in MGETR must be loaded or fetched by the program. MGETR is a replacement for IGETR which is obsolete and retained for backwards compatibility only. In the following "chunk" is defined as 64 byte units. Form: i = MGETR -or- CALL MGETR (WORK,WRKSIZ,{'Private'},[NAME],ADDR[,MEMADR][,CSIZE][,MSIZE][,OFFSET] {'Shared' } {'Age' } {'Local' } [{,CHAN[,BLK]]}][{,'UI'}][{,'ReadOnly'}][{, 'Bypass']}) [{,FILE[,BLK]]}][{,'UD'}][{,'Writable'}][{,'NoBypass']}) [{,SBRTN,-1 ]}][{,'SI'}] [{,'SD'}] [{,'CI'}] [{,'CD'}] Where: work is a 15(10)-word work area array. The first five words contain the region definition block (RDB) which has the following fields: o A unique region identifier (R.GID) o The size of the region (R.GSIZ) o The region status word (R.GSTS) o The region name in two RAD50 words (R.NAME+0 and +2) The "work" array specified in the MGETR call is also specified in a corresponding IFREER call to remove the region. The contents of the rest of the "work" array is reserved. wrksiz is an integer constant containing the number of words in the "work" area. A value of 15(10) or greater is valid. char is a character constant specifying the region attributes. Only the first letter of the constant need be specified, and it must be enclosed in single quotes ('). Specify one of the following: 'private' -- Program sole owner of the global region 'shared' -- Global region available to other programs Page 9 'age' -- Enable automatic global elimination (implies 'shared') 'local' -- Local region, not global. name is a two-word array containing the name of the global region, expressed in RAD50. This argument is not used if 'local' has been specified, but the position of the argument must be accounted for: CALL MGETR (WORK, 15, 'local', , addr ... addr is an array which is mapped to the region's base address. The "addr" array must lie on a PAR boundary (a number evenly divisible by 20000(8)). See the IADDR example for a technique to do this. memadr is the physical memory address for the base of a newly created region. This value is expressed in chunks. If omitted, the monitor uses a physical address of its own choosing. csize is the size of the region expressed in words. If the region exists "csize" may be omitted or have the value 0. If the region does not exist, "csize" must be specified since that information is required for region creation. msize is the size of the region to map, expressed in words. If you specify "msize" as 0 or omit it, as much of the region as possible will be mapped. offset is the offset from the beginning of the region, expressed in chunks. The offset is the number of chunks to skip in the region before beginning mapping to your "addr" array. If "offset" is specified as 0 or omitted, mapping begins at the beginning of the region. The next argument position can have three interpretations, if the value of "blk" is -1, this argument is "sbrtn". If the value of the argument is between 0 and 255(10) and "blk" is not -1, it is "chan". If the value of the arg- ument is greater than 255(10) and "blk" is not -1, it is "file". chan is a channel opened (by the calling program) on a file from which to read initialization data. file is a four-word array containing a RAD50 device and file descriptor (DBLK). This file is one from which to read initialization data. sbrtn is the name of a subroutine that is to be called to initialize the region. "sbrtn" must be declared in an EXTERNAL statement. When a new region has been created, Page 10 the following call is performed: CALL "sbrtn" ("addr", "asize") where "asize" is "msize" if it is specified and non-zero. Otherwise, "asize" is the actual size mapped. See "msize" description above. blk is the first block in the referenced file to use if "chan" or "file" is used or a constant -1 if "sbrtn" is used. If "blk" is omitted, it is treated as though it were specified as 0. char is a character constant specifying the mapping attributes. Both letters of the string need to be specified, and it must be enclosed in single quotes ('). Specify one of the following: 'UI' -- user instruction space 'UD' -- user data space 'SI' -- supervisor instruction space 'SD' -- supervisor data space 'CI' -- current instruction space 'CD' -- current data space If omitted, defaults to an old style (prior to V5.6) mapping request. char is a character constant specifying the region read/write attributes. Only the first letter of the constant need be specified, and it must be enclosed in single quotes ('). Specify one of the following: 'ReadOnly' -- references to the region must be reads 'Writable' -- references may be reads or writes If omitted, defaults to 'Writable'. char is a character constant specifying the region caching attributes. Only the first letter of the constant need be specified, and it must be enclosed in single quotes ('). Specify one of the following: 'Bypass' -- bypass hardware memory caching 'NoBypass' -- do not bypass hardware memory caching If omitted, defaults to 'NoBypass'. MGETR can be called from MACRO-11 programs using the standard FORTRAN calling convention. All registers contents are destroyed across the call (see CALL$F). MGETR calls IGETC and IFREEC, which are FORTRAN dependent routines. To use MGETR in a MACRO-only program, use the following IGETC and IFREEC substitute routines: Page 11 IGETC:: MOV #channo,R0 ;supply available chan number IFREEC:: ;ignore return of channel RETURN ;and done Errors: -1 Invalid ADDR alignment -2 No WDB for .CRAW -3 Any .CRAW error except No WDB -4 EOF on .READW -5 I/O Error on .READW -6 Channel closed when .READW attempted -6 No Chan available from IGETC -7 No RCB for .CRRG -8 Insufficient memory for .CRRG -9 -10 Memory too fragmented to return during .ELRG -11 Global region not found (and "csize" not specified or 0) -12 No GRCB for .CRRG -13 Global region already exists at a different base address -14 -15 .LOOKUP found channel already open -16 .LOOKUP could not find requested file -17 .LOOKUP found device in use and not sharable -18 Any .ELRG error (except memory too fragmented is -10 above) -19 Unknown char argument value -20 Required argument is missing -21 Work area is too small