Maxc Operationsby Edward R. Fiala, Charles M. Geschke, and Edward TaftMaxc Document 18.7January 30, 1981This document describes many of the commonly used procedures for Maxc operation, as well as anumber of uncommon procedures used during system debugging and maintenance. This isintended primarily as a reference document for system personnel. However, in the absence ofsystem personnel, any user should be able to restart Maxc from a Tenex crash using the procedureoutlined in Section 2.XEROXPALO ALTO RESEARCH CENTER3333 Coyote Hill Road / Palo Alto / California 94304 Qp J#qX7 Cc A 9,1 7T 6A 4:!? 2p$"r$ qX$HsF4> =4PMaxc OperationsTable of ContentsiSectionPage1.Introduction11.1Overview of the Maxc System11.2A Word on Terminals and Consoles22.Tenex Crashes43.Power Up134.Power Down145.Loading the PDP-10 Emulator166.Starting Tenex177.Stopping Tenex188.NVIO and ODT208.1.Calling NVIO208.2.ODT Commands218.3.Nova Locations of Interest238.4.NVIO Punts249.AltIO259.1.Calling AltIO259.2.AltIO Commands2610.Maxc1 Midas Operation2910.1.Conventions2910.2.Commands3010.3Special Information3111.Maxc2 Midas Operation3311.1.Starting Midas3311.2.Midas Display3311.3.Midas Command Menu3411.4.Keyboard3611.5.Command Files3711.6.Loading Programs3911.7.Dumping Microprograms4011.8.Tenex Microcode4011.9.Power On-Off4011.10.Testing Through the Maintenance Interface4212.Operating Tenex Microcode from Midas4413.Interpreting Checker Failures46 fti:uX H)t_vA [q CY CX C T C Q+B` M B` JGB` F B` Cc B` ? B`>& B`<\ B`: B`8 B` 5UB`3 B`1 B` .MB`, B`* B`( B` %|B`# B`! B`  B`Q B` B` B` B`' B`\ B` )B`  $B` B`* g98[Table of ContentsMaxc Operationsii14.Using Micro-Exec4714.1.Tenex Disk Structure4714.2.Micro-Exec Command Descriptions4814.3.Micro-Exec Command Summary5315.DMPLD5515.1.DMPLD Operation5515.2.Required Format for Standalone PDP-10 Programs5616.Hardware Diagnostic and Maintenance Procedures5716.1.Running Microprocessor Diagnostics5716.2.Running PDP-10 Diagnostics5916.3.Memory Maintenance6116.4.Disk Maintenance6316.5.TM6416.6.MemBash6516.7.SMIDiag6516.8.AITest6516.9.TR6517.Writing a New 10SYS Tape6818.Recovery from Checkdsk Errors6919.Bsys Operation7219.1.Backup Procedures7219.2.Incremental Dumps7319.3.Full Dumps7419.4.Full Backup to Tape7619.5.Continuing Interrupted Dumps7619.6.Restoring Files from Backup7619.7.Restoring the Entire File System7719.8.Archive Procedures7819.9.Organization of the Archive Tapes7919.10.Archiving Files to Tape7919.11.Retrieving Files from Tape8120.Loading the Nova Disk8221.Contents of the Nova/Alto Disk8322.Software Maintenance Procedures8522.1.Midas8522.2.NVIO8522.3.AltIO8622.4.TM, MemBash, SMIDiag, Alto Microcode8622.5.Tenex and Diagnostic Microcode8622.6.Tenex86)fuX;ti  _qXB`]K B`[ B`Y B` VDB`Ty B`R .B` O=.B`Mr "B`K B`I B`H B`FH B`D} B`B B`@ B`? B` ;B` 89B` 4 B`2 B`12 B`/h B`- B`+ B`* B`(= B`&s B`$ !B`" B`! B` B` /B` B` B`( B`] B` $B`  B`  B`R <\UIMaxc OperationsTable of Contentsiii23.Local Memory Chip Charts8824.Creating and Destroying Maxc Accounts8924.1.Obtaining a Maxc Account8924.2.General Information About Maxc Directories8924.3.The EcCREATE AND EcPRINT Commands9324.4.Creating a Maxc Directory9624.5Editing the Grapevine Data Base9924.6.Changing the Password and Other Modifications to Directories10024.7.Destroying a Maxc Account10124.8.Operations on MESSAGE.TXT Files10324.9.Reinstantiating a Destroyed Directory10424.10.Retrieving Archived Files for Defunct Directories10424.11.Printing Accounting Information10525.Appendix10625.1.Files Comprising this document10625.2.Changing and Printing this document107Figure 1(Old Bipolar Card Chip Changing Map ~ Maxc 1 only)110Figure 2(Old Bipolar Card Chip Changing Map ~ Maxc 2 only)111Figure 3(New Bipolar Card Chip Changing Map)112Figure 4(MAXC Computer Memory Board Location)113Figure 5(MAXC Memory Board Chip Location)114Figure 6(Files-only account protection guide)115Figure 7(Application for MAXC Files-Only Directory)116Figure 8(Application for MAXC Login / IVY Directory [XeroxPalo Alto employees only])117Figure 9(Application for MAXC Login Directory [Non-Xerox andXerox employees not at PARC or Palo Alto SDD/SD])118 fti:uX G=t _qB` [%B`Y B`X *B`V! VV! VV! B`TV B`R B`P , , , and are used to stand for the carriagereturn, line feed, space, and escape keys.All information is applicable to both Maxc1 and Maxc2 except where otherwise noted.1.1 Overview of the Maxc SystemFrom a user terminal, Maxc looks like a PDP-10 running the Tenex operating system. However,this is mostly an illusion. Maxc is really a PARC-constructed microprocessor which emulates thecomplete user-mode PDP-10 instruction set, as well as some privileged instructions, equivalents forthe BBN pager operations, and an additional instruction set for Interlisp. The Tenex system hasbeen considerably modified to account for the many differences between Maxc and a PDP-10,particularly in the area of input/output.The system consists of the following major components:A.The Maxc microprocessor itself. Besides performing PDP-10 emulation, Maxc also directlycontrols the disks.B.A 384K-word by 48-bit MOS memory system, with hardware built in for correcting single-biterrors in any word and detecting (though not correcting) double errors.C.Up to eight disk drives, each connected to its own controller inside Maxc.D.The Maxc1 system includes a Data General Nova, which has all the other Maxc peripheralsconnected to it, including a data line scanner (DLS), two magtape controllers with a total of threedrives (all 9-track), the IMP interface supporting Maxc's connection to the ARPA Network, and twoMCA interfaces and one Ethernet interface supporting connections to all Novas and Altos at PARC.The Maxc2 system's I/O controller is an Alto, which provides Maxc access to the Alto's ownmonitor, a Diablo printer, and the Ethernet. All other devices are accessed through the Ethernet.The Nova or Alto also performs a number of other important functions relating to systeminitialization and debugging. It has direct access to Maxc's main memory (through a separate fpi>q Gp#[rX X2s,1 Vg> T': RB O`U M6( K* HY2- FF7rF * D* ARXS :r 7s\ 5UO 3:) 1C /K .*) *X6 'F29 %| " 2-, ?G 2XJ [2N M L G 1V fb G *T N >](IntroductionMaxc Operations2memory port) and indirect access to all of the internal microprocessor registers and memories. Itcan load microcode into Maxc's writable control store, and can command Maxc to start and stopexecution, single step, and perform a number of other useful operations.The Maxc system operates under the control of a large complex of support software, most of whichis described in this document. These programs are described here, in approximately the order theywould be used if one were to bring up the system from scratch.When first booted from switches, Maxc1's Nova runs under the control of DOS, the Data GeneralDisk Operating System, which is described in the pertinent Data General documentation. TheNova has its own Diablo moving-head disk, used for storage of Nova system programs and otherimportant files such as the Maxc microcode.1 DOS is also able to perform I/O to magtape unit 0(the one directly over the Nova itself).Assuming the necessary files have been loaded onto the Nova disk, the next program to be run isMidas. Midas is the loader and debugger for Maxc microprograms. It has a large number ofcommands for examining and changing microprocessor registers and memories and for starting,stopping, and single-stepping the microprocessor. Most of its capabilities are used only duringdebugging; in the normal course of events, it is used only to load the PDPb-10 microcode intoMaxc, and it then passes control to NVIO.NVIO is the program in control of the Nova while Tenex is running on Maxc, and contains all thenecessary I/O drivers for communicating between Maxc and the peripherals connected to the Nova.NVIO also has a command decoder, by means of which the operator may examine and changememory, start and stop the Maxc microprocessor, and perform a number of other operations.One important NVIO operation is to boot into Maxc main memory and start a PDPb-10 programcalled Micro-Exec. Micro-Exec has commands for performing a large variety of stand-alone Maxcoperations, such as setting up the disk configuration, copying disk packs, and (most important)loading Tenex from disk and starting it.The system software organization for Maxc2 is very similar. The Alto runs the standard Altooperating system and has a number of the usual Alto subsystems on its disk. An Alto version ofMidas exists that functions similarly to the Maxc1 Nova version, but whose user interface issomewhat different. The Alto equivalent of NVIO is called AltIO. Micro-Exec and Tenex are thesame for both systems, since they run in Maxc itself rather than in its I/O controller.Most of the rest of this document is devoted to explaining the above operations in much moredetail.1.2.A Word on Terminals and ConsolesMaxc1: The Nova's controlling terminal is an Infoton display. The Maxc controlling terminal(used by Tenex and by stand-alone programs such as Micro-Exec) is the TI-700 terminal to the rightof the Infoton. The Maxc log is another TI-700 off in a corner.------------------------------1This disk is not used during normal Tenex operation.)fq ;pi _s#? ]K:# [H XR VD V Ty> QG O=V MrE K+L5tKs I( FkE DZ B< A ` ?A S =v) :J 89<# 6oO 4Y 126# /hM -O +( (`E &>! $O #L !6W !;  r2X  usB CU x@ D t yF4 2>]"Maxc OperationsIntroduction3Maxc2: The Alto's controlling terminal is, of course, the monitor labelled "Maxc2 Alto". Whenthe Alto is running the control program AltIO, the display is split into two main windows. Theupper window is the command window for AltIO itself, whereas the lower window is the emulatedMaxc controlling terminal, which serves the same purpose as the Maxc1 console TI-700. Keyboardinput is directed to the window in which the blinking cursor appears; this may be changed bystriking the middle or bottom unmarked key on the right side of the keyboard. The Maxc log is aDiablo printer.Note: Subsequent sections discuss commands that you may have to type to various systems. If youscrew up, the following table gives standard conventions for deleting the previous character orprevious command typed:Delete CharDelete CommandMaxc1DOSRUBOUTAcMidasRUBOUTnoneNVIOnoneRUBOUTMaxc2ExecutiveBS or AcDELMidasBS or AcDELAltIOBS or AcDELThe other TI-700 terminals in the room are connected to the Alto DLS, which is not directly a part ofeither Maxc system. fpi>q Gp _usA ]KL [,1 YE WI V!M TV PusT O R MO ?I +i Fkus!-FE !-Cc!- ?us!@7-?=!>I-=;!<\-; 8]Xe 60 6K=1Tenex CrashesMaxc Operations42.TENEX CRASHESIf a Maxc-Tenex maintainer is available at PARC, inform him of the crash and normally he willtake over. You should try the office numbers of the maintainers, even at odd hours, because theywork at irregular hours. Otherwise, be brave and read on.If you have not already done so, you should first familiarize yourself with the material in theIntroduction to this manual (Section 1). There is a map of the machine room posted on thebulletin board, and most of the equipment is labelled.There are obvious problems in attempting to describe what to do when a system crashes. Thissection simply outlines a few simple procedures whose purposes are twofold: (1) to collect dataabout the crash for subsequent analysis and (2) to restart the machine quickly, with as little statelost as is possible.Begin by checking the log book and the whiteboard for any special instructions before proceedingwith the following. Note that there are separate log books for Maxc1 and Maxc2. The last few logbook entries may describe a crash like the one that has just occurred. This may suggest a restartprocedure for you to follow.You should append a log entry to the logbook with your name, the date and time, a statement thatMaxc crashed, and any other information that you discover while following the procedures below.Recent error typeouts (e.g., memory parity error messages) should be cut out and taped in thelogbook or copied from the display into the log if relevant.Maxc1: Look carefully at the Infoton terminal (which has a sticker saying "Maxc1 Nova" pasted toit) and at the console teletype. The Infoton will show the "flashing-register" display and errormessages from NVIO. Look at the logging terminal, which is a TI terminal off to the side of theMaxc room near the door.Maxc2: Look carefully at the upper and lower windows on the Maxc2 Alto. The upper windowwill show the "flashing-register" display and error messages from AltIO; the lower window serves asa console teletype. Look at the Maxc2 logging terminal, a Diablo printer located behind the Maxc2Alto console.Maxc1 Nova or Maxc2 Alto failures are generally manifested by an NVIO punt (Maxc1) or AltoSwat call (Maxc2) or by the Nova or Alto hanging someplace. If it hangs, then the flashing-registerdisplay will not be updating TODCLK and none of the other registers in the flashing-registerdisplay will be being updated either.The console teletype will show error messages from Tenex. The logging terminal will havenumerous messages typed out by Tenex before it crashed. The "flashing register" display shows thenames and contents of several Tenex core locations that are frequently updated during normaloperation. For example, TODCLK contains the time-of-day, which is updated by NVIO/AltIO;this register should be getting updated regularly by NVIO/AltIO, if NVIO/AltIO hasn't crashed.The Tenex scheduler will be frequently updating the NBRUN-NBPROC word if Tenex is runningnormally.Information about the crash may be apparent to you when you read the print out on these. Thelogging terminal may have BUGCHK messages from Tenex; frequently the BUGCHK messages areirrelevant to the crash, but sometimes they are interesting. The log is normally filled with messagesabout network failures of various types and recoverable disk errors such as:)fqX ;pi "]r&X ZfsU XR W^: T3[ R2( Q+6 MD L{G J^ Is FHtEs DQ C@&< A > t!s = I ;A :< 6tsK 5U%< 3M 2L /!ts7 -H ,\ * 'it!sts % tsP $aI "% @ .$> ;! &,- '7 A  n;" X fQ L  >ZJMaxc OperationsTenex Crashes5**PUPSRV date time FTP: Server timed out ...***IMPBUG 8599 Header ...*DSKERR: ...These messages are usually irrelevant to the crash, so don't be overly concerned about them.However, if the crash is caused by a network jamup of some kind, the BUGCHK messages on thelogging terminal may give a clue to the nature of the problem (for Ethernet or ARPA networkfailures).When system personnel are not present, Tenex is generally left in a mode in which it attemptsrecovery from Tenex-detected errors. Thus most crashes handled by non-system people will be of amore obscure (relative to Tenex) nature. The following paragraphs describe some of the morecommon crashes and suggested recovery procedures.Your first objective in dealing with a crash is to determine what kind of failure caused the crash.To do this you will look at various symptoms and try to classify the failure. The following areplausible reasons for crashes:a. Ethernet problems occasionally cause Tenex to be inaccessible, even though Tenex has notcrashed. In this case, there will be no BUGHLT message from Tenex, no "Microcode halt"message from NVIO/AltIO, and the flashing registers will be updating normally. This situation isnormally accompanied by numerous network-related BUGCHK messages on the logging terminal.You can determine whether or not this has occurred by typing control-C on the console teletype(Maxc1) or to the lower window of the Alto (Maxc2); if Tenex responds to control-C with a loginmessage, then you know that it is still alive, and you should find someone to fix the Ethernet. (OnMaxc2, if the cursor is not flashing in the lower window, you have to type the bottom unmarkedkey at the right of the Alto keyboard before typing control-C.).b. Software or firmware bugs have been rare, usually related to the ARPA, Ether, and MCAnetworks, and these bugs generally manifest themselves only when the network hardware ismalfunctioning in some way. However, a Tenex BUGHLT or microprocessor hanging conditionmight be caused by a software/firmware bug.c. Disk drive or disk controller failures are frequent causes of crashes. These might be manifestedby one of the disk drives going into select-lock (a red light on the disk control panel turns on whenthis occurs.). Building power glitches might also cause this. A disk drive/controller failure willnormally show the symptom of a BUGHLT message on the console teletype (Maxc1) or lowerwindow of the Alto (Maxc2). Disk failures are discussed below.d. Main memory failures are generally manifested by a failure message from NVIO/AltIO. Gardenvariety uncorrectable double errors may result in the Tenex parity error sweep being invoked for acrash autorestart, and this may in turn be followed by a microprocessor halt as discussed below.Memory cabinet power supplies sometimes turn off due to shorts or other hardware failures,manifested by one of the four power supply lights on a memory cabinet turning off. An assortmentof symptoms for various memory failures are discussed below.e. Microprocessor failures are generally manifested by microprocessor halts, by peculiar TenexBUGHLT's, or by the microprocessor hanging. If the microprocessor hangs, the TODCLK item inthe flashing-register display will generally be updating normally (TODCLK is updated byNVIO/AltIO, not Tenex), but other flashing-register display items will be unchanging. This couldalso occur when the core image of Tenex is smashed in some strange way. fpi=SqXGp_s,]\ W^J U P TVB R O] N#E LW K1 GX FkM D AtsG @7N >A =/@ ;I :'tsts. 8_ 7U 5@ 2pts7 0E /hG -+ *t&s' )4W ' V &,0ts $ts& !}tsG '; t'9 4& lD < ts( 9B L 1a G f>WMTenex CrashesMaxc Operations6The various symptoms which imply one or another of these kinds of failures are discussed below.A. BUGHLT or BUGCHK: A message of the formBUGHLT at 73550$8B>>BUGADR BUGHLT/ CAI UUOH+4types out on the Maxc console. This occurs when the monitor is in debug mode, which shouldnever be the case unless system maintainers are present. However, if you cannot find one, set theDBUGSW and DCHKSW cells to zero and proceed from the breakpoint:DBUGSW/10DCHKSW/10PTenex will recover from the error if possible, else restart automatically with no further interventionrequiredSometimes Tenex will hang in the autorestart code which follows a "BUGHLT at nnnnnn" message.This may be indicated by TODCLK in the Tenex register display updating normally but nothingelse happening. In this case, lookup the message associated with the BUGHLT in theBUGSTRINGS.MAXC1/2 listing on the table. This frequently is caused by a disk ormicroprocessor hardware problem. Unless something more creative occurs to you when you readthe BUGHLT message, try the "Last Resort" procedure in paragraph J below.B."Trouble with System Pack nnn" prints out on the Maxc console, followed by "Type M tomove pack, R to resume". This is caused by a disk unit going offline or failing in some equallycatastrophic way. If the source of the problem is obvious (e.g. someone switched the unit offaccidentally), rectify the problem, wait for the unit to be online (green light lit), and type "R" onthe Maxc console. In other cases, it is usually better to move the pack to a free drive (if there isone--frequently the only free drive has a Bsys backup pack mounted on it, which you may remove).After waiting for the new drive to be online, type "M" followed by the letter corresponding to thedrive you have moved the pack to (A through H). Tenex should now resume automatically.Sometimes disk units have gone into select lock without any apparent reason (e.g., after a buildingpower glitch). This can be cured sometimes by powering down the unit, letting it stop, thenpowering up again. After powering down the front panel switches and waiting for the disk unit tostop, you may have to turn off the AC power switch in back in order to clear select lock. If thedisk unit does not stop when you power down the front switch, do not turn off the AC power inback because the heads may not have retracted, and you will destroy the disk pack by poweringdown. We have had several failures like this.If moving the pack doesn't succeed in restarting Tenex, or if another crash occurs later, you willhave to restart by booting Micro-Exec. Then you will have to tell Micro-Exec what the new diskconfiguration is. This is done by using "Print.Disk.Configuration" and "Set.Disk.Configuration"commands as discussed in the Micro-Exec section of this document.If by unfortunate chance the drive that fails is the first one in the old configuration, then Micro-Exec will be in the first save area on that drive, and you will have to boot it by typing nB to NVIO(Maxc1) or AltIO (Maxc2) as discussed in the AltIO and NVIO sections. This is a little differentfrom the normal boot procedure which defaults the drive for booting to drive A.)fqX ;pi _sX_ ZC2rsWU Rh= PC O`@K#L5KL5JJZ.JHI- E.8 C @7& ?A= = !; <8+!,/ :J 90I 4^2rs2 2P 1UI /Y .MS ,:& +EM )W &J %!; #t,! " s] t s ts ./ }. R7+ P J"> A 0ts* _ F O >ZDOMaxc OperationsTenex Crashes7C."Micro Breakpoint" prints out on the Nova console (Infoton) on Maxc1, or in the AltIOcommand window on Maxc2. (On Maxc1, this and similar NVIO messages will usually appear abovethe lowest line of text and two lines of numbers usually displayed by NVIO.) This message meansthat the microprocessor hit a breakpoint, which is usually caused either by Tenex executing a HALTinstruction or by the microcode detecting some serious internal inconsistency.The only known HALT instructions in Tenex are associated with catastrophic disk errors, and amessage such asIRREC. READ ERROR IN DIRECTORY--BEWARE OF DISK WRITE FAILURETROUBLE WITH DISK PACK 000211is typed out on the Maxc console. Errors of this nature should be handled only by knowledgablesystem people, since the Tenex file system may be endangered.A "Micro Breakpoint" not accompanied by a printed message on the Maxc console is usually due toa microprogram-detected inconsistency. Perform the following procedure:1.Enter Midas by typing the following on the Nova console or Alto keyboard:Maxc2: Strike the middle unmarked key.#3301P(to "un-protect" NVIO/AltIO):M...OK.(to enter Midas)2.Write down the contents of the following registers displayed by Midas:NPC IMA P Q STK 0 PC PISTAT F INSTR3.Maxc2 only. Execute the "Compare" command in the command menu (you mustconfirm it with Return). If this prints "No errors" or "1 errors on Midas.Errors" thenthe microcode is ok, so continue at step 6 below. Otherwise, exit to the Alto Executivewith "Exit", issue the command "Type Midas.Errors", and write down anythinginteresting. (The microcode legitimately clobbers SM location IODEND, so if this is theonly error in Midas.Errors then nothing is wrong.) If there are any real errors, mostlikely a bipolar memory chip has failed, and attempts to restart the system will probablybe unsuccessful until the chip is replaced. Notify a hardware maintainer.4.Type the commands "21;G" (which should end up within a few seconds at IMA=30),followed by "25;G", which checks the correctness of the microcode. If IMA=30, themicrocode is ok and you should go on to step 6. If IMA=20, the microcode isincorrect. Write down the contents of LM 10. If you are ambitious, consult Section 13for information on interpreting Checker failures. Run appropriate microprocessordiagnostics if you are familiar with them.5.Maxc1: Type control-A to return control to DOS. Then reload the microcode via thecommand:MIDAS TENLOAD This takes a while (about 2 minutes). Wait until all messages at the bottom of thescreen disappear.Maxc2: Successively select the menu items "Run-Program" and "Tenload" using the leftmouse button. fpi=SqXGp _s2rs 8 ]?t \sR ZH YN UW TVQ+X<O L{_ J= G1. FHH)CXI?ts>m[>>m"<t<U<<W<")9F63)3gt s3 170_(0."  '-VF+ L*NK (J)%=$C"'%!-*6 *)ts0[0X>UtsE  =[FTenex CrashesMaxc Operations86.Attempt to "soft-restart" Tenex as follows:1Maxc1:!NVIO.SV/HNVIO:140G...OK.Maxc2:Select menu items "AltIO", "Dont-Go", "Do-It". Then type::140Go [confirm] .If this is successful, Tenex will within a minute or so broadcast the message "Maxcresumed from service interruption" to all terminals. If not, follow the instructions in"Last Resort" (paragraph J below).D."Bipolar Memory Parity Error" (Maxc2 only). Handle as in case C, except that interpreting theChecker failure is an especially desirable thing to do. Perform a "LMPEscan" before doing step 3,and write down any errors reported. If bipolar memory parity errors keep occurring, notify ahardware maintainer, since it is necessary to change a bipolar memory chip.E."Fatal Memory Error, Maxc Stopped" on Nova/Alto console. This indicates that the memoryis very sick, and a hardware maintainer should be notified."Main memory error: DE q" (Maxc2 only) where q = J, K, L, or M indicates a main memorystorage problem in the indicated memory quadrant."Maxc halted with memory bus parity error" (Maxc2 only) indicates a problem in the logic forgenerating or sending parity from the memory to the processor or in receiving parity by theprocessor, or in transmitting one of the data bits between the memory and the processor. It isnormal for this to occur in conjunction with a "Main memory error.""DIP in Q" (where Q = J, K, L, or M) means that the parity of the data on the bus from the portto the processor was incorrect. This will happen in conjunction with a "DE in Q" and isn'tsignificant in this case. In other cases it indicates a hardware problem in the port or in thetransmission path from the port into the processor.You should check the power supply lights before embarking on any other action. Enter the machineroom and locate the bank of logic racks for the Maxc machine which has crashed. You will see theMaxc1 Nova or Maxc2 Alto (there are signs on them). To its right will be the cabinet containingthe processor and port (labelled "Maxc1 processor" or "Maxc2 processor"). The two power lights atthe bottom of the cabinet should be lit.To the right of the processor are memory cabinets (presently 3 cabinets for each system). The right-most four lights at the bottom of each memory cabinet should be lit. (The two lights to the left ofthese are insignificant).If any of the power lights is not lit there are three possibilities: the light has burned out; someelectrical short has legitimately invoked the safety circuits and shut down the supply; or a glitch hasinvoked the safety circuits, but the hardware is ok (frequent source of failures). Because there maybe an electrical failure, you should notify a maintainer if possible. However, if you can't find one,hope that nothing fatal has occurred and proceed as follows:------------------------------1Note that it is generally possible to "soft-restart" Tenex even after running microprocessor diagnostics such as DGBASISandDGIML (but not DGM or DGMR, which are memory diagnostics).)fqX ;pi )_sX+`Su\tZ [s YXtW9XWWXTtS_s:QtQ9Q QWQN7M,4$K" F2rst s5 EQ@" C$9 BIK =v2r"s3 ;; 8t s # 7B1 4,t s% 2F 1!> /C ,_ U *U )WI '3 $tNs #$] !A <& ( le \ d 9[ c 1G V )< u g :> y= 2=]_Maxc OperationsTenex Crashes9First, put the system disk drives in Read-Only mode; it is necessary to do this before power downuntil after power up. Then, power down processor, port, and memory, as discussed in the PowerDown section. This is done by running a program. Do not turn off any hardware switches. Thenpower up the processor, port, and memory as discussed in the Power Up section starting at step F.Note: You have to power down Maxc before powering up again.If this succeeds in getting the power supplies on again, try the cold start procedure for restartingTenex as discussed in Paragraph J. If it does not succeed, then the hardware is broken and has tobe fixed.If the lights are all on, and if you can't locate a hardware maintainer, you should restart Tenex fromscratch. If the failure is a double error caused by failure of storage components, then the restartprocedure will zone out the bad storage region so that Tenex will not use that area and the failurewill not reoccur. If the failure is more serious, such that the memory is unusable, then the hardrestart will fail and the hardware will have to be fixed. Paragraph J below discusses the hard restartprocedure.F."NVIO Punt" on Nova console (Maxc1 only). If this is an immediate punt after running DGMor DGMR, do "POWER ON" and try again. Otherwise, this indicates a serious inconsistencydetected by NVIO. Crash data should be saved and the crash recovered as follows (type on theNova console).#3301P("un-protect" NVIO):D...OK.(enter Nova debugger)XPUNT/ junk :sssss+n = xxxxxx PUNT0/ junk :sssss+n = xxxxxx PUNT1/ junk :sssss+n = xxxxxx PUNT2/ junk :sssss+n = xxxxxx P(Resume NVIO):R...OK.(Resume Maxc)If Tenex does not resume after this procedure, try a "soft restart" by typing::140G...OK.on the Nova console.Write down in the logbook the data typed out by the debugger in response to the ":" and "="characters you typed in.G.Nova crash (Maxc1 only). If NVIO has stopped updating the bottom row of numbers on theInfoton screen, it is most likely that the Nova has crashed. Go into the machine room and recordthe Nova's state, as follows:1)If the Nova is still running ("Run" lit), press "Stop" followed by "Continue" a fewtimes, recording the state of the "Address" lights after each "Stop". Leave the Novastopped.2)Record the state of the "Address" and "Data" lights.3)Make sure the switches are set to 100040. Then press "Reset" followed by "Start". TheInfoton should print out a row of numbers (if not, go to step 4). Write these down in fpi=SqXGp _sG ]G \_ ZY W^tsX7 T3I RP Q+ MU L{d J12 IsZ GZ Fk A2r st s2 @&2 >E = 9[99"X8]t88]8W8]"666y6"6`6(6<65U 4y5U"84`5U(h4<5U3 3yy3"83y`3(h3y<32L 1y2L"81`2L(h1~2L0q0" /Dt./D.W/D" ,N(t(9((W( % "< ! @2r st sA *7 8)  H!4)X4) F *B =](Tenex CrashesMaxc Operations10the log. Then type P. After a few seconds, the message:BREAKRshould print out. Then type:SAVE CRASH which saves the crashed core image for later examination.4)If the procedure described in step 3 failed, press "Reset" followed by "Program load" onthe Nova front panel. Then, in either case, attempt the "soft-restart" proceduredescribed above (paragraph C, steps 5 and 6).We have had periods when the Nova disk gets smashed occasionally. A crash in which the disk issmashed might manifest as being unable to boot the machine. If a disk crash is suspected,1) Take down Portola (or some other two-disk Nova);2) Put good disk in dp0, bad disk in dp1;3) Boot the machine and then turn off write protect by pushing the red buttons on dp0 and dp1.4) Run DKUTIL and type G^c to start.This will copy the good disk onto the bad disk.Alto crash (Maxc2 only). If the Alto has fallen into Swat (the message "Swat" followed by anumber and a date appears at the top of the screen), record in the log book the information belowthe lowest line of squiggles. Then press the boot button on the back of the Alto keyboard. Thenissue the commands:AltIO/H 140Go [confirm] .This should result in a Tenex "soft restart", as in Paragraph C, step 6.H."Disk needs fixing" message from CHECKDSK. When Tenex autorestarts following aBUGHLT, it first runs the BSYS verify and CHECKDSK programs to determine whether or notthe file system has been damaged by the crash. If either of these programs detects a problem, itwill abort the autorestart. Fixing these problems is hazardous and should ordinarily be attemptedonly by a system maintainer. The procedures for recovering from CHECKDSK failures arediscussed in a later section.I.No response from Tenex; i.e., no error messages have typed out and none of the abovealternatives seems to apply, but nothing happens when you type control-C on the Maxc console.This type of crash is particularly hard to diagnose unless sufficient information is recorded.First, note the numbers on the last line of the Nova console (Maxc1) or at the top of the Altoscreen (Maxc2), and note whether any of them are changing over time.Second, enter Midas by typing the following on the Nova console or Alto keyboard:)fqX ;pi _s>[ZfW;XS TP9)MRL5G J- GG FZ)BX10)?1&)<1[)9T1! 6(/ 2r st s1 1yB /C .q*+EX )j9)  )jW) &H !2r s% ?9 R 7U I / \2rs5 9$ T^ )+ts ts7 yXQ 2>]Maxc OperationsTenex Crashes11Maxc2: Strike the middle unmarked key.#3301P(to "un-protect" NVIO/AltIO):M...OK.(to enter Midas)(If the message "Unclean Micro Stop" prints out, note this as well.)Now continue by carrying out the instructions given earlier beginning at paragraph C, step 2.J.Last resort. It may happen that a crash does not fall into one of the above categories or thatthe restart procedure fails. In this case, the following procedure will always succeed if all thehardware is working:1.Maxc1: On the Nova front panel in the machine room, make sure the address switchesare set to 100040. Then press "Reset" followed by "Program Load". On the Novaconsole (Infoton), you should see:DOS REV 04RThen type "POWER ON "Maxc2: Boot the Alto.2.Type the command:MIDAS TENGO 3.Wait about 2 minutes (Maxc1) or 30 seconds (Maxc2) while the microcode loads andNVIO/AltIO and Micro-Exec are started. Micro-Exec will execute an automatic "Go"command, after which you should enter date and time if Tenex requests it. Generally,you can ignore bad-chip messages printed out during memory testing--the regions ofstorage affected by bad chips are mapped out by Tenex. Save the printout in the logbook, however.If this doesn't work, try to find any one of the people listed below at PARC. If none of them isaround and the hour is between 9 AM and midnight, call one of the system maintainers. Ifbetween midnight and 9 AM, don't bother, but leave a message on the telephone recording sayingthat the machine will be down until morning. Instructions for recording messages are posted in theback room.People to notify: (use phone list on wall beside phone)Software and general system operationTaftGeneral, Tenex, NVIO, and AltIOFialaGeneral, microcode, Midas, TenexBoggsGeneralGeschkeGeneralHardwareFialaMicroprocessorLampsonMicroprocessorOvertonMemories and Disks fpi=SqXFp_ts][];]"\t[U\[W\" XD U] P2r sO O`,ts M)Jts:I-7G"D}X B?This turns on the power supplies and configures the memory; the operation takes about 15seconds. The program will complain about any supplies it is unable to turn on. Note: Maxc1 has ahardware problem in the power on/off control, and it is possible for the memory system to powerup in an inoperable state--see the section on Tenex crashes for symptoms and cures for thisproblem.Maxc2: Boot the Alto and run the Midas subsystem. With the left mouse button, successivelyselect the menu items "Power On", "Both", and "Do-It".------------------------------1Note that if a unit is selected, the read-only restriction will remain in force until it is deselected. This is indicated by the read-only light on the panel. Don't worry if the read-only light remains on, since the unit will be deselected by firmware later on andthe read-only light will go off at that time. However, be sure the read-only switch is in the off position. fpi?dqXFp%Ubr ^s2.1 \K [ W2\ UG T> P2I N: MF K>>$ IsJt Fs2us4 D7-/ BlQ @@ >2;eus"2 9O 7@ 4^28 2N 0) -V29 +:% )2&OusN $C! $5 Ous  H A-. v2us5 :6 ot U Futh D l y>]3Power DownMaxc Operations144. POWER DOWNYou should not power down the processor or the memories by pulling plugs or throwing switchessince this sudden shut down can damage components. Only resort to this drastic action in anemergency (e.g., fire or when the Nova/Alto is broken so that the program for powering downcannot be executed). If you do have to turn power off manually, try to turn all four switches foreach particular memory cabinet off as sumultaneously as possible.On Maxc2, the front panel switches for the disk drives should be turned off before powering downthe microprocessor. On Maxc1, this is desirable, but leaving the disks on hasn't been observed tocause problems.After powering down the disks, then shut off the microprocessor and memories as follows:On Maxc1, proper shut down is accomplished by issuing the Nova DOS command:POWER OFF NOTE: At present the processor power on Maxc1 cannot be turned ON or OFFunder program control. Throw the main breaker on the front panel.On Maxc2, power is turned off by running Midas and selecting the "Power-Off" and "Both" menuitems. Temporarily (as of 10/22/79), Midas cannot turn off the Port power supply on Maxc2. Toturn it on and off you must throw the front-panel switch labelled "Port on-off."When you power off, the two red lights on the processor and the four red lights on each memorywill shut off. The fans will continue to run and should be left on for at least 15 minutes. You maythen turn them off by pulling out their plugs in the backs of the cabinets, or by turning off theappropriate circuit breakers in the back room.It is possible to turn the processor and memories on and off independently. If only the processorneeds to be turned off, it is best to leave the memories on so as to avoid shortening the life of thestorage chips.On Maxc1, type "POWER OFF/P" to turn off only the processor, and "POWER ON/P" to turn iton. Similarly, "POWER OFF/M" and "POWER ON/M" turn off and on only the memories. OnMaxc2, this choice may be made by means of the subsidiary menus for the "Power-On" and"Power-Off" commands.To totally turn off disks, turn off the front panel switches first. Do not turn off AC power (inback) until the pack has stopped turning, else the drive may stop with the heads still extended!Unless you are going to work on the disk drive, powering off the AC power in back is not required.If the Nova/Alto won't run, then you will have to power Maxc down manually. It is veryimportant to turn off all Maxc power supplies before turning off the Alto power. To do this, firstturn off the Maxc disk drives via the switches on the front panel. Then turn off the four powersupply switches on each memory cabinet. Turn the four switches on each cabinet off as nearlysimultaneously as you can to avoid possible problems in the power safety circuitry. After you havepowered down the memory cabinets, turn off the processor and port power supplies.)fqX ;pi #](rX Ys ts@ WB V!K TVts- RA Ots: MOts% K HXX DtsC A. "uFI&?dB ;stsC :'X 8]P 4W 3 G 1U4- /. ,H *NN ( %tsO #GR !}ts((  @a uL b 97F9 'n@3 n Q Tt s\1Maxc OperationsPower Down15Finally, turn off the Alto disk, and when it stops the Alto processor. If the processor is going to bepowered off for a long time, you should also power down the Alto display.For most repairs to the Maxc processor, it is not necessary to power down the Alto. However, ifyou are going to disturb the PMAINT, KMEMI, or PMEMI cards in the processor, it is imperativethat you power down the Alto (after powering down Maxc). It should be ok to leave the Altorunning when other processor cards are pulled. fpi=SqXFp _s Z ]KI YS XL VD,/ Ty. T2=CLoading The PDP-10 EmulatorMaxc Operations165. LOADING THE PDP-10 EMULATORAssuming system power has been turned on and the Nova or Alto is at command level (Nova DOSor the Alto Executive), one may load the microcode and start Tenex by means of the singlecommand:MIDAS TENGOMidas will run through the TENGO command file which loads the microcode, displays some junkon the screen, and starts up Tenex. This takes several minutes on Maxc1 and about a minute onMaxc2.After loading the microprocessor, TENGO resets the machine (21;G) and checks the microcode(25;G). The microprocessor may crash (IMA=20) if there were any failures detected duringloading. LM 10 will contain the address of the incorrect word (if only one word was clobbered).1Note the values of LM 10 and IMA in the log and call system maintainers if the microprocessorcrashes. If you cannot get the system maintainers, get out of Midas (by typing control-A on Maxc1or selecting "Exit" with the mouse on Maxc2) and repeat MIDAS TENGO, since hardware flakinesshas been known to cause loads to fail spuriously and you may be lucky on the second try.If the load succeeds, NVIO or AltIO is started, which in turn boots in Micro-Exec from one of theMaxc disks. The following message is printed out on the Maxc console:Micro-Exec, Ver *Micro-Exec immediately executes an automatic "Go" command, which causes Tenex to be loadedfrom disk and started. Further procedures are described in the next section.If it is desired to load the microcode without starting NVIO/AltIO or Micro-Exec, use theTENLOAD command file instead of TENGO; i.e. type:MIDAS TENLOAD TENLOAD is identical to TENGO except that it does not start NVIO/AltIO, Micro-Exec, orTenex, but rather leaves control in Midas.Maxc1: Then, to start NVIO and boot in Micro-Exec (without starting Tenex), type:!NVIO.SV/B Maxc2: To start AltIO and boot in Micro-Exec (without starting Tenex), select "AltIO", "Boot-MExec", and "Do-It" with the mouse.The MEXECGO command file combines the effect of TENLOAD followed by starting NVIO orAltIO and booting in Micro-Exec.Note: The above procedure only works when Micro-Exec is on save area 1 of disk unit A. This isnormally the case. However, during periods when disk controllers are being checked out or whenthere has been hardware flakiness with disk controllers, MEXEC may not be on unit A. In thiscase it is probably on another disk drive. You should follow the procedure discussed in "CallingNVIO" (Maxc1) or "Calling AltIO" (Maxc2) in order to boot Micro-Exec from another drive.------------------------------1Checker failure interpretation is discussed in more detail in section 13.)fqX;pi u](rX Ys(3 Xx2' VS PA O$: M Jj., HI GGGt Es] D V BS A X =] <\F90,7 4: 2M /Q .M2+" 'G &s* #GusXL  usA l# A I  usB  Z T Z X t  yFI V>]Maxc OperationsStarting Tenex176. STARTING TENEXThe current Micro-Exec normally has been setup to have the current disk configuration. If youdoubt this, type:Print.Disk.Configuration (P D C)and it will print out the current disk configuration. Compare this to the numbers on the mounteddisk packs. If you are confident, type:GOwhich will first run a brief (~30 second) memory test, then boot in Tenex from the disk and start itrunning.If the disk configuration printed does not agree with the actual then type:Set.Disk.Configuration (S D C)which asks for parameters via the same format used in print.disk.configuration.After setting the correct disk configuration you must write MicroExec to area 1 by typing:Write.Micro.Exec.To.Area 1(W M E T A.1)Now you may type:GOTenex may ask for the date and time. (The prompt specifies the format.) Please be careful to enterthis correctly. If Tenex asks you to reconfirm your typein, you probably blew it and you should hit"Del" and try again. (But if you are really sure you typed the correct date and time, confirm withcarriage return).Tenex then runs the Bsys and Checkdsk programs to verify the consistency of the file system. Thistakes about 15 minutes (the time is proportional to the number of files in the entire system), at theend of which is broadcast the message "Tenex in operation" if all is well. If any uncorrectableerrors have been detected, the message "Tenex not available: Disk needs fixing" will be broadcast.If this occurs, you should attempt to notify system personnel. As a last resort, consult Section 18for information on fixing errors of this sort.If Tenex was last taken down in an orderly fashion (as opposed to crashing), it is not reallynecessary to run Bsys and Checkdsk (though it will never hurt to do so). The running of theseprograms may be bypassed (saving 15 minutes) by the following procedure:1.Load the microcode using the MEXECGO command file, as described at the end of theprevious section. This causes Micro-Exec to be started on Maxc. fpi' ,4 O 31 /. O 8& (H 2Q @ >ZgStopping TenexMaxc Operations182.Manually run the Micro-Exec memory test (so that Tenex will be informed of solidly failingregions of memory that it shouldn't use):*Test.Memory.Fast (T M F)3.Read in Tenex without starting it:*Read.Tenex.From.Area 0 (R T F A 0)4.Enter Exec DDT, turn on the "Checkdsk bypass" switch, and start Tenex:*EDDT EDDTCHKBYP/ 0 1 SYSGO1G7. STOPPING TENEXIn order to give users adequate notice and to protect files on disk, Tenex should ordinarily bestopped in the following manner.As long as possible before the scheduled downtime (preferably 24 hours or more), notify users by(optionally) putting a notice in the login message, setting the system downtime cell, and recording atelephone message. Make sure you do these things on the correct Maxc system!A.To put a notice in the login message,1 login as yourself and:@SNDMSG To: SYSTEM cc: Subject: Scheduled downtime Message:(An appropriate message giving date, time, and reason)^ZQ,S,?,carriage-return: SYSTEM -- ok@------------------------------1Do this only if the downtime is of unusual nature or duration. You must be a member of the "System" group to send messagesto SYSTEM.)fqX ;pi  _r2? ]K)YY YX Vg2"RRR O2F2LKL2JG2H%H|H%.H|2F[ F #>sX ;ArO 9w 6` 4:;* 2pM .2X%/t.r+8+5 !+ )K)j) ''~'&, %6&,$a"6 u  ~7 l  Ut F{ g  D=[Maxc OperationsStopping Tenex19B.To set the system downtime cell, you must be a wheel or a maintenance person:@ENABLE (only if you are a wheel)!HALT, (do not omit the comma)[Superpassword:] GUESS !!AT mm/dd/yy hh:mm (date&time system going down)!!UNTIL mm/dd/yy hh:mm (date&time coming back up)!!DUE (TO REASON) reason (type ? for list) !!!C.To record a telephone message, go to the recording telephone (next to the Imp in the backroom) and follow the instructions posted there. Make sure you specify Maxc1 or Maxc2 in themessage.The system will automatically start notifying users of the impending downtime beginning one hourbefore it is to occur. When the zero hour arrives, all jobs will be forcibly logged out except any joblogged in on the Maxc controlling terminal, new logins will be prevented, and "ShutdownComplete" will type out on the Maxc console. If there are now no jobs logged in, Tenex willshortly hit a BUGCHK (EDDT breakpoint) at SWHLT1, at which point Tenex is properly halted.If there is a job logged in on the Maxc controlling terminal, it will be necessary to halt Tenexmanually. To do this (for which you must be a wheel):@ENABLE !QUIT .Halt Tenex.Wait for the EDDT breakpoint at SWHLT1. A message such as "$8B>>CHKADR BUGCHK/SWHLT1" should be printed out. At this point it is safe to un-protect the NVIO/AltIO console("3301P") and return control to Midas ("M"). fpiwhere /a/b etc. represents switches (of the usual Nova DOS type); and , if it exists, is ofthe form 'Un' for n=0 to 7. The NVIO startup procedure is determined by the setting of theseswitches, the function of each of which is now defined -- in the order in which they are tested toavoid any ambiguity caused by multiple switch settings. Most of the switches have an analogousODT command with the same (letter) name./RReset the Maxc memory system. This is a fairly catastrophic operation and should beperformed only if the memory is hung up./BBoot Micro-Exec from Save Area 1 of disk unit n (from the 'Un' argument), where0=A, 1=B, ... 7=H. Unit A is used if no unit is specified./SStart Tenex, first booting Micro-Exec from disk as for /B and then executing anautomatic "Go" command./EBring in the Maxc Micro-Exec from tape unit number n (from Un) or from unit 0if no unit is specified./PEnter Protect mode in ODT. This means that ODT will allow only those commandsthat examine (but do not write into) memory and that do not change machine state./DEnter the Nova Debugger. ODT Control may be resumed by typing $P./HNormally NVIO now sends a "proceed" to Maxc which was probably halted beforeNVIO was called. This auto-proceed can be suppressed by using the /H switch./WNVIO will Wait for an IORESET before proceeding.Normally, NVIO is initially started up with the /B or /S switch set, in order to load Micro-Execand possibly start Tenex. When it is desired to start NVIO without resuming Maxc (e.g. to examineMaxc main memory or start at an alternate address), the /H switch should be used.)fqX ;pi $_rX \ws tN Zb YoH WY VgK Or2X Lt/I GE Bc A U ?!A >U <( 9T77( 44M443 : ///K.q +E$,*+E( ) &&?&8%+& !X/!!2 37M  X d` % #= \C Q =Tz&Maxc OperationsNVIO and ODT218.2.ODT CommandsWhen NVIO is functioning, ODT (Octal Debugging Tool) is its highest priority process (onlyinterrupts take precedence). It has two heralds, a number sign (#) which indicates that onlycommands that examine memory are legal, and a colon (:) which indicates all commands are legal.If Tenex is running and no ODT commands have been typed for ten seconds, NVIO willcontinuously display and update the addresses and contents of five Maxc main memory variables.If you start typing on the Infoton, NVIO will stop doing this and will print the appropriate heraldfollowed by your typein on the next line.ODT commands consist of a single letter or other special character, optionally preceded by anumeric argument. The argument is an octal number of 16 or 40 bits (depending on the command)or an expression made up of such numbers and the operators "+" and "-". "." stands for thecurrent (most recently displayed) memory address.Many NVIO commands request confirmation with "...OK". The confirming character is a period.The NVIO commands marked with a superscript "1" are valid and have the same meaning inAltIO.n] Change the current machine to the Nova; change the current memory location to n;and print out the contents of that location.n[ Change the current machine to Maxc; change the current memory location to n; andprint out the contents of that location in the format: aa bbbbbb ccccccwhere:aa (0 to 17) is the last 4 bits (i.e., the "tag" bits) of the 40-bit Maxc memory word, it isnot printed out if zero;andbbbbbb and cccccc are the left and right half 18 bits of the PDP-10 (Maxc) word.n/1 Change the current memory location to n; and print out the contents of that location./ Print out the current location.n1Put n into the current location. If the current machine is the Nova, a 16-bit number ispermissible. If the current machine is Maxc, a 40-bit number is permissible. The first4 bits input are the last 4 bits of the memory. Thus one can think of Maxc as a 36-bitmachine (like the PDP-10), right adjusted in a 40-bit field, rather than a 36-bitmachine left adjusted in a 40-bit word as is actually the case.This command is only legal after a command which prints out a Maxc or Nova location.1(lf means linefeed). Change the current location to the current location plus 1, andprint out the (new) current location.n1Equivalent to n, , .^1Change the current location to the current location minus 1, and print out the (new)current location.n^1Equivalent to n, , . fpi;AqXFp _r2 [t N ZfI X-2 U? T3:$ R-6 Q+) M'5 L{U JW Is1 FH:" D> C@ @;>, ;eL96 7XS5S3\S2)0S.P *+hu*tU ' $%u$t I#<!}'0<t?IXT utI  (u(tX/ Cut J  y u ytX/  2>]=NVIO and ODTMaxc Operations221Change the current location to the location pointed to by the current location. Printout its contents.B1Boot Micro-Exec from Save Area 1 of physical disk unit A.nB1Boot Micro-Exec from Save Area 1 of physical disk unit n (0=A, 1=B, etc.) Theparameter n is remembered for subsequent "B" commands without arguments.D Go to the Nova Debugger. $P will resume ODT.E Startup the Maxc Micro-Exec, loading from Tape Unit 0.nEStartup the Maxc Micro-Exec, loading from Tape Unit n.nG1Go to Maxc location n. Precisely: stop the Maxc microprocessor (cleanly if possible),then tell it to begin executing PDP-10 instructions at Maxc main memory location n.H1Halt Maxc (cleanly if possible).IInitialize NVIO.nIExecute initialization routine n:0Initialize all devices1Initialize DLS2Reset memory systemM1Halt Maxc (cleanly if possible) and return control to Midas.nM1Go to Microprocessor location n. (If you use this command, you had better knowwhat you are doing.)P1Protect NVIO. The herald becomes a number sign (#); only those commands thatexamine bmemory (and other state varibles) are legal.nP1If the number typed is the Pass(word) number: ODT becomes unprotected; the heraldbecomes a colon (:) and all commands are legal. Currently the pass(word) number is3301; this should be easy to remember as it is the smallest number which is the sumof two different cubes in two different ways. (143 + 13 = 113 + 123; octal ofcourse.)QPrint out the current state of Maxc (running, stopped, or at a micro breakpoint).R1Resume Maxc (the microprocessor is told to proceed). If a reset was previously done("21M" to ODT or "21;G" to Midas), PDP-10 interpretation will begin at the startingaddress pointed to by main memory location 7; otherwise, Maxc will resume fromwhere it was halted.nRIf n is zero, disable Maxc main memory error recovery; NVIO will halt instantly onany fatal Maxc error. If n is nonzero, reenable error recovery.)fqX ;pi  ^t_9u^t6\ YoYuYYotX8 UVuUUt0T3H PXPPjP MO"^LMO I"^II FkFuF)Fkt!4D4 A.Au@A.tX ==e= :K!S8 S6 S4  1y2u1yt621"U1y ..u.tO-U.H,< ()Wu(s(t @'5 #$u#t $#7#;#7#!>+(.' u.tu.tu.tu.t c XQ  u(t?J@  A @ <]oMaxc OperationsNVIO and ODT23S1Startup Tenex, booting Micro-Exec from disk unit A.nS1Startup Tenex, booting Micro-Exec from disk unit n (0=A, 1=B, etc.)nTBegin Testing output on DLS line n.nUUnhang Nova device number n by simulating a completion interrupt. If you use thiscommand, you had better know what you are doing.nZStop testing DLS line n.8.3. Nova Locations of Interest50:Version number. This number is incremented by 100 for each assembly of NVIO.51:Normally this location has a -1. If it has the number n in it then NVIO will PUNT ifit attempts to read or write into Maxc physical page n.52:The pass(word) number. Currently this is set to 3301 as explained under the ODTcommand P.53:Date of most recent NVIO assembly, in the form MMDDYY, where MM and DD areoctal but YY is decimal (at least until 1978).55:Save area to boot Micro-Exec from (usually 1).56:Default disk unit to boot Micro-Exec from (initially 0, but changed by arguments to Band S commands).57:Correction for known clock error, in seconds per day. This number is positive if theclock is known to be fast, negative if slow.The following symbolic locations are of interest:RTN:location of code to return to Midas. The Nova debuggerM:commands RTN$R or M$R are equivalent to the ODT command M.BREAK:location to goto to make a save file of the current version of NVIO. After BREAK$Ris executed, control will go to the Nova Exec and the command: SAVE nameshould be executed to save NVIO on the specified file. This is normally done afterNVIO is patched by the following sequence: DEB NVIO make patches fpi;AqXFp ^t_9u^U^t2 [:[uZ[:tB WWqW TVSTVHR0 OX HYr DtM Au/&?7 <8&*:n 6651. 1X. .MS, );'F, #X1 b7 : & H[> XwS* ;X p , )<\NVIO and ODTMaxc Operations24 BREAK$RRSAVE NVIOIf control goes to a debugger breakpoint after the BREAK$R is executed, this meansthat there is no disk space available. Exit via RTN$R; make disk space; and repeatpatches. (Sorry!)8.4. NVIO PuntsFor each PUNT, the location at which the PUNT occurred is put into Nova register 3, andinformation particular to each PUNT is sometimes stored in register 0. Maxc is then halted (cleanlyif possible) and "NVIO Punt" is printed on the Nova console.Accumulators 0, 1, 2, and 3 are stored at PUNT0, PUNT1, PUNT2, and XPUNT respectively, andmay be examined by going into the DOS debugger with the "D" command. After resuming NVIOwith "$P", it is necessary to restart Tenex in one of the following (increasingly drastic) ways:1)R...OK.(Simply tells Maxc to proceed).2):21M...OK.(Resets Maxc microprocessor).:140G...OK.(Attempts "soft" restart of Tenex).3)S...OK.(Reloads and restarts Tenex).More detailed information on handling NVIO punts and Nova crashes may be found in Section 2.)fqX ;pi  _tX]K[X=VDLTy MrX JGt(/ H|#A F< C@0* AuG ?Z<8;<8;W<8&sX8 8o88oW8&s6 696{6W6&s#333333W3&s 0\ /=8:Maxc OperationsAltIO259. ALTIOMaxc2 only. AltIO serves the same purpose running on the Maxc2 Alto as NVIO does on theMaxc1 Nova, though it has a much smaller complement of devices to service (just the Alto monitor,the Diablo printer and the Ethernet).9.1. Calling AltIOAltIO may be called either from Midas or directly from the Alto Executive. In Midas, selecting"AltIO" with the mouse causes a menu of AltIO subcommands to appear. Selecting "Do-It" causesAltIO to be started with no options selected; in this case, AltIO performs no initialization butsimply resumes the microprocessor at its current location. If other subcommands are selected before"Do-It", they modify the initial actions of AltIO in various ways.When AltIO is called directly from the Alto Executive, the same options may be specified byswitches. The general form of the AltIO command line is:AltIO/switches parameter/switch parameter/switch ...The switches immediately following "AltIO" correspond to Midas "AltIO" menu items in thefollowing way:SwitchMenu ItemDescription/BBoot-MExecBoot Micro-Exec into Maxc memory and start it./HDont-GoLeave Maxc halted rather than resuming it./PProtectEnter "protected" mode in AltIO. This means that AltIO willallow only those commands that examine (but do not write into)memory and that do not change machine state./RReset-MemoryReset the memory system./SStart-TenexStart Tenex, first booting Micro-Exec from disk as for /B and thenexecuting an automatic "Go" command.The optional additional parameters may be specified only in the Executive command line; there isno way to invoke them from Midas.filename/LLoad a PDP-10 "save"-format file into Maxc memory (default extension .SAV).Used for loading PDP-10 diagnostics when Micro-Exec won't work.n/UUse disk unit n rather than unit 0 in Boot-MExec and Start-Tenex commands,where 0 corresponds to unit A and 7 to H. fpiAuqFp'_rX Zfs t ? XH V% S_rX OtJ N#D LXF J:* HB EQ Q C9@X6 <F : 7fr] 3t] X. 0]* -]#+E.){, & ] X "] = $ Z^ !  +S?  =)` =W<AltIOMaxc Operations269.2. AltIO CommandsWhen AltIO is running, the Alto monitor is divided by black lines into three windows. If Tenex isrunning, the top window continuously displays the addresses and contents of five interesting Maxcmain memory variables. The middle window belongs to a command processor for controlling AltIOitself. The bottom window implements the Maxc controlling terminal used by Tenex and by stand-alone programs such as Micro-Exec and PDP-10 diagnostics.Keyboard input is directed to whichever window currently contains the blinking cursor. The middleand bottom unmarked keys on the right side of the keyboard may be used to direct input to themiddle and bottom windows respectively. Keyboard input is automatically switched to the bottomwindow when Maxc is started by commands such as "Boot" or "Go", and to the middle windowwhen Maxc stops for any reason.The AltIO command processor has two heralds, a number sign (#) which indicates that onlycommands that examine memory are legal, and a colon (:) which indicates all commands are legal.AltIO commands consist of a single letter or other special character, optionally preceded by anumeric argument. The argument is an octal number of up to 40 bits, depending on the command.While typing an argument, one may use the editing characters control-A, control-W, and Delete toerase, respectively, a single character, a word, or the entire command.Many AltIO commands request confirmation with "[confirm]". The confirming character is aReturn or period. Most of AltIO's commands are intentionally the same as in NVIO; the ones forwhich this is true are marked with a superscript "1".n/1Change the current Maxc memory location to n; and print out the contents of thatlocation in the form:aa bbbbbb ccccccwhere:aa (0 to 17) is the last 4 bits (i.e., the "tag" bits) of the 40-bit Maxc memory word,it is not printed out if zero;andbbbbbb and cccccc are the left and right half 18 bits of the PDP-10 (Maxc) word./Print out the current location.n1Put the 40-bit number n into the current location. The first 4 bits input are the last 4bits of the memory. Thus one can think of Maxc as a 36-bit machine (like the PDP-10), right adjusted in a 40-bit field, rather than a 36-bit machine left adjusted in a 40-bit word as is actually the case.This command is only legal after a command which prints out a Maxc memorylocation.1(lf means linefeed). Change the current location to the current location plus 1, andprint out the (new) current location.)fq;pi  _r [t'; YK XH VDK Ty9 Qb O=%8 MrF K? I Fk9 D-2 A.:$ ?d"< =<$ ;G 8]: 6+5 45 1U1u1UtP/S-3X*S(=S&$aS" F X &u&t?[MD!T =  u tI  M% >]Maxc OperationsAltIO27n1Equivalent to n, , .^1Change the current location to the current location minus 1, and print out the(new) current location.n^1Equivalent to n, , .1Change the current location to the location pointed to by the current location. Printout its contents.B1Boot Micro-Exec from Save Area 1 of physical disk unit A.nB1Boot Micro-Exec from Save Area 1 of physical disk unit n (0=A, 1=B, etc.) Theparameter n is remembered for subsequent "B" commands without arguments.DToggle on or off a switch causing typeout on the Maxc controlling terminal (thebottom display window) to be copied to the Diablo printer. This switch is normallyoff, but turning it on is useful when debugging Tenex or doing memory maintenance.EPrint out the current state of Maxc's PDP-10 emulator. This includes the programcounter and all the accumulators. This command may be issued only when Maxc isstopped.nG1Go to Maxc location n. Precisely: stop the Maxc microprocessor (cleanly if possible),then tell it to begin executing PDP-10 instructions at Maxc main memory location n.GGo to the starting address of the currently loaded Maxc program, which is pointed toby Maxc memory location 7.H1Halt Maxc (cleanly if possible).LPrompt for a filename (default extension .SAV), then interpret that file as a PDP-10"save"-format (not "ssave") file and load it into Maxc memory. The program'sstarting address is stored in location 7 so that a "Go" command without argumentswill start the program. The file is expected to be in the 36-bit binary format definedby FTP. Retrieving a PDP-10 "save"-format file using the FTP program will causesuch a file to be created.M1Halt Maxc (cleanly if possible) and return control to Midas. Midas is resumed inwhatever state it was in when control was last transferred to AltIO from Midas. Thisis true even if AltIO has been exited and other Alto programs run in the meantime.nM1Go to Microprocessor location n. (If you use this command, you had better knowwhat you are doing.)P1Protect NVIO. The herald becomes a number sign (#); only those commands thatexamine memory (and other state varibles) are legal. fpiAuqFp ^t_9u^tX/ [:[u[:tFYo UVuUtX/ RSuRt6P MOMuLMOtX8 IJjuIIt0HH D)&BJA > =Q;G: 67u6;)6t!444 1UI / ,,u+,tX (M&,!%A#G0'!}H @u@t* 6-U@u:4 9u9tOU9Hn ut @24 [+(Y)YY)YY)YY)YY) UXX RERuQREt?PzJN@L IsJuIIstX2 FFuEFtB BQ ?''=S ?;< ;A<,Maxc OperationsMaxc1 Midas Operation2910. MAXC1 MIDAS OPERATION10.1. ConventionsThe memories accessible to Midas are called:MAINsystem main memory, lower 64K words onlyLMleft register bank, 32 registersRMright register bank, 32 registersSMscratch memory, 512 registersDMPDP-10 emulator dispatch memory, 512 registersDM11Byte Lisp emulator dispatch memory, 512 registersDM21unused dispatch memory, 512 registersIMinstruction memory, 4096 registersMPmap memory, 1024 registersThese names are consistent with all other microprocessor and microcode literature.The Infoton display is completely controlled by Midas. The upper seven rows display 14 of themicroprocessors internal registers. The lower 8 rows can display any memory words from thememories listed above.Aaddress, one of 3 formsi)symbol identifier, possibly followed by blank and octal increment(increment may contain leading + or - sign)ii)memory identifier followed by blank and octal addressiii)octal address, presumed to be in instruction memoryVoctal valuePscreen positionThe letter L(left) or R(right) followed by a decimal integer from 1 to 15(row)Fa file name.If it contains no period, a default extension will be added, as specified foreach command.Octal values, addresses and increments may contain embedded blanks.Rubout deletes the previously typed character and backspaces the cursor.------------------------------ 1These memories do not presently exist in Maxc1. fpi6KqXFp_r \1 Xs,UM(SQ!ON#.LXLtLXs1JKtJs%H"F CR @ S >J5& <9 SXS5A3+S0_X5S,3){S & S"N%S I vXC H  Ut F/ =ZMaxc1 Midas OperationMaxc Operations3010.2. CommandsIn the following, some commands have two forms, with and without a screen position field.In the form without a screen position field, the current screen position is used. Unless otherwisenoted, all commands with a screen position field reset the current positiont to that specified in thecurrent command.A=prints out numeric value of A, in octal : single stepA:single step at address AA/display contents of address A at given positionA,P/ displays at given position the contents of nextPhigher address than currently displayed there^displays at given position the contents of nextP^lower address than currently displayed theredisplays, at position below current position, contents of next higher address thancurrently displayed at current position. Resets current position one lower.V_store octal value into the memory word addressed or registerV,P_named at the given screen positionA;Binsert a break point at given instruction memory addressA;Kremove a break point from given addressA;Gstart processor at address A;Pcontinue running the microprocessor at the current microaddress (in IMA);Ssingle step processor (same as :)A;Ssingle step processor at address A (same as A:);Crepaint the screenF[1],...,F[k];Rload files F[1] to F[k](default extension ".MB")3,F;T(default extension ".XX") take commands from file F until exhausted. May notbe nested.4,F;T(default extension ".ST") define /R file for subsequent patch calls to MICRO)fqX;pi  _rX [s@ Yc X05 VDRSX'O`S KSH|S/FC@S/AuS->S/<8S,8S-%S6K3SX<1S".MS8*S''iS#SH S!S/S0SeS,!S)  SXL p=\Maxc OperationsMaxc1 Midas Operation315,F;T(default extension ".MB") dump state of microprocessor onto file F, for sub-sequent reload using F;R. State dumped consists of the complete IM, SM,DM, LM, and RM memories but does ~!not! include the MP memory or theregisters. The address symbols are dumped also. Reloading, the dump file takesabout one minute ten seconds and it occupies about 52,000 characters on the Novadisk.6,F;T(default extension ".SV") makes .EXEC DOS system call upon file F.!F(null default extension) is the same as 6,F;T except that F can contain spaces andslashes for constructing more elaborate .EXEC calls (e.g., "!NVIO.SV/B"or "!POWER.SV OFF/M"). The .SV extension is always required, andthe trailing space nearly always.TEXTwill carry out microassembly of the TEXT using the file specified by the last 4,F;Tas a /R file for MICRO. The text of the patch is appended to DBGPTCH andthe binary is loaded. Two garbage files PTCH$$ (text of last patch) andPTCH$$.ST (/R file created by assembly) are also left.10.3. Special InformationThe cursor on the Infoton display will rise above the line when a command is in progress and dropdown again when it is done.Control-A will stop the microprocessor if it is running, but crash Midas back to the DOS EXEC ifthe microprocessor is not running (in which case you will have to restart by reloading themicroprocessor). Midas can take 15 seconds to evaluate a new symbol near the end of a bigmicroprogram so don't get impatient and type control-A. (Reloading from a big file takes over twominutes.) The cursor will rise above the command line when any command is in progress. If thecommand is a ;G or ;P, then the microprocessor will be running and control-A can be used to stopit. However, if you say SYMBOL;G, be sure you have waited the required 15 seconds for symbollookup before typing control-A.The first time you reference a symbol, Midas takes up to 15 seconds. Subsequent references arerelatively fast (about 1/2 second).Instruction memory addresses can only be displayed in the left column of the display and take upthe full width of the screen.When the microprocessor is stopped by control-A it will sometimes be possible to continue by ;Psafely, but don't count on it. It is possible to continue safely from breakpoints except when thebreak occurs during the read portion of a read-modify-write memory reference or on either of thetwo cycles following a write, if the memory data register has not been loaded.When Midas runs, it creates two temporary files called $$DBGE and $$DGBS. If you use thepatch feature, PTCH$$, PTCH$$.ST, and DBGPTCH also get created. If you wish you may deletethese when you return to DOS. fpi6KqXFp_sS$(S]K.S[)SY1SW,$SV!RSXB O= SRSMr DSK1SI! Fk SASD!(SB5SA 6 :KrX 6sO 5 1 usus) /us0 .C ,<S *r@ (>" &*3 % !usA # cH  'Y \K \ N UM G  y=]&Maxc1 Midas OperationMaxc Operations32Do not attempt to examine main memory locations >177777 with Midas. Midas will go through themotions of examining and changing the addressed cell, but in fact the address will be truncated to16 bits. All main memory addresses may be examined using ODT, as follows:!NVIO.SV/H Starts NVIO but leaves Maxc halted.NVIO:addr/contentsExamines main memory.:M...OK.Returns to Midas.)fqX;pi  _s^ ]K5- [JW XX&s#VDTyQT"eTy&sRQRXURRXWR&s Rh=]Maxc OperationsMaxc2 Midas Operation3311. MAXC2 MIDAS OPERATIONMidas is the loader/debugger used for the Maxc2 microprocessor. It has features for directly testingthe Maxc2 hardware through the maintenance interface, for loading/dumping microprogramsassembled by Micro, and for examining and modifying the storage in the microprocessor. It cancontrol the microprocessor and memory power supplies, configure the memory, and enable/disablethe various memory error correction-detection stuff. It also has a command for calling AltIO, theI/O program used by Tenex.11.1. Starting MidasTo start Midas, simply say "Midas" to the executive or, more generally, "Midas com-file".Midas command files have the extension ".Midas". Generally, there is one command file for eachof the hardware diagnostics, with the same name as the diagnostic, e.g.:dgbasic.mbthe diagnostic;dgbasic.midasthe command file;midas dgbasicto the Executive executes the command file.These command files load the diagnostic into the microprocessor and display various registers whichare of interest when the microprogram is in use.In addition, there are the following command files:midas/iinitializes (should be executed whenever any Midas files move orchange, or when a new Alto Operating System is installed).midas/rcontinues with the symbol table and display saved at the last call toAltIO.midassimply fires up Midas.midas tenloadloads the Tenex microcode.midas tengoloads Tenex microcode and calls AltIO to start Tenex.midas mexecgoloads Tenex microcode and calls AltIO to start MicroExec.midas initloads new Tenex microcode and sets checksums.midas debugloads some special symbols for use with "Constructed-Test" (seebelow).If you are already running Midas, and you want to switch microprograms, you can bug the "Run-program" menu item and then bug the name of the command file in the subsidiary menu whichcomes up. The "loader" menu item simply initializes a new Midas. "debug" is used to prepare forthe "Constructed-test" stuff discussed later.11.2. Midas DisplayAt the top of the Midas display are a number of register name-value menus. Below these are thename of the last microprogram loaded, the command comment line, the command menu, and the fpi6KqXFp`r ]Ks?& [*- YZ W5) V!J TV Mr J#sY FE DHAu X? = + :nK 80 51X318/:.*1,_*( ' 5%5 9#j -! ! cW 7"  S - Cr sH %4 >]LMaxc2 Midas OperationMaxc Operations34input text line. When you move the mouse around, the menu item selected (if any) turns black.Note that mouse actions execute when you release the mouse button, so you can move the mousearound with the button depressed without causing damage. If the mouse position does not selectany screen item, nothing happens when the button is released.Register areas are of different sizes. Smaller areas are already filled in with various microprocessorregisters when you fire-up Midas. The unused ones at the right and bottom left of the display areappropriate for 36-bit stuff, but only the bottom right items are large enough for IM (instructionmemory) stuff.To display a new item, type its name, move the mouse to one of the register name areas, and push-and-release the left (or top) mouse button.If the command line is empty, the selected register area will be cleared when the button is released.When you push the right (bottom) mouse button over a name area in which an address is displayed,a subsidiary menu appears as follows:A+1 A-1"A+1" increments the address, displaying the next location. "A-1" decrements the address.Releasing the middle button over an address item shows alternate forms of printout on thecommand comment line. If the input text line is non-empty, it will first display that item.Releasing the left button over a value item, evaluates the input text and stores the value (or 0 if notext typed) in the selected register. The input text is limited to octal numbers with interspersedspaces permitted for readability.Releasing the middle button over a value item shows an alternate display of the value on thecommand comment line. The alternate for IMA, NPC, and STK values is the nearest IM addresstag less-equal to the value+offset (the value is also put on the input text line, so you can examinethat location in the display area if you want to). For DM, DM1, and DM2 words, the alternate isthree IM addresses with offsets and one flag. For IM the alternate is a symbolic printout of themicroinstruction.Releasing the right button over a value item appends the text of the value to the input text line.11.3. Midas Command MenuFor the command menu, all mouse buttons are presently equivalent (this may change). For mostcommon commands, equivalent input text sequences carry out the same action, as given below.The general philosophy on mixing keyboard and mouse button control is that, when possible, acommand involving some typing is carried out completely at the keyboard, whereas commandsinvolving mouse buttons are carried out completely with the mouse.)fqX;pi  _s5) ]Kts, [O Y= VD9. Ty?# Rb P MrP K+ H6Xe D9' B%? <XZ 8U 6\ 3gZ 1V /! ,_X *A (5/ 'D %5Y #j Xb 8r sJ [ C H B D >[^Maxc OperationsMaxc2 Midas Operation35Many of the commands are executed in overlays. When these get executed, the register display willturn black (the code for overlays resides where the display bit buffers would otherwise be). Duringloading and during execution of command files, the display is turned off to make the machine runfaster.Many of the commands put up a succession of subsidiary menus with assorted options as discussedbelow.The long-running commands normally display an "Abort" menu item. When this is bugged orwhen control-C is typed, the action terminates.InputKeyboardMenu ItemComments;QExitQuit to Executive.FileRead-CmdsExecute command file (default extension ".Midas").Show-CmdsShow equivalent command file text for selected menuitems.FileWrite-CmdsWrite subsequent commands on file.;AAltIOCall AltIO with options (terminates command file).Run-ProgramRun selected microprogram (restricted use in commandfiles).Files;LLoadLoad .MB files.FilesLoadSymsLoad only addresses from .MB files.File;DDump2Dump compacted .MB file using the .MB file(s) of theprevious load to control what's dumped.File;CCompare2Compare microprocessor data to data specified in .MBfile--compare file must have been created by Dump.Addr=Print value of an address (illegal in command file).IMaddr;BBreakInsert breakpoint. (Restarting from the breakpoint willsucceed in all situations except when a memory write orread-modify-write has been given and MDR not yetloaded with the correct data or when the disk controlleris active.)[IMaddr];KKill-BreakRemove break at address (at IMA if nothing typed).[IMaddr];GGo1Start at address (continue at IMA/NPC if nothingtyped). fpi6KqXFp _sJ ]K\ [=# Y VDU Ty QK O=/ KrX'FHYs'F D'F2Au'F3'F? <8 'F"8'F25U 'F4'F3 0'F ,'F# )4)u'F)4s4'F'i' #$u'F#s4'F"-2 'F4 I'F8'F~8'F0'F8'F  'F2 ; u'F ;s0'F p| )=\Maxc2 Midas OperationMaxc Operations36InputKeyboardMenu ItemComments[IMaddr];PGo1Same as ;G (mnemonic "Proceed", provided forcompatibility with Maxc1 Midas).[IMaddr]:StepSingle-step at address (at IMA/NPC if nothing typed).See caveats on breakpoints above.[IMaddr];RRepeat-Go1Go at address, repeat endlessly after halts.[IMaddr];SRepeat-Step1Repeatedly step at address.LMPEscanScan all local memories (IM, SM, DM, DM1, DM2) forparity errors.Power-On1Turn on power (see below).Power-Off1Turn off power (see below).LDRaddrsConstructed-Test1(see below).Test1Test register or memory (see below).Field-Loop1For scoping (see below).Test-All1Test everything (see below).1 Requires preceding "TimeOut" command in command file.2 Requires confirmation with , "Y", or "." (or by preceding "Confirm" command in command file).11.4. KeyboardThere are a number of characters which are legal symbol constituents in microprograms but whichwill cause trouble for Midas when they appear in addresses.Lower case typein is converted to upper case by Midas, so avoid lower case characters inmicroprogram identifiers. I recommend writing microprograms with the shift-lock key depressed.Avoid "=" in identifiers. "+" and "-" are ok so long as the following character (if any) is a letter.Typing ahead is legal until the character you type would cause execution of a command. After thatMidas will flush input and blink at you until the current command finishes.At the end of a command the input text typed for that command is displayed on the input text line.This text remains valid and can be used as the argument for another mouse action. However, ifyou type any character (except control-A or backspace), the old input will be flushed beforeinserting the new character.)fqX;pi  _rX'F [s\1u'F[s,'FY Vg'F5'FT! Q+Qu'FQ+s, M NFu'FMsJG'F2'FH| E Eu'FE sAB%u'FAs >&>u'F>&s :;Au'F:s$7B 7u'F7Bs34]u'F3s 1u0suF5 --3sXuFY &sr #s_ !6; !7 &9 /f b K &< M 7%  >\2 Maxc OperationsMaxc2 Midas Operation37Keyboard editting characters are as follows:control-Adelete last characterbackspacedelete last charactercontrol-Qclear text linedelclear text lineOther special keyboard characters are as follows:control-Caborts the current actioncontrol-Zaborts a command filecontrol-Dturns on the displaycontrol-Oturns off the displayThe interrupt characters above are ineffective during loading, dumping, or comparing, whichtypically take between 2 and 15 seconds. Indefinite duration commands, such as "Go", "Test", etc.always monitor the keyboard, so control-C can be used to terminate them.Control-Z, control-D, and control-O are intended for use during command files. However, thesecharacters do not take effect until the command file executes a command such as "Go" whichmonitors the keyboard. There is no way to abort a command file and give control back to Midassafely except during a "Go" or other long-running command. This is not expected to be a problembecause commands are executed quickly.After interrupting a "Go" with control-C or control-Z, proceeding with ";P" or ";G" will succeedexcept when the conditions discussed earlier for breakpoints apply.Although command menu items "Step", "Go", "Break", "Kill-Break", "Repeat-Step", and "Repeat-Go" are provided, you will normally find it more convenient to execute these from the keyboardusing the alternate command characters.11.5. Command FilesCommand files have default extension ".Midas". They are normally executed by typing "Midascom-file" to the executive or by bugging the name of a command file from the subsidiary menu putup by "Run-program". However, you can also execute a command file by typing a file name andbugging "Read-cmds" in the command menu.To find out what text should be put in command files, you can bug the "Show-Cmds" item in thecommand menu. This will cause the command file text for each command to be displayed on thecommand comment line as the mouse selects it (you don't have to execute the command to see theequivalent text). This text is complete except that the mouse button which executes the commandisn't shown unless you depress the mouse button. Usually the text "L " precedes the text given by"Show-Cmds", indicating that the left (or top) button was pressed and released to carry out thecommand. "M " precedes a middle-button command and "R " a right-button (or bottom-button)command. The name of the command is followed by a blank, then the command line text, andfinally a carriage return. To terminate "Show-Cmds", bug "Conceal-Cmds" (this only appears inthe command menu when "Show-Cmds" is in progress). fpi6KqXFp `s,]K[YW Ty1QO=MrK H65& Fk)9 DH A.I ?dO => ;$< :& 6L 4C 1U\ /U -' 'r #s4' !` = .( V I '^ \K 9) Q 6$ 2 L gC 2 X U=]Maxc2 Midas OperationMaxc Operations38You can prepare a command file (default extension ".Midas") by typing a file name and bugging"Write-cmds". This causes text for subsequent commands to be put on the file. When you aredone with this, bug "Stop-Write-Cmds" to close the file. ("Stop-Write-Cmds" only appears in thecommand menu when a command file is being written.) You will probably want to edit out yourgoofs with Bravo after the command file is written.For command files associated with big programs, the symbol table is not entirely in core, so youmay want to sort the command-file addresses in reverse-alphabetical order to minimize symbol-tableswapping. Currently, Midas has barely enough symbol table space to hold all of the Tenexmicrocode's addresses, so none of the symbol blocks have to be swapped. However, this maychange if more features are added to Midas or to the Tenex microcode.Command files can be nested several levels (limited by the size of sysZone which must be bigenough to accommodate OpenFile and buffers for the command files already open). However,there are the following restrictions:(1)"AltIO" terminates command files (i.e., upon return to Midas from AltIO the command file willnot be continued).(2)"Run-Program" is illegal except in the top level command file. ("Run-Program" resets Midas,then calls "Read-Cmds". This reset operation smashes the symbol table, the display, and the stackback to their initial state. Hence, if you were to execute "Run-Program" from a subsidiarycommand file, that command file would be continued, but the higher level ones would not, and thesysZone buffers for the higher level command files would not be released.)Extra s can be used in a command file for punctuation, and ";" can be used at the beginning ofa line or after the last character of a command to begin a comment. The comment is terminated by.Since Midas builds a table of file pointers during its initialization, when you edit an existingcommand file or .MB file, you should reinitialize Midas by typing "Midas/I". When you add newcommand files or .MB files you should update the "Midas.Programs" file appropriately and do"Midas/I". The form of "Midas.Programs" is discussed later.There are a number of commands which can never occur when Midas is run interactively, butwhich are useful in command files. These are as follows:Text ArgMenu ItemCommentsOctal no.SkipVEqlSkip the next command if the selected value menu item equalsthe value of the text arg.Octal no.SkipVGrSkip the next command if the selected menu item's value isgreater than the text arg.Octal no.SkipVLsSkip the next command if the selected menu item's value isless than the text arg.Octal no.SkipSkip N following commands, where N is the 16-bit value ofthe text arg.)fqX;pi  `s;" ^:" ]((8 []W Y3 V!@ TVI RC P3' NE KU I2' Gt s D}2A B ?A2N =vJ ;T 9;% 8J 4-5 2a 1 -O +V *[ (=< $; #9 rX" ss"s<"R s"s:" s"s%" gs"s"  U=],Maxc OperationsMaxc2 Midas Operation39Octal no.BackSkipReset to byte 1 of the command file, then skip.Octal no.ReturnReturn out of current command file and skip N commands inthe calling command file (if any), where N is the 16-bit valueof the text arg.DisplayOnTurn on the display, so that effects of subsequent commands canbe observed. The display is initially off for a command file.DisplayOffTurn off the display.Octal no.TimeOutArgument is a 32-bit octal number of milliseconds after whichto abort the immediately following command, if it has notfinished by then. This is intended for use before "Go",which might hang indefinitely. If the timeout occurs Midaswill skip the command after the "Go". TimeOut also turns onthe display, which is necessary because the machinery whichchecks for timeouts is only active with the display on.ConfirmSupply confirmation for the command which follows (whichshould be one of the commands requiring confirmation).File nameOpenOutputOpen an output file (default extension ".Report") on whichtext can be written.CloseOutputClose the output file.[text]WriteMessageWrite the contents of the input text buffer on the output file.Note that if any text follows the WriteMessage, that text up tobut not including the is what gets written. However, if immediately follows WriteMessage, then the contents ofthe input text buffer left by the previous command are whatgets written. "~" is translated into .textShow-ErrorDisplay the text arg on the command line, turn on the displayif it was off, and query with "Abort" and "Continue" menuitems.The "right-button" value action allows the current values of any register to be appended to theinput text buffer. This can be used in conjunction with WriteMessage to output various parts of themachine state to the output file.11.6. Loading ProgramsThe "Run-program" command is a short method of executing the most common command files--those which load a microprogram and fix up the display for that program. fpi6KqXFp _ss"s/ [s"s3"Y""XTs"sX?"R>O`s "s Ks"s#"J#1"HY8"F;"D%"B5"A.7=s"s1";6 8s "s&"63Cs "sX /s "s?"."",<6"*r&"(!"&+ #js "s-"!%" cG ] !  r s8 H =[Maxc2 Midas OperationMaxc Operations40You can also load a program by typing a file name (default extension ".mb") and bugging "Load"in the command menu. However, this should rarely be necessary because all of the microprogramsappear in the menu put up by "Run-program", which additionally reinitializes Midas.It is a poor idea to do a "Load" when another microprogram has already been loaded because thiswill merge symbols from the new load into those already in the symbol table. In addition to beingvery slow, this may overrun the size of the symbol table on the disk (no provision is made forexpanding the symbol table beyond its maximum size).It is also a good idea to assemble microprograms as a single .MB file. Although Midas can loadmultiple .MB files (typed as a list separated by commas), this will cause additional fragmentation ofthe symbol table and thrashing while blocks are swapped in and out.These recommendations follow because Midas takes advantage of alphabetical address ordering in.MB files to pack its symbol buffers nearly full. But when subsequent files are loaded the symbolbuffers will be fragmented to about half-full, symbol buffer swapping will result, and the symbolsearches will be longer.11.7. Dumping MicroprogramsAfter assembling a microprogram, it is a good idea to load and dump it from Midas. Dumpingdeletes all forward reference fixups left by Micro and compacts both data and addresses to use lessdisk space and load more quickly later. Also, undumped .MB files cannot be used with "Compare"because of forward references.Note that only those memory words loaded by the original microprogram are dumped, so youcannot patch unused locations, dump the program, and expect the patches to survive.11.8. Tenex MicrocodeWhen a new release of the Tenex microcode is made, it must be loaded into the microprocessor, thechecksums set, and then dumped onto SYS2. To carry out this initialization, type "Midas init" tothe executive.After dumping, SYS2;C can be used to compare the microstore against its correct contentswhenever the checker program (INIT;G) fails. This is a good way of locating bad storage chipsafter a crash or verifying that the storage is OK before loading some other microprogram.11.9. Power On-OffThe "Power-On" menu item allows the microprocessor, port, and memory to be powered on andtested in various ways. The first "Power-On" subsidiary menu shows the following:)fqX;pi  _s'7 ]KM [S XF VDL Ty'7 R4 O=N Mre KC H6:$ FkQ DZ B <r 8s:! 6): 5P 3C /!7 .S 'Fr #sH " 7* ? ; <" 8Y wr s9 ;R ~ =[Maxc OperationsMaxc2 Midas Operation41ProcessorTurn on processor and port power only.MemoryTurn on memory and port power only and configure memory.BothTurn on port, processor, and memory cabinets' power.Test-Port-&-ProcessorRepeatedly execute the maintenance interface operations forturning on port and processor power (for debugging powercontrol hardware).Test-Memory-CabinetQuery for a memory cabinet number, then repeatedly executethe I/O instructions for powering on the memory cabinet.After the processor is turned on, the local memories (IM, SM, DM, DM1, DM2) are zeroed toprevent parity errors from occurring.When "Memory" or "Both" is bugged, another subsidiary menu will come up showing the variousoptions for enabling/disabling error correction, core-zeroing, and FER on memory errors. Fornormal use by Tenex, let the default action take place for all of these options, and immediately bugthe "do-it" menu item.Power on takes about 15 seconds because the power supplies take a while to stabilize. After power-on the interrupt system is cleared and the flag register is zeroed.The right-most four nine-bit bytes in CONFIG (appears on the Midas display) control the memoryconfiguration as follows:bits 0-8represent quadrant Jbits 9-17represent quadrant Kbits 18-26represent quadrant Lbits 27-35represent quadrant MA "1" in the byte enables cabinet 0, "2" cabinet 1, "4" cabinet 2, ..., "200" cabinet 7. Hence,CONFIG might be set as follows:3003003003All four quadrants active in cabinets 0 and 1 (would result in 256Kfour-quadrant configuration)17017017017All four quadrants active in cabinets 0-3 (would result in 512K four-quadrant configuration)3000003003Quadrant K disabled, but cabinets 0 and 1 active (would result in128K two-quadrant configuration avoiding quadrant K)Memory power-on does a catastrophic memory reset. This may occasionally clobber memory words,but this complete reset has been required to unhang the memory on several occasions, due toproblems which have not been fixed. fpi6KqXFp_s"&["8X2"4T","R ."Q+M"'"K8 H|= F% C@:! Au] ?P = :nc 8C 51W 3g/.* ,_  *  '#00 %X! C  7 m 04 1^ f[ # T=YMaxc2 Midas OperationMaxc Operations42The first "Power-Off" subsidiary menu is analogous to the "Power-On" menu. Note that the portpower will remain on unless you bug "both" because neither the memory nor the processor isoperable without the port power being on.Please be mindful of the following terrible danger: The microprocessor, port, and memory powermust be turned off before powering down the Alto. When this rule was violated on two occasions,numerous Alto MI chips were clobbered, apparently due to power transients from the cable.To make repairs to the microprocessor, it is sufficient to turn only the processor power off, providedthat neither the PMEMI, KMEMI, nor PMAINT cards are disturbed. For all other maintenance,power down "Both". If you want to remove the PMAINT card, power off the Maxc processor andmemory first, then the Alto disk, and finally, the Alto processor.11.10. Testing Through the Maintenance Interface"Test", "Constructed-Test", and "Test-All" allow the microprocessor to be tested from the Altothrough the maintenance interface. Data patterns for the test are determined from the firstsubsidiary menu, as follows:ZEROESAll-zeroes dataONESAll-ones dataCYC136-bit word of all zeroes with a single-one bit cycled left oneposition each iterationCYC036-bit cycled zero in word of onesRANDOM48-bit random numbersSEQUENTIAL0, 1, ..., sequential numbersALTZOAlternating all-ones and all-zeroes patternsALT-SHOULD-BEAlternating contents of SHOULD-BE with its ones-complementTesting is controlled/described by five addresses on the display as follows:LOW-HIGH(For memory tests only) contains in bits 0-17 the lowestmemory address tested and in bits 18-35 the highest addresstested. Memory tests begin at the low address and seq-uentially test each address up to the high address, then loop.LOOP-COUNTThe number of successful iterations of the test prior to failureor prior to aborting from the keyboard or with the mouse.SHOULD-BEWhat the data should have been.DATA-WASWhat the data actually was.BITS-CHECKEDMask of bits checked (see below).LOW-HIGH delimits the maximum address range. If the memory you select has fewer words thanHIGH, then the maximum for that memory is used. This means that the last address tested for amemory test is as follows (assuming LOW-HIGH is left at its normal maximum value):IMLOOP-COUNT mod 10000 (octal)SMLOOP-COUNT mod 1000)fqX;pi  _sD ]KI [) X#tsr VD"s/ TyY Qf O=M MrD KB Dr1 AusC ?R =:n"X8" 6"?"53C""1y"/ "-",, ": (L%5"("#j+"!"! "("@u"" "! n-. ^ R g X   X U=]Maxc OperationsMaxc2 Midas Operation43DMLOOP-COUNT mod 1000DM1LOOP-COUNT mod 1000DM2LOOP-COUNT mod 1000RMLOOP-COUNT mod 40LMLOOP-COUNT mod 40STKLOOP-COUNT mod 14"Test-All" automatically loads BITS-CHECKED with a full-sized comparison mask prior to testingeach item. It tests each register 250 times and makes 4 passes through each memory. It is a goodidea to run "Test-All" whenever the hardware is in a suspicious state."Test", after showing the data-pattern menu, shows a menu of register and memory names, andexecutes a test of the one you select until the test fails or you halt the test from the keyboard."Test" masks the current contents of BITS-CHECKED with the maximum-sized mask for theregister or memory being tested. If you previously tested a small register, then you have tomanually load BITS-CHECKED with a full-sized mask before testing a big register. If you don'twant to check all the bits in a register, then clear the bits you don't want to check in BITS-CHECKED."Constructed-test" should only be used when the "debug" command file has been loaded. Thisrequires a sophisticated understanding of the hardware and of the innards of Midas and is notrecommended for novices. Midas makes use of a number of microinstructions while reading,writing, starting, and stopping the microprocessor. "Constructed-test" allows these microinstructionsto be executed in non-standard sequences to beat on particular hardware problems through themaintenance interface. When using "Constructed-Test", a list of LDR addresses is typed (seeDEBUG.MC for the instructions) separated by commas. If only one LDR address is typed, themaintenance interface's BR register is loaded once with the selected data pattern, then the LDRinstruction is repeatedly executed for a scope loop. When two, three, etc., up to six LDR addressesare typed, a test loop occurs whereby BR is loaded with the next data pattern, the list ofinstructions is executed, and then BR is read back and compared against the data under control ofBITS-CHECKED. The loop stops when (data-read-back xor data-sent-out) & BITS-CHECKED isnon-zero."Field-Loop" exercises signal decoding for particular fields of the microinstruction for scope loops.A microinstruction is fabricated from a no-op microinstruction in which the field selected from thefirst subsidiary menu is replaced by various values. The second subsidiary menu allows the value inthe selected field to be incremented, decremented, and shifted. fpi6KqXFp_s ]K [ Y W V!  RV P[ OF K,/ ID H6 FHL D}@ BA @ =v!: ; S 9.+ 8f 6K\ 4F 2< 0#< /!K -V7# +2/ )E ' $&? "_ d %? >I-Operaating Tenex Microcode from MidasMaxc Operations4412. OPERATING TENEX MICROCODE FROM MIDASA.Reset is accomplished by typing21;Gto Midas. The effect of this is to put the machine in monitor mode, to clear the interrupt system,the APR, the processor flags and the disk system. However, Nova peripherals aren't affected, norare the accumulators or PC affected. If NVIO or AltIO is called after RESET the processor willstart at its starting address (pointed to by absolute location 7).B.Starting at an arbitrary PDP-10 location n is accomplished by changing the contents of PC(which is on the display) to n and then typingREMAPPC:(Midas types out the value m of REMAPPC)6,NVIO;T(Maxc1 only)"AltIO", "Do-It"(Maxc2 only)C.The PDP-10 accumulators are LM 0, LM 1, ..., LM 17 and can be examined and changed inthe usual way from Midas.D.The PDP-10 flags are in the left-most 13 bits of the F-register on the display. If you changethese from Midas, don't change the other 23 bits of F.These and other interesting bits of F are as follows:BitDefinition0Overflow1Carry 02Carry 13Floating overflow4Byte increment suppress5User mode6PARC mode (replaces PDP-10 user I/O mode)7Call from monitor (see JSYS, UMOVE, and Pager addendums to PDP-10 SystemReference Manual)8-10Machine mode (0=PDP-10, 1=Byte Lisp)11Floating underflow12No divide13Pushdown overflow14XCT015XCT116XCT217XCT318Incompatible19PI system is active20PI cycle in progress21MONALT - Temporary flag used by map loading microcode)fqX%;pi _rX) \12sX UMF S@! Q0/ OB L{r2s)(LL$L{ JJZJG? ?X0F)G? Et ?t sC ?t s @7r2sU >m :r2sP 906 5X52Lr .s-s+Es){s's%s$s)"PsH s$s&s[ssss1sfs s s s5 =]L)Maxc OperationsOperating Tenex Microcode from Midas4522THIRDPT - Temporary flag used by map loading microcode23Unused24TTYBSY - console teletype output busy25LOGF - enables main loop "LOGI", "BRKI", or "TRACEI" path26PICYCLE27CUM28MICRO29IENABLE30Unused31NOVA - Nova/Alto has left an interrupt request32K33J34H35GE.The interrupt system state is given by the following:PISTAT[29,35] have 1's when interrupts are in progress on the corresponding PI levels[1,7].PISTAT[22,28] have 1's when interrupts are disabled on the corresponding PI levels.SM 600 to SM 643 contain in bits 12-35 the interrupt locations corresponding to devices 0 through35. The device assignments are in Maxc document 11.SM 644 to SM 652 are the interrupt-enabled bit tables for priority interrupt levels 1 through 7. 1'sin each word indicate that the corresponding device (bit 0=device 35, bit 35=device 0) is enabledfor interrupts at that level.MICINTS contains 1's for each device which has requested an interrupt. (However, OVF, FOVF,and PDOVF are recomputed from F for each instruction, so their state in MICINTS isn'timportant.)F.The microcode consistency "Checker" uses four variables CSUMD, CSUM0, CSUM1, andCSUM2 which contain checksums for all constants in the microprocessor's IM, DM, DM1, DM2,and SM memories. CSUMD is an overall checksum (for detection of errors) while CSUM0-CSUM2 contain 18 6-bit bytes each of which is a checksum in a Hamming code. The checkercomputes the address which is clobbered assuming only a single word is wrong.When newly assembled microcode is loaded for the first time on Maxc1, these checksums arecomputed by running CHECKER ("25;G" in the TENLOAD command file) and entering thevalues left in LM 11-LM 14 into the PATCHES file for CSUMD-CSUM2. On Maxc2, thechecksums are computed and dumped automatically by "Midas Init". Subsequent runnings of theTENLOAD, MEXECGO, and TENGO command files check the newly loaded system against theseconstants, and crash on errors. Also the CHECK JMC does this (executed during Tenexinitialization). fpi-3qXFp_s6]Ks[s%Ys9WsV!sTVsRsPsNs.M,sKasIsGs DZr2s5 @&5 ?S ;4- 94 6oM 4Z 2 /hF -6 + (`r2s-# &!8 $; #L !6M ; Q / E d9# O G  >UNInterpreting Checker FailuresMaxc Operations4613. INTERPRETING CHECKER FAILURESThe microcode Checker is normally run whenever Tenex is started or restarted, and may be runmanually by issuing the Midas command "25;G". Checker failures are characterized by:a)IMA=20b)STK 0 = RETN (type "RETN=" to verify this)c)a value in LM 10 between 0 and 77777.To interpret a Checker failure, the following guidelines are offered:a)If LM 10 contains 0, all SM, DM, DM1, DM2, and IM registers containing constantswere verified to be correct, but some LM or RM constant or other processor operationfailed. See the microinstruction at [STK 0]-1 in the Checker listing to determine what'swrong.b)If LM 10 does not contain 0, it contains the logical "or" of all addresses containingincorrect values, where00000-07777Instruction memory (IM) bits 0-3510000-17777Instruction memory (IM) bits 36-7120000-23777Dispatch memory (DM) 0-377724000-24777Scratch memory (SM) 0-777Since these memories are composed of chips which span 400 or 2000 (octal) bits andsince the normal failure mode is complete chip failure, it will seldom be true that thenumber in LM 10 is the address of a single failure. For total chip failures, the logical"or" of the addresses will wind up in LM 10. Note that on the old bipolar boards, chipsare interleaved so that a chip hits every fourth address. The value in register LPGRT3is the complement of the wrong bits in the word if there was only a single error.c)On Maxc2, one can obtain additional information by invoking "LMPE-Scan" to find thebipolar memory locations containing parity errors, and by invoking "Compare"1 tocompare the current memory contents with the file from which the control memory wasloaded. (Note that it is normal for "Compare" to find one error at location IODEND.)d)Run the DGIMH and DGIML micro-diagnostics for further error information.------------------------------1"Compare" (Ref. Section 2, par. C.3.) produces a list of errors on file Midas.Error. From the Alto executive issue thecommand "Type Midas.Errors". The number associated with each error is a 36 bit word numbered from left to right bit0 through bit 35. These bit numbers correspond to the bit numbers identified in the bipolar memory card chip maps(Figures 1, 2 & 3).)fqX;pi A_rX" \1sG ZfUCVCSX*CP% LECI-KGbDE5$CC@[U><8 "X!:n ""8 "6 "452W0C/!C-V0'+QC(;&OL&t&Os$O"UCHH @t &Z [3A m  =QNMaxc OperationsUsing Micro-Exec4714. USING MICRO-EXECMicro-Exec is a stand-alone Maxc program used to maintain and start up the Maxc Tenex system.A few overall remarks on its structure will be helpful before describing the specific facilitiesavailable.Micro-Exec is normally loaded by the MEXECGO Midas command file (see Section 5) from Maxcdisk unit A. Micro-Exec loads into the high portion of the first 128K of memory, starting at350000. All references to "core" in Micro-Exec commands refer to the range 20-to-347777. (Theprogram which boots in Micro-Exec runs in 347000-347777 and saves the previous contents of theACs in 347760-347777.)Micro-Exec has a sophisticated command interpreter which allows editing, questioning, promptingfor parameters -- what we in the biz call "Dwimified-Middle-English". Commands take the form ofa sequence of words separated by periods. E.g.:initialize.disk.packorinitialize.tape.At any point in typing a string, you may type and the interpreter will complete as much asis unambiguous. Similarly, at any point you may type "?" and all the possible completions of thatcommand will be listed. Once you are familiar with commands, you will find it convenient toabreviate them by entering the first letter of each word followed by a space. For example, I D P isan abbreviation for "initialize.disk.pack".Many of the commands require parameters before the command execution begins. Typing anescape will prompt you with a brief description of the parameter (e.g., (octal number) or (packnumber)). Typing escape a second time will furnish the default value of that parameter if there isone. Some commands require confirmation (with carriage return or period).Micro-Exec is capable of running in user mode under Tenex as well as stand-alone. Micro-Execmay be accessed under Tenex by running the subsystem MEXEC, and it requires enabled "wheel"or "operator" privileges. All commands may be executed either stand-alone or in user mode exceptwhere noted otherwise.14.1. Tenex Disk StructureFinally a few words on the disk structure of the Maxc-Tenex system will be helpful for thefollowing command descriptions. A disk configuration is defined by establishing a correspondencebetween (1) logical units (Tenex), (2) pack numbers, and (3) disk drives (i.e., controllers). Thecurrent disk configuration is usually the default configuration on the current Micro-Exec save area(usually area 1 on physical unit 0). Logical units are identified by digits 0 thru n-1 (for an n-packTenex). Packs are labeled with octal numbers starting at 100. Drives are labelled alphabeticallystarting with A. For example, the "print.disk.configuration" command might type: fpi9qX Fp!_r \1s(5 ZfU X U*O S_,1 QZ OE M J_ HO F0C A? <6- :E 8N 78, 5U+ 1L 0B .MK ,J )-0 'F= %|J # r ~sB "? O  W TE! F Q x>YUsing Micro-ExecMaxc Operations48Number of units: 2---------------Unit--------Pack Number0.B1021.A107At present there are 20 "Save Areas" allocated in the disk structure, but outside the Tenex filesystem. Each save area consists of four track cylinders (i.e., 240 (decimal) pages). A directory ofsave areas is posted on the control room wall.A mechanism has been provided for maintaining a simple file system on a single save area, forstorage of small programs such as PDP-10 diagnostics. At present, save area 2 is assignedpermanently for this purpose. All instances of the word "program" in command names refer toprograms stored in this manner. Sometimes disk packs are moved from one drive to another, sothat drive can be freed for maintenance. When this is done, the procedures for automaticallystarting Tenex or booting the Micro-Exec may not work and some of the issues are discussed here.First, the command files which start Micro-Exec or Tenex from Midas expect to find Micro-Exec onsave area 1 of disk drive 0 and Tenex on save area 0 of disk drive 0. If the pack containing theseareas is moved to some drive other than 0, these command files won't work. In this case, you mustboot Micro-Exec by hand from NVIO/AltIO rather than relying on the MEXECGO or TENGOMidas command files to do this for you (see the chapters on NVIO/AltIO for how to do this).After starting up Micro-Exec (and setting the disk configuration, if necessary), you can do a "Go"command to start Tenex.Secondly, the various methods for starting Tenex from Micro-Exec require that Micro-Exec knowthe correct disk configuration. If the configuration has changed since Micro-Exec was written onthe same area, the configuration must be correctly entered into Micro-Exec ("Set.Disk.Config-uration" discussed below) before starting Tenex. "Write.Micro.Exec.to.area.1" can be used to storeMicro-Exec on its same area with a correct disk configuration.14.2. Micro-Exec Command DescriptionsIn the following descriptions, a (C) means confirmation is required. In commands that read from orwrite to disk, the number following the command indicates the error retry count used; "default"means that the retry count may be overridden by the count specified in the"set.disk.error.retry.count" command. If not specified, the retry count is 20 and is unaffected by the"set.disk.error.retry.count" command.briefDisables extended typeout of disk error status bits.check.next.tape.file (stand-alone only)Checksums next file on tape and types entry point on console.clear.core (C)Zeros locations 20 through 347777 and 400000 through 777777.)fqX;pi _sX]K&["Y" VD$< TyC" R. O=N MrJ K8$ I> H6' FHP D}R BE @N ?M =SJ ;F 9 6KX 4B 2%8 0R /!> (`r& $sc #$ R !Y!) H % RX4 =K=  < J >ZD Maxc OperationsUsing Micro-Exec49compare.disk.packs Compares the contents of the specified packs and reports discrepancies (usually usedafter a pack-to-pack copy).copy.pack.to.pack (C) (default 20)Does a bit-by-bit copy of data from first pack onto second pack.copy.quadruple (C) (stand-alone only)Simultaneously copies the first pack onto the second pack and the third pack onto thefourth pack.ddtEnters DDT for debugging Micro-Exec. Re-enter Micro-Exec by 20$G.debug.disk.controller (C) (stand-alone only)Permits checking out the disk controller hardware without using a real disk. Thisrequires connecting the write cable of to the read cable of andconnecting a pulse generator to simulate sector pulses.dismount.auxiliary.packRemoves auxiliary pack from disk structure.dump.core.to.area Dumps locations 20 through 347777 on . Registers are saved at 347760 whenMicro-Exec is booted in. This command is used to save crashes for later analysis.dump.core.to.file (user mode only)Dumps locations 20 through 347777 on (default extension .SAV).dump.program (C)Dumps the (small) program presently in core onto the current program save area(usually 2) with the given name (5 or fewer characters). If a program already exists bythat name, it is overwritten. The program in core should conform to PDP-10conventions: the LH of location JOBCOR (133) should contain the highest locationloaded with code, and the RH of JOBSA (120) should contain the starting address.dump.save.areas.to.auxiliary.pack (C)Copies all the save areas from the currently configured file system onto the auxiliarypack. The save areas are arranged as if the auxiliary pack constituted a one-pack filesystem; hence, the last 4*20 = 80 (decimal) tracks on the pack are overwritten.eddtEnters Exec DDT if Tenex is in core. Re-enter Micro-Exec by typing 20$G.erase.program Deletes the named program on the current program save area. fpi9qX Ffp _s^_^_](8[] WXW^WW^WU@ RQRQRQRQRPQN KaIXB F$EF$EF$D7BBl,ABlABl@~7 = ;AX+ 76$,4:R 0X-.I +)<'H&,;$aH"4 %%ZH  MP SXI L;  (default 0)Reads pages at random on the specified pack, reporting any device-detected errors(checksum, etc.) but not actually looking at the data. The pack is not written on.exercise.disk.specific (default 0)Prompts for a list of disk addresses, which it then cycles through repeatedly, readingeach specified page as explained above.find.chip.for.address
Translates the supplied memory address and bit number into a physical memory chiplocation.
is a 21-bit octal number, and is one of "Bit n","Tag n", "Check n", or "Parity" (abbreviations allowed), where n is a decimal number.Data bits are numbered 0-35, tag bits 0-3, and check bits 1, 2, 4, 8, 16, and 32.go (stand-alone only)Executes a "test.memory.fast", then loads Tenex from area 0 and starts it at SYSGO1.goto
Starts whatever is in memory at the specified address.initialize.area.for.programs (C)Initializes the "directory" of the current program save area (usually 2).initialize.disk.pack (C) (default 0)Initializes the auxiliary pack by: (1) writing headers, using the pack number entered inthe mount.auxiliary.pack command, (2) writing random data on the entire pack, and(3) checking the data and printing discrepancies. An error retry count of zero is usedthroughout. Pages in which errors are detected are recorded in the bad spot list onpage zero of the pack.initialize.tape (C) (stand-alone only)Rewinds tape to load point, writes a boot header, and waits at the end of the boot header.install.new.micro.exec (C)Transfers a new version of Micro-Exec (loaded via a previous "load.dump.from.area")to its runtime location, and starts it up.load.dump.from.area Loads core from specified area (inverse of dump.core.to.area).load.dump.from.file (user mode only)Loads core from specified file (inverse of dump.core.to.file).load.program Loads into memory the specified program from the current program save area (usually 2).load.save.areas.from.auxiliary.pack (C)Loads all save areas onto the currently configured file system from the auxiliary pack,which must previously have been written by dump.save.areas.to.auxiliary.pack.)fqX;pi  _s']K6[,' X)VDATy' Q0O=*'MrCKMIQ FkXDT A. ?d6 ;:'I 6$4:3 91UW/9- *NX5(Z %#G3!}*  X@> /> W U' N M y<]Maxc OperationsUsing Micro-Exec51loop.on.specified.disk.page Continuously reads the specified disk page ignoring errors (useful for disk tune-ups).The bell is rung for each error detected.mount.auxiliary.pack Identifies auxiliary (i.e., extra-Tenex) pack to disk configuration. Certain commandssuch as initialize.disk.pack are valid only for the auxiliary pack. Note that there canbe at most one auxiliary pack known to Micro-Exec at a given time. In user mode,one should be careful to "dismount.auxiliary.pack" before leaving Micro-Exec to avoidconfusion.print.disk.configurationPrints disk configuration in the format illustrated above.print.disk.error.countPrints the total number of disk errors (both recovered and unrecovered) since Micro-Exec was started.print.program.directoryPrints the name and size (pages) of each program in the current program save area(usually save area 2).quit (user mode only)Returns control to the Tenex Exec.read.specified.disk.page (default 20)Reads specified page into buffer at location BUF.read.tape.to.core (stand-alone only)Reads tape into core starting at location 20.read.tenex.from.area Loads Tenex from specified area and checks its "fingerprint".read.tenex.from.file (user mode only)Loads Tenex from the specified file (default extension .SAV).read.tenex.from.tape (stand-alone only)Loads Tenex from tape and checks its "fingerprint".reset.disk.error.countrewind.tape (stand-alone only)run.diagnostic.program Loads and starts the named program from the current program save area, assumingthat the program conforms to the conventions for controlling PDP-10 diagnostics.The diagnostic is run for one complete pass, and then control returns to Micro-Exec. fpi9qX Fp _s:]K:[) X"VDDTyIRQP KO KIX: FkDTB ?d=0!; 8]X6" 3 D1U1 -3,- (&= #j0!= .6c3  -  %CFx< ;: g<[Using Micro-ExecMaxc Operations52run.program Loads and starts the named program from the current program save area.scan.disk.pack.for.errors (default 0)Scans pack, counting soft errors, and reporting non-recoverable errors to console.set.disk.configuration (stand-alone only)Sets disk configuration; asks for parameters via the same format used inprint.disk.configuration.set.disk.error.retry.countOverrides the default disk error retry count in certain commands.set.disk.timeout (stand-alone only)Sets the disk timeout interval (seconds), at the end of which Micro-Exec will reportthat it has timed out.set.program.save.area Declares the program save area to be used for subsequent program operations("run.program", etc.) Default area is 2.silent (C)Completely turns off disk error typeouts (useful for setting up scope loops forhardware debugging).start.tenex.from.area (C) (stand-alone only)Reads Tenex from the specified area and starts it at SYSGO1.test.memory.fast (stand-alone only)Runs a quick (~30 second) memory checkout and summarizes errors found. Alsobuilds a map of bad memory for communication to Tenex.test.memory.slow (stand-alone only)Runs a thorough (~8-minute) memory test and summarizes errors found.test.memory.verbose (stand-alone only)Same as "test.memory.slow", but errors are printed out individually rather than onlysummarized.test.memory.write.fast (stand-alone only)Undoes the effect of test.memory.write.slow.test.memory.write.slow (stand-alone only)Sets a mode flag that causes subsequent runs of the memory test to write data intomemory using a more conservative (but slower) method than usual. Try thiscommand if the memory test crashes due to "fatal error from wrong place in code".verboseReinstates full disk error typeout.)fqX;pi  _sX]KF Y,XR T)RIQ MKA HY4F6D AR?K=) :K 806 3CX31y< .#,<3*r6 'X#%5D !&2". X), )RJ )(  X# <]oMaxc OperationsUsing Micro-Exec53verify.disk.test.pattern (default 0)Reads the auxiliary pack and verifies the data written by a previous "initialize.disk.pack"or "write.disk.test.pattern", reporting any discrepancies (up to a maximum of 5 per page).write.core.to.tape (stand-alone only)Writes core from 20 to 347777 onto tape.write.disk.test.pattern (default 0)Writes random data on all pages of the auxiliary pack, then rereads and verifies it,reporting any discrepancies (up to a maximum of 5 per page).write.micro.exec.to.area (C)Writes a bootable (via NVIO "B" and "S" commands) copy of the currently runningMicro-Exec to the specified area. (Ordinarily Micro-Exec is kept on save area 1.)write.micro.exec.to.tape (stand-alone only)write.specified.disk.page (C) (default 20)Writes page from memory location BUF to specified disk page.write.tenex.to.area (C)After checking "fingerprint", writes Tenex core image to specified area.write.tenex.to.file (user mode only)After checking "fingerprint", writes Tenex core image to specified file (defaultextension .SAV).write.tenex.to.tape (C) (stand-alone only)After checking "fingerprint", writes Tenex core image to specified tape.A more compact summary of Micro-Exec commands is given in the following table:14.3. Micro-Exec Command SummaryDisk Configuration Commandsset.disk.configurationprint.disk.configurationmount.auxiliary.pack dismount.auxiliary.packDisk Pack Copy and Compare Commandsinitialize.disk.packcompare.disk.packs copy.pack.to.pack copy.quadruple scan.disk.pack.for.errors Save Area and Other Commandsdump.save.areas.to.auxiliary.packload.save.areas.from.auxiliary.packdump.core.to.area load.dump.from.area write.micro.exec.to.area install.new.microexec fpi9qX Fp _s$]K[[Z X4VD( R#Q GO=< K#J'(H6R DX: ARI?< <:KH 6/5P3C /X9.H *N #r! bts*+!*+ [t#s*+*+# ts!*+# *+ **+l <](Using Micro-ExecMaxc Operations54goto
clear.coreddteddtread.tenex.from.area write.tenex.to.area start.tenex.from.area goProgram Save Area Commandsset.program.save.area initialize.area.for.programsdump.program erase.program print.program.directoryrun.diagnostic.program run.program Disk Test Commandsreset.disk.error.countset.disk.error.retry.countprint.disk.error.countset.disk.timeout write.disk.test.patternverify.disk.test.patternexercise.disk.random exercise.disk.specific briefverbosedebug.disk.controller silentread.specified.disk.page write.specified.disk.page loop.on.specified.disk.page Memory Test Commandsfind.chip.for.address
test.memory.fasttest.memory.slowtest.memory.write.fasttest.memory.write.slowtest.memory.verboseTape Unit Commandsinitialize.tape rewind.tape read.tape.to.core write.core.to.tape read.tenex.from.tape write.tenex.to.tape write.micro.exec.to.tape check.next.tape.file User Mode Commandsdump.core.to.file load.dump.from.file read.tenex.from.file write.tenex.to.file load.program quit)fqX;pi _sX *+ ]K*+[*+Y*+ VDtTys*+R*+P*+%O KtIs*+H*+!FH*+D}*+B*+@$*+?-=S.;0 8t6Ks/4*+2*+0 -zt+s*+)*+(*+&O*+ "t!s*+H*+}*+4 6and answer the LOAD FROM FILE question. Type rubout and try again if you make a mistake.This zeroes the first 32K of main memory before loading.If you are in Midas, type6,DMPLD;TNormally you will have to prepare locations 3, 4, and 7 before running the program. To makethese changes, proceed as follows:DMPLD LOAD FROM FILE: AUXD NVIO/H 3/ 0 nnnnn 4/ 0 nnnnn7/ 0 nnnnnM...OK.DEB DMPLDDMPLD%DUMP$RDUMP TO FILE: AUXXThe file will typically grow by a substantial amount when this is done because DMPLD does notcompress out zeroes when dumping.DELETE AUXDRENAME AUXX AUXD------------------------------1At present, the only way to create such a file on the Nova disk is to dump it from Maxc memory using DMPLD.When Maxc was originally being bootstrapped, such files were created using a program called Mtape, which read Tenex"Mini-Dumper" tapes mounted on a 7-track drive which no longer exists. fpi?qFp&M_rX \1s t; Zf VWuVtB U*D S_ NrX Kat;G D}N B8 ?AX; 8]!; 6"23  1UX!b01U //4/ --i`-H-i- ++`+H+\+)`*+H)\*+( (`&? & $tS$"#!6G !6 9$ !X u C:1 m FV >[;$DMPLDMaxc Operations56If you want to dump a PDP-10 program you have created in core, you must exit back to DOS (bycontrol-A or ;X to Midas). Then dump the first 32K of main memory by typingDEB DMPLDDMPLD%DUMP$RThe program will then ask DUMP TO FILE: and you should type a file name. If you make amistake type rubout and try again.15.2.Required Format for Standalone PDP-10 ProgramsDMPLD requires the program to be a .SAV file which resides in the low 32K of main memory.DMPLD currently zeroes the low 32K of core before loading the program.The interprocessor communication locations must be set up with pointers as follows:3/MTBSMagtape, IMP, MCA, etc. 300-word block (octal; may grow later)4/DLSBSData line scanner 104-word block7/STADRProgram starting addressNote that these are absolute main memory locations in the "shadow" of the accumulators, so they mustbe initialized in one of three ways:(1)By hand from Midas or ODT(2)By mapping page 0 to a different virtual address(3)By using the JMC's for addressing absolute main memory addresses.The program must perform an I/O reset (CONO APR,200000) before carrying out input/output toany Nova related peripherals and after initializing MTBS and DLSBS as described above.)fq;pi  _t Q ]KLYXXVD R= Q" L{rX. I t: G?F CXS@[?>< 9Td 7$42L00A -%st +E!st0 *>= Maxc OperationsHardware Diagnostic and Maintenance Procedures5716. HARDWARE DIAGNOSTIC and MAINTENANCE PROCEDURESThis section discusses operation of various hardware diagnostic software and firmware.Microprocessor diagnostics are normally used to isolate suspected failures of the microprocessor orport hardware. Micro-Exec memory and disk testing commands are generally used to isolatesuspected failures of disk units and main storage modules.The microprocessor diagnostics require that a small nucleus of the microprocessor and its interfaceto the Nova/Alto be working, before meaningful failure diagnosis can take place. When a failurehas occurred in this essential nucleus, the Midas "Test-All" command (Maxc2 only) andSMIDiag.run (Maxc2 only) are used to isolate the failure. TR has been used for this purpose onMaxc1, but the last year or so we have not been able to recover TR from any of the old tapes onwhich it is stored. We have had to patch test loops into NVIO and use a scope to fix problems inthe essential nucleus on Maxc1.MemBash and TM (Maxc2 only) have been used to check out memory reference interferenceproblems and failures in the Alto memory interface.16.1. Running Microprocessor DiagnosticsThe microprocessor diagnostics are normally kept on the Nova or Alto disk and (for Maxc1) on the10SYS tape.You must obtain the notebook labelled "Microprocessor Diagnostics" or "Maxc Diagnostics" inorder to do any useful debugging. However, the diagnostics all fall into a common pattern and theycan usually be run in a simple-minded way without understanding too much about what theprograms are really doing. The following generalizations may be helpful.Associated with each of the diagnostics described below is a command file whose name is the sameas that of the diagnostic. If you type to Nova DOS or to the Alto Executive:MIDAS diagname Midas will load the diagnostic and show registers pertinent to the diagnostic's operation on thedisplay. You may wish to set some parameters before starting a diagnostic (for example, the lowand high addresses for a memory test). However, the values as loaded are reasonable for thoroughtesting.When you are ready, type START;G to start the diagnostic. (DGM has two alternate startingaddresses for interrupt system testing.) The diagnostic will halt after one pass at IMA=20 (DGIMLis the only exception to this rule: it breaks at 3200 on Maxc1 and 7200 on Maxc2). This meansthat no failures were detected. To repeat, type ;P to Midas. To loop indefinitely, delete thebreakpoint at 20 by typing 20;K and then ;P. All of the diagnostics except DGM loop in less thantwo seconds, so something is wrong if the machine hangs in the loop.A breakpoint at any location except 20 indicates that an error was detected. The most commonerror breakpoint is at 25 or 26, the comparison error breakpoint. The location in the diagnostic fpi'qX&FpA_r3 \1s^4_" Zf` X? V: S_>% QM O"#7t s M t s ; L5*5 Jj#> H E-t s" Cc3 ` >#  9! T  #< B#< w-4 D ;] pa T )>\Hardware Diagnostic and Maintenance ProceduresMaxc Operations58from which the comparison routine was called is displayed at STK 0. On Maxc1 the .LS listing foreach diagnostic gives address symbols and their values, sorted in order of value so that thesymbol nearest the error address may be found readily (you normally are interested in IM memoryaddresses only). On Maxc2, you can get Midas to tell you the nearest label by selecting the valueto the right of "STK 0" with the middle mouse button. Following the .LS listing is the diagnosticlisting, which contains general operating instructions in comments preceding the program itself.DBEG0 is assembled or loaded ahead of some diagnostics, so its listing and .LS file may also berelevant. Some diagnostics INSERT other files or are assembled from several sources, so you mayhave to look a bit to find the relevant listings. When tracing an error, find the tag nearest theaddress in STK 0 (if the breakpoint is at IMA=26) or IMA (if the breakpoint is elsewhere) andread the comments there from the listing.If the breakpoint is at IMA=26, the diagnostic may be resumed from the point of error by thecommand ;P, which will return to the caller of the compare routine (this usually works butnot always).One common problem that occurs on Maxc1 when running diagnostics is that the microprocessorsingle steps and refuses to run. The usual cause of this is a memory interface hangup. This may becured by performing the "Reset Memory" operation of NVIO, as follows:!NVIO.SV/H/R NVIO:M...OK.If the machine still hangs, run POWER ON and see if that cures the problem. If that fails, runPOWER OFF, wait for several seconds, and run POWER ON again.The diagnostic names and what they test are listed below:DGBASIC.MBMost basic diagnostic. Does not use the main memory, the inter-rupt system or the P-register input multiplexors. Tests everthingthing except the SM, DM, DM1, DM2, LM, and RM memoriesfirst, then tests these memories and the F-register. Cycle time < 1second.DGP.MBTests the P-register inputs and a few afterthoughts fromDGBASIC.MB. Cycle time < 1 second.DGALU.MBTests an assortment of P-register, Q-register, and ALU operationsusing random numbers. Cycle time < 1 second.DGM.MBTests the memory interfaces. There are alternate entry points atSTART and XSTART for interrupt system testing. Be sure to readthe listing comments before starting at XSTART. Cycle time ~ 20minutes to test each 128K of main memory; correspondingly less ifthe address range is restricted. Note: After running DGM, youhave to go through the "Power Up" procedure before running thePDP-10 microcode again, because certain low core locations thatmust be zero are not left zero by DGM. This will cause animmediate NVIO punt, if you forget to do this.)fqX.;pi  `sQ ^? ](X []E Y\ W6* UW T3` RhN P4) N) KaV I: G DZ Q Ba @E< =SX;9Q9fU99fW9 6KK 4< 1X9- $+ 7*6(=-&s#8!6#6 -$%'(*]"ts( ? * 3. >^DMaxc OperationsHardware Diagnostic and Maintenance Procedures59DGI.MBTests the interrupt system and repeats parts of DGBASIC and DGPaffected by interrupts. Cycle time < 1 second.DGIML/DGIMH.MBTests the SM, DM, DM1, DM2, and MP memories using randomnumbers, then the instruction memory (IM) first by using each ofthe 72 patterns of a single 0 in a field of 1's, then the 72 patterns ofa single 1 in a field of 0's, then random numbers. DGIML runs inthe top of IM and tests the memory below it, while DGIMH runsin the bottom of IM and tests the memory above it. Cycle time < 3seconds.Alternate starting addresses exist to test only IM, only MP, or onlySM/DM/DM1/DM2 (which are physically a single memory).There are a number of special loops for repeating test sequencesthat have provoked failures in the past.DGRL.MBTests the right register bank (RM) and the left register bank (LM)using random numbers. Cycle time < 1 second.DGMR.MBTests the main memory using random numbers. Cycle time ~ 5seconds. Note: After running DGMR, you have to go through the"Power Up" procedure before running the PDP-10 microcode toclear several low core locations that must be zeroed but are smashedby DGMR.DGREG.MBTests assorted registers with random numbers. Like DGALU,DGREG is a reliability diagnostic that supplements the basic testsin DGBASIC and DGP. Cycle time < 1 second.16.2. Running PDP-10 DiagnosticsPDP-10 instruction diagnostics 0A through 0N and 0R may be run on Maxc either in stand-alonemode or under Tenex. We use them only for checking out new PDP-10 emulator microcode andnot for hardware diagnosis (which is what they were originally intended for). Some of them havebeen patched to account for Maxc incompatibilities.There are two methods of running PDP-10 diagnostics stand-alone. The more convenient is to runthem from Micro-Exec by means of the "run.diagnostic.program" command. However, if themicrocode is working so poorly that Micro-Exec won't run, the other method is to load them fromthe Nova disk using DMPLD or from the Alto using AltIO's "Load" command.Running diagnostics from Micro-Exec is simple. All the diagnostics that will run on Maxc arestored as programs on save area 2. They may be listed out by the "Print.Program.Directory"command. To execute a single pass of a given diagnostic, type:*Run.Diagnostic.Program fpi'qX&Fp_s%]K/Y  +X/VD+Ty)R"P%OK/I5H1FH(B&A -="; ts:'89*6o2:126 /h+ (rX! %5sM #jD ![ 3 c[ @ =" H #: 6% ?  3 X* @ C=[!Hardware Diagnostic and Maintenance ProceduresMaxc Operations60Control returns to Micro-Exec when the diagnostic is finished. To make the program loop forever,type:*Goto 4000 The iteration count (a decrementing negative number) may be displayed by examining Maxclocation 1. To abort this, you have to either reboot Micro-Exec or halt the microprocessor withNVIO/AltIO "H" command and then restart Micro-Exec with "20G."Running diagnostics using DMPLD or AltIO is somewhat messier. This procedure should be usedonly when, due to hardware or microcode problems, it is impossible to run the diagnostics fromMicro-Exec.Maxc1: The procedure is as follows:1)Load the diagnostics from the "PDP-10 Diagnostics" tape using the DOS "Load" command. (Itis not possible simply to FTP them from Maxc2 because the file format used by DMPLD isdifferent from that used by FTP.)2)Load the PDP-10 microcode by means of the "MIDAS TENLOAD" command.3)Load the selected diagnostic into Maxc memory by means of DMPLD (see Section 15).4)Enter NVIO by typing:!NVIO.SV/H 5)Using ODT, make the patches listed on a sheet of paper at the beginning of the diagnostic listing.6)Start the diagnostic by typing::4000G...OK.Maxc2: The procedure is as follows:1)Retrieve the diagnostics from the directory on Maxc1 using FTP. Only afew diagnostics will fit on the Alto disk at once.2)Load the PDP-10 microcode by means of the "MIDAS TENLOAD" command.3)Enter AltIO by selecting the "AltIO", "Dont-Go", and "Do-It" menu items.4)Load the selected diagnostic into Maxc memory by means of AltIO's "Load" command. Thenmake sure all the patches have been made.5)Start the diagnostic by issuing the "Go" command.)fqX.;pi  _s&; ]KYY KY Vg4# TE R> O`= MB K HYtsX D2V C'/ AR! =2XB :n2Q 6233 3 02b ,2)4Q()4r(W)4 %ts "P2B 2 2XB 2H 02-* e) 2X1 =W_Maxc OperationsHardware Diagnostic and Maintenance Procedures61On Maxc1, the directory contains all the PDP-10 diagnostics, along with a set ofRUNFILs for running them in user mode under Tenex (note that diagnostic 0D cannot be run inuser mode). The script named .RUNFIL will cause the specified diagnostic to bestarted and run forever (type control-B to stop). Additionally, there are command filesBASIC.RUNFIL and RELIABILITY.RUNFIL which execute one pass of diagnostics 0A-0H and0I-0N respectively.16.3. Memory MaintenanceMemory maintenance is scheduled periodically every 3 months or so to replace storage ic's thathave failed. Because the memory is error-corrected, the system can be operated with a number ofbad components, so memory maintenance is not scheduled until the number of failures becomessignificant.The procedure for doing this is as follows:1) Schedule the system down using the procedure discussed in "Stopping Tenex."2) At the appointed time, the system will halt; then unprotect NVIO/AltIO with 3301P.3) Boot MicroExec with the NVIO/AltIO "B" command.4) Run "Test.Memory.Slow" as discussed below. You want to get output on paper; on Maxc1, theconsole terminal has paper output, so nothing special is required; on Maxc2, you should issue the"Diablo Printer On" command to AltIO before starting the test.5) Power down the system as discussed in the "Power Down" section. On Maxc2, it is possible topower-off only the memory (so you don't have to turn off the disks).6) Pull the cards affected by bad chips and mark the bad ic's with a magic marker; interpret theoutput of "Test.Memory.Slow" as discussed below. Record the serial numbers of the boards pulledfrom each position and attempt to restore the cards to their original positions after repair.7) Replace the bad 1103 ic's or, if that isn't possible, use the spare memory cards in the rack abovethe Maxc2 Alto. (Refer to Appendix A for diagrams showing memory board and chip locations.)8) Restore the repaired cards to their original positions (if using a spare card, mark the bad cardwith the complete failure information using a piece of paper and scotch tape).9) Power up the system as discussed in the "Power Up" section.10) Reload the microcode and restart AltIO/NVIO and MicroExec using "Midas MExecGo," asdiscussed in the "Loading the PDP-10 Emulator" section; repeat Test.Memory.Slow to see if therepairs have been successful.11) If everything is ok, restart Tenex. fpi'qX&Fp _s=! ]K; [Z Y!"I W= V! O`r KsA J##= HYS F CX+ ?N <8U 82 5U7& 3a 1> .MG ,D )B 'F00 %|] " S ?q s7 /4 N X> W TM  X' =[;Hardware Diagnostic and Maintenance ProceduresMaxc Operations62Memory maintenance is performed with the aid of Micro-Exec.1 After loading the microcode andstarting up Micro-Exec, simply type:*Test.Memory.Slow This requires about 6 minutes to test all 384K of memory. All data, tag, and parity bit failurescause an error count to be accumulated for the affected chip. The physical location of each chipwith errors is reported at the end of testing each memory cabinet, along with the pages affected andthe error count. Every word in memory is tested 82 times using various patterns, so every chip iswritten into and read from 83968 times. Hence, a total chip failure will generate on the order of40000 errors (since it will yield the wrong value approximately half the time), while a solid singlebit failure will generate on the order of 40 errors.Conclusively diagnosed check bit failures are also reported in this manner. For check bit failuresthat Micro-Exec cannot diagnose (due to an insufficient sample or lack of any obviously failing bitpattern), information is printed out as to the frequency of zeroes and ones in the correct values ofeach check bit. Since the check bits can't actually be read, the best that can be done is to deducewhich check bit is failing on the basis of these frequencies.The "Test.Memory.Verbose" command does everything that "Test.Memory.Slow" does, but alsoprints out the address, error type, correct data, incorrect data, and exclusive or for every error. Forcheck bit failures, the correct data and the computed Hamming code are printed out. Thiscommand will generate reams of output unless the memory is pretty clean to begin with.If the diagnostic crashes due to "fatal error from wrong place in code", one should re-boot Micro-Exec and issue the "Test.Memory.Write.Slow" command before running the memory test. This setsa mode switch that forces Micro-Exec to use a more conservative (but slower) method of writingdata into the memory under test.Maxc2: To obtain hardcopy of the memory error printout, issue the "Diablo Copy On" commandin the AltIO command window before starting the memory test.Because of error correction, Tenex can run ok with bad bits and even bad cards in the memorysystem. Exception: a double error in pages 0 to about 217 will prevent Tenex from running. Non-hardware-maintainers should ordinarily not attempt to repair the memory system. However, thefollowing instructions for locating failures reported by Test.Memory.Slow (or Test.Memory.Fast) areprovided, just in case.The error printout is of the form:Quad q Cab c Card d Col h Row r Pages 1360-1367 bit 14, 10 errorswhere q is J, K, L, or M; c is 0 to 3; d is 1 to 16; h is 0 to 11; and r is 0 to 7.------------------------------1There is also a Maxc memory diagnostic called TMEM which runs on the Nova, but it does not test memory asthoroughly, does not find bad check bits, and requires the use of a second program, PER, to analyze failures. Theseprograms are therefore not documented here.)fqX.;pi  ^s;_9u^s! \$YoY YoX Ua T3W Rh Y PF NH MU K>4 G): FM D7;ts BlF @= =/X ;eQ 9$5 7V 4^L 2Y 0-1 . +ts J )< &O\ $H "2+ ,7 % X"AB S 1u  J c ;+ =[Maxc OperationsHardware Diagnostic and Maintenance Procedures63The cabinets are numbered consecutively 0, 1, 2, ... starting with the one next to the processor. Thequadrants are each represented by a row of 16 cards starting at the top of the cabinet, so J is thetop row, then K, then L, and M is the bottom row. In each row the cards are numbered 1 to 16starting at the left as you look from the back of the cabinet. (Ref. Figure 4, Appendix.)If you hold the cards with the ic's up, edge connector toward you, the storage chips form an arrayof 12 columns by 8 rows starting with 0,,0 in the lower right corner. The other parts on the boardare 12 address drivers on the left and right and 6 sense amps and other stuff next to the edgeconnector. (Ref. Figure 5, Appendix.)In an emergency, you can replace a card with one of the spares in the unused rack above theMaxc2 Alto. If you have to do this, be sure to attach the error printout and a note about where thecard came from to the card you remove; leave the card on the table in the Maxc room so systemmaintainers can find it.16.4. Disk MaintenanceMicro-Exec is used to diagnose most disk problems. The assortment of commands for doing thisare discussed in the Micro-Exec section. Two microdiagnostic programs called DSKD and EXAMare also available. However, these programs are only of interest to Ed McCreight--they are notintended for operation by novices.Micro-Exec reports disk addresses in the following format:0FFPPPHHCCCSwhere:FF = function (04 = read, 10 = write)PPP = pack numberHH = head numberCCC = cylinder numberS = sector numberBasic test procedures are as follows:a)Scanning a system pack for errors:*Scan.Disk.Pack.For.Errors This prints out both soft and hard errors, and provides no way of telling which errors arehard. To find only hard errors:*Set.Disk.Error.Retry.Count 20*Scan.Disk.Pack.For.Errors fpi'qX&Fp _sV ]Kc [L YFr qs VDM TyF RX Pr qs MrV KO I,1 H ARr =s P <-. :KW 8" 5:1 .**X%('#%X# %C"98! A 99!h x=YHardware Diagnostic and Maintenance ProceduresMaxc Operations64b)Writing and verifying a test pack: (Note that pack 100 is reserved exclusively for thispurpose.)*Mount.Auxiliary.Pack *Write.Disk.Test.Pattern (Writes and verifies test pattern)*Verify.Disk.Test.Pattern (Verifies already written test pattern)*Dismount.Auxiliary.Pack (when done)c)Observing disk data on a scope:*Loop.On.Specified.Disk.Page This repeatedly reads a single page, ringing the bell (Maxc1) or blinking the screen(Maxc2) whenever an error is detected. Type DEL to terminate.Following Tenex file system crashes, where fatal read errors in directories have occurred, thefollowing general methods help to isolate the cause of the failure.1. Turn on the "Read-Only" switches for all the system disk packs.2. Use Micro-Exec S.D.P.F.E to find out which drives/packs/controllers are causing trouble. If aparticular pack suffers many failures, but the others seem ok, it is likely that the common controlleris ok, but that something is wrong with either the unit controller or disk drive that is experiencingthe failures. If the failures are confined to a particular head, it is likely that that head is misalignedor broken.3. If a pack produces many irrecoverable read errors on one drive, try mounting it on another driveand using S.D.P.F.E. If it can be read ok on the other drive, then it is likely that there is somefailure in the read electronics of the original unit controller or disk drive; otherwise, it is likely thatthere is a failure in the write electronics of the original controller/drive.4. Try writing a test pattern on a test disk pack on a good drive (Pack 100 usually used for thispurpose because it does not have any bad spots.). Then mount the pack on the suspect drive anduse S.D.P.F.E to see if it can be read correctly. If it cannot be read correctly, you have furtherindication of a read electronics failure; if it can be read correctly, then you have furtherconfirmation of a write electronics or head failure.5. If you determine that a particular drive/controller combination is broken, you can determinewhether it is the drive or controller by recabling the suspect controller to a working drive and thesuspect drive to a working controller. (Refer to last two paragraphs in section 14.1 for a discussion ofwhat to do if the disk configuration is changed.)16.5. TMMaxc2 only. TM is a Maxc memory diagnostic that runs on the Alto. It is used for basicdebugging of the memory system, or when the memory is too sick to support Maxc programs such)fqX.;pi C`s M^9[#9Y@9WF9V!)CR9O=; K5 J> FO DC ARXC =_ <&@ :K7. 8+@ 6 3Cd 1y>% /f -M '#T %XA #B! ! O 4 ` L t(srt '1 fr t s8 *W 6 =](Maxc OperationsHardware Diagnostic and Maintenance Procedures65as Micro-Exec. TM is documented separately in a memo entitled "The Maxc2 Memory TestProgram and Other Folklore", by Larry Clark.16.6. MemBashMaxc2 only. MemBash is an Alto program that beats on the Alto/Maxc memory interface whilemonitoring the state of the Maxc processor. It is intended to be run at the same time as a Maxcmain memory micro-diagnostic (DGM or DGMR) to provoke problems that arise under conditionsof memory contention.The Maxc micro-diagnostic should first be loaded using Midas and the end-of-test breakpoint at 20removed by typing "20;K". Then exit Midas, start up MemBash, and issue the "Go" command.The program runs until any key is struck.If any error occurs (in the processor, memory, or Alto memory interface), the state of the memorysystem and all the memory interfaces is displayed. The processor is then restarted at the beginningof the micro-diagnostic.The Alto memory operations executed by MemBash are ordinarily sequential reads through the first256K of memory. The "Alto Operation" command may be used to select write or RMW operationsor to specify that the Alto beat on a single memory location.MemBash may be exited by means of the "Quit" command.16.7. SMIDiagMaxc2 only. This program is a diagnostic for the Alto System Maintenance Interface (SMI). Itsoperation is very simple, and one should step through the various available commands using the "?"feature.There are two main tests, one for the address register and the other for the data register. In eithertest, one may use data patterns consisting of all zeroes, all ones, alternating ones and zeros, orrandom data. Important: Before running the address test with random data, it is necessary todisconnect the SMI cable to Maxc and install a terminator on the Alto interface.16.8. AITestMaxc2 only. Alto-IMP interface test.16.9. TRMaxc1 only. TR is a Nova program that tests the registers and memories of the Maxc1 processor. fpi'qX&Fp _sI ]K, Vr St s@ QNV OI M JG@! H|Y F) C@ U AuD ? <8Z :n1* 8= 51X5 .qr *t s> )4(: 'i #H "-T b t s2 P r etX s r 3t sC >^Hardware Diagnostic and Maintenance ProceduresMaxc Operations66Since it uses the same routines as Midas to read and set the processor state, Midas will probably notrun if TR doesn't run.The program runs under DOS. It takes six kinds of arguments:WThe registers and memories are referenced by numbers as follows:0PC14--1IMA15LM2P16--3Q17RM4X18--5Y19SM6AC20--7F21DM8MAR22--9KMAR23MAP (0 to 511 only)10MDR24--11MDRL25IM[0:35]12KMDR26--13ARM27STACK28--29IM[36:72]30--31MAIN (0 to 64K-1 only)W > 18 refers to a memory and will be written M below.VValue, which is a positive integer < 2**48 and is taken as decimal unless suffixed by"R8". To add n zeroes to the end of the number suffix it with "En". Thus 64 =100R8 = 1E2R8.AAddress, which is exactly like a value.IIncrement of the form i j k, where i, j, and k are Vs. The increment i j k is t for t:= istep j until k. Hence the increment 1 3 10 produces the sequence 1, 4, 7, 10.RRotate, of the form i j k as above, which produces the sequence t for t := i, 2 t + Jwhile t <= k. Hence the R's.SSequence of addresses, which is exactly like an increment.The simplest calls of TR are:TR W V to write V into register W and read it back.TR M V A to write V into address A of M and read it back.Only errors are printed (in octal). The switch /T prints each value written and read, and /Nsuppresses printing. The switch /F sends the printing to a file which is given as the first argument.)fqX.;pi  _sT ]K YX=Vg@R"'Q+"'O`"'M"'K"'J"'H6"'Fk"'D"'B"'A "'?A"'=v"';"'"9'"8'"6K'"4'16-;+6* &X'#$E!YN>X: 97;  3 + I y>]5Maxc OperationsHardware Diagnostic and Maintenance Procedures67Thus:TR/F FOO 3 77R8tests Q with 77 and writes the errors to FOO (which must not exist already).TR/I W ITR/I M I ATR/R W RTR/R M R Atest the register or memory location with each value of the increment in turn or with each value ofthe rotate in turn.Two switches make sense for memories only:TR/S M V Stests each address in the sequence. V may be replaced by I or R if the appropriate switch is used.Each location is tested with all the values of the I or R before going on to the next.TR/A M V Swrites V into all the addresses and then reads them back. Again I or R may be used, in which casesuccessive values are written into successive addresses. On successive cycles of the test the i and kof s are incremented by 1.Thus TR/A/R 19 1 0 7 100R8 1 104R8 does:100 1101 3102 7103 1104 3101 1102 3103 7104 1---Summary of flags:Aaddress rangeTR/A/R 10 0 1 77R8 100 1 200Fwrite on fileTR/F FOO 3 77R8Iincrement for valueTR 3 0 1 77R8Nno typingRrotateTR/R 3 0 1 1E12R8Ssequence addressesTR/S 10 77R8 100 1 200Ttype everything fpi'qX&Fp _s[ X2LTR Q+O` K): J# FX*C@ ?9* >V:X 7E 5U^ 3 0X(,*)'F%|#! Q X &s &s &s Cx&s &s H >]oWriting a New 10SYS TapeMaxc Operations6817. WRITING A NEW 10SYS TAPEMaxc1 only. If any system files have been changed, they should exist on the Nova disk prior tobeginning the following procedure. It is assumed that all the normal system files are on the disk (ifnot, load them from the current 10SYS tape first).A.Clean up the disk as much as possible by deleting scratch files and other extraneous junk.B.Mount the new 10SYS tape on unit 0, with a write ring in it. (You must use magtape unit 0for 10SYS tapes since DOS will not handle any other drive.)C.Type:XFER TBOOT.SV MT0:0; XFER MAXCSYS.SY MT0:1 DUMP/A/V MT0:2 D.Check that everything is written ok by typing:LOAD/A/V MT0:2 "File already exists" should be printed for every file.E.Remove write ring. Label tape jacket as follows:0 TBOOT.SV1 MAXCSYS.SY2 *.* ...Current 10SYSF.Change the label on the old 10SYS tape to read "Obsolete 10SYS ".)fqX;pi _rX \1s t: ZfY X2 U*2XZ Q25% O; L{2I X/G? C2.@[ <7 9w216 4: 2p0 .- +E '2O '=@Maxc OperationsRecovery from Checkdsk Errors6918. RECOVERY FROM CHECKDSK ERRORSAs explained in Section 6, when Tenex is restarted, whether initially or due to an auto-restart after acrash, the programs Bsys and Checkdsk are run to verify the consistency of the file system. If eitherof these programs detects errors which cannot be corrected automatically, the message "Tenex notavailable: Disk needs fixing" is broadcast to all terminals instead of the usual "Tenex in operation"message, and logins are prohibited from all terminals except the two in the Maxc room.The following procedures require wheel or operator status and are intended principally for referenceby system personnel. With some assistance from a user in the Maxc room, a system maintainer canperform these procedures from a home terminal. Only in extreme circumstances should non-systempersonnel attempt any of these procedures.Errors detected by Bsys (which are usually reflected by some further errors detected by Checkdsk)indicate inconsistencies in the structure of user file directories. Fixing these requires a fairlyintimate knowledge of the Tenex directory structure; this should be left to system personnel.Information about the structure of directories may be found in the Tenex Monitor Manual, sectionVII, pages 2-5. Other helpful information is available in the Bsys manual, pages 33-36. Copies ofboth these documents are kept in the Maxc room book case.Checkdsk errors come in a number of guises. For each file with errors, data will be printed as inthe following example:MESSAGE.COPY;3Filename40050172166 MDA 0} List of errors140050172170 MDA 63}1 PTE} Error2 MDA} summaryIf there are many errors in a single file, Checkdsk will print out only the first few, followed by thesummary. Study the output carefully.First, note that "NOT IN BT" errors have been corrected by Checkdsk, so don't worry about them.If these were the only errors that occurred, Checkdsk wouldn't have complained and the systemwould have flown on.The other kinds of errors reported by Checkdsk are more serious:MDAMultiply-assigned disk addressIDAIllegal disk addressPTEPage table errorMDA errors are the only ones that cause Tenex to prohibit users from logging in, since further fileactivity is likely to make the damage spread.Note that you will have to use some judgment in discriminating between garbaged page tablesand real MDA errors. A file with a garbaged page table will have an enormous error count (in thehundreds) with many categories of errors (IDA, MDA, PTE, etc). This is frequently caused by anuntimely Tenex crash occurring between directory update and page table update during new file fpi2)qXFp_r" \1se Zf_ XI V14 UV Q&> O/1 M_ L5* H*7 F,7 E-)5 CcB AQ ?9 <\,6 :7*+5UX*+3*+1*+/*+ ,K *% 'F#ts %|V # ?X@8  Y - $ts/ ] A * O v >](Recovery from Checkdsk ErrorsMaxc Operations70creation, so that the page table for the file will not have been written on the disk yet and whateverwas on that page before will be interpreted as a page table. This type of error may result in manyother files getting bogus MDA errors because some of the entries in the garbaged page table looklike valid disk addresses that happen already to be assigned.For further confirmation that the problem is a garbaged (unwritten) page table, a QFD of thefilename should reveal that it was created within a minute or two before the time of the last systemcrash. Such a file should be deleted using the following procedure:@ENABLE password !CONNECT !DELETE !EXPUNGE !This procedure causes the bad file to be expunged from the directory. A number of valid addressespossibly in use by other files may be deallocated, but don't worry about this. The system willgenerate a number of BUGCHKs for illegal disk addresses, but don't worry about this either. (Besure DCHKSW is set to zero, however, to prevent the system from breakpointing on these errors).Run Checkdsk again after performing this surgery to make sure you did it right and that there isnothing else wrong. Checkdsk will reallocate pages incorrectly deallocated by the precedingprocedure and will type out "NOT IN BT" for these.!CONNECT SYSTEM !CHECKDSK REBUILD BIT TABLE? NSCAN FOR DISK ADDRESSES? N(This currently takes about 15 minutes).After all files with garbaged page tables have been eliminated (if there were any), any further errorsare considerably more serious, particularly MDA errors. MDA stands for multiply-allocated diskaddress, meaning that a particular page has somehow been assigned to more than one file. Foreach such error, Checkdsk has printed out the second file owning the page that it encountered in itsscan of the file system; you do not yet know the name of the other owner of that page. Henceyou should follow this procedure:!CONNECT !COPY GARBAGE !DELETE !EXPUNGE !RENAME GARBAGE Repeat this procedure for all affected files. You should be careful to type the in full, including version number, so you don't mistakenly fix up the wrong file.Next, re-run Checkdsk as explained above. While running, Checkdsk will type out a number ofNOT IN BT errors whose disk addresses correspond to the disk addresses in the original MDAerror printouts; the filenames typed out will be those of the other owners of the pages that were)fqX;pi  _s23 ]KI [tsK Y= VD.. TyT RDO=8NiO=XMrQMMr&KQKQKIQI I H D"@ B_ A @ ?A/0 =vA ;? 926oQ66oX4Q4M 4 2"2"21(0"1 -( *+"D (`8' &A $.ts #-1 !6!Qm#X7Q+%/QT/dQ d QC' ( Y ]Q ": J V7t s f >]oMaxc OperationsRecovery from Checkdsk Errors71multiply assigned. It may not be obvious which owner of a page has the correct copy (a QFD ofthe filenames will include the write dates, which may give some indication; i.e. the file with thenewer write date is more likely to have the correct data), but you have done the best that can bedone by giving non-conflicting copies to everybody involved. Use SNDMSG to notify all userswho have (potentially) lost files. Both the original MDA and the final NOT IN BT files areinvolved in the loss.When you have pieced the filesystem back together to what you believe is a reasonable state, youshould open the system to users by the following procedure:!QUIT ./FACTSW[ 500000,,0 400000,,0 ABORT.^!LOGOUT LOGOUT JOB ......After you type control-C, the auto-jobs should start logging in, and shortly thereafter "Tenex inoperation" will be broadcast. fpi2)qXFp _sG ]KY [:' YA W[ V! R9' P;MrQMrMrXK/KQKI\I !IVI GH FHD}/D&D}BQB[ B @>? ;<% 9 9=.qBSYS OperationMaxc Operations7219. BSYS OPERATIONThis section describes normal operating procedures for backup and archiving by means of BSYS.Further information on BSYS commands may be obtained from the document "BSYS - TenexBackup System" by Smokey Wallace, a copy of which is kept in the Maxc room book case.The procedures are identical for Maxc1 and Maxc2, with the exception that archiving is notpresently supported on Maxc2. Separate sets of backup disk packs are used for the two systems.One should be aware of what procedures can and cannot be performed simultaneously. Only onedump of any kind (incremental or full dump, archiving, or backup to tape) can be in progress at atime. However, it is ok to perform archive retrieval (or retrieval of files from backup) at the sametime as a dump. Of course, since Maxc1 and Maxc2 are independent systems, there are norestrictions relating to simultaneous Bsys operations on the two systems.19.1. Backup ProceduresA full dump of the file system is performed approximately once a month, and incremental dumpsevery weekday, onto disk packs mounted on auxiliary drives. At present, the backup packs consistof two sets of packs for full dumps and enough packs for incremental dumps to last about a month.Successive full dumps alternate between the two sets of full dump packs, and the incremental dumppacks are then recycled until they are all rewritten with data more recent than the last full dump, atwhich point it is necessary to perform another full dump. This procedure ensures that (1) if the filesystem is wiped out, it will be possible to restore it to its state at the time of the last incrementaldump, and (2) if a user loses a file and notices its loss within one month, it will be recoverable.In addition to full and incremental dumps, a full backup to tapes is performed once every threemonths and the tapes stored in Building 34. This provides backup in case of a catastrophe such asa fire in the machine room.BSYS is organized around the use of tapes as the backup medium. Disk packs have been interfacedto BSYS at a very low level, with the result that most of BSYS still thinks it is dealing with tapes.The backup packs are laid out in a manner that allows several logical "tapes" to be stored on eachone. Every such "tape" has a "tape number" (just as with real tapes) whose format is "xxxyy",where xxx is the pack number and yy is the logical "tape" number (or "dump number") on thatpack. Hence, "Parc tape number 21402" means the second dump on pack number 214.When a full dump is performed, each pack contains a single logical "tape", since every pack exceptthe last is completely filled by its respective portion of the full dump. An incremental dump, onthe other hand, typically fills somewhat less than one pack. Hence it is possible to writeincremental dumps for several successive days onto a single pack. When a pack becomes full, thelast incremental dump will usually be split between the last logical "tape" on that pack and the first"tape" on the next pack. This is ok since each "tape" has its own directory and is completely self-contained. (However, the last incremental dump pack should not be allowed to overflow forobvious reasons.)A record of usage of full and incremental dump packs is posted on the Maxc room bulletin board.It should be kept up to date.)fqX ;pi "`rX ]KsA [+) YU VD6$ Ty_ Q5' O=A Mre K5" II CrX ?s O =3. <': :KB 8f 6H 4O 3 c /,3 -D , (` &>' %E #G9% !}R P @ W u:( < B Q KK E  DA y  2>]'Maxc OperationsBSYS Operation7319.2.Incremental DumpsEvery working day, an incremental dump should be performed, preferably during periods of lightMaxc load (e.g. before 8 am or after 5 pm). The procedure is as follows.1.Consult the "Incremental Dumps" chart to determine the pack currently being used forincremental dumps. Mount that pack on any free drive. Wait for it to be on-line before startingBSYS.2.Login as someone with "wheel" or "operator" capabilities and execute the following procedure(user typein is underlined):@ENABLE password !CONNECT BSYS !BSYS TENEX BSYS 4.03 23-MAY-75*INCREMENTAL DUMP (CHANGED FILES) Dump since t&d? No Entire file system? Yes 3.You will now be asked to "Enter backup device (mtan:, dpkn:)". Here you should enterDPKn, where n is the unit number (drive A is unit 0, B is unit 1, ... H is unit 7). Then you will beasked for the pack number. When you supply this, BSYS will attempt a Tenex "Mount" of thepack. Assuming this is successful, one or more of the following things will happen:a)"Pack has no home block. Do you want to initialize the home block?" This should happenonly for a freshly-initialized pack, i.e. one that has not been used for backup before. Since all ourbackup packs have been used many times, you should not see this question.b)"Home block type is xxxxx. Do you want to initialize the home block?" The mounted packhas been used for some other purpose and should probably not be used as a backup pack. (This isespecially true if xxxxx is "TENEX"!)c)"n dumps already written on this pack", followed by a list of the dates and times of the dumps,followed by "Do you want to overwrite these dumps?" If you are appending to the pack that wasused in the previous day's incremental dump (i.e. the most recent date printed out is yesterday), youshould answer "No". If you are recycling a pack from the previous month (i.e. the dates printedare on the order of a month ago), you should answer "Yes".d)If the number of free pages on the pack is less than 2000 and you answered "No" to thequestion about overwriting existing dumps, BSYS will say "Insufficient room for more dumps" andwill ask you to mount another pack (on the same drive). The reason for this check is to ensure thatit will be possible to write the file DIRECTORY on the first logical "tape" of thisdump.4.BSYS will then ask "Listing to file:". We keep incremental dump listings on the BSYSdirectory in files named BSYS/mm-dd-yy.INC, where mm-dd-yy is today's date. So you shouldrespond with, for example, "BSYS/7-25-75.INC". fpi:qX Fp _r [s^ YI Vg26 TH R O`2R MJ#8IiJ#XHYQH HYFQF7QFDBBB4B~BA.v@"A. @~A.?d? ?d!w? ~?d ;25 :'E 8] M 6T 3 2J 1U:, /I ,2"6 *N8( (% %2'8 #GU !}&? E : u2P 4+ R %6 K 2/& 1) D2 ( =\[BSYS OperationMaxc Operations745.Finally, BSYS will ask you to "Enter tape id:". You should respond with the same string asyou gave for the listing filename, e.g. "BSYS/7-25-75.INC".6.The dump should now proceed. BSYS prints a summary of files and pages dumped for eachdirectory (more detailed information is sent to the listing file).7.If the pack becomes full, BSYS will once again request you to "Enter backup device (dpkn:,mtan:)". You should dismount the pack, mount the next incremental dump pack, and repeat step 3above. In this case, you should always answer "Yes" to the question "Do you want to overwritethese dumps?" since you are recycling an old incremental dump pack. Be sure to update the charton the bulletin board.8.When the incremental dump is finished, BSYS will type an asterisk. The last step of the dailybackup procedure is to do an "Expunge" on all directories:*QUIT !DISCUSE SYSTEM TOTAL: 6679 PAGES LEFT, 129401 USED!EXPFILES [Long pause while expunges are done]!DISCUSE SYSTEM TOTAL: 9475 PAGES LEFT, 126705 USED!9.Tear off the listing and put it in the filing cabinet. (Fanfold to 8.5" x 11" for filing.)10.Occasionally you should delete obsolete incremental dump listing files, i.e., ones for dumps thathave been overwritten. This is most conveniently done using the program DELBSYSINC (on theBSYS directory). It requests a date and deletes all files of the form BSYS/mm-dd-yy.INC in whichmm-dd-yy is earlier than the date specified.19.3. Full DumpsThe full dump procedure takes 6 to 8 hours depending on load, so it is usually run during the day(unless you plan to be at Parc all night anyway).1.Consult the "Full Dumps" chart and select the least recently used set of full dump packs. Besure to update the chart. Mount the first pack on any free drive. Wait for it to be on-line beforestarting BSYS.2.Login as someone with "wheel" or "operator" capabilities and execute the following procedure(user typein is underlined):@ENABLE password !CONNECT BSYS !BSYS TENEX BSYS 4.03 23-MAY-75*FULL DUMP (ENTIRE FILE SYSTEM) )fqX ;pi  `s2)2 ^? [2< YB VD2D TyB RD P(8 O K2T I:FkFrFkXDQDI D B+A Q@ A ?A$=vQ= =v ;+9 6o28tF# 2s2J 12H /hQ -, &r #jsF !1 .23* c6.  '2R \8iX Q  UQ QU   i 0 i~ 6 y=]@Maxc OperationsBSYS Operation753.You will now be asked to "Enter backup device (mtan:, dpkn:)". Here you should enterDPKn, where n is the unit number (drive A is unit 0, B is unit 1, ... H is unit 7). Then you will beasked for the pack number. When you supply this, BSYS will attempt a Tenex "Mount" of thepack. Assuming this is successful, one or more of the following things will happen:a)"Pack has no home block. Do you want to initialize the home block?" This should happenonly for a freshly-initialized pack, i.e. one that has not been used for backup before. Since all ourbackup packs have been used many times, you should not see this question.b)"Home block type is xxxxx. Do you want to initialize the home block?" The mounted packhas been used for some other purpose and should probably not be used as a backup pack. (This isespecially true if xxxxx is "TENEX"!)c)"n dumps already written on this pack", followed by a list of the dates and times of the dumps,followed by "Do you want to overwrite these dumps?" The dates printed out should beaproximately two months old. Since you are re-using a full dump pack, you should answer "Yes"to this question.4.BSYS will then ask "Listing to file:". We keep full dump listings on the BSYS directory infiles named BSYS/mm-dd-yy.FULL, where mm-dd-yy is today's date. So you should respond with,for example, "BSYS/7-25-75.FULL".5.Finally, BSYS will ask you to "Enter tape id:". You should respond with the same string asyou gave for the listing filename, e.g. "BSYS/7-25-75.FULL".6.The dump should now proceed. BSYS prints a summary of files and pages dumped for eachdirectory (more detailed information is sent to the listing file).7.When the pack becomes full, BSYS will once again request you to "Enter backup device(dpkn:, mtan:)". You should dismount the pack, mount the next full dump pack, and repeat step 3above.8.When the full dump is finished, BSYS will type an asterisk. The last step of the monthlybackup procedure is to do an "Expunge" on all directories:*QUIT !DISCUSE SYSTEM TOTAL: 6679 PAGES LEFT, 129401 USED!EXPFILES [Long pause while expunges are done]!DISCUSE SYSTEM TOTAL: 9475 PAGES LEFT, 126705 USED!9.Tear off the listing and put it in the filing cabinet. (Fanfold to 8.5" x 11" for filing.)10.Delete the listing file for the full dump that has just been overwritten. fpi:qX Fp _s25 ]KE [ M YT VD2J Ty:, RI O=2"6 Mr8( K% H62'8 FkT D'7 B ?d2X =9# ;% 8]2)2 6@ 3 2< 1UB -2** ,)7 *N &21( %:!!Ir!XQ~   +@Q @ u$QT  + 28tF# 2s2XI R =Z +BSYS OperationMaxc Operations7619.4. Full Backup to TapeThe procedure for backup to tape, performed quarterly, is identical to the full dump procedure withthe following exceptions:1.The first command issued to BSYS should be "BACKUP" rather than "FULL".2.The answer to "Enter backup device (mtan:, dpkn:)" should be MTAn, where n is the tape uniton which the backup tape is mounted.3.The listing file should be BSYS/mm-dd-yy.BACKUP. After completion of the dump, this fileshould be printed in a small font (Gacha6R90) and then deleted.19.5. Continuing Interrupted DumpsBSYS records its state at the beginning of each logical "tape". If Maxc crashes in the middle of adump, this information may be used to restart the dump at the appropriate point. The procedure isas follows:1.Do not change packs or tapes, even if the dump began on a pack or tape different from the onecurrently mounted.2.Start BSYS and issue the "Continue Dump" command. Your responses to the questions "Enterbackup device" and the ones that follow should be the same as the answers you most recently gaveto the same questions.3.BSYS will print "Restarting at user xxxxx" and resume the dump (incremental, full, or backup).19.6. Restoring Files from BackupIndividual files may be restored from backup packs by the following procedure.1.Determine where the file was written, by poking around in the listing files (.FULL and .INC).When you have located in the listing file the name of the file to be restored, go up to the top of thepage to find the "Parc tape number", which will be in the form xxxyy, where xxx is the packnumber and yy the dump number as previously explained.2.Mount the pack so determined on an auxiliary drive.3.Go through the following dialogue (xxx and yy are the numbers determined above):@ENABLE password !BSYS TENEX-BSYS 4.03 25-MAY-75*RESTORE FILES (FROM TAPE) )fqX ;pi  _r [sR Y Vg2XG R2Q Q+$ M2I K? E-rX# As W ?%< >& :2usG 8 5x2E 3.u s 1 .q2#; 'rX" $>sN 2] $B 7T l6 2X3 2P8iLQQL   ` , `~ V p>\Maxc OperationsBSYS Operation77Enter backup device (mtan:, dpkn:) DPKn Mount pack number: xxx Pack xxx mountedn dumps already written on this pack[Listing of dump numbers and dates]nnn free pagesEnter dump # yy Listing to file: TTY: Mounting tape directory4.BSYS will now prompt you with "Restore DPKn:", to which you should respond with the fullfilename to be restored (including directory). Editing and recognition may be used and "*" mayappear in any field; however, BSYS's filename logic is not as good as Tenex's, and you should becareful to specify a complete filename (including version) before hitting carriage return.5.After restoring the specified file(s), BSYS will again prompt with "Restore DPKn:", and furtherfiles in the same dump on the same pack may be restored. When you have no more files torestore, hit Delete.19.7. Restoring the Entire File SystemThis is the procedure to be followed if the file system has been wiped out and it is necessary torestore it from backup.1.Load Tenex using Micro-Exec, go into EDDT, set DBUGSW to 2, and start the system atSYSLOD. To the question "Do you really want to clobber the disc by re-initializing?" answer "Y".After some amount of churning and various error messages ("No SYSJOB", "No EXEC", etc.) youwill end up in the Mini-Exec.2.A copy of BSYS is kept on Save Area 4, so to load and start it:.Load program from area 4..Start.TENEX-BSYS 4.03 25-MAY-75*3.Consult the summary from the most recent incremental dump to determine the logical "tape"on which that dump started. This is in the form xxxyy, where xxx is the pack number and yy thedump number on that pack. Mount the pack. Note that this might not be the current incrementaldump pack. (If there have been no incremental dumps since the most recent full dump, then justmount the first pack of that full dump.)4.Go through the following dialogue:*RESTORE FILES (FROM TAPE) Enter backup device (mtan:, dpkn:) DPKn Mount pack number: xxx fpi:qX Fp_s$)^_]K \]K[Y$W#V! TV S6TVR{R4%RP MO2X K Q IC GZ D}2W BO @ :'rX' 6sQ 4 1y2$/ /\ -W , (2X?%5/$%5"$%5#j/##j#W#j! c2F T 6u) sus= 9 us 2X"U U, ~U $) 3   i  y>]JBSYS OperationMaxc Operations78Pack xxx mountedn dumps already written on this pack[Listing of dump numbers and dates]nnn free pagesEnter dump # yy Listing to file: NIL: Mounting tape directoryRestore DPKn: <*>*.*;* Create users? Yes Creating users...Bypass restore checks? No 5.BSYS first obtains a copy of the DIRECTORY that was written in this dump. Thisdirectory is used to control what files get restored from this and all other backup packs, and is alsoused to restore the correct file attributes. This is why it is important that the first dump restored bethe first logical "tape" of the most recent incremental dump.6.BSYS now restores all appropriate files from the dump, then asks "More tapes?" to which youshould answer "Y". You should now specify the previous dump on the same pack, or the lastdump on the previous pack. You must restore all the dumps on each of the most recent full dumppacks and on each of the incremental dump packs more recent than the last full dump. It isessential that the incremental dumps be restored in reverse chronological order, and that allincremental dumps be restored before any full dump.7.When all files have been restored, answer "N" to "More tapes?"; then give the "Quit"command to exit BSYS and the Mini-Exec "Halt Tenex" command to stop the system. Now reloadand start Tenex in the normal fashion.BSYS also has a "RELOAD DIRECTORIES" command that may be used to restore the entirecontents of one or more user directories from backup, but less than the entire system. You shouldstart by reloading the first pack of the most recent incremental dump, just as for the full restore.19.8. Archive ProceduresWhen users request that files be archived, the files are simply marked for archiving. Twice a week(generally on Monday and Thursday), BSYS is run to archive these files onto two different tapesand then delete the files from disk (if appropriate). At any given moment, there are two "current"archive tapes. Files from successive weeks are appended onto these tapes until they become full.The tapes then have their write rings removed and are kept "forever", and new tapes are used forfurther requests.The effect of archiving a file twice is obtained by simply running the archive system twice, oncewith the first "current" tape mounted and once with the second. Generally, both tapes will end upcontaining the same information. However, occasionally a user will make a new request betweenthe first archive run and the second. In this case, the file gets archived for the first time on thesecond tape and for the second time on the first tape next week. Hence the archive tapes may notbe simply copies of each other.)fqX ;pi _sX]K$[#Y W W6WV!{UV!TVR ZR4R P PjPuPj~PNM,!VL"M,#L~M, I27 G>( F$I DZ= @2S ?Q =S u s% ;I 9us? 73 426 2C 0& -z@ +b )d #$rX sC /0 E R8) E  KN J  P P #> V >]LMaxc OperationsBSYS Operation79When a user requests that an archived file be retrieved, the retrieval request is recorded in twoplaces. File RETRIEVE-REQUESTS.TXT is a human-readable text file containing allrelevant information (filename, tape numbers, requesting user, etc.) This file is deleted once aweek. File RETRIEVE-REQUESTS.BINARY contains the same information in a formreadable by BSYS. Every working day, BSYS is run to process accumulated retrieval requests andrestore archived files from tape to disk.19.9. Organization of the Archive TapesThe archive tapes are consecutively numbered starting at 700.1 First and second archive tapes arepaired. Each tape is labelled with an identifier such as "BSYS/7-21-75.ARC/1" or "BSYS/7-21-75.ARC/2", where the date specified is the starting date for that tape, and the trailing digitdistinguishes the first archive tape from the second. When an archive tape is full, the date onwhich it became full is also written on the label, and the write ring is removed. (Actually, weusually do this before the tape has become completely full so as to avoid having archive runs splitacross two tapes. However, no harm arises if this occurs.)The tape is also marked with the tape unit on which it was written. When possible, files should beappended to a tape using the same drive on which the tape was first written, and first and secondarchive tapes should be written on different drives.19.10. Archiving Files to TapeTwice a week (preferably Monday and Thursday), the following procedure should be followed to write filesonto the archive tapes. User typein is underlined.1.If the newest "first archive" tape (marked ".ARC/1") is not full (i.e. has no ending date), makesure there is a write ring in it and mount it on the drive noted on the label. If it is full, mount thefirst unused tape on unit 2 (if possible).2.Login as yourself (assuming you are a wheel or operator; otherwise login as SYSTEM) and gothrough this dialogue:@ENABLE password !BSYS TENEX BSYS 4.03 23-MAY-75*ARCHIVE (USER FILES) Archival period (days) = 999999 Listing only? No Listing to file: LPT: ------------------------------1Tape number 999 was used on 6-28-79. At this point old tapes were scrounged up and the sequential numberingsystem went to pot. Tapes numbered 671 through 687 cover the period 6-28-79 to 8-28-79. Tapes numbered 039through 540 cover the period 9-2-79 to 6-26-80. At this point new tapes were purchased and put into use. They arenumbered consecutively from 1001 through 1098. fpi:qX Fp _s-4 ]K.* [B Y9 W*5 V!) O`rX( Ks=L{vKs$ J#] HYG F` D2. B=& A.; =Y ;Z :'4 3grX /s ts5 .*3 *27) (:. '#* #2S !t8itXQSQ0( ~J#J  ("(~{^ v o39 D( 3@ .  U=]IBSYS OperationMaxc Operations80Entire file system? Yes List to users? Yes Preface with special message? No Enter backup device (mtan:, dpkn:) MTAn Density (n=800, p=1600): P3.BSYS will now ask "New tape?". If you have mounted a new tape, answer "Yes"; BSYS willthen ask you to supply the tape number. Otherwise, answer "No"; BSYS will ask you to verifythat there is a write ring in the mounted tape.4.BSYS will now space to the end of the used portion of the tape (if any) and start writing newfiles.5.If the tape becomes full, BSYS will rewind it and again ask "Enter backup device (mtan:,dpkn:)". You should label the tape as full, remove its write ring, and put it away. Then mount thefirst unused tape (NOT the "second" archive tape) on the same drive, and go through thisprocedure:Enter backup device (mtan:, dpkn:) MTAn Density (n=800, p=1600): PNew tape? Yes Really?? Yes Parc tape number: nnnn Be sure to label the new tape properly.6.When the archive run is finished, BSYS will report the number of files and pages archived.Dismount the archive tape and put it away.7.Repeat the entire procedure (steps 1-6) to write the "second" archive tape, using the tapemarked ".ARC/2" if you append to an existing tape, and using tape unit 3 if possible. If thesecond archive tape becomes full and you get to step 5, be careful to use another new tape tocontinue archiving on. That is, don't append to the new archive tape written on during the firstarchive.8.If either archive tape is almost full (less than 1/2 inch of unused tape thickness on the reel),mark both tapes as full and remove their write rings before putting them away.9.Go to the Clover room, collect the two listings, and store them in the tape cabinet.Normally, we archive only those files specifically marked by users for archiving. However, it isoccasionally necessary to perform "forced" archiving of all files not referenced within the last n days(n is generally 90). The procedure for forced archiving is identical to the normal archivingprocedure with the following exceptions:1.The reply to "Archival period (days) =" should be 90 (or whatever interval is being used)rather than 999999.2.The reply to "Preface with special message?" should be "Yes". BSYS will then give control to)fqX ;pi _sX^_!w^~_]K\]KT\~]K[%v[)"['[)~[Y$)Y_YW$NWW Ty29 R> P/ Mr2G K H62*. Fk#A Dus B ?dX$)? ?d=$N=B=; ;x;:;x~;:9:9~:89789 4' 1U2@ /* ,2? *NK (:us &O $ !}2G N @2XT  U E" 9./ n( 21( 2 2T y>]yMaxc OperationsBSYS Operation81SNDMSG, to which you should type an appropriate explanatory message, such as "This archiveincludes all files not referenced in the past 90 days. New users will find useful informationpertaining to how the archive system works by logging in on MAXC and using either the SEE orCOPY commands to read the file Archive-System.Doc.", followed by control-Z.19.11. Retrieving Files from TapeThe following procedure should be executed once every working day to retrieve files from thearchive tapes.1.Login as yourself (assuming you are a wheel or operator; otherwise login as SYSTEM) and gothrough this dialogue:@ENABLE password !BSYS TENEX BSYS 4.03 23-MAY-75*RETRIEVE (ARCHIVED FILES) Process retrieval requests for all users? Yes 2.BSYS now sorts through all pending retrieval requests and tells you which tapes to mount:Mount Parc tape number nnnEnter backup device (mtan:, dpkn:) MTAn Density (n=800, p=1600) P[Following question asked only the first time]Listing to file: TTY: 3.BSYS automatically restores all requested files from the mounted tapes, and automaticallynotifies users via SNDMSG. When BSYS is done, it prints an asterisk.If anything goes wrong during the retrieval process, it is possible to retrieve files from the secondarchive tape. You may first have to issue an Interrogate command for the files that were notretrieved from the first tape. Then run BSYS Retrieve in the normal way, but when it asks you tomount the first archive tape, mount the second one instead. BSYS will tell you that you mountedthe wrong tape, but will go ahead anyway, if you tell it to. (Second archive tapes not found in tapecabinets are stored in boxes in the Maxc machine room behind Maxc1 disk drives.) fpi:qX Fp _s P ]K^ [5' YP RrX" OsS M JG2S H|E 8DiE XC@QBQC@Au??S?,?S~?=**==-=~= :n2Y651$)4513g#33g1./{/z%/ ,_2: *E '#O %XT #U !I ?u .Os =J$Loading the Nova DiskMaxc Operations8220. LOADING THE NOVA DISKMaxc1 only. This procedure need be followed only if the "Maxc Nova" disk has been wiped outand must be reloaded from scratch.A.Get the current "10SYS" tape from the tape rack and mount it on unit 0.1 Note that the tapeunit above and to the left of the Nova should be selected as unit 0. Set the Nova console switchesto 100022. Make sure the tape drive is in remote and at the load point.B.Push "Reset" followed by "Program Load" on the Nova front panel. The Infoton should print out:FULL(0) or PARTIAL(1)?and you should type "0" which will clear the Nova disk directory, read-in a fresh copy of NovaDOS from magtape unit 0, and rewind the tape.C.Load files from the 10SYS tape by typing the following:LOAD/A/V MT0:n; INSTALL MAXCSYS.SY where n is the tape file containing all system files (usually 2; consult the label on the tape jacket).D.Now set the Nova's console switches to 100040. Subsequently, pressing "Reset" followed by"Program Load" will cause DOS to be re-booted from the disk, leaving the file system intact.E.If at some later time the Nova should fail to boot from disk (e.g., because the MAXCSYS.SYfile has been deleted or clobbered), it is possible to boot from tape. Mount the 10SYS tape on unit0, set the console switches to 100022, hit "Reset", then "Program Load". When the Infoton printsout:FULL(0) or PARTIAL(1)?type "1", which reads in DOS from tape but does not affect files on disk. You should now restoreDOS to the disk, as follows:XFER MT0:1 MAXCSYS.SYCHATR MAXCSYS.SY SPW; INSTALL MAXCSYS.SY------------------------------1It is customary to hang the tape jacket from the clip mounted on the door of the tape unit, and for novices to removethe write ring from tapes.)fqX;pi _rX \ws t> Z" W2@XUuWt VDF TH Q2X_Ni K>(6 I- F2X7Cc' @7?@7a = 2F ;\ 8]2K 6 W 5U W 30X -zI +(X'F( u 2 5@ D =\Maxc OperationsContents of the Nova/Alto Disk8321. CONTENTS OF THE NOVA/ALTO DISKMaxc1 only: The following is a fairly complete list of the files regularly kept on the Nova disk andon file 2 of the 10SYS tape.DOS system files and standard Nova subsystemsMAXCSYS.SYDOS boot imageTBOOT.SVTape boot programEDIT.SVEditorASM.SVNova assemblerRLDR.SVLoaderGEARS.SVEars printing programNEDP.SVEthernet diagnostic programFTP.SV, .BBEthernet file transfer programMaxc-related filesPOWER.SVTurns Maxc power on and offMICRO.SVMicrocode assemblerOMICRO.SVMicro overlayEMICRO? (needed by Micro)MIDAS.SVMicrocode loader/debuggerSYS.MBPDP-10 emulator microcodePATCHES.MBPatches for SYS.MBTENLOADMidas commands to load microcodeTENCSUMMidas commands to display recomputed checksums for newly-assembled microcodeMEXECGOMidas commands to load microcode, start Micro-ExecTENGOMidas commands to load microcode, start TenexNVIO.SVNova I/O control programDMPLD.SVMaxc memory dump/load programTMEM.SVMaxc memory diagnostic (runs on Nova)PER.SVAnalysis program for TMEM outputTR.SVTests microprocessor registers and memories from the NovaMicroprocessor diagnostics and command filesDGBASIC.MBDGBASICDGP.MBDGPDGALU.MBDGALUDGIMH.MBDGIMHDGIML.MBDGIMLDGRL.MBDGRLDGREG.MBDGREGDGI.MBDGIDGM.MBDGMDGMR.MBDGMRDBEG.MB fpi2LqXFp_r# \1s tQ Zf VX-S " Q"O"N#" LX"J"H"F " C@">J"<" :"8"7"5U "3"1"9"/.*"2,_"-*"("'"%%5"#j"9 , """'"\""""2" g"  U=]Contents of the Nova/Alto DiskMaxcOperations84Additionally, there are usually "old" (obsolete) versions of some of the above files (preceded by theletter "O") and "new" (experimental) versions (preceded by the letter "N").Maxc2 only: The following files are ordinarily kept on the Maxc2 Alto's disk, in addition tostandard Alto subsystems.Maxc-related filesMICRO.RUNMicrocode assemblerMIDAS.RUNMicrocode loader/debuggerMIDAS.*Various auxiliary files needed by MidasSYS2.MBPDP-10 emulator microcodeTENLOAD.MIDASMidas commands to load microcodeINIT.MIDASMidas commands to load and dump newly-assembledmicrocodeMEXECGO.MIDASMidas commands to load microcode, start Micro-ExecTENGO.MIDASMidas commands to load microcode, start TenexALTIO.RUNNova I/O control programTM.RUNMaxc memory diagnostic (runs on Alto)MEMBASH.RUNMaxc memory contention exercisorSMIDIAG.RUNAlto System Maintenance Interface diagnosticMicroprocessor diagnostics and command filesDGBASIC.MBDGBASIC.MIDASDGP.MBDGP.MIDASDGALU.MBDGALU.MIDASDGIMH.MBDGIMH.MIDASDGIML.MBDGIML.MIDASDGRL.MBDGRL.MIDASDGI.MBDGI.MIDASDGM.MBDGM.MIDASDGMR.MBDGMR.MIDASDGREG.MBDGREG.MIDASDBEG.MBThe current microprocessor diagnostic sources are ordinarily kept on the Maxc2 Alto disk as well.)fqX;p  _t%@ ]KK Ys t= X TXQ+"O`"M"'K"J "H6 "/"FkD "2B "-A "?A"%=v "; ", 89,4 " 2"12" /h" -" +" *"(="&s" $" " ka $=HMaxc OperationsSoftware Maintenance Procedures8522. SOFTWARE MAINTENANCE PROCEDURESThis section outlines maintenance procedures for selected pieces of software that are in fact stillmaintained at all. The primary intent is to document the location of the sources and to identify thecurrent maintainers.22.1. MidasMaxc2 only. The current sources for Midas are kept on the "Maxc2 Midas" Alto disk (maintainedby Fiala). Reasonably current sources are also kept on [IVY]directories: MSOURCES.DM along with MIDAS.RUN, LOADER.MB, and DEBUG.MB. Thevarious Midas command files are kept on DGSOURCES.DM along with the sources for themicrodiagnostics.Before initializing Midas on a new disk, be sure that you have the following files ready:Midas.Programs(see below)Gacha10.alThe font Midas usesMidas.MidasThe initialization command fileMidas.Programs contains a list of file names separated by blanks, commas, or carriage-returns. Thenames must be typed in UPPER-CASE. This list serves two purposes. First, file pointers are builtfor all of the names to speed up OpenFile. Next, the list of names for the "Run-Program"command menu is built. If the file name contains no extension, then hint FP's will be built forboth name.MB and name.MIDAS and name will be put in the "Run-Program" menu. (However,the hint FP's are not built unless the file exists, and the file name will not be put in the "Run-Program" menu unless name.MIDAS exists.) If the file name contains an extension, then it will beput in the quick OpenFile table, but won't appear in the "Run-Program" menu.Midas creates and uses the following files:Midas.State~40 pagesBuilt for quick init by Midas/IMidas.Resume~40 pagesBuilt before calling AltIO for resumeMidas.FixUps2 pagesBuilt when external fixups occur in .MB files beingloaded (Current microcode never uses this.)Midas.Errors2 pagesWritten when "Compare" failsMidas.SymTab100 pagesWritten when symbol table overflows core buffersAltogether this is about 200 disk pages. It is desirable to do this with a pretty clean disk, so thatthe files wind up contiguous on the disk and near to each other.22.2. NVIOMaxc1 only. NVIO is maintained by Taft using a Nova disk labelled "NVIO". Backup copies ofthe source files are kept in the directory on Maxc1. fpi0qXFpa`r$ ]KsU [U Y RrX Ot sR MC K> J#8 HY DXYAu  ? =  :n^ 8O 6< 5` 3C; 1yJ /Q -L *rX+ ' I' $ I'% " I'3' +  IX' c I'0 a '@ frX t sP *; =](Software Maintenance ProceduresMaxc Operations86The NVIO source files all have the extension .NS, while command files for assembling and loadingthese sources have extensions .AS and .CF. Instructions for building a new version of NVIO areincluded as comments at the beginning of the source file C.NS.22.3. AltIOMaxc2 only. AltIO is maintained by Taft using an Alto disk labelled "AltIO/Maxc2". Backupcopies of the source and command files are kept in a single dump-format file ALTIO.DMon Ivy.AltIO may be compiled and loaded by executing the command files CompileAltIO.cm andLoadAltIO.cm respectively. AltIO makes use of a number of other Alto software packages availablefrom the directory. These packages are listed in LoadAltIO.cm.22.4. TM, MemBash, SMIDiag, Alto MicrocodeMaxc2 only. These pieces of software are kept as dump-format files in the directory onIvy. The files are TM.dm, MemBash.dm, SMIDiag.dm, and MaxcAltoCode23.dm. They arecompiled and loaded by means of command files whose names follow the conventions used forAltIO.22.5. Tenex and Diagnostic MicrocodeSources for Maxc1 and Maxc2 Tenex microcode are maintained on the "Maxc1/2 TenexMicrocode" Alto disk by Fiala. Sources for Maxc1 and Maxc2 microdiagnostics are maintained onthe "Maxc1/2 Microdiagnostics" Alto disk by Fiala.These are backed up by Alto dump files stored on the IVY directory. Common sourcesare used for both Maxc1 and Maxc2 with conditional assemblies used for parts of the microcodethat are different on the two systems.Cross reference listings of Tenex microcode sources are obtained by FTPing the sources to theMaxc1 ERF directory and doing RUNFIL CRREF.RUNFIL, which uses MCROSS to produce thecross reference listing. The same procedure is used for microdiagnostic sources except that theDCRREF.RUNFIL command file is used.22.6. TenexThe Tenex systems for both Maxc1 and Maxc2 are generated from a common set of sourcesmaintained on Maxc1 in the <134> directory (for Tenex version 1.34). Differences between the twosystems are dealt with by conditional assembly.)fqX;pi  _s7) ]KS [> TrX QNt s8 O/, M JG1" H|01 FF ?rX+ <t s9 :I 89 7 0_rX% ,s5 +"'7 )W2 %J $2+ "P& B 6 IQ ~# rX LsF E /2 p=\Maxc OperationsSoftware Maintenance Procedures87The RUNFIL scripts LOADMAXC1.RUN and LOADMAXC2.RUN may be used to assemble andload new versions of Tenex. Most of the source files are separately assembled for each system,yielding .REL files with extensions .1RL and .2RL. However, some of the assemblies do notdepend on any system parameters, so Maxc1 and Maxc2 share common .REL files for these. Whenchanges are made to any system parameters in PARAMS.MAC or PROLOG.MAC, all the .1RLand .2RL files should be deleted to force reassembly of them.The result of assembling and loading a new Tenex is a file called MAXC1.SAV or MAXC2.SAV,plus some auxiliary files whose extensions are .MAXC1 or .MAXC2. The bug string file and loadermap are also printed on Ears; these should be placed next to the log book in the Maxc room.After loading a new Tenex for Maxc1, all that is necessary is to run Micro-Exec and installMAXC1.SAV on an unused save area (e.g., 19) for stand-alone checkout. The "Read.Tenex.From.-File" and "Write.Tenex.To.Area" commands should be used for this purpose.After constructing a new Tenex for Maxc2, one should transfer the various required files to Maxc2by means of PUPFTP. These files are <134>MAXC1.SAV, BUGTABLE.MAXC2 andMONSYMS.MAXC2. These files should be transferred to the same directories andpreserving the version numbers. They may then be deleted on Maxc1. Then the file MAXC2.SAVshould be installed on a Maxc2 save area as explained above. fpi0qXFp _s9 ]KN [G YV WJ V!= RA P8( O\ K> IE HI Da BK A @ ?A N =v< =/=*Local Memory Chip ChartsMaxc Operations8823. LOCAL MEMORY CHIP CHARTSThe most common cause of hardware problems in Maxc is failure of the storage chips used in theprocessor's local memories (LM, RM, IM, SM, DM, and MAP). Once the addresses and bitnumber(s) of the failures have been determined (by means of the micro-diagnostics DGRL orDGIML/DGIMH), the chips may be located by means of the information in this section.The chips used in LM and RM are either Intel 3101A or TI 74S289, which are 16-word by 4-bitmemories. They are located on the three ALUA boards, each one of which provides a 12-bit sliceof the 36-bit Maxc ALU. In the following table, the top three rows show the card slot number as afunction of the machine and bit number, and the main matrix below it yields the chip position onthat card as a function of the memory name and address within the memory.Maxc1Maxc2CardBitsCardBitsSlotSlot2/250-34-78-112/230-34-78-11Memory &2/2112-1516-1920-232/2112-1516-1920-23Address2/1724-2728-3132-352/1924-2728-3132-35LM 0-17252627442464LM 20-37373839452565RM 0-17123553575RM 20-37131415543474Figures 1, 2 & 3 in the Appendix, prepared by Ron Weaver, show the storage chip layouts for theold and new bipolar memory cards used in the microprocessor. Old bipolar cards are used in allpositions in Maxc1 but in only the MAP slot in Maxc2; new bipolar cards are used in all otherpositions in Maxc2. Note that the bits on the old bipolar cards are arranged differently for Maxc1and Maxc2.If it is necessary to replace an entire card, one should be aware that not all the bipolar cards aredirectly interchangeable. In particular, old bipolar cards in four of the IM slots have had pullupresistors removed and cannot be interchanged with cards in the other slots. New bipolar cards usedin IM slots have different pullup resistor chips (680 ohms) than are used in SM/DM slots (330ohms); these must be changed if cards are substituted.)fqX;pi _rX \1s!= Zf6 X2' VS S_U Q-2 O>$ M;% L5IHr-Fs-4E--sA!Y(-4;eB% ?X!Y(-4;eB% >&!Y(-4;eB% :!Y(4;eB% 8!Y(4;eB% 7!Y(4;eB% 5U!Y(4;eB% 1rsrsrsrs7 0L .MH ,E * 'F_ %|): #P !R 7 =H6=Maxc OperationsCreating and Destroying Maxc Accounts8924. CREATING AND DESTROYING MAXC ACCOUNTS24.1. Obtaining a Maxc AccountMaxc directories are requested via a directory-request form obtainable from Haychan Sargent. Thefollowing forms are available:Files-only directory application (Figure 7, Appendix)CSL, SSL, SDD application (Palo Alto employees only) (Figure 8, Appendix)Xerox non-Palo Alto or non-Xerox application (Figure 9, Appendix)The top part of a directory application is filled out by the applicant and his supervisor. The formthen migrates to Hal Murray (SDD), Larry Masinter or Ted Strollo (SSL), or Ron Weaver (other)who does the following:Verifies that the directory name is not in conflict with an existing directory and that the passwordis reasonably unguessable;Approves the directory request and fills in the directory parameters on the form;For ordinary cases, the account administrators fill out the form, sign it, create the directory, andsend the form to R. Weaver, who in turn signs the form, create the account, and passes the form onto Haychan Sargent, who is in charge of Maxc account files. A non-standard case is passed to E.Fiala for approval before the directory is created. Directory creation of requests is normally carriedout by Ron Weaver (), who may also create directories for the other accountadministrators.The various steps in creating a Maxc directory are discussed below. After the directory is created,the application form goes back to Haychan Sargent who files the form and passes the new directoryinformation to Kathi Anderson for updating message distribution list files and Lynn Harrington forupdating the phone lists.For PARC personnel, the Maxc directory application may also be used as an application for an IFSdirectory on IVY. The requestor checks the "MAXC Account" and/or "IVY Account" box torequest a Maxc and/or Ivy directory. Note that only one application is filed for a directory,regardless of whether that directory exists on only Maxc, only Ivy, or both.24.2. General Information About Maxc DirectoriesPasswordsInitial passwords are required to be unpronounceable and relatively unguessable. However, there isnothing to prevent the user from changing his password later, so we can't guarantee this. We donot permit passwords for "regular" directories (as opposed to message-only directories) to be knownto more than one person; this guards the system against unauthorized access. fpi,qXFp._r* X Ups6+ SP4X"r qsNi6r qsL.r qs I-_ Gb(5 EB%Xd@[>" "s++ N L rX1 t :sP o=# K L >\xCreating and Destroying Maxc AccountsMaxc Operations90Upper and lower case characters are equivalent for passwords, so it is not necessary to be carefulabout case while entering passwords.User groups and Directory groupsTenex file and directory protection distinguishes between three classes of access:self (someone logged into or connected to the directory);same group (someone logged into a directory in the same group);others.Putting a user's login directory into a User Group allows him to access other directories in thatgroup in the same group mode.Putting a directory into a Directory Group allows other users in that group access in the same groupmode.Directories are usually setup so that new files created in that directory will permit total owneraccess, read-only same-group access, and no access to others. Most new directories are assigned tothe Computer-research user group and directory group. There are many exceptions.A list of the current groups is supposed to be kept in GROUP-LIST.NUMBERSand was as follows on 4 October 1979:0Computer-research12Graphics1System13Pogos2Mesa14Nova3Secretaries15PARC4Lisp16XMS-users5Understander17User-Sciences6Bliss18ITG7Inter-Network19Mesa-users8Customer Programming20Reyes9University MPC21SSL Group Leaders and Secretaries10Alto22JDS11Parcpub23University GrantMost Xerox user directories are put in the Computer-research directory and in no other groups.File ProtectionThe file protection assigned a directory is the default protection of new files created in thatdirectory. The file protection is an 18-bit number divided into three 6-bit groups. This numberbreaks down into three fields, identical in format, each of which can be regarded as containing twooctal digits or six binary bits. The first 6-bits define owner protection, second same-groupprotection, and third general-public protection. The interpretation of the bits in a group is asfollows:)fqX%;pi  _s.4 ]K$ YtX VgsRRX9Q+?O` KK J# t s FZt Ds Aua ?(; =Q :n(+ 8%51&s)3g&s)1&s)/ &s).&s),< &s) *r&s)( &s) &X&s)% &s)!#G&s)!}&s)  ^ tX 's7( \,5 E ? 5, 2 =Z %Maxc OperationsCreating and Destroying Maxc Accounts91B0Read contents of fileB1Write onto fileB2Execute program stored in fileB3Append to fileB4Access per page tableB5--Setting a bit to 1 permits the action; setting it 0 denies the action. Taking these six bits as a twodigit octal number, some common values are: 77, which permits full access; 52, which protects afile from modification but permits other functions; and 00, which denies everything. [Refer toFigure 6, Appendix for correct values corresponding to boxes on Files-only account request form.]Directory ProtectionIn addition to specifying the access allowed to file contents, Tenex allows directory contents to beprotected similarly. The directory protection word is composed of three 6-bit fields, one field eachfor "self", "group", and "others" similar to the file protection word. The bits have meaning asfollows:B0If off, completely prevents use of the directory in any wayB1Files may be opened subject to file protectionB2Owner functions permitted (including CONNECT) without passwordB3Files may be added to the directoryB4--B5--Directory protection can only be changed by someone with WHEEL status. Some common valuesof Directory protection are: 776060, which permits the owner to do everything, other users to read-write files according to file protection; 777760 permits the owner and same group to do everything,others to read-write according to protection (typically used for files-only directories); 777700 permitsowner and same group everything, general public nothing (typically used for files-only directoriesthat one doesn't want non-group people to see); 777060 permits owner everything, same groupconnect access (typically used for files-only directories in the Computer-research group, where youwant everyone to be able to connect but not to be able inadvertently to clobber files while notconnected). [Refer to Figure 6, Appendix for correct values corresponding to boxes on Files-onlyaccount request form.]Disk LimitPresently, message-only directories are assigned a disk limit of 50 which is enforced.Regular directories are assigned a disk limit that varies according to the organization: CSL, 1000pages; SSL, 750 pages; SDD, ASD, and other, 250 pages. This varies when special needs arepresent. Disk limits for regular directories are not "enforced", which means that file storage inthese directories can exceed allocation without difficulties (except an annoying "over allocation"message from Tenex) until total free storage in the system falls below 2000 disk pages. When freestorage is below this, attempts to write new files into directories over allocation are denied. fpi,qXFp_s]K[Y WV! RG PM O7( MOr qtsN ItX Fks40 D32 B00 A =X;;.:>89#6o4 12= /h+9 -03 +@( *Y (=D &s_ $1. " r qts7 ! tX /sV L H (W ]<& P _ p =Z$Creating and Destroying Maxc AccountsMaxc Operations92Project GroupThe project group assigned a directory classify it for the accounting software, which summarizesCPU utilization, file storage use, etc. according to these groups.The current project groups are CSL, CSL-Summer, CSL-Consultants, CSL-Files-only, Defunct, SSL-unknown, SSL, SSL-RI-PT-Contract-VS, SSL-Consultants, SSL-Files-Only, University-MPC, Lisp-Files-Only, ICL, SDD, Mesa, GSL, JDS, OSL, Administration-not-on-phone-list, Administration,SDD/LA, ADL, PARC, PD/LA, ED/LA, Xerox, Non-Xerox, Computer-Research, Tenex,ASD/PA, ASD/ES, Webster, EOS/Pasadena, Old-NonPARC and Versatec. Directories are attachedto these projects by editing the PROJECTLIST file.The PROJECTLIST file is used by the MAXC-ACCT subsystem discussed later. It is importantthat this file be updated correctly, but Tenex will run correctly even when this file is invalid orincomplete.The format of a group in the PROJECTLIST file is as follows:CSL:AIS, ALISP, ..., WINOGRAD, YEARY;i.e., the group name followed by a ":", the list of directory names in alphabetical order separated by"," and terminated by ";".Files-only DirectoriesFiles-only directories are created when needed, usually to hold files needed by a number ofdifferent users working on a common project. Tenex does not allow login to files-only directories.Each files-only directory is represented by a line in the ARCHIVE-FILES-ONLY.TXTfile of the form:OWNER,FILEDIRECTORYwhere OWNER is the login directory name of the person responsible for FILEDIRECTORY.ARCHIVE-FILES-ONLY.TXT is needed by the archive system to direct messages aboutarchive traffic to OWNER. By convention, the entries in ARCHIVE-FILES-ONLY.TXT are inalphabetical order by owner, and where there are several files-only directories for a single owner,these are also in alphabetical order.ARCHIVE-FILES-ONLY.TXT is also used by the HOGS program, discussed below, toassociate disk usage of files-only directories with the login account for the person responsible for thestorage.Login DirectoriesEach login directory is represented by a line in the file UACHK.TXT. The standardentry in this file is as follows:ACCOUNTANT:1*,BACKGROUND)fqX%;pi  _tX [sD YB VgY TE R%7 QFG: O=2( Mr< JZ H6 U Fk BX<?=! :KR 8 5tX 1s? /I .(0 ,<( %X"2 #W !)- 03 .% 7 ` ' tX Cs&6 x!  >]LMaxc OperationsCreating and Destroying Maxc Accounts93This line controls the pie slice scheduling groups accessible to the directory. The "1*" means thatthe default login pie slice is the numerically named account number 1; the ",BACKGROUND"means that after login, the user can change his pie slice to the low priority BACKGROUND slice.Nearly all directories are represented by a UACHK.TXT entry in the above format. However, afew directories for people who maintain the hardware or do other special stuff, may be allowed toaccess some other slices. For example:SYSTEM:1*,BACKGROUND,SERVICE,MAINT,ARPANET,220100This allows the directory to change its scheduling slice to BACKGROUND, SERVICE,MAINT, ARPANET, or 220100.The UACHK.TXT file is compiled into a big accounting matrix which is stored onUACHK.FILE during the procedure for creating or destroying directories.Message UserMessage-only users have very limited access to subsystems and have enforced disk limits. Thesubsystems accessible to message-only users are specified in SUBSYSTEMS.directory-name, if it exists, or in SUBSYSTEMS.DEFAULT, if no special file exists for thedirectory. It is required that subsystem names in these files be in alphabetical order.SUBSYSTEMS.DEFAULT presently contains the following:EFTP.SAVARCVER.SAVDELVER.SAVMSG.SAVPLZFIX.SAVPRESS.SAVREADMAIL.SAVSEE.SAVSNDMSG.SAVXMS.SAVIf a special SUBSYSTEMS.directoryname file is created for a message-only directory, itwill generally contain all of these files plus the extra ones that are added for the directory.24.3. The EcCREATE and EcPRINT CommandsDirectories are created and destroyed using the Tenex Executive's EcCREATE command (i.e.,CREATE), which has subcommands that allow properties of the directory to bespecified. The various subcommands for EcCREATE are discussed here, and then examples wheredirectories are actually created and destroyed are given in the following sections. The currentproperties of any directory can be observed by using the EcPRINT command. User encryptedpassword is printed out as two octal numbers by using the "verbose" form of the ^E Printcommnad (that is, "^EPrint dirName Verbose"). This is useful in comparing Maxc1 and Maxc2 fpi,qXFp _sO ]K.* [M XF VDO Ty'Q1 M,- K HYRS0 FO CtX ?s+2 =9! <> :K/0G 8<5 3C1y/-,*N(&$ !}5) _ rX ~ ~ s+  ? )T $< ) D,, y"8 & 2>]Creating and Destroying Maxc AccountsMaxc Operations94passwords, or transferring a password from one system to the other, without knowing the clear-textversion of that password. You must have enabled your WHEEL or OPERATOR status to executeCREATE or PRINT.CREATE and its subcommands:!EcCREATE username [NEW] (password) password, [SUPERPASSWORD] GUESSThe default parameters of a new directory are as follows:DISK limit = 750 pages (not enforced)DEFAULT file protection = 775200PROTECTION of directory = 776060USER group number = 0 (Computer-Research)DIRECTORY group number = 0 (Computer-Research)NUMBER of directory = next unused numberno special capabilitieshas a mailbox (i.e., has a MESSAGE.TXT file)If the directory is not supposed to be in the Computer-Research user group or directorygroup, you will have to remove it from this group using the NOT DIRECTORY and/orNOT USER subcommands below.!!ABORT= Cc!!NUMBER dirnumberfor setting directory number. When creating a newdirectory on Maxc1, the directory number is defaultedto the next unused number. However, on Maxc2, thissubcommand is required to ensure identical directorynumbers on both Maxc1 and Maxc2. 1!!FILESmakes a files-only directory!!MESSAGEmakes a message-only directory!!MAINTENANCEa capability--subset of WHEEL/OPERATORcapabilities!!OPERATORa capability!!WHEELa capability------------------------------1 When you run out of directory numbers (highest possible = 1777), you can reset the last-used directorynumber, as follows:@enable!quit./1[ 0call mapdirxlstdno[ 10.^!This resets the last-used directory number to 10. Be sure to do this on both Maxc1 and Maxc2. Subsequently,new directories you create will re-use directory numbers of directories that once existed but have been deleted.)fqX%;pi  _sC ]K? [ XTU*TX.RO`9K%J#HYF)D.B(A.?d,;W:'P8]4'5x3 '/'1U"'/.'-'+!,u*+s'(`'& '&'$ # ' !6' u7:-A ]  g^ &J =]oMaxc OperationsCreating and Destroying Maxc Accounts95!!DEFAULT (file) PROTECTION 6-char octal number sets the default fileprotection for directory!!DIRECTORY groupnumberargument is one of the directory group numbers givenearlier--repeat this subcommand for multiple directorygroups!!SECONDARY groupnumberargument is one of the directory group numbers givenearlier--repeat this subcommand for multiple directorygroups!!USER groupnumberargument is one of the directory group numbers givenearlier--repeat this command for multiple directorygroups!!DISK limitinpagessets disk limit!!ENFORCEcauses disk limit to be enforced!!PROTECTION (of directory) dirprotec sets directory protection!!LISTprints the status of the directory as EcPRINT woulddo if the CREATE command were terminated now!!NO MAILBOX1Prevents MESSAGE.TXT file from being created.This will be issued on either Maxc1 or Maxc2 forregular and message-only accounts. In other words, ifthe primary system for a user is on Maxc1, hismailbox will be on Maxc1; if the primary system isMaxc2, then his mailbox will be on Maxc2. WhenLaurel has been developed further, there will prob-ably be a number of user directories that do not havemailboxes on either system. The NO MAILBOXcommand is not required for files-only directoriesbecause the FILES subcommand automatically doesthis.!!NOT DIRECTORY groupnumremoves the directory from a directory group!!NOT SECONDARY groupnumremoves the directory from a secondary directorygroup!!NOT ENFORCEdon't enforce disk limit!!NOT FILESnot a files-only directory!!NOT MAINTENANCEturns off the MAINTENANCE capability!!NOT MESSAGEturns off the message-only restriction!!NOT OPERATORturns off the OPERATOR capability!!NOT USER groupnumremoves the directory from a user group!!NOT WHEELturns off the WHEEL capability!!PASSWORDfor changing password!!ENCRYPTED (password)Sets password, using encrypted form (two octalnumbers) as input.!!KILLkills or deletes the directory------------------------------1Only has effect when creating a new directory. Has no effect when used on an established directory. MSGFIX must be used onestablished directories to create or delete mailboxes. fpi,qXFp_s ^_^ W_ :']K['4'Y6'WV!'4'TV6'RP'4'N3'M,Ka'I'G zGuG8]E''FkE 'D,BI Bu'BIs-'@~0'>6'<.';2'9T/'73'55'3+'2)2'0_/'.,',*'0')4'i '% '#'$" '& ? '!t'' ' ''.'J' u gF| 6 <](Creating and Destroying Maxc AccountsMaxc Operations96Unused subcommands:!!ABSOLUTE!!ALPHANUMERIC!!MODE!!NAMEfor changing directory names--unimplemented!!REPEATobsolete!!RETENTIONunimplemented!!CONFIDENTIALa capability!!NETWIZARDa capability!!PRIVILEGES octalnumsetting capabilities in octal!!SPECIAL24.4. Creating a Maxc DirectoryYou have to be a WHEEL or OPERATOR to create or destroy a Maxc directory, change thepassword, or do other kinds of directory maintenance.1. Enable yourself and connect to the ACCOUNTS directory on Maxc1. Then do a WHO or LDand make sure that none of the other users who diddle with the accounting are at that time alsomodifying the accounting files. They would be connected to the ACCOUNTS or SYSTEMdirectory, if they were doing this.2. For login and message-only directories (as opposed to files-only directories) edit UACHK.TXTto contain the new directory name. For files-only directories edit ARCHIVE-FILES-ONLY.TXT to contain the new directory name. For all directories edit -PROJECTLIST to contain the directory in the appropriate places. If you are creating a number ofdirectories, you can do the edits for all of the directories at once, which saves time.For some message-only directories, additional subsystems will be specified; these will require thecreation of a SUBSYSTEMS.username file which should include the contents ofSUBSYSTEMS.DEFAULT plus the additional subsystem names. We follow theconvention of preserving alphabetical ordering of the names in each section of these files.3. EcCREATE the directory on Maxc1 using one of the following examples as a prototype:Message-only directory:!EcCREATE username [NEW] password, (Don't omit the ",") [SUPERPASSWORD] GUESS!!MESSAGEMakes message-only directory!!DISK 50Sets the disk limit to 50 pages!!ENFORCEEnforce the disk limit!!LISTList the properties of the directory and make sure thatall the parameters are setup as desired!!Execute the CREATE with properties as setup [CONFIRM])fqX%;pi _sX[ Y XVD'+Ty'R ' P ' O ' MO'K Dr ARs9 ?5 <"6 :K R 8: 6# 3CY 1y#7 /0! -C ,W (V &4 % @ #G[ X bQ cts~:'\ ' ' ' '7'2' g'+  U=]Maxc OperationsCreating and Destroying Maxc Accounts97Files-only account:!EcCREATE username [NEW] password, (Don't omit the ",") [SUPERPASSWORD] GUESS!!FILESMakes files-only directory!!LISTList the properties of the directory and make sure thatall the parameters are setup as desired!!Execute the CREATE with properties as setup [CONFIRM]Regular directory:!EcCREATE username [NEW] password, (Don't omit the ",") [SUPERPASSWORD] GUESS!DISK 1000Sets the disk limit to 1000 pages!!LISTList the properties of the directory and make sure thatall the parameters are setup as desired!!Execute the CREATE with properties as setup [CONFIRM]4. After creating the directory you should print the parameters of the directory and write down thedirectory number, which you will need shortly:!EcPRINT username [SUPERPASSWORD] GUESSDISK LIMIT 1000WHEELALPHANUMERIC ACCOUNTSDIRECTORY NUMBER 15Write down this number for laterDEFAULT FILE PROTECTION 500000775200DIRECTORY PROTECTION 500000776060USER GROUPS: 0, 1DIRECTORY GROUPS: 0, 15. If you are creating a number of directories at once, you should carry out a EcCREATE sequencefor each of them at this time.6. Next, you have to reinitialize the accounts on Maxc1 as shown below, and then copy theresulting stuff to Maxc2 where a similar but slightly different sequence is carried out:!RUNFIL UACHK.RUNFILReads UACHK.TXT and creates UACHK.FILE onthe connected directory (you are still connected to) [This step is necessary for message-only and regular directories but is not needed forfiles-only directories.]--Check for any error messages before continuing-- fpi,qXFp _t[s\1[:YX 'U '7'T'Q'+P LtI-sII-:GbE '!C '7'B'@7'+>m :+9 90.56K5X32)0_.,'t*s$)4!'i% "-C ""- b /+ &X' ' &''T.' X2 =[;Creating and Destroying Maxc AccountsMaxc Operations98!EcINITIALIZE ACCOUNTSRenames UACHK.FILE onto the directory and installs it as the current accountingmatrix [This step is necessary for message-only andregular directories but is not needed for files-onlydirectories.]!PUPFTP MAXC2*CONN ACCOUNTS*PRESERVE VERSION*STORE PROJECTLIST*STORE UACHK.FILEcopy UACHK.FILE on Maxc1 toUACHK.FILE on Maxc2. [This stepis necessary for message-only and regular directoriesbut is not needed for files-only directories.]*CONNECT SYSTEM*STORE ARCHIVE-FILES-ONLY.TXTYou only have to do this copy if you modifiedARCHIVE-FILES-ONLY.TXT. You alsohave to copy SUBSYSTEMS.username ifyou added or modified any of these files.*QUIT!DET--Chat to Maxc2--@ENABLE yourpassword!CONN ACCOUNTS!EcCREATE username [NEW] password, (Don't omit the ",") [SUPERPASSWORD] GUESS!!same subcommands as on Maxc1!!NO MAILBOXYou only create a mailbox, i.e., a MESSAGE.TXTfile, on one of the two Maxc systems. Normallythe mailbox is created on Maxc1 and you give theNO MAILBOX subcommand on Maxc2. However,for a primary user of Maxc2, the mailbox is put onMaxc2 and you would issue NO MAILBOX whenyou CREATEd the account on Maxc1.!!NUMBER directory-number (from EcPRINT above)!! [CONFIRM]If you are creating a number of directories, then you go ahead and create the others at this time,remembering to add the NO MAILBOX and DIRECTORY dirnumber subcommands in addition tothe stuff you did on Maxc1. Then when you have created all of them, you finish up with thefollowing:)fqX%;pi ^s_^'$'\'Z'Y)%'W^ USQP4NiL,J!'I #'G?%'Et )'C.A@-'>J-'<$':('8)75U 1.q,*+E*:('#%X' '#+#'!0''.'c)'!!8  >$ E ? D  =\Maxc OperationsCreating and Destroying Maxc Accounts99!EcINITIALIZE ACCOUNTSInitializes the accounts, renamingUACHK.FILE toUACHK.FILE [This step is necessary formessage and regular directories but not needed forfiles-only directories.]Note that if you have a number of Maxc directories to create at once, you can insert all the namesinto the UACHK.TXT, PROJECTLIST, and ARCHIVE-FILES-ONLY during the same edittingsession. Then you can EcCREATE all the directories. Then you do the RUNFIL, INITIALIZEACCOUNTS, and PUPFTP of the files just once. Then you Chat to Maxc2, CREATE all thedirectories there, and finally do the INITIALIZE ACCOUNTS just once on Maxc2.24.5. Editing the Grapevine Data BaseThe Grapevine data base must be edited to contain the correct directory name and password for allnew Maxc accounts. It must also be edited to delete the directory name for all Maxc accounts thatare destroyed. To do this you should have version 6T15 or later of Laurel so you can run programMaintain, the Grapevine Registration Server Maintenance Program.Run Laurel and bug "Run" in the lower command menue. Type Maintain and control willpass to the Grapevine Registration Server Maintenance Program. A typical session follows:Creating a Mailbox:Grapevine Registration Server Maintenance ProgramVersion unknownGV: Login [Confirm] Yes Your Name Please: Name.pa Your Passoerd: password . . . Locating registration server . . . 3#14#51 . . . okGV: Create Individual : Name.pa with password: password . . . done- -> Add Mailbox at server: Maxc for individual: Name.pa . . . doneGV: Type Entry for R-Name: Name.pa . . . done, type=individualConnect-site:Forwarding: nullMailbox-sites: maxcGV: Quit [Confirem] YesEnd of MessageDeleting a Mailbox:GV: Delete Individual: Name.pa [Confirm] Yes . . . done- -> Remove All memberships in registry: pa for R-Name: Name.paMail Forwarding:GV: Add Mailbox at server: Maxc for individual: NewName.pa . . . 3#14#51 . . . doneGV: Remove Mailbox at server: Maxc from individual: OldName.pa . . . 3#14#51 . . . doneGV: Add Forwarding to: NewName.pa for individual: OldName.pa . . . 3#14#51 . . . doneGV: fpi,qXFp^s_^' '\'Z 'Y)'W^ SM R"P P4PP4# Ni= LM Er& Bls10 @G >2/ = @ 9 N 7Z 4rX)12uF1)/u),u,O,~,O,)+Ev*+E))u)&)v u:)((-((-i( (- (v u(s(-&(v u )'#.&'#vuv,_&'#u )%%k%7%k%v!%k%u)$a )#)!) w u\ )tv &rX)uFi o v u % )0u)"#0 * 0v r)uF___vu(_0v u)U U U Uvu+ Uv u)    N  @ 0 v u*  v u) p )=\Creating and Destroying Maxc AccountsMaxc Operations100Type "?" to see available commands.GV: ? Commands are:Add Forwarding, Add Friend, Add List of Members, Add Mailbox, Add Member, Add Owner, Create Group,Create Individual, Delete Group, Delete Individual, Initialize New Name, Login, Modify All Occurrences, Quit,Remove All Memberships, Remove Friend, Remove Forwarding, Remove Mailbox, Remove Member, RemoveOwner, Set Connect-site, Set Decimal Password, Set Password, Set Remark, Set Server, Type All Groups, TypeDetails, Type Entry, Type Members, Verify All Groups, Verify Group, Verify NameGV:Creating List of Mailboxes:GV: Type Entry for R-Name: Individuals.pa . . . done, type = groupRemarks: Individuals.paMembers: AHenderson.pa, ABell.pa, - - -- - - etc.GV: Type Entry for R-Name: Individuals.es . . . done, type = groupRemarks: Individuals.esMembers: Abagaz.es, Abe.es, - - -- - - etc.GV: Quit [Confirm] YesNow PUT the Maintain.Typescript in some file (i.e. Individuals.GV) and use Bravo to hardcopy.24.6. Changing the Password and Other Modifications to DirectoriesThe EcCREATE command is also used to modify parameters for an existing directory. When usedin this way, directory parameters are initially defaulted to the current parameters of the directory, soonly those items being changed need be typed as subcommands.Note: It is illegal to change the directory number or the name of the directory in this way. To dothis it is necessary to destroy and recreate the directory and copy files manually.When using CREATE in this way you omit typing the password, so that you don't have to be toldthe password of the directory in order to change its parameters. For example:!EcCREATE olddirectoryname, (Don't omit the ",") [SUPERPASSWORD] GUESS!!NOT USER 0Remove from Computer-research user group!!USER 1Add to System group!!NOT DIRECTORY 0!!DIRECTORY 1!!PASSWORD xglot1Change the password!! [CONFIRM])fqX%;pi  _rX#)[uB[r[ )Z4.)Y)m)WA)VgY)UO)S PzrX)MOuFLMO7LMOLMO #LMOvu)Kv)Ju')I- )GGuG7GuGGu}G )Fk)E !)C )BIABI ABI)?dsX] 8rC 51s551@ 3g/9 1< .*B" ,_S (1, '#N#$>#X4! '(Q '''\  =R-Maxc OperationsCreating and Destroying Maxc Accounts10124.7. Destroying a Maxc AccountMaxc directories are destroyed after either an explicit request from a Maxc directory owner (rare),after the sign out procedure that occurs when someone leaves PARC, or when we find out by someother means that a directory is dead. Ron Weaver is notified when someone leaves PARC, and heeither destroys the Maxc directory (most desirable) or converts it to files-only (less desirable buthard to avoid if there are too many still-useful files archived out of the directory). Directories forusers outside PARC may become dead, but we have no convenient method of automatic discovery.Prior to destruction, the directory owner should delete unnecessary files and rename useful onesinto the directory of a coworker. Users are sometimes sloppy about cleaning up their directories, sothe person who is going to kill the directory should, as a safety measure, delete obsolete versions offiles and archive current versions as follows:!CONNECT olddirectory!DELVER!ARCHIVE FILE *.*;*---prints out what is going to be archived---!DELETE *.*;*---deletes archived files, but not those about to be archived---Note: If files exist on Maxc2, get someone to clean up the directory or move them to Maxc1 for archiving.Then wait for the weekly or twice-weekly archiving run to take place. After that, all informationabout files will be contained in the archive directory, and you can continue with the proceduresdiscussed below. If the directory does not have an archive directory, this safety procedure cannotbe followed.The person who is about to destroy the directory should list one copy of the archive directory beforedestruction, as follows:!CONNECT olddirectory!INTERROGATE *.*;*,!!EVERYTHING!!LPT!!This copy is stapled to the original directory application and filed in the CSL dead directory file.When a directory is destroyed, any files remaining in it will be deleted. It is less automatic toretrieve archived files belonging to a deleted directory. We have avoided reusing directory numbersfor defunct directories so that, if we have to, we can then recreate the directory to retrieve filesfrom the archive. We expect to continue this policy until we run out of directory numbers(probably in 1980). Retaining a listing of the archive directory is a new practice, so directoriesdestroyed before 19 April 1978 can readily be accessed only by recreating the directory.The procedure for destroying a directory involves retrieving the original directory request form fromour files (Haychan Sargent), marking it as destroyed, and refiling. For PARC directories, the formshould also be considered for destroying IVY IFS directories for the person who is departing, if thatis appropriate. fpi,qXF&p _r [sS ZfR X=! W^E UC$ TVD Q+T ON N#Z L.I-XGb EC-B@7@) directory. Do a LD orWHO to verify that none of the other account maintainers are possibly modifying the accountinformation at that time.2. Edit the accounting files to remove the directory being destroyed. PROJECTLIST has to beeditted for all directories, UACHK.TXT for login directories, and ARCHIVE-FILES-ONLY.TXT for files-only directories. SUBSYSTEMS.old-directory (if it exists) has tobe archived for message-only directories.3. After removing the appropriate entries from these files, destroy the directory with the followingdialog:!EcCREATE olddirectory, (Don't omit the ",") [SUPERPASSWORD] GUESS!!KILL!! [CONFIRM]If you have a number of directories to destroy, you can delete all of them at this time, and then dothe stuff below just once for all of them.!RUNFIL COMMANDS FROM : UACHK.RUNFIL!EcINITIALIZE ACCOUNTS!PUPFTP MAXC2*CONNECT ACCOUNTS*PRESERVE VERSION*STORE PROJECTLIST *STORE UACHK.FILE*CONNECT SYSTEM*STORE ARCHIVE-FILES-ONLY.TXT*Q!DETChat to Maxc2@ENABLE yourpassword!CONN ACCOUNTS!EcCREATE old-directory, [SUPERPASSWORD] GUESS!!KILL!! [CONFIRM]If you have a number of directories to destroy, you can delete all of them at this time, and then do)fqX%;pi  _sX0 [ M YA X T] R< Q P O=) KD! JFGFX/DB A.?d ;R :'*6X-45T4212/h-+*'(=!&s$-"!  /Xdvv L R =\xMaxc OperationsCreating and Destroying Maxc Accounts103the stuff below just once for all of them. If you deleted any SUBSYSTEMS.dirname files onMaxc1, then delete them on Maxc2 as well.!EcINITIALIZE ACCOUNTS!For each directory destroyed, a history of the directory is left in DELETED-USER-PARAMETERS.directoryname(directorynumber), and if it has any archived files, the archivedirectory is moved to DELETED-ARCHIVE-DIRECTORY.directoryname(directory-number). Also, don't forget to edit the Grapevine Data Base (Section 24.5.)24.8. Operations on MESSAGE.TXT FilesIt is sometimes necessary to create a mailbox in a directory that doesn't have one, to delete amailbox, or to move a mailbox from Maxc1 to Maxc2, or vice versa. Since MESSAGE.TXT fileshave a funny "permanent" attribute that can't be set or cleared by any Exec commands, you have tocreate and destroy mailboxes using the MSGFIX subsystem, which requires that you enableyourself. It has commands for creating and deleting mailboxes (i.e., MESSAGE.TXT files). Whena mailbox is deleted, its contents are copies into a file called OLDMESSAGE.TXT. The commandsequences to MSGFIX are as follows:!MSGFIX*Create MESSAGE.TXT for directory: DIRNAME *Q!to create a mailbox, or:!MSGFIX*Delete MESSAGE.TXT in directory: DIRNAME *Q!to delete a mailbox.It sometimes happens that a MESSAGE.TXT file has an excessive number of pages because the filehas not been truncated for some reason. This can be remedied by using the following safe andsimple procedure:!CONN dirname!RENAME MESSAGE.TXT FOO!APPEND FOO MESSAGE.TXT!DELETE FOOIn the case of a race occurring, the order of the old and new messages gets reversed, but nomessages are lost. Note that MESSAGE.TXT files acquire extra pages only when manipulated byMSG, so only MSG users (never Laurel users) should suffer this problem.When a MESSAGE.TXT file suffers a disk error, the recovery procedure is:!CONN dirname!RENAME MESSAGE.TXT BADMESSAGE.TXT fpi,qXF&p _sW ]K)YZfYXX T< R4 $ Q@ O=L Kr& HYs%: F(2 D?" B-* A.Z ?dT =#:K8X/65U 3 1/h.-, ) &s,2 $> "kX  *2 )3 G H X V& =]Creating and Destroying Maxc AccountsMaxc Operations104!TECO*;YInput File: BADMESSAGE.TXT(unexpected daya error interrupt)*;UOutput File: BADMESSAGE.TXT*Then tell the user that BADMESSAGE.TXT may be retrieved for examination with Bravo orwhatever. The bad data should NOT be put back into MESSAGE.TXT, as that might cause theinternal structure of MESSAGE.TXT to be ruined.24.9. Reinstantiating a Destroyed DirectorySometimes a person whose Maxc directory has been killed needs to have that directory recreated.This could be done by creating a brand new directory, but it is usually more convenient to recreatethe directory from the information that was saved when it was previously destroyed.The way to do this is to retrieve DELETED-USER-PARAMETERS.DIRNAME-(DIRNUMBER) and DELETED-ARCHIVE-DIRECTORY.DIRNAME(DIRNUM-BER) from archival storage (i.e., they will usually have been archived by the time that you want torecreate the directory); in some cases the DELETED-ARCHIVE-DIRECTORY file won't exist.Then recreate the directory from these two files, as follows:!EcRECREATE DIRNAME[SUPERPASSWORD] GUESSThis recreation procedure only works if the directory number has not been reassigned to some newdirectory in the interim. If it has been reassigned then you must treat the creation as if it were anew directory. Some special things must be done to the Archive-Directory if one existed before.(See Ed Taft for details.)This reinstates the directory on Maxc1. Then add DIRNAME to PROJECTLIST and eitherUACHK.TXT or ARCHIVE-FILES-ONLY.TXT just as though a brand new directorywere being created, and carry out the other procedures associated with creating a new directory onMaxc1. Then copy DELETED-USER-PARAMETERS.DIRNAME(DIRNUMBER)to Maxc2, RECREATE the directory on Maxc2, etc.If the directory should have a MESSAGE.TXT file, then you should create the MESSAGE.TXT filewith MSGFIX as discussed in the previous section.24.10. Retrieving Archived Files for Defunct DirectoriesThe easiest way to do this is to recreate the directory as discussed in the previous section, and thenretrieve the files from archival storage in the normal way.)fqX%;pi _s]K[XY!WV!TV P&/ O%3 MO/ FrX, Cs'8 AR9* ?S < ? :K4 8F 6I 4=1y21yX/ ,<+5 *rL (7) & #j9 !3 Q  5 @/ K 1 CrX9 s7/ ; >]LMaxc OperationsCreating and Destroying Maxc Accounts105An alternative method of retrieving archived files from defunct directories is to find out on whattape the file is archived, and use the BSYS "Single File" command to copy it from the tape to adisk file in some existing directory. Unless the archive directory for the deleted directory was listedprior to destruction, the tape containing a particular archived file will generally be unknown.Directories destroyed after 19 April 1978 have a listing of the archive directory on file in the CSLdead directory file.24.11. Printing Accounting InformationRunning USERAC.SAV will produce a printout of all the information on all thedirectories (requires enabled wheel status). The various options for this subsystem will be revealedwhen you type "H" as a subcommand.The accounting printout periodically posted on the CSL bulletin board is obtained by connecting tothe directory and running MAXC-ACCT, which renames thefact files from the directory into and churns through all the fact filesover the time period selected.RUNFIL HOGS.RUN will produce an output file named HOGS.DATE that showsthe disk storage in use and the storage tied up by obsolete versions of files or files unreferenced in90 days. fpi,qXF&p _sQ ]KQ [W Y_ WO V! O`rX' Ks= J#E HY" D_ C= AR@ ? <&* :KV 8& 89>/ HELVETICA TIMESROMAN LOGO TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN  TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN TIMESROMAN   "O& / 8 AIQHX_egowz%i7 <-.   $+19AHN5S0X>]>affjrz)&1uP  0>$q(.4:B HOU\bgmu{$  s:C!:C !Z =;Z"9E-9C9@ZiT=;=Z":C%:C!:C "iFU  "9c "*i^"i\:C ]Z  Z Z j/nMaxcOperations0-24.PressRWeaver 2-Feb-81 9:45:34 PST