Heading:qjk40(635) Mesa 6.0 Utilities Updatey756qjk40\b25B Page Numbers: Yes X: 527 Y: 10.5"qjk40 Copyright c Xerox Corporation 1980z18592l4445y45c\10f3 1f0 Inter-Office Memorandumz18592l4445y762\f5b To Mesa Users Date October 27, 1980z18592l4445d2998e21(0,65535)(1,4445)(5,11684)(6,14146)\f7 2f0t2 1t0 10t6 1f7t0 4f0t7 1t0 From Brian Lewis, Jim Sandman, Dick Sweet Location Palo Altoz18592l4445d2998y716e25\f7 4f0t2 1t0 36t6 1f7t0 8f0t7 1t0 Subject Mesa 6.0 Utilities Update Organization SDD/SS/Mesaz18592l4445d2998e25\f7 7f0t2 1t0b25t6B1f7t0 12f0t7 1t0 XEROX z18592l508y644e14(2116)\f2 5f0 Filed on: [Iris]Doc>Utilities60.bravo (and .press)e30j(0,16264)(1,65535)(5,65535)(6,65535)\f7 56f1 x2e12(2116) This memo outlines the changes made in the utility packages since the last release (Mesa 5.0, April 9, 1979). More complete information can be found in the Mesa User's Handbook.x2e12jk40(1799)\157i21I Major changes include some new commands in the Lister and an extensively reworked IncludeChecker. In addition, there is a version of the SignalLister that reads .bcd files.x2e12jk40\162f8 4f0 Listerx2e18jk80\b6B The 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 takes all characters up to the next comma or right bracket as the parameter. Thusx2e12jk40\38f8 4f6 1f0 Code[ListerRoutines] and Code["ListerRoutines"]l4269x2e12k40\f8 20f0 5f8 22f0 are equivalent. The new commands (and "improved" old ones) are listed below. Note that several of the new commands (and some of the old ones) are useful only for internal (Compiler) debugging.x2e12jk40 CodeInConfig[config, module] OctalCodeInConfig[config, module]x2e8jk40\f8 13f0b6f8B2f0b6f8B20f0b6f8B2f0b6f8B Config names a bound configuration; module is a module within that configuration. A code listing is produced for the module (see the Code and OctalCode commands). This is of particular interest for packaged configurations where the code has been rearranged among segments and code packs.l4269x2e6jk40\b6B30b6B92f8 4f0 5f8 9f0 CompressUsing[file]x2e8jk40\f8 14f0b4f8B The named file should contain a list of BCD file names. The using lists of the directory statement are generated for each module in the list; they are then sorted to show for each interface, and for each item in the interface, which modules reference that item. The same caveat about implicitly included symbols applies as for the Using command (see below). The output is written to file.ul.l4269x2e6jk40\40f7 3f0 290f8 5f0 48f8 7f6 1f0 Hexify[], Octify[]x2e8jk40\f8 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 code lister into hexadecimal mode; Octify[] reverts to octal mode.l4269x2e6jk40\157f8 6f0 47f8 8f0 Implementors[file]x2e8jk40\f8 13f0b4f8B The named file should contain a list of compiler output BCDs (interfaces and program modules). This command creates a file, File.iml, showing for each interface exported by any program in the list, where the various interface items are implemented. If the list also includes the BCD for a particular interface, the interface items not implemented by any program are also shown. In order to run this command, one needs not only the BCDs in the list, but also the BCDs for the interfaces exported by the programs therein. Missing BCDs are reported and the command attempts to forge on.l4269x2e6jk40\56f7 3f0 66f8 8f0 148f7 3f0 150f7 3f0 28f7 3f0 64f7 3f0 Stamps[file]x2e8jk40\f8 7f0b4f8B 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 and exports of the top level configuration in the file.l4269x2e6jk40\b4B35f7 3f0 34f8 7f0 UnboundExports[file]x2e8jk40\f8 15f0b4f8B File names a compiler or binder output BCD. This command examines all of the exported interfaces and enumerates interface items in those interfaces that are not exported by this module or configuration.l4269x2e6jk40\b4B35f7 3f0 Using[file]x2e8jk40\f8 6f0b4f8B Given a compiler output BCD, this command generates a directory statement with its included identifier lists (on file.ul). Since there is not enough information in the BCD to tell which symbols were implicitly included, the USING clauses will contain a superset of those items actually needed. The Mesa 6 Lister does a much better job of weeding out extraneous names in the USING clauses.l4269x2e6jk40\24f7 3f0 86f8 7f0 2f1 47f7 3f1 53f7 5f1 64f0 82f7 5f0 Version[file]x2e8jk40\f8 8f0b4f8B File names a compiler or binder output BCD, or an IMAGE file. This command shows, on Mesa.typescript, the object, source, and creator version stamps of the file.l4269x2e6jk40\b4B35f7 3f0 8f7 5f0 31f8 15f0 XrefByCallee[file], XrefByCaller[file]x2e8jk40\f8 13f0b4f8B16f0b4f8B File names a file that contains a list of BCD file names. For each module in the list, a scan is made of the code to find all procedure calls. The pairs are then sorted by either caller or callee. These commands produce output on file.xle and file.xlr, respectively.l4269x2e6jk40\b4B38f7 3f0 204f8 8f0 5f8 8f0 There are three kinds of procedure calls: local, external, and stack. The program can figure out which procedure is being called for local and external calls. Stack function calls are used for procedure variables (e.g., stream.get[...]) and for nested procedure calls. The program ignores nested calls and indicates a callee of * for procedure variables.l4269x2e6jk40\222f6b15f0B94f8 1f0 Include Checkerx2e18jk80\b15B The most significant differences between this version of the IncludeChecker and the one released with Mesa 5.0 are the following:x2e12jk40(0,65535)(9,4233) 1. It handles more files, and requires less processing time for large numbers of files.z17357l4233d3704x2e12jk40\2t10 1t0 2. It executes either from the command line or interactively.z17357l4233d3704x2e12jk40\2t10 11t0 1t10 3. It obtains the creation dates for source files from their leader page, rather than from the first few lines of the source text (however, see the description of the new switch /t below).z17357l4233d3704x2e12jk40\2t10 1t0 175f8 2f0 There have been other minor changes to command syntax. The entire section of the Mesa User's Handbook on the IncludeChecker is included below.x2e12jk40\82i20I The IncludeChecker is a program that examines a collection of Mesa source and BCDs for consistency. It produces an output listing that gives a compilation order for the files, and for each BCD, a list of all the BCDs that it includes, and a list of the BCDs which include it. Any inconsistencies (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 to make the files consistent. x2e12jk40\78f7 3f0 109f7 3f0 20f7 3f0 38f7 3f0 191f8 7f0 The IncludeChecker determines that an inconsistency exists among the input files if either: x2e12jk40 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.l4233d3704x2e12jk40\2t10 3f7t0 3f0t10 18f7t0 3f0t10 111f7t0 3f0t10 2. A source file is "newer" than the corresponding BCD. This could happen if the source had been edited, or if the source had been retrieved from a remote file server. The IncludeChecker compares the creation date of the source file against the creation date recorded in the BCD of the source file from which the BCD was derived. l4233d3704x2e12jk40\2t10 1t0 48f7 3f0 223f7 3f0 35f7 3f0 The IncludeChecker operates in either command line or interactive mode. To use it in command line mode, type to the Alto executive:x2e12jk40(1799) >IncludeChecker [outputfile][/switches] [filename1 filename2 ...]l4269x2e12k40\f8 wherex2e12jk40\5f8 outputfile is the name of the file written. If no extension or switches are given, .list is assumed. If no file name is specified, the file Includes.list is assumed.l4269x2e12jk40\f8 10f0 74f8 5f0 53f8 13f0 12f8 filename1 filename2 . . . is the list of file names specifying the source and .bcd files to be checked. It is not necessary to give an extension, since the IncludeChecker will look 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.l4269x2e12jk40\f8 25f0 53f8 4f0 108f8 5f0 4f8 4f0 69f8 5f0 5f8 4f0 To use the IncludeChecker interactively just type:x2e12jk40 >IncludeCheckerl4269x2e12jk40\f8 It 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 in interactive mode displays a short summary of the IncludeChecker's parameters and use.x2e12jk40\176f8 2f0 12f8 2f0 Each switch can be preceded by a - or ~ to turn it off. The switches are:x2e12jk40\33f8 1f0 4f8 1f0 /o Print a compilation order in the output file (this is the default); -o suppresses this listing.l5600d4269x2e12jk40(0,5600)(9,65535)\f8 3f0 68f8 2f0 /i Print both the includes and included by relationships in the output file (default).l5600d4269x2e12jk40\f8 3f0 /t Obtain the creation date of source files from their leader page (default); -t will attempt to get the creation date from the first few lines of the source text. l5600d4269x2e12jk40\f8 3f0 75f8 2f0 /c Write a consistent compilation command in Line.cm (-c is the default). In addition, list as comments any BCDs and source files not on the disk which are needed to do the compilation.l5600d4269x2e12jk40\f8 3f0 42f8 7f0 2f8 2f0 53f7 3f0 /m Use multiple output files (-m is default). The compilation order is written on source.outputfile. The includes and included by relations are written onto outputfile.includes and outputfile.includedBy, respectively. This switch is useful if the output would otherwise be too large to fit into Bravo.l5600d4269x2e12jk40\f8 3f0 27f8 2f0 51f8 17f0 59f8 19f0 5f8 21f0 /n Do not compile source files that do not currently have corresponding .bcds on the disk (-n is default).l5600d4269x2e12jk40\f8 3f0 69f8 4f0 15f8 2f0 /p Place a /p after every change of inclusion depth (see below) in the compilation command (-p is default). This will cause the Compiler to pause if errors are found while compiling that or any previous module. l5600d4269x2e12jk40\f8 3f0 8f8 2f0 79f8 2f0 /s Same as /c-i-o. This is used when only a consistent compilation command is needed.l5600d4269x2e12jk40\f8 3f0 8f8 6f0 The default switches are /oit-c-m-n-p-s.x2e12jk40(1799)\25f8 14f0 Note: The IncludeChecker only checks for consistency of the files that you specify. Thus, the list of files that you give should include, for example, any important system files upon which your files are dependent. x2e12jk40\b4B2i76I You should also inspect the compilation command before executing it, since the IncludeChecker's idea of what should be recompiled may not be the same as yours. x2e12jk40 If a source file but no BCD is found on the disk, the IncludeChecker outputs a warning on the display; in addition, it adds that file to the compilation command if /c and /-n are in effect. A warning 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. x2e12jk40\24f7 3f0 137f8 2f0 5f8 3f0 50f7 3f0 The IncludeChecker lists the file names of the compilation order and the consistent compilation command by inclusion depth, with the files that are the most deeply included first. Within that constraint, definitions modules are printed before program modules. In general, then, the "lowest level" definitions modules appear first, while the "highest level" program modules appear last. x2e12jk40 As an example of the IncludeChecker's use, the command linex2e12jk40 >IncludeChecker IC/c IODefs IOPkg LexiconDefs Lexicon LexiconClientl4269x2e12k40\f8 will produce a consistent compilation command in Line.cm and the output shown below on IC.list.x2e12jk40\49f8 7f0 31f8 7f0 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) includes streamdefs stringdefs IOPkg (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 windowdefs Lexicon (28-May-80 9:30:29 60#203#) (compilation source: 28-Apr-80 17: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 systemdefs LexiconClient (28-May-80 10:02:50 60#203#) (compilation source: 28-May-80 10: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#) oldstringdefs LexiconDefs (14-May-80 10:48:49 60#205#) (compilation source: 18-Apr-79 19:19:11) (source on disk: [same]) includes nothing IODefs is included by IOPkg Lexicon LexiconClient IOPkg is included by nothing Lexicon is included by nothing LexiconClient is included by nothing LexiconDefs is included by Lexicon LexiconClientx2e12jk40\f8 BcdSignalsx2e18jk80\b10B BcdSignals is an Alto/Mesa program which will produce a signal listing from a .bcd file; it works much like the Alto/Mesa SignalLister for listing the signals in a .image file (see the Mesa User's Handbook). To produce the signal listing Foo.signals from Foo.bcd, type to the Alto Executive:e12jk40(2116)\78f8 4f0 82f8 6f0 15i20I34f8g11f0G6f8g7f0G >BcdSignals [octalNumber/switch] Foo[/switches]l4269e12jk40\f8 wheree12(635) /n takes octalNumber to be the global frame index of the first frame in this BCD. This will normally be the first free global frame index in the system into which the BCD will be loaded.l7072d4256e6j(0,7072)\f8 2f0 7f8 11f0 57f7 3f0 88f7 3f0 /x takes octalNumber to be the StartPilot loadmap form of a global frame index. This is the number in brackets beside the module name in the loadmap. It should be 200B times the octal number used with the /n switch.l7072d4256e6j\f8 2f0 7f8 11f0 187f6 2f0 /p lists the name, byte PC, and length of each procedure in Foo on Foo.procs.l7072d4256e6j\f6 2f0 58f8g3f0G4f8g9f0G /s list the signals of Foo on Foo.signals (default).l7072d4256e6j\f6 2f0 21f8g3f0G4f8g11f0G As usual, a - or ~ can be used to invert the sense of the /s switch.e12(635)\12f8 1f0 4f8 1f0 40f8 2f0 x2e12jk40(2116) Distribution: Mesa Users Mesa Group SDSupportl3528d2998x2e12k80