Copyright c Xerox Corporation 1980Inter-Office MemorandumToMesa UsersDateOctober 27, 1980FromBrian Lewis, Jim Sandman, Dick SweetLocationPalo AltoSubjectMesa 6.0 Utilities UpdateOrganizationSDD/SS/MesaXEROX Filed on: [Iris]Doc>Utilities60.bravo (and .press)This memo outlines the changes made in the utility packages since the last release (Mesa 5.0, April9, 1979). More complete information can be found in the Mesa User's Handbook.Major changes include some new commands in the Lister and an extensively reworkedIncludeChecker. In addition, there is a version of the SignalLister that reads .bcd files.ListerThe lister is now available only as a .bcd file. The user interface has been changed slightly:commands that take string parameters no longer need string quotes. The command scanner takesall characters up to the next comma or right bracket as the parameter. ThusCode[ListerRoutines] and Code["ListerRoutines"]are equivalent. The new commands (and "improved" old ones) are listed below. Note that severalof the new commands (and some of the old ones) are useful only for internal (Compiler) debugging.CodeInConfig[config, module]OctalCodeInConfig[config, module]Config names a bound configuration; module is a module within that configuration. A codelisting is produced for the module (see the Code and OctalCode commands). This is ofparticular interest for packaged configurations where the code has been rearranged amongsegments and code packs.CompressUsing[file]The named file should contain a list of BCD file names. The using lists of the directorystatement are generated for each module in the list; they are then sorted to show for eachinterface, and for each item in the interface, which modules reference that item. The samecaveat about implicitly included symbols applies as for the Using command (see below).The output is written to file.ul.Hexify[], Octify[]The code lister normally prints addresses (and opcodes for "octal" listings) in base eight.For microcode debugging, base sixteen is sometimes preferable. Hexify[] puts the codelister into hexadecimal mode; Octify[] reverts to octal mode.!pX qp]g~ri cs]pX -s7Bp ]s]p$-s7Bp Ys]t-s 7Bp Sup N#s8 GpE F9v Bp4.5# A Pwp # +Ew twtw )twtw'#tptp*%|'wpwp#X"- kw twp sp.I*0F 0wpSwx wpLo@wp  wp\=d Mesa 6.0 Utilities Update2Implementors[file]The named file should contain a list of compiler output BCDs (interfaces and programmodules). This command creates a file, File.iml, showing for each interface exported byany program in the list, where the various interface items are implemented. If the list alsoincludes the BCD for a particular interface, the interface items not implemented by anyprogram are also shown. In order to run this command, one needs not only the BCDs in thelist, but also the BCDs for the interfaces exported by the programs therein. Missing BCDsare reported and the command attempts to forge on.Stamps[file]File names a compiler or binder output BCD. This command generates a file, File.bl,that shows the version stamps of any modules bound in the file, and of all imports andexports of the top level configuration in the file.UnboundExports[file]File names a compiler or binder output BCD. This command examines all of the exportedinterfaces and enumerates interface items in those interfaces that are not exported by thismodule or configuration.Using[file]Given a compiler output BCD, this command generates a directory statement with itsincluded identifier lists (on file.ul). Since there is not enough information in the BCD to tellwhich symbols were implicitly included, the USING clauses will contain a superset of those items actuallyneeded. The Mesa 6 Lister does a much better job of weeding out extraneous names in theUSING clauses.Version[file]File names a compiler or binder output BCD, or an IMAGE file. This command shows, onMesa.typescript, the object, source, and creator version stamps of the file.XrefByCallee[file], XrefByCaller[file]File names a file that contains a list of BCD file names. For each module in the list, a scanis made of the code to find all procedure calls. The pairs are then sorted byeither caller or callee. These commands produce output on file.xle and file.xlr,respectively.There are three kinds of procedure calls: local, external, and stack. The program can figureout which procedure is being called for local and external calls. Stack function calls areused for procedure variables (e.g., stream.get[...]) and for nested procedure calls. Theprogram ignores nested calls and indicates a callee of * for procedure variables.Include CheckerThe most significant differences between this version of the IncludeChecker and the one releasedwith Mesa 5.0 are the following:1.It handles more files, and requires less processing time for large numbers of files.2.It executes either from the command line or interactively.3.It obtains the creation dates for source files from their leader page, rather than fromthe first few lines of the source text (however, see the description of the new switch/t below). ftG bw tw_psp](wp'\TS Z spAYMspW^sp@spU2 RwtwPztp#spwpNRM,3 JjwtwGtpsp,FH)2D Awtw?dpsp )= wpy/sy<8,sy):p99 sp 6Kwtw3tpspsp2)wp= /hw twtw,tp&sp1+ED)6wpwp' %|0-#H"-$zp! 7wp ct p-3 mx:x /x R < 3wp =^tMesa 6.0 Utilities Update3There have been other minor changes to command syntax. The entire section of the Mesa User'sHandbook on the IncludeChecker is included below.The IncludeChecker is a program that examines a collection of Mesa source and BCDs forconsistency. It produces an output listing that gives a compilation order for the files, and for eachBCD, a list of all the BCDs that it includes, and a list of the BCDs which include it. Anyinconsistencies (which are described below) are flagged in this listing by an asterisk. As an option,the IncludeChecker will also generate a compilation command on Line.cm that can be executed tomake the files consistent. The IncludeChecker determines that an inconsistency exists among the input files if either: 1.A BCD includes another BCD with a version different from the one currently on the disk.This might happen, for example, if the included BCD had been recompiled.2.A source file is "newer" than the corresponding BCD. This could happen if the source hadbeen edited, or if the source had been retrieved from a remote file server. TheIncludeChecker compares the creation date of the source file against the creation daterecorded in the BCD of the source file from which the BCD was derived. The IncludeChecker operates in either command line or interactive mode. To use it in commandline mode, type to the Alto executive:>IncludeChecker [outputfile][/switches] [filename1 filename2 ...]whereoutputfile is the name of the file written. If no extension or switches are given, .listis assumed. If no file name is specified, the file Includes.list is assumed.filename1 filename2 . . . is the list of file names specifying the source and .bcdfiles to be checked. It is not necessary to give an extension, since the IncludeChecker willlook for any .mesa or .bcd file with the specified name. If no input files are specified,all .mesa and .bcd files on the disk are examined.To use the IncludeChecker interactively just type:>IncludeCheckerIt will then prompt for the output file name and switches, and then a list of the files to check.These are typed one at a time, and the list of file names is terminated by a CR. Typing ? CR ininteractive mode displays a short summary of the IncludeChecker's parameters and use.Each switch can be preceded by a - or ~ to turn it off. The switches are:/oPrint a compilation order in the output file (this is the default); -o suppresses thislisting./iPrint both the includes and included by relationships in the output file (default)./tObtain the creation date of source files from their leader page (default); -t willattempt to get the creation date from the first few lines of the source text. ftG bp.$v `vp) ](/sp [V Yspsp&sp X2[ V?wp T QDxNFspsp=L0spxIP0sp"G PF0&DZsp#sp A ? ?d&<wA 8p5xw p7w3p4w p 0wp5w.p?-3 wpwp@+wpwp (=2$w !pJ Mwp wp QU !wpwp#wp=wp wp8owp? wp @  >ZYMesa 6.0 Utilities Update4/cWrite a consistent compilation command in Line.cm (-c is the default). Inaddition, list as comments any BCDs and source files not on the disk which areneeded to do the compilation./mUse multiple output files (-m is default). The compilation order is written onsource.outputfile. The includes and included by relations are written ontooutputfile.includes and outputfile.includedBy, respectively. Thisswitch is useful if the output would otherwise be too large to fit into Bravo./nDo not compile source files that do not currently have corresponding .bcds on thedisk (-n is default)./pPlace a /p after every change of inclusion depth (see below) in the compilationcommand (-p is default). This will cause the Compiler to pause if errors arefound while compiling that or any previous module. /sSame as /c-i-o. This is used when only a consistent compilation command isneeded.The default switches are /oit-c-m-n-p-s.Note: The IncludeChecker only checks for consistency of the files that you specify. Thus, the list offiles that you give should include, for example, any important system files upon which your files aredependent. You should also inspect the compilation command before executing it, since the IncludeChecker'sidea of what should be recompiled may not be the same as yours. If a source file but no BCD is found on the disk, the IncludeChecker outputs a warning on thedisplay; in addition, it adds that file to the compilation command if /c and /-n are in effect. Awarning is also displayed if a BCD is found that was created by an obsolete version of the Compiler;its source file is also added to the compilation command. The IncludeChecker lists the file names of the compilation order and the consistent compilationcommand by inclusion depth, with the files that are the most deeply included first. Within thatconstraint, definitions modules are printed before program modules. In general, then, the "lowestlevel" definitions modules appear first, while the "highest level" program modules appear last. As an example of the IncludeChecker's use, the command line>IncludeChecker IC/c IODefs IOPkg LexiconDefs LexiconLexiconClientwill produce a consistent compilation command in Line.cm and the output shown below onIC.list.Compilation Order (by inclusion depth): LexiconDefs streamdefs stringdefs IODefs oldstringdefs systemdefs tty windowdefs IOPkg Lexicon LexiconClient IODefs (4-May-80 16:20:37 60#203#) (compilation source: 14-Apr-80 17:37:16) ftGbwp#wpwp`vsp ^[wpwp2Ywp:X2wpwpV7S )*6 (=D &;$ #G;w5Q pwp [wp  w' e#  ) o y; 2>]AMesa 6.0 Utilities Update5includes streamdefs stringdefsIOPkg (28-May-80 9:30:01 60#203#) (compilation source: 28-May-80 9:08:43) (source on disk: [same]) includes IODefs (4-May-80 16:20:37 60#203#) oldstringdefs streamdefs tty windowdefsLexicon (28-May-80 9:30:29 60#203#) (compilation source: 28-Apr-8017:02:20) (source on disk: [same]) includes IODefs (4-May-80 16:20:37 60#203#) LexiconDefs (14-May-80 10:48:49 60#205#) oldstringdefs systemdefsLexiconClient (28-May-80 10:02:50 60#203#) (compilation source: 28-May-8010:02:14) (source on disk: [same]) includes IODefs (4-May-80 16:20:37 60#203#) LexiconDefs (14-May-80 10:48:49 60#205#) oldstringdefsLexiconDefs (14-May-80 10:48:49 60#205#) (compilation source: 18-Apr-7919:19:11) (source on disk: [same]) includes nothingIODefs is included by IOPkg Lexicon LexiconClientIOPkg is included by nothingLexicon is included by nothingLexiconClient is included by nothingLexiconDefs is included by Lexicon LexiconClientBcdSignalsBcdSignals is an Alto/Mesa program which will produce a signal listing from a .bcd file; it worksmuch like the Alto/Mesa SignalLister for listing the signals in a .image file (see the Mesa User'sHandbook). To produce the signal listing Foo.signals from Foo.bcd, type to the AltoExecutive: ftG bw `v ^ [6 Y% X2$ V T S< Q NF( L J% IP$ G* F DZ A 1 ?d =% <$ :n* 8 5x ( 3 2)- -3 + ) & #G $  % t pMwp 1+wpv p!w pwp ) . =Y)Mesa 6.0 Utilities Update6>BcdSignals [octalNumber/switch] Foo[/switches]where/ntakes octalNumber to be the global frame index of the first frame inthis BCD. This will normally be the first free global frame index in thesystem into which the BCD will be loaded./xtakes octalNumber to be the StartPilot loadmap form of a global frameindex. This is the number in brackets beside the module name in theloadmap. It should be 200B times the octal number used with the /nswitch./plists the name, byte PC, and length of each procedure in Foo onFoo.procs./slist the signals of Foo on Foo.signals (default).As usual, a - or ~ can be used to invert the sense of the /s switch.Distribution:Mesa UsersMesa GroupSDSupport ftGbw/ ^p\wpw p[sp@YspW;wpw p' U*T3&xRpPWxp%wpNwpL{xpwpw p IPX wpwp(wp B A ?d = =u8*Copyright c Xerox Corporation 1980Inter-Office MemorandumToMesa UsersDateOctober 27, 1980FromJim Sandman, John WickLocationPalo AltoSubjectIntegrated Mesa EnvironmentOrganizationSDD/SS/MesaXEROX Filed on: [Iris]Doc>CommandCentral.bravo (and .press)This memo documents a small executive called Command Central; this Tool is intended to beinstalled with the Debugger and can be used to invoke the Compiler, the Binder, and clientprograms, all of which upon completion are directed to return to Command Central rather than tothe Alto Executive. The idea is that, while programming in Mesa, you enter Command Central'scontrol only once, and you rarely have to leave it; this is made possible by the editor that is nowincluded in the Debugger, as well as by the context switching facilities provided by CommandCentral.InstallationTo include Command Central in the Debugger, type the following Alto Executive command wheninstalling, after retrieving Fetch.bcd (which contains TinyPup, Stps, and the FileTool)and Utilities>CommandCentral.bcd. (If you have more than 64K of memory, be sure toconsult the Installation section of the Debugger documentation before proceeding.)>XDebug Fetch/l CommandCentral/lWhile it is possible to use Command Central without also installing the FileTool, including it willhelp minimize the number of times you have to leave the Mesa environment. If you have enoughmemory on your machine, you might consider installing other Tools with your Debugger as well(e.g., ChatTool, SendMessageTool).Note: Tools loaded via the command line are initially inactive (i.e., no window is showing); movethe cursor into the gray area outside all windows and use the menu found there to activate them.Entering Command CentralWhen using Command Central, the Debugger becomes the executive from which all programs areinvoked. To first enter this environment, type>Mesa/dto the Alto Executive. You can now use the FileTool to retrieve the modules you wish to work onand the Tools editor to modify them. When you have finished your changes, turn your attention tothe Command Central window.dpX qpabri ^`sapX +s5Fp YFsap+s5Fp TPsat+s 5Fp O7up IJsF; CpP Ao+/ ?P >!E  06vpwpwp wp .v"px0 ,R)v &Jp1wp $*3 "T !Twpwp O ^1/ _t pH i/v pwp, $$= }L=d*Integrated Mesa Environment2Command Central WindowThis window provides command lines for compiling, binding, and running your program, thecontext switching commands, and an option sheet; it also supports the standard window operations(scrolling, growing, etc.).<==  pb"B  H(B"H"!*B "xb"" b"HH" b"" b"HH" b""#' b"@"( HG,h r GH"#2 h" Hb"""!" (> b"!" ( $ H!""h($!H"#"hr!b"" b"HH" b"" b"HH" @b""#@ b" @ @"H(" * "!H""*!I""""" qʬ r""""""""" """""H 0 """"""""""""""""""""""@@"""""""""<@@8""""""$"rȚrʘi$rƜ h"""""(L"(O <) """"""""""(H"J"(""""""(H$J"(")H(J ") """"( ($J"(h(J """"" r Ji"""""""""  """""p""""""""""""#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""<==<<Ut<8PMpK KNJ@F,+bJ)vpx'(L$pvpvpvp'#vpvpvpvp!vvpvpvpvpL( PE2]vpvp)Z<vpEF/2 vp)vp 6vp PvpHZEN  vp/d @>Vd'?6pd"0LWIntegrated Mesa Environment3Invoking Other ProgramsAny Mesa .bcd which expects to be loaded into Mesa.image and obtains its commands from thecommand line (Com.cm) can be invoked by Command Central using the Run: field and the Run!command. (As above, the global /q switch is added to the command line so that control will return to the Debugger.)Some obvious programs which you might include on your disk are Access and Print.You can also run arbitrary .image and .run files using Command Central, but unless they havemade provision to return control to the Debugger, they will exit to the Alto Executive uponcompletion. Use the Mesa/d command to reenter Command Central.LimitationsIf you use the Compile!, Bind!, Run!, or Go! commands when you are in the middle of adebugging session (at a breakpoint or an uncaught signal, for example), the state of the client willbe lost. In particular, normal termination processing of the client will not take place (e.g., open fileswill be left dangling).Distribution:Mesa UsersMesa GroupSDSupport+t<9'#pvp!v p "' vpvpv p xD&p?wpwpvpvp2V;vp$-  TIMESROMAN MATH  TIMESROMAN  HELVETICA TIMESROMAN LOGO TIMESROMAN GACHA  HELVETICA   TIMESROMAN  HELVETICA  TIMESROMAN MATH  TIMESROMAN  HELVETICA TIMESROMAN LOGOGACHA  HELVETICA  TIMESROMAN HELVETICA  HELVETICA  HELVETICA LOGO1"p%,FkJ='J#%$P:C%P=##:C:#=#B"Py:C:C"i rZ ( B "=i#B " 9eB: ;Z":#"iZ !WiW:Z": +iQB":B": +iGB":#* "B" : ;*PPB!l* "::B: ;Z":B":J"9W"iT"=#B ": C" 9B":qB)B:Z":*:B":B"i^: #: B":PP*J"PP*J":PPB"*iA":B: ;Z: j/N L&VUtilities60.presswick28-Oct-80 20:35:47 PSTL