RELEASE NOTICE: MP/AOS REV 2.00 JUNE.1984 085-000232-04 _________________________________________________________________________ MODEL # 30056, 30057, 30058, 30163 1. Summary -- ------- The purpose of the product release notice is to provide the user with specific information about the product which is not available in the product manuals (information may be repeated in subsequent release notices if the appropriate manual is not yet available). Between revisions of the product, periodic updates to the product may be issued. The purpose of an update is to reduce the time required to respond to problems by providing a level of corrections which does not require a release of the complete product. Each update of a product release supersedes the previous update. A release of the product consists of two parts, as defined below: Part Description Part Number ________________ ___________ 1. MP/AOS Rev 2.00 Release Notice 085-000232-04 2. MP/AOS Rev 2.00 Release Media Defined by this release notice in section 6A. Included in this release notice are: 1. Summary 2. Environment 3. Enhancements 4. Notes/Warnings 5. Fixes 6. Product Organization A. Software B. Documentation 7. Documentation Changes Copyright (C) Data General Corporation, 1982, 1983, 1984 All rights reserved. Licensed material - Property of Data General Corporation Page 2 2. Environment __ ___________ A. Prerequisites ________________ For executing MP/AOS: Eclipse processor (S120, S130, S140, C150, S250, S280, C330, C350) with CIS, floating point instruction set, and 192kb of memory. Magnetic tape (preferred load device) Disk storage (at least a single disk of 5mb): 6098/6099/6100/6103 12.5/25mb Winchester Disk Subsystem 6045/6050 5mb Cartridge Disk Subsystem 6070 5mb Cartridge Disk Subsystem 6060/6061/6067 50/96/190mb Disk Storage Subsystem 6122 277mb Cartridge Disk Subsystem 6160/6161 73/147mb Winchester Disk Subsystem 6225/6227 5/15mb Winchester Disk Subsystem 6234 50mb Winchester Disk Subsystem 6236 354mb Winchester Disk Subsystem 4514 368kb Disk Subsystem OR microEclipse processor (S20) and 192kb of memory. Magnetic tape (preferred load device) Disk storage (at least a single disk of at least 5mb): 6101/6102/6104/6105 12.5/25mb Disk Subsystem (with diskette as alternate load device) 6095 10mb Cartridge Disk 6097 1.26mb Disk Subsystem (alternate load device) 6220/6222 5/15mb Winchester Disk Subsystem 5551/6235 5/15/50mb Winchester Disk Subsystem 4513 368kb Disk Subsystem (alternate load device) For executing AOS to MP/AOS Cross Development Software: AOS system Revision 3.20 or later with CIS and floating point instruction set. For executing AOS/VS to MP/AOS Cross Development Software: AOS/VS system Revision 1.50 or later Page 3 B. Dependent Products _____________________ TCS Text Control System, Rev. 1.20 MP/File Management System, Rev. 1.10 MP/AOS SP/Pascal, Rev. 1.20 MP/AOS MP/Pascal, Rev 3.00 MP/AOS MP/FORTRAN, Rev 2.00, software floating point MP/AOS MP/FORTRAN, Rev 2.00, hardware floating point MP/AOS MP/BASIC, Rev 3.00 C. Collateral Products ---------------------- AOS and AOSVS MP/Pascal, Rev. 3.00 AOS and AOSVS FORTRAN, Rev. 2.00 AOS and AOSVS MP/BASIC, Rev 3.00 AOS and AOSVS TCS Text Control System Rev 1.20 AOS and AOSVS SP/Pascal, Rev. 1.20 3. Enhancements ------------ 1) MP/AOS Rev. 2.00 is able to run memory resident. Memory resident MP/AOS is described in the Documentation Changes section of this document. 2) Many enhancements have been made to the patching utility, VAMP (MVAMP in cross development releases), such as automatic patch insertion in a binder-allocated patch area. These enhancements are described in the document VAMP_ENHANC.DOC in the documentation directory. Basic VAMP functionality is described in the MP/AOS and MP/AOS-SU File Utilities Manual (093-400204-01). 3) Several changes have been made to the debugger calls ?RDST, ?GIDS and ?WSIG to better handle overlays. See the documentation section. 4) MP/BIND Rev 2.00 has several enhancements, described in BIND_ENHANC.DOC in the documentation directory. Included in this are partition remapping, memory segment support, virtual overlays, and patch area allocation for use with VAMP. In the Notes/Warnings section below it is explained that Rev 2.00 programs will not run on older MP/AOS systems. 5) MP/AOS now supports virtual overlays in user programs. File BIND_ENHANC.DOC explains how to bind programs having virtual overlays. Page 4 6) The ?CSEG call now has an ID option, which if used indicates that AC1 contains a user-specified global segment number. Refer to the Documentation Changes section below for more details. 7) The ?CTASK call checks the task starting address for validity. This test has been extended to accept addresses within memory segment pages mapped by the user. More simply, the address is valid iff it is within a page currently mapped into the logical address space. 8) The ?SCHAR call with the ?HC option now accepts a disk name as an argument to support the multiple allowable formats of the 368kb diskette. 9) The Tape Installer has undergone a number of changes, including a change in the format of the starter tape. As a result, it is easier to use and will run noticeably faster. For detailed information see the Documentation section below. 10) Carriage Return is echoed the same way New-line is. During a ?READ for which echoing is done (i.e., ?READ from a terminal), a typed Carriage Return with the ?CNAS characteristic turned off (or a typed New-line with the ?CNAS characteristic on) will be echoed as a New-line (or CR/LF). In the past this was echoed as a Carriage Return with no Line Feed. This change does not affect the way a ?WRITE displays Carriage Return. 11) There is a facility within MP/AOS for performing interprocess synchronization. Its use is described in the Documentation Changes section below. 12) MP/AOS supports power fail/auto restart using the Battery Backup Option on the S120, S140, S250, and C350 processors as described in the Documentation Changes section below. 13) An option has been added to the MP/AOS ?GTIME and ?STIME system calls to allow interrogation and setting of the system time in milliseconds. Its use is described in the Documentation Changes section below. 14) Disk support for the 15 inch Eclipse line has been enlarged to include the following disks: - 6122 277mb Cartridge Disk Subsystem - 6160/6161 73/147 mb Winchester Disk Subsystem - 6225/6227 5/15mb Winchester Disk Subsystem - 6234 50mb Winchester Disk Subsystem - 6236 354mb Winchester Disk Subsystem - 4514 368kb Disk Subsystem 15) Disk support for the S20 has been enlarged to include the following disks: - 6220/6222 5/15mb Winchester Disk Subsystem - 5551/6235 5/15/50mb Winchester Disk Subsystem - 4513 368kb Disk Subsystem Page 5 16) The asynchronous lines on the ULM (models 4241 and 4243) are supported. 17) SYSBOOT will take any pathname from the root directory as a response to the system name question. Links to files on the same disk are also supported. 18) MP/AOS release format tapes with customized systems can be generated under MP/AOS. See the Documentation Changes section below. 19) MP/AOS magnetic tape support has been enhanced to support the 15mb cartridge tape drive in both the 15" and 7X9" form factors model numbers: 6230 Free standing cartridge tape drive for S/20 6220-C Cartridge tape drive with 5 mb winchester on S/20 6222-C Cartridge tape drive with 15 mb winchester on S/20 6231 Free standing cartridge tape drive on Eclipse bus 6225-C Cartridge tape drive with 5 mb winchester on Eclipse bus 6227-C Cartridge tape drive with 15 mb winchester on Eclipse bus In addition, MP/AOS is available for distribution on cartridge tape. 20) SYSGEN support for the S280 asks if the system should automatically be shut down on a power supply error. A system created for the S280 will no longer panic on an interrupt generated by the S280 power supply on device code 4. 21) The error message corresponding to the mnemonic ERSAD formerly indicated the error condition "Scheduling already disabled". Beginning with this revision, it now indicates the error "Condition already exists". The error code itself has not changed, and the error will still be returned under those conditions in which it was previously an expected error. The only change has been to broaden the meaning to allow it to be returned under additional circumstances, as they may be indicated. 22) Added functionality in SYSBOOT.SY has it check for a file called :AUTOBOOT.SYS when the system is booted. If the file exists, it is assumed to be the desired system file and the operator is not asked for one. Further, the time and date are not requested before the initial process is started. This feature functions on all processors supported by MP/AOS. Additionally, MP/AOS supports auto-program load on S120 and S140 processors, so that the intial process will run with no operator intervention. 23) The MP/AOS system call ?IPEND now has a new option, DS, for disabling I/O instruction mode. This is for those users who mix LEF instructions with device drivers in a multitasked program. A task that wishes to start a device will disable rescheduling (?DRSCH), enable I/O instructions (?ENBL), stop interrupts (INTDS), start the device with I/O instructions and then ?IPEND DS to both wait for the interrupt service routine to ?IUNPEND and disable I/O instructions at base level. Page 6 Note that if the user disabled I/O (?DSBL) before the ?IPEND, then interrupts would be enabled upon leaving the ?DSBL system call and an interrupt service routine could ?IUNPEND before the base level ?IPEND. If the ?DSBL were called after the ?IPEND in a multitasked program, then other tasks might execute LEF instructions as I/O instructions leading to a system crash. 24) The MP/AOS system call ?ENBL has a new option, CK, for checking if I/O mode is already enabled and returning an error (ERSAD) if it is. 25) There have been several features added to the SPOOLER utility. For details, see the Documentation Changes section below. 26) ?PEND/?UNPEND are now FIFO operations rather than LIFO. The effect of this is that if several tasks pend on the same event, the first one pended rather than the last one pended will be awakened. Note that task priority is not considered in the UNPEND mechanism. 27) Pends with timeouts are restarted after an ?EXEC/?RETURN with the original timeout instead of no timeout. Previous versions of MP/AOS would repend the task with no timeout after an ?EXEC/?RETURN and thus a delay call (which uses the ?PEND call) for several seconds would never come back if an ?EXEC/?RETURN was made. Note that the repend is made with the original value and not the remaining time. Thus if a task is pended for 10 minutes and an ?EXEC is made every 5 minutes, the task will still never be awakened. 28) ?UNPEND has a new option, 'PRC', which unpends tasks in another process. AC1, which was previously unused, has the process ID that the ?UNPEND is to act up on. An invalid process ID is not returned as an error but generates a 'zero tasks unpended' count to be returned in AC0. Note that AC2 will still need an event code or task ID with the 'ID' option. 29) ?PROC has a new option, 'BLK', which creates the new process in a blocked condition, with the old process still able to run. The new process must be UNBLOCKed in order to execute. 30) SPEED recognizes the global /S switch, which will cause the "** Lower case input encountered **" message to be suppressed. 31) The RDOS Utility now allows MP/AOS users to transfer files between RDOS and MP/AOS disks and to list information about RDOS disk files, as well as to dump and load RDOS format tapes. For detailed information on this utility, please see the RDOS.DOC file in the Documentation Directory (DOC). 32) The ?MSEG call is now approx. 10 times faster than it was under Rev 1.20. It will take approx. 300 micro seconds to map one page using the ?MSEG call if there is no other segment activity going on at the same time. By other segment activity we mean ?CSEG's, ?ASEG's, or ?DSEG's. Concurrent ?MSEG's will all proceed at the new improved speed. Page 7 4. Notes/Warnings __ ______________ 1) The starter system for Eclipse processors will panic on any ERCC error with a "Kernel panic 022". As your top priority, you should generate a customized operating system. Users who are executing on the S280 should see note (16) in the "Enhancements" section above. 2) When using SYSGEN to assign lines on asynchronous multiplexors (ALMs, ATIs, AMIs, ASLMs, and ULMs), the default hardware characteristics for Dasher (TM) terminals include no parity and 8-bit characters. This means that MP/AOS ignores the parity bit when received from an asynchronous device, and transmits the parity bit specified by the user (if characteristic ?C8BT is set), or always transmits a 0 in the parity position. However, an 8-bit character is always transmitted. This is not compatible with the D100, D200, D400 and G300 terminal "no parity" setting which does not provide for any parity bit, but rather sets the terminal for transmitting and receiving 7-bit characters. These terminals MUST BE set to "mark" in order to operate with MP/AOS default characteristics. 3) Users of recursive and nested CLI macros should be aware of the following restriction: macros that call either themselves or other macros recursively should do so from the last line of the macro. In this way they will consume minimal CLI resources, and will be able to iterate indefinitely. Recursion from any other place in a macro will result in the consumption of CLI data space and can cause the eventual termination and re-invocation of the CLI due to lack of this resource. By using the !RETURN pseudo-macro in conjunction with the textual substitution of string buffers containing macro names, users can simulate recursion from any point in a macro, and still invoke a macro from the end of the calling macro. 4) The system console in the supplied starter systems is configured for use as a non-ANSI standard hard-copy device; that is, the ?CNAS characteristic is set, and the ?C605X characteristic is not. ?CNAS controls the way New-line ("<12>") and Carriage Return ("<15>") are handled. ?C605X is used to distinguish between Data General CRTs vs. hard-copys (or any other terminal). Issuing the following command to the CLI: CHARACTERISTICS/ON/ST/605X/OFF/NAS will set the standard Data General CRT characteristics. 5) Users of the magnetic tape and data channel line printer libraries (MTA.LB and DCLP.LB) should be aware that the libraries do not preserve the state of LEF-mode as it existed in the user program prior to the issuance of a library call. I/O instructions will be enabled on return from these library calls and subsequent LEF instructions will be misinterpreted. To avoid problems, high level language programs which using these libraries should be compiled with the /NOLEF switch, if appropriate. Page 8 6) When two processes are attempting to take character input from the same device, the following conditions exist: a) ^C^A and ^C^B sequences entered on that device are detected only by the FIRST process to open the device. When that process terminates, subsequent ^C sequences are not detected by the other process(es) using that device. b) If an attempt is made to terminate one of these processes while it has an outstanding ?READ issued to that device, the termination will only succeed if the target process is either the first (or only) process to be currently seeking input from that device, or if the other request(s) are satisfied. 7) When using the /L(=filename) switch with programs or CLI commands that support the switch, the following should be noted: the use of the switch in those modes that direct output to a programmed I/O line printer (@LPT) will not cause output to be sent to the spooler; if a spooler is present, this use of the switch will not result in printed output. In addition, output cannot be directed to a data channel line printer by supplying @LPB as the filename argument. When the file to which output will be directed is an existing disk file, the output will be appended to the existing file contents. 8) After installing the software included in this release, it is recommended that the release media be stored, intact, in a safe place, and that periodic backups of the file structure be made to safeguard against any catastrophic disk failures. 9) When either the Tape Installer or DINIT program prompts for the CPU type on which a disk will be run, the microEclipse (M) option, selects only the S/20 and Desktop Generation processors. 10) In systems containing 6060/6061/6067 disk subsystems, all units that will be used while the system is running must be ready PRIOR to booting the system. If this is not done, such disks will be recorded as inaccessible in the system's runtime databases, and will not be available unless the system is rebooted. 11) Tape library routines are accessible to high level language programs. Tape library call words should be truncated to five characters and declared as external integer variables in the user program. The following example would be an appropriate declaration and library call in SP/Pascal. EXTERNAL VAR ?tclo, ?tope, ?twri, ?trea, ?tspo, ?tgpo: INTEGER; BEGIN : failure := ?SYS(?tope, 0, ac0, ac1, ac2); : END. 12) Users of the AOS cross development running on S/120s should have patch #4 from update 4.28 installed or they may encounter problems using MBIND, OSYSGEN and other programs. Page 9 13) Users of the AOS/VS cross development package should be aware of the following warnings and restrictions: 1. The MBIND utility cannot be used to produce programs to run under AOS/VS; the AOS/VS LINK utility must be used for this purpose. The MLINK.CLI macro is included in this release as a model for user program linking procedures. Special attention should be paid to the inclusion of the /TASKS= switch when LINK'ing all programs as well as to the ordering of the command line so that the VS_MICREM.OB module precedes all user library and object modules, and so that VSMSL.LB immediately precedes URT16.LB. The value specified for /TASKS= must be equal to the number of tasks required by the user program plus 2 (the number required by the system call translator); the value specified for ?NTAS must be the same as the number of tasks in the user program. The MBIND utility must be used to produce MP/AOS programs, and will automatically provide the proper tasking values. 2. Overlaid programs built by LINK must explicitly load overlay 0 prior to using it. 3. Assembly language programs that use the .TSK directive to set the number of tasks to be created by the program must include the LINK switch /TASKS=, augmenting the number of tasks the user requires by the 2 reserved by the system call translator. When setting the value of ?NTAS, the number of user tasks should be specified. 4. Proper emulation of multi-tasked programs under revision 1.60 of AOS/VS requires that patch #42 to the agent be applied. With revision 2.00 of AOS/VS, patches #8 and 36 are required for this reason; in Revision 3.00, patch #25 must be applied. 5. Proper operation of certain programs supplied with this release, most notably AOSMIC.PR, in all AOS/VS configurations, particularly those involving MV/4000's and MV/10000's requires that the following patches be installed in the agent: in revision 2.00 of AOS/VS, patch #25 must be applied; in revision 3.00, patch #7 must be applied. 14) Cross development users on both AOS and AOS/VS should be aware that AOSMIC does not support the larger disks which may be used under MP/AOS. This means that AOSMIC may not be used on any disk that has a capacity greater than 30 megabytes. 15) SYSBOOT now checksums the system file and issues a warning if the system doesn't checksum. Rev 1.00 systems did not have this feature, and thus will always cause the warning to be issued. For these systems, the warning should be ignored. 16) When using the QDISPLAY.CLI macro from the CLI to interrogate the SPOOLER as to the state of the print queue, please be aware that the information returned by the SPOOLER may appear intermixed with the results of any subsequent CLI command you may have issued. 17) If a ?READ is done from a console that is in BINARY mode, the ?READ stays a binary read even if binary mode is cleared from another console. Page 10 18) The 4518 printer is supported by MP/AOS. It should be SYSGEN'd as a line on the ALM,ULM or ASLM. The default characteristics can be used if you disable parity on the 4518. The printer can then be addressed via CLI commands or directly by the user by means of the line name. 19) The KONG_IT.CLI macro provided in the :SYSGEN release directory is used to rebuild a system which has already been built, but has had a patch applied to it. KONG_IT is the final phase of the SYSGEN procedure which binds together the intermediate pieces left around by SYSGEN. It can only be run to rebuild a system which has already been built by SYSGEN. Assuming SYSGEN was run to build system ?SYSNAM.SYS, then KONG_IT will bind together ?SYSNAM.KNL, ?SYSNAM.SUP, ?PSYSNAM.PR and ?SYSNAM.OL to create an updated ?SYSNAM.SYS. The updated system, ?SYSNAM.SYS, will reflect any patches made to the kernel (?SYSNAM.KNL) or supervisor (?SYSNAM.SUP) images. If the system you wish to rebuild with KONG_IT is named ?SYSNAM.SYS, then the command line to invoke KONG_IT looks like: ) KONG_IT SYSNAM ?PSYSNAM 20) The ?TREAD call in the magnetic tape library has been changed so that when an end of file error is returned (EREOF) the tape is repositioned before the EOF marker. To position the tape past the EOF marker, the ?TSPOS call must be used. 21) In Rev. 1.10 of MP/AOS, the Tape Installer loaded the file MPAOS.SYS with the permanence attribute set. This attribute should be cleared using the CLI ATTRIBUTES command prior to using the Tape Installer supplied with this release. 22) MP/MASM enhancements: a) Two additional memory partitions are supported. (See item 27 in the Documentation Changes section below for a description of .NREL 2 & 3.) In the process, the PS file format (MASM.PS, etc.) of revisions prior to Rev 1.30 has been rendered obsolete. To minimize the inconvenience this might cause, a PS file conversion utility called RENEWPS is being provided temporarily, as part of the current release. For information on the use of RENEWPS (MRENEWPS under AOS and AOS/VS), see item 28 in the Documentation Changes section below. b) The Bit Alignment operator ("B") now accepts as the second operand the values 16-31, in addition to 0-15. This makes it possible to shift the value of the first operand to the right as well as to the left. The following operations and results will illustrate: 177777B0 = 100000 177777B16 = 077777 177777B1 = 140000 177777B17 = 037777 177777B2 = 160000 177777B18 = 017777 177777B3 = 170000 177777B19 = 007777 ... . ... ... . ... 177777B14 = 177776 177777B30 = 000001 177777B15 = 177777 177777B31 = 000000 Page 11 Note that the result is always zero when 31 is the second operand. 23) MP/BIND now places the Overlay Area at the front of the Pure Area for an /AOS overlayed program (increasing the similarity to /MPAOS programs). Prior to this the overlay nodes were interspersed throughout the Pure Area, as specified in the bind line. Among other things, this had the disadvantage of leaving "holes" in front of the overlay nodes. 24) Users of AOS or AOS/VS cross development packages should note that in addition to the documented warnings concerning the use of the system calls ?SCHAR and ?GCHAR to manipulate the characteristics of the user's console, any use of the ?SCHS call should FOLLOW the setting of the console's device characteristics. This ordering is not required under MP/AOS. 25) The use of the CLI textual substitution !ASCII to produce characters that have a special meaning to the CLI (such as '<' or ';') will result in those characters being included in the syntax checking performed on the resulting command line; this can lead to either unexpected syntax errors or misinterpreted command lines unless the high bit is set on the value passed to !ASCII. 26) SYSGEN now assigns decimal numbers to TTY's instead of octal numbers. 27) Prior to attempting to boot any of the diskettes included in your release (models 30056Q and 30057Q only), please be sure that the diskette has been write-enabled (i.e. the write protect notch has been covered by non-translucent material). Failure to do this will produce spurious system panics. 28) The format of the MP/AOS program file header has been extended as of Rev 2.00. While any program that ran under previous revisions of MP/AOS will continue to run under Rev 2.00 systems, any program built with MP/BIND Rev 2.00 will not be able to run under previous revisions of the system. All MP/AOS Rev 2.00 utilities have been built using MP/BIND Rev 2.00. 30) You must install the Rev. 2.00 SYSBOOT.SY in order to boot Rev. 2.00 MP/AOS systems. The Rev. 2.00 SYSBOOT.SY will continue to boot older rev. systems. Similarly, the Rev. 1.10 SYSBOOT will not allow proper shutdown of post-Rev.1.10 systems. The newest Rev. of SYSBOOT should always be installed to be able to deal with newest Rev. systems. New Revs of SYSBOOT will be able to deal with older Rev. systems as well. 31) When SYSGEN invokes KONG to build the .SYS file, KONG now outputs its command line. The command line will typically look like: KONG/GO SYSNAM ?PSYSNAM when building a system named SYSNAM.SYS. Note also that the initial process image now is .PR file format and is named ?PSYSNAM.PR instead of ?PSYSNAM.SUP when building a system named SYSNAM.SYS. For more information on the usefulness of seeing KONG's command line, see the paragraph on memory resident systems in the Documentation Changes section of this document. Page 12 32) When issuing a WHO [!ACTIVE] from the CLI, the following error may result: ERRNF - "Resource not found". This reflects a temporary state in the system when the target process is pushing or popping a swaplevel and the information is not readily available. Once the process has completed its swaplevel change, the WHO [!ACTIVE] can successfully be re-issued. 33) To support programs bound with virtual overlays, the system reads the overlays into 1-4 "virtual overlay segments". Since maximum segment size is 128. pages, the number of segments used depends on the size of the virtual overlay nodes. The user is responsible for specifying enough attached segment descriptors and global segment descriptors for the process at SYSGEN time and at ?PROC time. Also, the user is responsible for specifying enough mapblocks at SYSGEN time to hold the physical pages which make up the segment(s). Each mapblock can hold 1-16. physical page numbers so the number needed depends on the size of the virtual overlay nodes. 34) The predefined memory segments described by the document BIND_ENHANC.DOC will not be supported by memory resident versions of MP/AOS Rev. 2.00. 35) During the installation phase of DINIT, one of the questions now reads: Install SYSBOOT (MP/AOS-SU System) [N]? and a "Y" response prompts further: SYSBOOT (System) pathname [SYSBOOT.SY]? When running DINIT to initialize an MP/AOS system, these questions refer ONLY to SYSBOOT.SY, not to any MP/AOS-SU system. You must install SYSBOOT.SY to be able to boot any MP/AOS system. MP/AOS cannot be installed in place of SYSBOOT.SY. These references to MP/AOS-SU occur only because both MP/AOS and MP/AOS-SU use the same DINIT program and should NOT be taken to mean that a system can be installed instead of SYSBOOT.SY. 36) The cross development versions of fixup for AOS and AOS/VS may occasionally fail due to insufficient heap space. If this problem is encountered the disk can be fixed by running the native MP/AOS FIXUP.PR over the disk. 5. Fixes __ _____ 1) In order that MP/AOS starter systems not hang or panic as a result of hardware configured using disk device codes other than the MP/AOS defaults, starter systems have been provided with a conversational mechanism that allows the user to specify appropriate device codes. For details on the operation of this mechanism, please see the Documentation section below. Page 13 2) The following CLI problems have been fixed: a) The presence of text strings containing one or more exclamation point characters ('!') within an !EQUAL/!NEQUAL/!ELSE block of a macro in situations where they are not part of pseudo-macros or textual substitutions no longer result in the macro hanging. b) The DECIMAL command properly reports all errors in supplied arguments. c) Attempts to COPY from non-existant files are handled properly in all cases. d) The data sensitive delimiter entered on a !READ is correctly stripped from the text string returned by the pseudo-macro. e) Using DIRECTORY/I with an argument correctly echoes the name of the new directory in cases where the original working directory was the root directory of a disk. f) Recursive macros that conform to the format described in the Notes and Warnings section for performing infinite recursion will function correctly. g) The presence of angle brackets or parentheses within the text string displayed as the optional message with the !READ pseudo macro no longer cause either the CLI or the macro to terminate abnormally. h) Very long command entries (individual strings 124 characters or more) are handled properly. i) The PROMPT command now functions properly when the prompt includes commands that accept switches governing their output (e.g. STRING) or display switches within their output (e.g. CHARACTERISTICS). j) Issuing a QPRINT from a terminal identified by a device name containing a 2-digit number now results in an appropriate acknowledgement message appearing on the screen, and in the file printing correctly. k) Textual substitutions of the PATHNAME command where the argument supplied is a filename that would result in the command returning an error will return a null string. l) The ASCII command now handles all special display characters, such as newlines, bells and other non-printing characters properly. m) Several problems in the processing of expressions containing angle brackets and/or parentheses have been corrected. n) The DECIMAL and OCTAL commands now handle 32-bit arguments properly. o) Multiple uses of certain commands, e.g. ASCII, on a single command line no longer produce spurious results. Page 14 p) When the redirection of input or output has been specified on the EXECUTE (or XEQ) command, the redirected channel is now closed, and the original source/destination is reopened immediately upon return to the CLI, prior to the processing of any returned program message or error processing. This change will eliminate the overwriting or apparent loss of initial characters in a redirected output stream. q) Use of /P on the STRING command now properly sets the indicated buffer to the previous contents of that buffer. r) The information returned by !ACTIVE is now left-justified to permit easier manipulation of the process id's within a macro. s) The arithmetic commands (e.g. UADD, UDIVIDE) now correctly handle all unsigned integers in the documented ranges. t) The /l=filename switch now works properly in all cases. u) The command CHARACTERISTICS/PSQ now works properly. 3) The following problems have been fixed in the MOVE utility: a) MOVE no longer aborts with the message "Indecipherable dump format" if users attempt to perform MOVE/FROM/DUMP operations to disks with insufficient free or contiguous disk space. b) When using the /DUMP operations in MOVE, attempts to dump link files no longer result in the file indicated by the link's resolution pathname being dumped instead of the link itself. c) MOVE will now correctly read and write labeled tapes during the first two months of any leap year. d) A few inconsistencies in the handling of templates by MOVE have been corrected. 4) In LED, the use of long library names (12 or more characters) with options that create temporary or backup filenames by appending an extension onto the original name no longer results in termination of the program with "Filename too long" errors. 5) Maintenance of the TCB pend queue has been modified to prevent the queue being put into an inconsistent state. The problem was most likely to occur in heavily multi-tasked programs doing many ?UNPENDS and ?PENDS including some synchronization with a user defined interrupt handler. 6) System shutdown has been modified so that a "recal" is always the last disk operation done against the system master disk. This means that it is no longer necessary to manually get the disk back to track 0 after a normal system shutdown on any disk supported by MP/AOS. Page 15 7) Systems running from master disks having 6 character names will now shut down properly. An example of a six character disk name is "@DPH10". Shutting down an earlier revision of MP/AOS from such a device name resulted in an "abnormal system shutdown". 8) ?LRMV system call processing has been corrected. The previous revision of MP/AOS did not perform proper cleanup for this system call with the result that after performing an ?LRMV on a line, an ?LDEF of the same line would result in a "device already in use" error. 9) Interrupt processing for the ASLM (model numbers 4336-S and 4336A-S) multiplexor has been improved to clear interrupts on lines that were not defined by system generation. An earlier revision of MP/AOS might have hung or taken random panics when encountering an ASLM interrupt on a line which was not defined. 10) Processing of the ?WSIG system call has been modified to correct a problem associated with execution of the PROFILE program. In an earlier revision of MP/AOS, it was not possible to terminate the PROFILE program if it had created the target process, unless that process was terminated first. This revision allows termination of the PROFILE program, and will also terminate the process that was being monitored. 11) Initialization for ALMs, ATIs, AMIs, and ULMs has been corrected to properly set the parity mode specified during the system generation process. 12) In the magnetic tape library (MTA.LB), the ?TREAD call now updates AC0 to the address of the last word read +1. 13) When booting previous revisions of MP/AOS, if an error was made while entering the system time, it was necessary to enter all 3 fields of the system time (hours-mins-secs) in order to clear the error. This is no longer necessary. 14) When booting previous revisions of MP/AOS, if an error was encountered while the system was performing a ?PROC of the root CLI, no status was displayed on the system console, and the system shut itself down. This update will display the error code returned on the ?PROC of the root CLI. This was most likely to happen when there was insufficient memory in the system to contain the operating system and the root CLI. 15) ?OPEN and ?CLOSE processing has been modified so that console interrupts are generated after the debugger has been executed. In previous revisions of MP/AOS, if the debugger was executed, console interrupts were not passed to whatever program was executing the debugger after swapping back to that program. 16) I/O to a character device has been modified so that entering "Control S" (^S) on a terminal keyboard no longer causes the task which is doing output to the terminal's display to loop within the executive. Page 16 17) I/O to a character device has been modified so that data returned as a result of ?READ execution no longer has a "garbage" byte appended to it. Previous revisions of MP/AOS sometimes returned an extra byte of data which was not reflected in AC2 (actual number of bytes read) returned by the system call. 18) I/O to a character device has been modified so that entering a "Control U" (^U) on a terminal keyboard no longer causes the cursor to be "backspaced" for what seems like forever. Previous revisions of the operating system exhibited such behavior, and it may or may not have been possible to interrupt the backspacing by entering "Control C" "Control A" (^C^A). 19) A window in the scheduler which may have caused system hangs if an IDEF'd device belonging to a certain process interrupted just as that process was being loaded to run has been closed. 20) The SPOOLER queue now handles a maximum of 256 simultaneous entries. Attempts to QPRINT more entries from the CLI will result in a ^C^A-interruptible wait for the printing of a file to free up a queue slot. A user program dealing with the spooler may experience a time-out of its IPC ?SEND to the spooler if a slot does not become available quickly enough. In addition, SPOOLER commands issued from consoles having 2 digit device names will now be correctly acknowledged and printing will proceed normally. The printing of the "time last modified" on the file header page has been fixed to display the correct time of last modification. Also, spooling to Data Channel LP2 line printers now works as documented (previously, LP2 printers had to be incorrectly referenced as type LPD). 21) FLIT and FLED fixes: a) Corrected problem that DSTR command sometimes skipped whole words, and always displayed content starting with the low-order byte regardless of the byte address specified. 22) FLED fixes: a) #TCB breakfile special symbol now set correctly. b) '@
' syntax now returns just the contents of
instead of a 32-bit quantity (contents of
concatenated with contents of ). c) Can do an EVAL on '@
'. d) Corrected problem that a change to the last word of the last block of a file caused the entire last 1/2 block to not be saved! e) Corrected problem that, when doing an EVAL on an expression evaluating to more than 16 bits, only the high-order 16 bits-worth would be displayed. Page 17 23) FLIT fixes: a) Breakpoints set in an overlay node are now maintained properly; they no longer contaminate overlay code subsequently loaded into the same node. b) When the ?B command is entered, if a particular break- point lies within an overlay node, the overlay node number and overlay numbers are displayed on the same line as the breakpoint number. c) When FLIT is awakened because of an overlay load, the overlay node number and overlay number are displayed after the banner. d) FLIT may now be run in a memory-resident environment. e) When the user enters RESTART as a command, an error message is displayed (command cannot be implemented). f) When FLIT returns control to the system, the ?WSIG system call is executed with the ?RE option in all cases, except if FLIT had been awakened for the 1st time, or for a primary, secondary, or temporary breakpoint, or for a ^C^D, or for an ?EXEC call, or for an overlay load. g) FLIT's I/O buffer has been reduced from 32 words to 4, mitigating its affect on debugged code within a shared segment. 24) In the magnetic tape library ?TREAD has been fixed so that issuing the call against a blank tape will no longer run the tape off the reel. 25) A problem was fixed in handling multiple users of a single overlay. The problem occured when an ?OVLOD call on a given overlay came through just as that overlay was being read in. That ?OVLOD call ended up being interpreted as a load of overlay 0, even if the user did not specify overlay 0. 26) The ?HC option on the ?SCHAR system call now works correctly. 27) The ?PROC call no longer returns the error message "No available resource". Instead, it returns specific error messages which indicate which resource has been used up. 28) It is now possible for users to define their own XOP table entries, and for these entries coexist with the MP/AOS-defined entries contained in OSL.LB. See the Documentation Section below for more information. 29) Several problems have been fixed in the Interprocess Communication mechanism: (a) Fixed a problem which resulted in certain IPC requests getting lost in the system and thus never matched up with a corresponding IPC. Page 18 (b) Fixed a problem which could cause an error return to be taken on an IPC call when actually a match had occurred and a good return should have been taken. (c) Fixed a problem in the ?OBITS code which could have caused a deadlock in the system. 30) In the Data Channel Library (DCLP.LB), a problem has been corrected so that the SPOOLER Utility will now handle tabs properly when running on a data channel line printer. 31) A problem with using ?STMP at interrupt level has been fixed. This caused several user hangs. 32) A problem with multiple board ALM configurations has been fixed. Previously, if a user configured a system with more than one ALM board, the only lines that would respond would be on the last board. 33) Previously, an unsuccessful ?MOUNT (due to ERDOL or ERDFT errors) could cause the system to panic with a Kernel Panic 5. This situation has been fixed. 34) SCMP fixes: a) Corrected the problem that if a line was not terminated with a NEWLINE, FORM FEED, or CARRIAGE RETURN, that line did not participate in the comparison process. b) Corrected the problem that if SCMP was run from a non-system console (without the 'L' switch), all output was routed to the system console. 35) SPEED fixes: a) Files which are open and local to a buffer will no longer become inaccessable, while still remaining open, after the contents of the buffer have been deleted via a BCx or BTx command. The local files if any will continue to be open and associated with the buffer until they are explicitly closed or a BKx command is issued. b) Searches that used ^\...^\ templates at the instant when the end of the buffer was encountered started causing SPEED to trap. This has been fixed. c) Under obscure circumstances, using a ^F$ where involved the network under AOS/VS caused SPEED to trap. The bug, which also existed benignly in MP/AOS SPEED, has been fixed. Page 19 36) MP/BIND fixes: a) Symbol entries in +.ST files are now being generated correctly. Symbols in overlays now have the overlay node # and overlay # (instead of -1) stored in the appropriate word. Common symbols now have the common block length (instead of a zero) stored in the appropriate word. A result is that debuggers are able to tell the difference between overlayed and non-overlayed symbols, and only use the overlayed symbols corresponding to the currently loaded overlay. b) The value of ?NMAX in program files is now being properly adjusted to take into consideration absolute (.LOC, etc.) locations above Impure Code & Data partitions. This is described more fully in BIND_ENHANC.DOC. c) Binder command lines that do not specify any OB or library file names are now detected, and the file ".PR" is no longer created. 37) The following pathname resolution problems have been fixed: a) A pathname without a prefix (@DPD0:, :, =, ^) can be resolved from the working directory or any of the directories specified by the searchlist. If before the actual file is located, a file is found having (at least) the first filename in the path in common but in one of the other directories, a Supervisor Panic 42 would result. A similar but more general situation with link resolution would also cause a Supervisor Panic 42. b) A link to a directory on another disk can now be used in a pathname to specify files within that directory. Previously, a seemingly random file on the same disk as the link would be found instead. 38) MP/MASM Rev 1.30 would generate a correct assembler listing but an incorrect OB file when .GLOC code was followed by code of a PC having a different relocation base (ex. .GLOC followed by .NREL). 39) Several problems with the /ED switch in SYSGEN have been fixed. Problems included SYSGEN losing track of alm/aslm line numbers which had been assigned, losing track of the type of disk being selected, and failing to provide proper default choices for system configuration parameters. 40) The ?EINFO call now correctly returns elapsed time in milliseconds. 41) Fixed bug in the ?XMT/?REC library code which could cause the system to lose track of which call was being executed if these calls were being heavily used. 42) Closed window which could cause the timeout queue to become circularly linked if a task being ?KTASK'ed was on the timeout queue and he timed out just as the ?KTASK code was removing him from the queue. 43) Fixed bug where ?EINFO call could return the wrong number of attached segments after a ?EXEC call. Page 20 6. Product Organization __ ____________________ A. Software ___________ MP/AOS Rev 2.00 for Eclipse products on 1.26 mb diskette Model: 30056Q Status Part Number Description ______ ___________ ___________ R 062-000255-04 MP/AOS system and utilities 0 R 062-000256-04 MP/AOS system and utilities 1 R 062-000401-01 MP/AOS system and utilities 2 MP/AOS Rev 2.00 for Eclipse products on 800 & 1600 bpi magnetic tape and cartridge Model: 30056M/H/C Status Part Number Description ------ ----------- ----------- R 071-000630-04 MP/AOS system and utilities MP/AOS Rev 2.00 for micro Eclipse on 1.26 mb diskette Model: 30057Q Status Part Number Description ______ ___________ ___________ R 062-000257-04 MP/AOS system and utilities 0 R 062-000256-04 MP/AOS system and utilities 1 R 062-000401-01 MP/AOS system and utilities 2 MP/AOS Rev 2.00 for micro Eclipse on 800 & 1600 bpi magnetic tape and cartridge Model: 30057/M/H/C Status Part Number Description ______ ___________ ___________ R 071-000631-04 MP/AOS system and utilities Page 21 AOS to MP/AOS cross development software Rev 2.00 on 1.26 mb diskette Model: 30058Q Status Part Number Description ______ ___________ ___________ R 062-000259-04 AOS to MP/AOS cross development software 0 R 062-000272-04 AOS to MP/AOS cross development software 1 AOS to MP/AOS cross development software Rev 2.00 on 800 & 1600 BPI magnetic tape and cartridge Model: 30058M/H/C Status Part Number Description ------ ----------- ----------- R 071-000632-04 AOS to MP/AOS cross development software AOS/VS to MP/AOS cross development software Rev 2.00 on magnetic tape Model: 30163H/C Status Part Number Description ------ ----------- ----------- R 071-000767-03 AOS/VS to MP/AOS cross development software B. Documentation ________________ Status Part Number Description ______ ___________ ___________ - 093-400051-01 MP/AOS System Programmer's Reference - 069-400200-00 MP/AOS Concepts and Facilities - 069-400201-00 MP/AOS Command Line Interpreter (CLI) - 069-400202-00 MP/AOS Speed Text Editor - 069-400204-01 MP/AOS File Utilities - 069-400205-00 MP/AOS Debugger and Performance Monitoring Utilities - 069-400206-01 MP/AOS System Generation and Related Utilities - 069-400207-01 Loading MP/AOS - 069-400210-00 MP/AOS Macroassembler and Binder Utilities - 086-000069-00 Addendum to MP/AOS Macroassembler, Binder and Library Utilities A 093-400204-01 MP/AOS and MP/AOS-SU File Utilities Page 22 7. Documentation Changes __ _____________________ 1. MP/AOS DISKETTE RELEASE MPAOS.SYS distributed on release diskettes is attribute protected for permanence. 2. USER-SUPPLIED PANIC AND UNDEFINED INTERRUPT ROUTINES A facility exists for users to write their own system panic and undefined interrupt processors. Users must create their own OB's, and then modify the CLI macros used by sysgen in order to include these ob's in the system. a) Catching System Panics: System panics can be caught by inclusion of an ob containing the ENTRY name ".UDOWN". The /8 switch on the assembler must be used to generate the correct entry name. The user-supplied routine is given control via a "JSR". b) Catching Undefined Interrupts: To catch an undefined interrupt, include an OB containing the ENTRY name "?DSMS". This routine is given control by a "JSR", and on entry, the device code of the offending device will be in AC1. The user-supplied routine has complete responsibility for clearing the interrupt; the system does not even perform an "NIOC". c) Modifying System Macros To Include User-Defined Handlers: The CLI macro KSYSG.BIND.CLI, found in :SYSGEN, must be modified to include a user-supplied panic handler and/or undefined interrupt handler. Assuming the panic handler OB's name is UDOWN and the undefined interrupt handler is ?DSMS, the new KSYSG.BIND.CLI would be as follows: DELETE/2=IGNORE ?K%1%. XEQ BIND/LIBLIST/KERNEL/L==?K%1%.MAP & ?%1%.OB & UDOWN & ?DSMS & ?K%1%.LLB.OB & KERNEL.LB & KDF.LB & END RENAME ?%1%.ST ?K%1%.ST Page 23 3. MP/AOS SYSTEM MEMORY DUMPS MP/AOS provides for generating systems that contain a memory dump facility. The dump facility can be specified to dump to either 1.26 mbyte diskette (or 368kb diskettes when running on Desktop Generation processors), or to tape; tape is the preferred medium. In addition, the tape dump facility consumes less memory that the diskette dump facility. If you encounter a system problem, it is recommended that you accompany documentation of the problem with a system dump. The submission of a system dump may, in many cases, provide the key to solving your problem. You should accompany memory dumps with as much documentation as possible. If the problem is due to a supervisor or kernel panic, please include the panic registers displayed by the system, along with the panic code. If the system failure is due to some sort of a looping condition, note the PC and ACs where you stop the processor, and indicate whether the processor is currently in user mode (map enabled) or not. The technique for doing this varies with the processor. a) Dumping Systems To Tape: - I/O reset your processor; the procedure for doing this depends on your specific processor. - Start your processor at location 14 (octal). - You will be asked to ensure that you have a tape mounted and ready to go. Tape dumps are always dumped to unit 0 of device 22. The contents of memory are dumped to file 0. All user maps, data channel maps and BMC map are dumped to file 1. - Hit any system console keyboard character to dump system memory and maps. - After taking the dump and rebooting the system, PLEASE use MOVE to place the system symbol tables, script file, and any other temporary files created by SYSGEN in the next file (that's file 2). If you have performed your SYSGENs in a sub-directory, it would be helpful if you include the entire contents of that directory on the tape. - Tape dumps are restartable if a failure occurs (e.g. you forgot to insert a write ring). b) Dumping Systems To Diskette: - I/O reset your processor; the procedure for doing this depends on your specific processor. - Start the system at location 15 (octal). - You will be asked to enter the device code and unit number of the diskette to which you're dumping. First make sure you have a diskette in the drive to which you wish to dump. - Depending on the physical size of memory you may have to insert a additional diskettes which you will be prompted for. - After taking the dump and rebooting the system, PLEASE use MOVE to place the system symbol tables, script file, and any other temporary files created by sysgen to an additional diskette. If you have performed your SYSGENs in a sub-directory, it would be helpful if you include that whole directory on the diskette. - Please label the diskettes so we can tell the ones containing the system memory dump from the one containing the other files. - Diskette dumps are restartable if a failure occurs (e.g. the diskette is write protected). The dumping code does not retry write operations that fail, so you may have to start it again if a bad diskette is encountered. Page 24 4. MEMORY ERROR RECOVERY The following discussion of MP/AOS memory error handling indicates the nature of the current implementation. It is possible that future hardware implementations may require changes in this mechanism, but they should be of a nature that is easily accomodated by the current structure. It is assumed that the reader has some knowledge of ERCC hardware support. An understanding of memory sharing (segments) within MP/AOS from the user viewpoint is also desirable. It is first necessary to understand a little about the hardware being used, and to define some terms that will be used later. MP/AOS is designed to run on any of the current ECLIPSE computers with floating point and character instructions. Unfortunately, not all of these processors have the same handling of memory errors. The format of the status returned differs for several of the CPUs. For most of the line this merely requires a different decoding of the status words. The S/20 processor however, does not support ERCC memory as does the rest of the ECLIPSE line. The S/20 has PARITY memory. With ERCC memory MP/AOS can correct single bit errors and detect certain multi-bit errors. This is not possible with PARITY memory; on parity memory no correction is possible. Some memory errors are transient in nature, and therefore do not mean there is a faulty memory module. That is, storing into the memory location again will no longer generate a parity error. This then leads to the definition of some terms used in MP/AOS error handling. All memory errors that occur may be placed into one of three classes. These classes are CORRECTABLE, NON-CORRECTABLE and TRANSIENT errors. CORRECTABLE errors are, as the name implies, errors that may be corrected by the ERCC hardware. It should be noted that this class of error will not occur on S/20 systems. NON-CORRECTABLE errors, once more as the name implies, are hard errors; there is no correction possible. This class may occur on any type system, and indicates either a multi-bit error on ERCC type memories or a hard parity error. TRANSIENT errors will occur only on S/20 type processors. These are parity errors that "go away" if we store into the memory location in question. Memory error checking is always enabled when the system is initialized. Any errors that occur will cause an interrupt which will vector the system to the memory error interrupt service routine. Each CPU type supported by MP/AOS has a specific memory error decode routine to isolate the location and type of error that has occurred. The specifics of these routines are described later. Once the class and location of the error has been determined, a quick check is made if the error is either non-correctable or transient to see if the memory error occurred within either the system code or data bases. If this is the case, there is very little that can be done to recover and the system will take a KERNEL PANIC 20 (if the error is hard) or a KERNEL PANIC 21 (if transient). If the error did not occur within the system, or was of a correctable nature, the error is logged via the system error logger. The information logged consists of: Page 25 DIA status word DIB status work Physical page # where the error occurred Error class (correctable, non_correctable, transient) This information will be written to the system log file, and if console logging is enabled, a message will be written to the log console. (For a further discussion of error logging see below.) If the error was correctable, then no further action is taken. If it was not correctable, the system will take one of two possible actions. Non-correctable errors are considered to be hard errors. In order to prevent further problems with the offending memory, the page containing the faulty memory location will be removed from the system memory pool. All user processes "attached" to the page will then be terminated with a "fatal memory error". If the page was not in use by the system or a user (which should only occur on the S/120 or other processors with "sniffing"), it is merely deallocated. Transient errors are treated in the same manner, except the offending page is not deallocated. User processes attached to the page will be terminated. Since the hardware implementations of memory error handling differs among the various CPUs, it is necessary to discuss the ramifications of each processor type separately. a) S/140 - ERCC Memory This implementation gives the actual physical page number on which the error occurred as well as the syndrome bits to identify the type of error. This makes it easy to determine whether we have a correctable error or not, and exactly where it occurred. b) S/250, C/330, C/350 - ERCC Memory This implementation provides the syndrome bits and the approximate physical page number on which the error occurred. The resolution is only to within 4 pages. In the event of a non-correctable error it is thus necessary to deallocate 4 pages instead of just one. c) S/120 - ERCC Memory The actual physical memory page and the syndrome bits are returned. This hardware implementation has "sniffing" of memory. Sniffing is always enabled under MP/AOS. If the page is not in use, MP/AOS will simply deallocate the page from the system memory pool; otherwise the handling is the same. Note that deallocation does not prevent further sniff errors since this is a function of the hardware. d) S/20 - PARITY Memory This is probably the hardest processor to handle since it doesn't have ERCC. The only status returned is the logical address of the error and the map that was currently enabled (if any). If the error occurred while mapping was enabled, the driver has to issue a page check sequence to obtain the physical page which corresponds to the logical page reported by the memory error system. Once the physical page number is known, MP/AOS has to determine whether the error was a transient one or not. The status information will only give the address of the error within 8 words. It is thus necessary for the driver to check 8 words for parity problems. The only way to do this is by actually storing into the 8 suspect words and checking for a parity error. It is thus obvious why both transient and hard errors require termination of any user process attached to the page. Page 26 5. HARDWARE ERROR REPORTING The current status of hardware error reporting in MP/AOS is as follows: I. Memory errors. A. Errors that cause system panics. Non-correctable errors that occur in system code or system data areas will cause MP/AOS to panic and will not be logged. B. Console logging. All non-correctable and transient memory errors are reported to the logging console (usually @TTO) along with the physical page number of the offending page. Non-correctable errors are non-correctable multi-bit errors for ERCC memory and any reproducible error for parity memory. Transient memory errors apply to parity memory only. They include errors that cannot be reproduced by re-accessing the offending memory location(s). Not all correctable errors (ERCC memory only) are logged to the console. Only the 10th, 100th, 200th, 300th, etc., will be reported to the console along with the total number of such soft errors detected since system boot time. The count of errors represents the TOTAL number of soft memory errors, NOT the count of errors detected in any particular page. No physical page number will be reported when soft errors are logged to the console. C. SYSLOG. All non-correctable and transient memory errors and each of the first 10 correctable (soft) memory errors will be logged to the system log file (usually :SYSLOG) along with the offending physical page number and both the DIA and DIB status words. The ELOG utility may be used to interpret the system log file. II. Device errors. A. Device errors which cause a system panic will not be logged. B. Console logging. All device (disk) errors are reported to the logging console (usually @TTO). Each error is described as being a hard or soft error. The device code and unit number are displayed along with the status word. Page 27 C. SYSLOG. All device errors are also reported to the system log file (usually :SYSLOG). Reported is device code, unit number, status word, retry count, DOA word (command, drive, extended address), DOB word (memory address), DOC word (cylinder for DPF's or disk address for other disks), and current cylinder (DOC from previous seek for DPF's or DOA from last seek for other disks). The ELOG utility may be used to interpret the system log file. 6. Please add the following to the MP/AOS Command Line Interpreter manual: To the discussion of macros please add: There are several situations where, if macro arguments evaluate to null strings, the macro will be syntactically correct but will produce unexpected results. In general, this can occur whenever command arguments are optional, and are supplied by (possibly null) macro arguments. When such arguments are null, the CLI will evaluate the resulting command line as though no arguments were supplied. For example, if a macro contains the line STRING %1% and macro argument 1 evaluates to the null string, the CLI will process that line as a request to display the current contents of string buffer 1, rather than as an attempt to set the contents of string buffer 1 to the null string. If, however, argument 1 is not null, the contents of string buffer 1 will be altered. In cases such as this, where the use of a null argument indicates an intention to set a value to the null string rather than to display a value, the macro should either test explicitly for the presence of a null argument and take the appropriate action, or it should be written so as to always take a course of action that will include clearing any existing value. Two possible ways of dealing with this particular situation are: 1. Replace STRING %1% with STRING/K STRING %1% which will always clear string buffer 1 and will either reset its value to be that of the supplied non-null argument, or will display the now null string buffer when the argument is null or 2. Replace STRING %1% with [!EQUAL,,%1%] STRING/K [!ELSE] STRING %1% [!END] which tests explicitly for the presence of a null argument, and clears string buffer 1 when such an argument was supplied; otherwise, the buffer is set to the value of the supplied argument. Page 28 Please add the following to the description of the CHARACTERISTICS command switches on page 142, immediately following the /NED switch: /PSQ When on, the system will enable input flow control. In this mode, when the system's buffer for receiving characters from the device is being filled faster than it can be emptied, the system will send an XOFF signal to stop transmission of characters to it until a corresponding XON signal is sent. Please add the following to the description of the QPRINT command switches on page 201, immediately preceding the /NOTIFY switch: /NOHEADER Suppress the printing of a header page for the file(s) to be printed. 7. Please make the following corrections to the discussion of ?LDEF in pages 182-183 of the MP/AOS System's Programmer's Reference (document number 093-400051-00). Add to paragraph 5 of page 182: If the device which is the target of the ?LDEF call is a ULM (models 4241 or 4243), ALM-8 (models 4255 or 4256), ALM-16 (models 4257 or 4258), AMI-8 (model 4340), or ATI-16 (model 4342) then ac0 on entry to the user's interrupt handler indicates whether the receiver/modem control or transmitter section is interrupting. A value of 0 indicates that the receiver/modem control section is interrupting while a value of 1 indicates that the transmitter section is interrupting. Replace the description of "INPUTS" on page 183 to read: AC0 Device code 8. ?GTIME and ?STIME using milliseconds Make the following changes to the MP/AOS System Programmer's Reference manual (093-400051): A) On page 164, the dictionary entry for ?GTIME: 1) Add the following paragraph above "Inputs": The system time can also be requested in milliseconds since January 1, 1900. To do this, use the MS option. 2) After the last entry under "Outputs" add: AC0-2 Options MS: System time in milliseconds (AC0 - high order bits (will be less than 1000.), AC1 - middle order 16-bits, AC2 - low order 16-bits) Page 29 3) Under "Options", replace "None" with: Mnemonic Meaning MS Time in milliseconds is returned in AC0,1,2 B) On page 237, the dictionary entry for ?STIME: 1) Add the following paragraph above "Inputs": The system time can also be be set in terms of milliseconds since January 1, 1900. This is done using the MS option and by placing the number of milliseconds in AC0 through AC2. The system time can not be greater than 32-bits worth of seconds, so an error will be generated if AC0 contains a millisecond value that is not less than 1000 (decimal). 2) After the last entry under "Inputs" add: AC0-2 Options MS: System time in milliseconds (AC0 - high order bits (must be less than 1000.), AC1 - middle order 16-bits, AC2 - low order 16-bits) 3) Under "Options", replace "None" with: Mnemonic Meaning MS Time in milliseconds is passed in AC0,1,2 4) Under "Errors", replace "None" with: Mnemonic Message ERANG Range error C) Make similar notations for ?GTIME & ?STIME in the column labeled "Format of input/output" in Table 11.1 on page 103. 9. Make the following changes to the MP/AOS System Programmer's Reference manual (093-400051): On page 137 (description of the ?EHIS call) replace the formula (BUFFER LENGTH)/NUMBER OF INTERVALS = SIZE OF INTERVALS with the following (?HEAD - ?HSAD + 1)/NUMBER OF INTERVALS = SIZE OF INTERVALS. 10. Please add the following discussion of the Interprocess Synchronization facility to the MP/AOS System Programmers Reference Manual (093-400051-00) The following MP/AOS system calls provide primitives for process synchronization. They supplement the IPC primitives by providing a high-speed alternative at the cost of reduced functionality. The fast synching primitives will use mailboxes for transmitting and receiving data. Page 30 A task in any process can transmit to or receive from any mailbox to which that process is connected. Two words of data are passed through the accumulators when mailboxes are used. Note that if the message passed happens to be an offset into a shared segment and a message length, a clever application can actually send longer messages without all the overhead of the regular IPC facility. ESTABLISHING A CONNECTION Setting up of mailboxes will be accomplished through the connection management mechanism. There will be a limited number of servers system- wide specified at sysgen time. Servers can then be allocated either as IPC servers or as mailboxes at ?LKUP time. IPC servers are defined and owned by the process which ?DCLR's them. Mailboxes should be viewed as "predefined servers" which are owned and supported by the system rather than by a single process, and as such are never ?DCLR'ed. Each process wishing to use a mailbox must first look it up (?LKUP) by name to get the mailbox number. NOTE: The ?LKUP call has been expanded to provide a mailbox option Since no ?DCLR is issued to define a mailbox, the first ?LKUP specify- ing a mailbox name not currently in use will have the side effect of getting a mailbox allocated and named. Subsequent ?LKUP's of that mailbox name by other processes will cause them to be "hooked up" to the same mailbox. The mailbox can now be used for synchronization purposes by all of the processes which have connected to it via ?LKUP. Additionally, a process can set up a mailbox for its exclusive use by looking up an unnamed mailbox. As before, a mailbox number is returned, but this mailbox is considered to be local to the calling process and cannot be used by other processes. Since the mailbox has no name associated with it, other processes cannot look it up. Further, knowing the mailbox number associated with another process's local box will not allow access to it. A process may choose to use such a local mailbox to synchronize activities among its own tasks. NOTE: Processes, not tasks, establish connections to mailboxes. When any task in a process looks up a mailbox, ALL tasks within that process gain access to that mailbox. Because of this, multiple look-ups of a mailbox by tasks within the same process are unnecessary and to avoid confusion will return a "connection already established" error along with the mailbox number. RECEIVING A MESSAGE When a task issues a ?REC on a mailbox, he receives the message posted. If there is no message waiting, the caller pends until a message is transmitted. Unlike IPC's, pended receivers never time out. A receiver can, however, specify an option (CK) which allows him to check for a message but return immediately with an error if there is no message waiting. If more than one task does a receive on a given empty message box they are FIFO queued. Page 31 TRANSMITTING A MESSAGE A transmit will normally wake up the first task on the queue. However, a transmitter can optionally broadcast (BD) his message so that each receiver on the queue is awakened and receives the same message. If there are no waiters on the queue, the message is posted and only the first subsequent receiver will receive the message. Transmitters will not normally wait for their messages to be received, but they have the option (AW) of doing so. A transmit on a full box returns in error to the transmitter since only one message can be posted at a time. BREAKING A CONNECTION When a process has finished using a mailbox, he will issue a ?CLEAR to break his connection to it. A process' connection(s) will also be broken if that process ?EXEC's, pops a swap level or terminates. Any tasks which the process has pended on the mailbox when his connection is broken will be unpended in error. A mailbox will not be deallocated until each of the processes connected to it either ?CLEAR the mailbox, ?EXEC, pop a swap level or terminate. There is no way to ?RMVE or ?PURGE a mailbox once allocated. NOTE: A mailbox may only be ?CLEAR'ed once by a connected process (just as it can only be ?LKUP'ed once by a process). When any task within the process ?CLEAR's a mailbox, the connection is broken for ALL tasks within the process. 1 Look up Server/Mailbox THE ONLY CHANGE TO THIS CALL AS PREVIOUSLY DEFINED IS THE ADDITION OF THE MBOX OPTION TO SPECIFY A MAILBOX INSTEAD OF AN IPC SERVER ?LKUP Input: AC0 - Byte pointer to server name to look up. (Name is Null termed, max length is ?SVNL bytes not including the Null.) Valid characters include all valid file name characters, but not :, @, =, or ^. or 0 to specify "local" mailbox (MBOX option) Output: AC0 - Port number to be used to communicate with the other process or mailbox number (MBOX option). AC1 - ONLY IN CASE OF ERCXE ERROR RETURN mailbox number (since AC0 contains error code) Page 32 Options: MBOX - Server name being looked up is a mailbox. Errors: ERIST - invalid server type ERISN - invalid server name format ERCXL - system wide connection limit exceeded ERCXE - connection already established ERSVL - system wide server limit exceeded ?LKUP allows the calling process to identify another process or to access a mailbox. If the mailbox option is not specified, then the returned value is the port number used by the caller to communicate as a customer of the looked-up server process. If the MBOX option is specified, then the returned value is the mailbox number used by the caller to access the mailbox. Once a server is allocated as a certain type (either IPC or mailbox), each process wishing to communicate with it must look it up as the same type or the "Invalid server type" error will be returned. 2 Transmit to Mailbox ?XMT Input: AC0 - Mailbox number AC1 - First data word AC2 - Second data word Output: Options: BD - Broadcast message AW - Wait until message is received Errors: ERIMN - Invalid mailbox number ERXMT - Mailbox in use ERPCA - Call aborted due to program management call 3 Receive from Mailbox ?REC Input: AC0 - Mailbox number Output: AC1 - First data word AC2 - Second data word Page 33 Options: CK - Check for message but don't pend if there is no message waiting Errors: ERIMN - Invalid mailbox number ERNMW - No message waiting ERPCA - Call aborted due to program management call 4 Clear a Server/Mailbox Connection THE ONLY CHANGE TO THIS CALL AS PREVIOUSLY DEFINED IS THAT CONNECTIONS TO MAILBOXES, AS WELL AS TO IPC SERVERS, CAN BE CLEARED ?CLEAR Input: AC0 - port number or mailbox number Output: Options: Errors: ERPOR - Invalid port ERIMN - Invalid mailbox number 11. RELEASE TAPE GENERATION UNDER MP/AOS Due to the inability of the initial MP/AOS system (MPAOS.SYS) to be all things to all people, users can now sysgen a customized system and then create a release tape with the customized system replacing the initial system. In addition, specialized user software placed in the :UTIL, :INIT, :SYSGEN or :HELP directories will be included on the tape. A release tape can be created in the following manner. A) The customized system MUST be placed in the root directory. NOTE that the entire contents of the :HELP,:UTIL,:INIT and :SYSGEN directories will be dumped to tape on file 2. B) An empty directory off the root should then be created and set to be the working directory. The searchlist should be set to include :UTIL and :INIT. C) The TBOOTS.CLI macro (in :INIT) runs MAKEBOOT against several files to create the Installer format files. ) TBOOTS Page 34 The argument is the system name that was placed in the root directory. D) The SYSTAPE.CLI macro (in :INIT) copies the Installer files and system directories onto a blank magtape. ) SYSTAPE The first argument is the magtape unit (e.g. @MTA0) and the second is the system in the root. The new tape is now ready to be used like the regular MP/AOS release tape. NOTE that the system will be installed as MPAOS.SYS but exists under its original name on file 2 of the tape. 12. Please make the following corrections in the MP/AOS System Programmer's Reference Manual (093-4000-51). On Page 282 of Appendix E (User Parameter Files), the user catchable signals and abort signals should have the following values. ; User catchable signals .DUSR ?SGUC = 010000 ; User catchable signal class .DUSR ?SGSO = 020 ; Stack overflow .DUSR ?SGFP = 021 ; Floating point exception .DUSR ?SGCI = 026 ; Commercial instruction exception ; Abort signals .DUSR ?SGAS = 0100000 ; Abort signal class .DUSR ?SGIO = 022 ; I/O protection trap .DUSR ?SGWP = 023 ; Write protection trap .DUSR ?SGIT = 024 ; Indirection protection trap .DUSR ?SGVT = 025 ; Validity trap .DUSR ?SGJ0 = 027 ; User jump 0 .DUSR ?SGCB = 030 ; ^C^B .DUSR ?SGCE = 031 ; ^C^E .DUSR ?SGRI = 032 ; Reserved instruction trap .DUSR ?SGKL = 033 ; Process termination ( ?KILL ) .DUSR ?SGKB = 034 ; Process termination ( ?KILL BK ) .DUSR ?SGRT = 035 ; Process termination ( ?RETURN ) .DUSR ?SGRB = 036 ; Process termination ( ?RETURN BK ) 13. Please make the following changes to the MP/AOS System Programmer's Reference Manual (093-400051-00). 1) The Input specifications for ?OVREL call (page 198) should be: Inputs AC Contents AC0 Overlay descriptor Page 35 2) The Input and Output specifications for the ?READ call (page 214) and the ?WRITE call (page 246) should be: Inputs AC Contents AC0 Channel number Option: PKT: Unused AC1 Byte pointer to data to read/write Option: PKT: Unused AC2 Byte count (dynamic) Options: DS: Maximum byte count PKT: Packet address Outputs AC Contents AC2 Number of bytes read/written Options: NP: System task ID PKT: Unchanged 14. MP/AOS supports Powerfail/Auto-restart in the following manner: MP/AOS attempts to stay up across a power failure when the machine is equipped with a battery back-up. The CPU must be in the locked position so that if the main power fails, the battery will take over. Once power is restored MP/AOS will continue to run as if nothing had happened with the following exceptions: * An outstanding ?READ system call to a character device is terminated with error ERPWR ("character I/O terminated due to power failure"). If there is no outstanding ?READ call, and the device is open, the next ?READ call is terminated with the ERPWR error. In either case, the input ring buffer is flushed. * An outstanding ?WRITE system call to a Lineprinter (LPT) is terminated with error ERPWR. If there is no outstanding ?WRITE call, and the device is open, the next ?WRITE call is terminated with error ERPWR. In either case, the output ring buffer is flushed. * Non-system devices, such as the mag tape, are not re-started. * Users who have loaded data channel or BMC map slots will not have those slots restored after a powerfail recovery. They will need to keep track of their slot assignments previous to the power failure so that they can restore these slots via their powerfail handler routine (see below). Page 36 MP/AOS allows ?IDEF and ?LDEF users to gain control during a powerfail sequence. MP/AOS also allows users to bind their own powerfail handler routines into the MP/AOS kernel: * ?IDEF users may specify a powerfail handler address in the ?IHPR offset of the ?IDEF packet. If there is to be no power fail handler a 0 must be in ?IHPR. If bit 0 of ?IHPR is set, the system passes control to the user during both the power-down and power-up sequence. If bit 0 is not set, the user receives only during power-up. When power fails, the system passes an indication in AC0 letting the user know which sequence is being actioned; -1 is passed for power-down, 0 for power-up. Users are not allowed to enable interrupts in their power-down routine as this will cause them to lose control and may abort the entire powerfail recovery. Due to the small amount of time that the CPU will run after a power fail interrupt, the number of ?IDEF routines that gain control during power-down must be limited. This limit is currently four. An attempt to exceed this limit results in an error on the ?IDEF call. Power-down routines must be kept short; try to do as much as possible in the power_up section of your power fail handler. * ?LDEF users are only allowed to gain control during the power-up sequence. They can do this by setting ?LHPR to the address of a power fail handler address in the ?LDEF packet. A -1 in this offset indicates no power fail handler. * Users wishing to bind their own power-fail handlers into the MP/AOS Kernel can do so by putting the module name into the KSYSG.BIND.CLI macro. The entry points must be named UPWR_UP and UPWR_DN for the power-up and power-down routines. The routines are expected to use the SAVE and RTN subroutine call method. 15. Please make the following changes to some packet parameters in the MP/AOS System Programmer's Reference Manual (093-400051-00). 1) On page 191, two of the packet parameters for the ?MSEG system call are incorrect: ?MSPB should be ?MSPP ?MSNB should be ?MSNP 2) On pages 212 and 249, four of the packet parameters for the ?RDST and ?WRST system calls are incorrect: ?SPC should be ?SPCC ?SSP should be ?SSSP ?SFP should be ?SSFP ?SSL should be ?SSSL 16. Please make the following changes/additions to the SYSGEN dialogues (069-400206). 1) SYSGEN displays a menu of disk types depending on the processor genned. Page 37 The following disk controllers are supported for the ECLIPSE lines: a.) 10 mb cartridge(s) (6045/50) and/or 315 kb diskette(s) (6030) b.) 5 / 12.5 / 15 / 25 / 50 mb fixed disk and/or 1.2 mb diskette(s) (6097/8/9, 6225/27, 6234) c.) 20 mb cartridge(s) (6070) d.) 50 / 96 / 190 / 277 mb cartridge(s) (6060/61/67, 6122) and/or 73 / 147 mb fixed disk (6160/61) e.) 354 mb fixed disk (6236) f.) 368 kb diskette (4514) The following disk controllers are supported for the S-20: a.) 315 kb diskette (6038/39) b.) 10 mb cartridge (6095-N) c.) 5 / 12.5 / 15 /25 mb fixed disk and/or 1.26 mb diskette(s) (6096, 6101/2/4/5, 6220/22) d.) 5 / 15 / 50 mb fixed disk (5551, 6235) e.) 368 kb diskette (4513) 2) Should Connection/Server Management (IPCs/Mailboxes) be included ? (y,n) - You should answer yes to this question if you intend to use the Interprocess Communication or Synchronization facilities. If a yes answer is supplied, SYSGEN will go on to ask: Number of Server Descriptors ( IPCs/Mailboxes ) (1..100) [1]: - You must include a server descriptor for EACH IPC server AND EACH mailbox you intend to have active in the system. Number of Connection Descriptors ( IPCs ) (0..100) [1]: - You must include a connection descriptor for EACH IPC connection you wish to have active in the system. NO connection descriptors are needed to connect to mailboxes. 3. Do you wish to include Power Fail/Restart capability? (y,n) [n]: - You should answer yes to this question if you want to include the powerfail/auto restart capability described in the Documentation Changes section of this release notice. 4. Do you have a 4241/4243 (ULM) controller? (y,n) [n]: Note: The HC option on the ?SCHAR system call will not be applicable for a line on the ULM. 5. Maximum size of memory (in pages) for initial process (2..32) [32] - Size is now specified in terms of pages instead of bytes. 6. Do you wish to be able to dismount the master disk? (y,n) [n]: - A "yes" answer will enable you to dismount the master disk after booting from it. - A "yes" answer will also change the error logging question to be: Page 38 Do you wish to enable error logging to console? instead of providing a choice between console and disk file logging. 7. Before asking the question Should the default system configuration parameters be used? SYSGEN now displays the following: Default System Configuration Parameters are: Number of Processes : 1 Number of Concurrent System Calls : 1 Number of System Buffers : 4 Number of System Overlay Buffers : 2 Number of File Information Block Buffers : 4 Number of User's Task Control Blocks : 3 Number of User's Channels : 15 Number of User's Global Segment Descriptors : 0 Number of User's Attached Segment Descriptors : 0 Number of User's Segment Map Blocks : 0 Number of User's Overlay Node Descriptors : 2 Number of Concurrent Histogram Operations : 0 Number of Delimiter Tables : 1 Number of ?IDEF/?LDEF Device Control Tables : 1 8. Instead of the following: Default intial process is: :CLI.PR Should the default initial process be used? SYSGEN now prompts: Enter Pathname to Initial Process [:CLI.PR]: 9. Before asking the question Should the default initial process parameters be used? SYSGEN now displays the following: Default Initial Process Parameters are: Maximum Number of Channels for Initial Process : 15 Maximum Number of Tasks for Initial Process : 3 Maximum Size of Memory (in pages) for Initial Process : 32 Maximum Number of Attached Segments for Initial Process : 0 Maximum Number of Overlay Nodes for Initial Process : 2 10. Please make the following correction to the MP/AOS System Programmer's Reference Manual (093-400051-00). On page 198, AC0 should be the accumulator specified to input the overlay descriptor to the ?OVREL call. 11. Please make the following corrections to Appendix E of the MP/AOS System Programmer's Reference Manual (093-400051-00). Page 39 (a) On page 280 of Appendix E, the Extended ?INFO packet should not contain the following reference: "; ?PPMN - ?PHMA are the same as the ?INFO call packet" The values ?PPMN - ?PHMA are not part of the Extended ?INFO packet. (b) On page 283 of Appendix E, the status word of the Read Task Status packet should be: 000000 I=0 ; Task's status 100000 .DUSR ?STWT = 1B0 ; Task is waiting 040000 .DUSR ?STDR = 1B1 ; Task did not do a ?DRSCH 020000 .DUSR ?STUS = 1B2 ; Task is in user space 12. Please make the following changes to the Loading MP/AOS manual (069-40020-01) in Chapter 2, Loading MP/AOS from Magnetic Tape: In the section entitled "Identifying Processor and Disk", replace the description of the selection of the master disk (page 17) with the following: The prompt Disk unit name? will be preceded by a list of names and the default device code for each. Respond by typing the name of the disk unit containing the disk to be formatted. Note that the unit number, which must be zero, is part of the name (ex, @DPD0). There is no default. After you enter the disk name and unit number you will see a prompt similar to the one below. Device code [33]? If the disk unit specified in response to the previous prompt has the default device code, shown in square brackets, then select the default code by typing New-line or Carriage Return. Otherwise, enter the actual device code (in octal). In the section entitled "Disk Formatting" on page 18: The question MP format the disk [N]? should replace the question Continue formatting disk? Page 40 At the end of the first paragraph in this section, replace the last two sentences with the following: The default response to the formatting question is "N", meaning "no". Answering this prompt with a "no" will prevent the disk from being software formatted, thus preserving any information currently on the disk. Answering this prompt with a "Y", meaning "yes", will cause the disk to be software formatted, and any files currently on the disk will be destroyed. When the software formatting phase is run, the next prompt will request a new disk I.D. string. The disk I.D. is a string of zero to 15 characters, and is the "name" by which the disk is known. If the Tape Installer is run again with this disk, this disk I.D. will be displayed as part of the warning described above. The disk I.D. string must consist only of legal filename characters (letters, digits, "$", ".", "?", and "_"). When the software formatting phase is omitted, the next prompt will deal with installing a bootstrap from a tape file. Please add the following to the end of the section "Maximum Files on Disk" at the bottom of page 19: The default value is an empirical recommendation, based on the size of the disk. Generally, there is little benefit to selecting a maximum which is less than the default, since the overhead involved is small with respect to the size of the disk. A larger value may be selected, based on the user's particular needs and/or experience. Whatever value is specified will be adjusted upward, if necessary, to be a multiple of 508 or 1016. Note that directories are files, and that the Root counts as one of these. Replace the section "Installation of System Files" on pages 20 and 21 with the following: The installation phase deals with "invisible" files, which are not part of the directory structure of the disk. They can not be detected by any ?FSTAT call or CLI FILESTATUS command. These files are a bootstrap, FIXUP, and SYSBOOT. "Visible" copies of these files may also exist on the disk. If the disk was just software formatted by this invocation of the Tape Installer, none of the three prompts that follow will be displayed. Instead, the files will be installed as in accordance with the default responses. Install bootstrap from tape file (N=No Load) [3]? Respond with "N" to prevent a new bootstrap from being installed. Otherwise, the default is recommended. To specify a tape file other than the default, enter the decimal number of the tape file that contains only a 512-byte bootstrap in TCOPY format. The starter tape as supplied by Data General will not contain installable bootstrap files other than the default tape file. Install FIXUP from tape file (N=No Load) [4]? Respond with "N" to prevent a new copy of FIXUP from being installed. Use the default in order to install FIXUP, or specify the tape file containing a different version of FIXUP. This version must have been produced using MAKEBOOT/I and exist on the tape in TCOPY format. The starter tape as supplied by Data General will not contain installable FIXUP files other than the default tape file. Page 41 Install SYSBOOT from tape file (N=No Load) [5]? Respond with "N" to prevent a new copy of SYSBOOT from being installed. Use the default in order to install SYSBOOT, or specify the tape file containing a different version of SYSBOOT. This version must have been produced using MAKEBOOT/I and exist on the tape in TCOPY format. The starter tape as supplied by Data General will not contain installable SYSBOOT files other than the default tape file. Finally, you will be asked if you wish to load the rest of the file set for this MP/AOS release at this time. From this point on, the disk is considered to be "mounted", and any improper termination of the Tape Installer may make it necessary to run FIXUP on the disk. In order for a new MP/AOS disk to be useful, it must contain the "minimum file set", consisting of a CLI, a copy of MOVE, and a system. The "complete file set" contains everything in the basic MP/AOS release, including the "minimum file set". The Tape Installer is capable of loading either file set. Load complete file set from tape file (N=No Load) [2]? This prompt is always issued, regardless of when the disk was software formatted. Respond with "N" to prevent the complete file set from being loaded. This provides the opportunity to have the minimum file set loaded by the Tape Installer. Otherwise, use the default or specify the tape file number of another file in dump format to have files loaded onto the disk, starting at the root. If a file to be loaded already exists, it will be deleted and the new file will be loaded in its place. Load minimum file set from tape file (N=No Load) [6]? This prompt is only issued if the disk was not software formatted during the current invocation of the Tape Installer. It will not be issued unless the "No Load" response was given for the "complete file set" prompt. Respond with "N" to prevent the minimum file set from being loaded. Use the default or specify the tape file number of another file in dump format to have files loaded onto the disk, starting at the Root. If a file to be loaded already exists, permission to delete it will be requested. If refused, the file will not be loaded. Otherwise the original file will be deleted and the new file will be loaded in its place. 13. Please add the following discussion to the discussions of "Running the Starter System" (page 21) and "Phase I: Booting from Diskette 0" in the Loading MP/AOS manual (069-400207-01): To allow the starter system to be flexible enough to deal with any particular user's system configuration, starter systems include a conversational mechanism that allows the user to specify the device codes of the disks on his system. Page 42 This dialogue takes place after the prompt for system file name and before the prompts for date and time. Responses may use upper and lower case, and are terminated by New-line or Carriage Return; rubout and CTRL-U are handled. Defaults are shown in square brackets. If the hardware does not include a particular disk controller then respond to the prompt for device code with "N" to indicate that the device is not present. A sample dialogue follows. Note that "" is shown here to indicate that a default has been chosen. Override default specs [N]? y @DPD0 device code (3..76, N=Not present) [33]? @DPH0 device code (3..76, N=Not present) [26]? 73 @DPG0 device code (3..76, N=Not present) [67]? n @DPF0 device code (3..76, N=Not present) [27]? n Once the starter system has come up, SYSGEN can be used to build a tailored system with device codes and drivers for the hardware configuration. 14. Please add the following to the MP/AOS System Generation and Related Utilities manual (069-400206) under the SPOOLER utility (chapter 4): a) On page 58, add the following to the description of the QPRINT command, immediately preceding the /NOTIFY switch: /NOHEADER Suppress the printing of a header page for the file(s) to be printed. b) On page 52, add the following comments to the discussion of the types of devices that the SPOOLER supports: The SPOOLER utility may be used to spool to any character device configured into your system with the system generation utility, SYSGEN. The device code need not be specified when spooling to a character device. 15. Users wishing to define their own XOP may now do so according to the following set of conventions and restrictions. Every user program contains an XOP table definition force loaded from the OSL.LB runtime library. Thus, to define XOP table entries, user should NOT attempt to place an XOP table address in location 44, since this will result in both a BIND-time overwrite attempt, and the possible malfunction of certain runtime library routines. Instead, user-defined entries into the OSL.LB-defined table may now be made. The table is globally accessible through the name ?XOP; the parameter ?MUXP is the first table entry available for user definition. Since the table definition is always loaded from the library, referring to offsets in ?XOP will always be possible, and, as long as user entries are restricted to the range from ?XOP+?MUXP through ?XOP+31, inclusive, the definitions will not produce BIND-time errors. 16. Please add the following to the MP/AOS Macroassembler, Binder, and Library Utilities manual (069-400210) for the .NREL pseudo-op: Page 43 a) Table 6.5 on page 91: Character Meaning + NREL 2 word relocation (Impure Data) # NREL 2 byte relocation (Impure Data) / NREL 3 word relocation (Pure Data) % NREL 3 byte relocation (Pure Data) b) Dictionary entry on page 151: Legal arguments to the .NREL pseudo-op are the values 0, 1, 2, or 3, which may be expressions. An .NREL pseudo-op with no argument is equivalent to .NREL 0. Any other argument will result in a location (L) error. The following table lists the properties of each of the .NREL partitions. Note that overlays can consist of only .NREL 1 code. Pseudo-op Partition Write-protect Overlay .NREL 0 Impure Code No No .NREL 1 Pure Code Yes Yes .NREL 2 Impure Data No No .NREL 3 Pure Data Yes No 16. To assist in the conversion of existing PS files from the previous format to that supported beginning with this revision, the program RENEWPS (MRENEWPS under AOS or AOS/VS) has been included with this release. This program will only be included with this revision and the one that follows; after that time, it will no longer be supported. A PS file generated by a previous revision of MP/MASM can be converted to the new format using the RENEWPS utility. The command line for converting a PS file is: ) XEQ RENEWPS where is the name (including the .PS extension) of an existing PS file of the old format. RENEWPS will open and create .TM. The contents of are read, converted, and written to .TM. Both files are closed, is renamed .BU, and .TM is renamed . The original file, .BU is no longer needed and may be deleted. RENEWPS will not accept the new or any new format PS file as input. New PS files can be created or existing PS files (of the new format) can be updated in the usual fashion with MASM. The only factor that distinguishes between creating and updating is the use of the .XPNG pseudo-op. If the .XPNG pseudo-op is not used then the resulting PS file is an updated version of the original. Either way, before processing any source files, MASM tries to open MASM.PS or the file specified by the /PS= switch. Page 44 MASM now aborts when given a PS file with an unsupported format revision, but it is possible to run MASM without a PS file. If the /PS= switch is not used, and MASM.PS does not exist or can not be found, a PS file of the new format can be built without difficulty. Example: ) DELETE/2=IGNORE MASM.PS ) XEQ MASM/8/M/S EBID NSKID OSYSID SCALL OPARU MP_<,A>OS_ERCOD 17. Please make the following changes to Figure 2.1 on page 186 of the Addendum to MP/AOS Macroassembler, Binder and Library Utilities (086-000069-00): A) "Input Area" should be "Impure Area". B) "16 ?US?" should be "16 ?USP". C) "42 Stack unit" should be "42 Stack limit". 18. The debugger calls ?WSIG, ?RDST and ?GIDS This is to document a few changes made to ?WSIG ?RDST and ?GIDS system calls that allow easier debugging of overlayed programs. First, an option (LN) was added to the read task status (?RDST) call to give the debugger information concerning the debuggee overlay nodes. The ?RDST command was chosen because 1) it has a packet just big enough, 2) it is a debugger only call and 3) it faster and easier than creating a new system call. The calling AC's are the same as the with normal ?RDST call with the task ID (AC0) being ignored. The information is returned in the packet with the following format: +-----------------------------------+ 0 | packet type (?SRTP) | +-----------------------------------+ 1 | node count | +-----------------------------------+ 2 | address of node 0 + node length | +-----------------------------------+ 3 | address of node 1 + node length | \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ///////////////////////////////////// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 34 | address of node 31 + node length | +-----------------------------------+ Note that all node sizes are in blocks (256 words). Also the address information is confined to the upper byte and the size is in the lower byte. Thus +-----------+ 1 | 00002 | +-----------+ 2 | 34020 | +-----------+ 3 | 44010 | +-----------+ indicates 2 nodes. The first node covers the address range 34000-43777 and the second covers 44000-47777. Page 45 A second change was made to wake up the debugger when overlays are both released and loaded. The old functionality of a ?WSIG catching overlay loads (AC0= ?SGBP) was to wake the debugger only when a different overlay was loaded. Thus if the overlay was already in, there was no wakeup. The new functionality is to wake the debugger everytime the overlay is loaded and also when the overlay is last released. This allows the debugger to insert breakpoints when the overlay is loaded (inserting breakpoints twice will not hurt) and remove them only when we are done with it. The breakpoints must be removed because with virtual (memory resident) overlays, the code will not be refreshed and deleting a breakpoint when the overlay is not mapped in will leave it there. Both wakeups signal an overlay load (AC0 = ?SGOL) and now you may ask "How do we differentiate them?". This is done by making a ?RDST call on the current task. The last word of the packet (?STOL) will have the overlay descriptor if it is a load. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ------------------------------------------------ |0| overlay node 0..127 | overlay number 0..255| ------------------------------------------------ It will have the negative of the descriptor minus 1 if it is a release. Thus +-----------+ ?STOL | 000405 | +-----------+ indicates the load of node 1 with overlay 5, while +-----------+ ?STOL | 177372 | +-----------+ indicates the release of the same overlay node and number. The 1 is subtracted from the negated overlay descriptor on release to differentiate the load and release of overlay number 0 in node 0. The ?GIDS call has a new option (?PRC) that returns the debuggee process ID number instead of the task ID numbers. 20. Please make the following changes regarding DINIT in Chapter 3 of the Loading MP/AOS manual (069-400207): a) The surface analysis display described in the lower center of page 40 now appears for patterns as: -- Running pattern #1 (155555) and for cylinders (tracks) as: Writing cylinder: 0 44 84 ... Reading cylinder: 0 44 84 ... Page 46 b) Default responses are now indicated as appropriate using square brackets ("[ ]"). Two prompts have also been modified by the development of the MP/AOS-SU operating system. The new versions of affected prompts are: on page 39: MP format the disk [N]? on page 39: Continue formatting disk [N]? on page 41: Maximum number of files [1016]? on page 42: Install a bootstrap [N]? on page 42: Install FIXUP [N]? end of page 42: Install SYSBOOT (MP/AOS-SU System) [N]? top of page 43: SYSBOOT (System) pathname [SYSBOOT.SY]? c) In the lower center of page 41, replace the paragraph following the "Maximum number of files" prompt with: You may choose the default value, or you can specify a number of files greater than 0 and less than 32768. The default is an empirical recommendation, based on the size of the disk. Generally, there is little benefit to selecting a maximum which is less than the default, since the overhead involved is small with respect to the size of the disk. A larger value may be selected, based on your particular needs and/or experience. Note that directories are files, and that the Root counts as one of these. Whatever value is specified will be adjusted upward, if necessary, to be a multiple of 508 or 1016. For example, if you type 1 New-line, the response that is displayed might be: 21. MP/BIND Rev 2.00 has several enhancements, described in BIND_ENHANC.DOC in the documentation directory. Included in this are partition remapping, memory segment support, virtual overlays, and patch area allocation for use with VAMP. 22. In order to greatly simplify the management of memory segments that are shared between processes, the ID option was added to the ?CSEG call. The following changes should be made on page 120 of the MP/AOS System Programmer's Reference manual (093-400051): After the second paragraph insert: If the ID option is used, the global segment number is assigned by the user and passed in AC1. This is convenient for two or more processes that wish to share the same global segment. The segment may be created and referenced using a pre-arranged global segment number. This segment number must be in the range ?MNSG - ?MXSG. If two or more processes try to create the same segment, one will succeed and the other(s) will take the error return with a ERSAE error. The unsuccessful processes would then attach to the newly created segment using an ?ASEG call. Page 47 Under "Inputs", add: AC1 Ignored Options: ID: Global segment number (?MNSG - ?MXSG) Under "Options", replace "None" with: Mnemonic Meaning ID AC1 on input contains a user-specified global segment number that must be in the range ?MNSG - ?MXSG Under "Errors", add: ERISG Invalid segment number ERSAE Segment already exists On page 43 of the same manual, the second sentence under the heading "Sharing Memory Segments" should begin: "If the global segment has not been created using a pre- arranged segment number (see the ID option for the ?CSEG call), the number needed for the ?ASEG call can be passed ... " 23. MP/AOS Rev. 2.00 can be run memory resident. This means that once the system has been read into memory, it will initialize itself and run without a disk. Currently, SYSBOOT.SY is capable only of reading a system in from disk, but in the memory resident case the disk functions as a load device only, and will not be mounted when the system comes up. To boot from a device other than a disk, users will have to write their own down-line load bootstrap and modify SYSBOOT.SY (sources will be available) to take advantage of this feature. To support this new feature, SYSGEN and KONG now create a bootable system file which contains not only system code and data structures but also all of the user programs which will come up when the system is booted. NOTE: The memory resident system comes up multi-processed when booted, and all processes must be specified at SYSGEN time. When sysgenning a memory resident system, the SYSGEN dialogue changes somewhat. SYSGEN first asks a question to determine whether or not the system is memory resident. Then, for EACH process (instead of just the initial process) SYSGEN has to determine all of the information which would normally be provided on a ?PROC call: ?INCH (channel 0) ?OUCH (channel 1) priority # tcbs # overlays # segments # channels # pages memory required Page 48 In addition, SYSGEN will have to query user for the following information on each process: pid - assigning the pid allows user to identify processes without requiring the added complication of process names. - pid 2 (which currently is assigned to the initial process) will still be considered to be the "root" process. Terminating pid 2 will continue to shut down the system. program file name - any program to be used in a memory-resident system must be either non-overlayed or bound with virtual overlay nodes. NOTE: This is the only SYSGEN question for which a default answer is not provided and for which NEWLINE is not an appropriate response. ?BLK option - any process declared to be blocked at SYSGEN time will not begin to run until another process does an ?UNBLOCK on it. NOTE: If all processes are declared to be blocked at SYSGEN time, the system will hang when booted since no task will be scheduleable. ?DB option - this process is going to be debugged. SYSGEN will assume that the NEXT process specified is the debugger and will establish the appropriate debugger/debuggee relationship between the two processes. SYSGEN will provide FLIT as the default program file name for the debugger process. Processes genned for a memory-resident system will not have a working directory or a searchlist associated with them since no master disk is required. KONG has been modified to accept more than 1 argument now so the first argument is the system name (previously, this was the only argument), followed by the names of all the .PR files which were specified during the SYSGEN dialogue. KONG must have access to these .PR files via the searchlist since neither SYSGEN nor KONG has the ability to deal with pathnames. SYSGEN invokes KONG with the proper command line for the system being built with all of the .PR files ordered based on their process' priority. SYSGEN invokes KONG with a command line that looks like: KONG_IT SYSNAM PRFILE1 PRFILE2 ... PRFILEn and KONG in turn displays that command line as: KONG/GO SYSNAM PRFILE1 PRFILE2 ... PRFILEn Page 49 If anytime after building a memory resident system you make a change to one of the .PR files that has been bound into the .SYS file, you can rebuild the .SYS file by re-KONG-ing the system without rebuilding the entire system. With access to all of the intermediate system files and all of the .PR files, just reissue the KONG command making sure that the .PR files are listed in the same order that the original KONG command line showed so that they will be matched up with the correct parameters that SYSGEN has ordered during the dialogue session. ___________________________________________________________________________ END OF RELEASE NOTICE ___________________________________________________________________________