NVIO and ODTMaxc Operations208. NVIO AND ODTMaxc1 only. NVIO is a Nova Input-Output package which does all the input-output for Maxcexcept for the disks. Specifically, it does input-output for the data line scanner, the IMP (ARPANetwork), the MCA (Multiprocessor Communications Adaptor), the Ethernet, and the tape units. Italso has an octal debugger called ODT (Octal Debugging Tool) which will allow the user to changememory locations in Maxc and the Nova, and perform other control functions.8.1.Calling NVIONVIO can be called from Midas with the command:6,NVIO;Tor:!NVIO.SV/a/b ... where /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: TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMANi7j/!J3MaxcOps8.bravoRWeaverNovember 25, 1980 1:01 PM