MULTICS TECHNICAL BULLETIN                                MTB-624

  To:       MTB Distribution

  From:     Bonnie Braun, et al.

  Date:     06/23/83

  Subject:  analyze_multics: A Multics address space
            translator/analyzer.

                             - ABSTRACT -

     The contents of  this MTB outlines a tool  intended to be used
  for  the  analysis  of  a  Multics  address  space.   This  tool,
  analyze_multics,  is intended  to replace  ol_dump and  ifd.  Its
  current capabilities are restricted to the perusal of FDUMPs, but
  we  intend to  extend its  capabilities to  both 'dead'  and live
  processes.  This will be the subject of a future MTB.

            Comments should be sent to the authors:

            via Forum:
               >udd>sm>rlc>mtgs>azm

            via Multics Mail On System M:
               To:  Braun.Multics

  ________________________________________

  Multics  Project  internal  working  documentation.   Not  to  be
  reproduced or distributed outside the Multics Project.


  MTB-624                                    analyze_multics Rev. 1

     INTRODUCTION:

        There are two dump analyzers  available on Multics, as well
     as  some unknown  number of  private tools  used for  the same
     purpose.  Each fills a need, or  at least filled a need at one
     time.   However,  they  are  not  robust  enough  to  meet the
     current, much  less future, needs of  the user and development
     communities.   In  addition, ol_dump  and  ifd are  not easily
     maintained  nor  are  their capabilities  extended  with ease.
     Therefore,  the  need  for  a  common  address  space analyzer
     exists.   This  analyzer  should  exceed  the  capabilities of
     ol_dump, have the symbolism of  ifd, be capable of translating
     and  analyzing any  properly structured  address space  and be
     easily extensible  to meet the needs  of individual developers
     and Site SA's.

     This   MTB   will   address   the   current   capabilities  of
     analyze_multics  (FDUMPs)  and  it  will  be  updated,  as the
     capability  of  analyze_multics to  deal  with other  forms of
     address spaces, is expanded.  It is not unreasonable to extend
     analyze_multics to multiplexers but this concept is left for a
     later MTB.


  analyze_multics Rev. 1                                    MTB-624

     OVERVIEW:

        In  order  to   achieve  versatility,  maintainability  and
     extensibility,  analyze_multics  will  use subsystem_utilities
     (ssu_).   The  use  of  ssu_  makes  the  offering  of  active
     functions, exec_coms and user extensions easy.

        A translation  table will be  maintained that will  map the
     address  space  to  be  analyzed.   If  data  for  analysis is
     retrieved from the address space by this translation table, by
     definition  the address  space is composed  of segments, there
     will  be  a one  to  one correspondence  of table  entries and
     segments that need to be looked  at.  This implies a two level
     concept:  An  inner level to  manage the translation  table as
     well as retrieve  the data; and an outer  level to perform the
     analysis.  By replacing the inner level, dependent on the type
     of  address  space, 'live'  and  'dead' processes  as  well as
     FDUMPs may  be analyzed.  Each address  space selected will be
     considered  as a  translation.  Multiple  translations, of any
     combination,   will   be  supported   in  one   invocation  of
     analyze_multics.   The number  of translations  allowed in one
     invocation  is limited  only by  the amount  of quota  for the
     process directory.

        An  analyzer  should be  as  independent of  system release
     changes as  possible.  The method chosen  to achieve this goal
     was to  use symbolic addresses  to retrieve or  translate data
     whenever possible.  This convention  is followed internally as
     well  as at  the user interface  level.  All  requests use the
     same   utility  to   convert  symbolic   addresses,  providing
     consistency from  request to request.  This  symbolism will be
     referred to as a "pointer value" or "virtual address" and will
     be defined in the documentation section.

        Analyze_multics  will  provide  11  (8  'standard'  pointer
     registers, plus one  for the current stack frame,  one for the
     current  machine  condition pointer  and  one for  the current
     linkage section) temporary pointer registers.  These registers
     are  intended to  provide the  user of  analyze_multics with a
     mechanism  to simulate  the pointer  registers in  the current
     Multics  processor to  make perusal  of an  address space less
     cumbersome.   These 'registers'  may be  set to  represent any
     valid  virtual address  by user  request.  The  primary intent
     here  is  to  increase  the  level  of  symbolism  offered  by
     analyze_multics.  In addition to these temporary pointers, the |
     user can define names for his own temporary pointers.          |

        Analyze_multics will offer a means of displaying an address
     space  as   a  PL/I  structure.   However,   this  feature  is
     restricted to system defined structures.


  MTB-624                                    analyze_multics Rev. 1

     DOCUMENTATION:

     analyze_multics, azm

     Syntax:  analyze_multics {-control_args}

     Function:  Invoke a subsystem that will permit the scanning of
           a Multics address space for analysis.

     Control arguments:

     -abbrev, -ab
*          enables abbreviation expansion of request lines.
     -no_abbrev, -nab
           does not enable abbreviation expansion of request lines.
           (Default)
     -no_prompt
           suppresses the  prompt for request lines  in the request
           loop.
     -no_start_up, -nsu
           specifies  that no  startup exec_com is  to be executed.
           (Default)
     -profile PATH, -pf PATH
           specifies  the  pathname  of  the  profile  to  use  for
           abbreviation expansion.   The suffix "profile"  is added
           if necessary.  This control argument implies -abbrev.
     -prompt STR
           sets the request loop prompt to STR.  The default is the
           ioa_ STR:
                      ^/azm^[ (^d)^]:^2x
     -request STR, -rq STR
           executes  STR as  a analyze_multics  request line before
           entering the request loop.
|    -select_dump NAME, -sld NAME
|          Where  NAME  is  the dump  number  or the  path  name of
|          component zero (0)  of the FDUMP.  A path  name and dump
|          number combined is also acceptable, for example:
|             azm -sld >dumps>old_dumps>173
|          would mean  ERF 173 in >dumps>old_dumps.   NAME can also
|          be  the  control  argument  '-last' which  will  get the
|          latest, or  most current FDUMP in  the dump directory or
|          '-first' which gets the oldest fdump.
     -start_up, -su
           specifies  that  the exec_com  'start_up.azmec' is  to be
           executed  upon  invocation   of  analyze_multics.   This
           start_up  exec_com is  first searched for  in the user's
           home  directory,  then in  the user's  project directory
           >udd>Project_id, and last in  >site.  The first exec_com


  analyze_multics Rev. 1                                    MTB-624

           found is used.
     -quit
           Exit analyze_mulitcs after execution of other arguments.
           Can be used for such commands as:
             analyze_multics -erf XXX -why -quit
           which  displays  the immediate  cause  of the  FDUMP and
           exits.
     -why
           Causes  analyze_multics   to  attempt  to   display  the
           immediate cause of the FDUMP.  This is equivalent to the
           why request.

     Notes:    analyze_multics  uses   the  standard   search  list
     mechanism to locate FDUMPs.   If analyze_multics does not find
     a "dumps" search  list, it will create one,  placing >dumps in
     the search  list as the  default.  If additional  search paths
     are  desired the  "add_search_path" command should  be used to
     define them.


  MTB-624                                    analyze_multics Rev. 1

      Virtual Address Constructs

      Accessing  data  requires  some  pointer value  to  define an
      address  space.   The  generation  of  the  pointer  value is
      performed by  resolving a virtual  address (VIRTUAL-ADDR).  A
      VIRTUAL-ADDR  consist of  two parts,  a segment  number and a
      word offset.

      analyze_multics   will   resolve   VIRTUAL-ADDR's   from  the
      following types of information:

      Symbols:
          a  symbol is  defined as  a symbolic  name for  a segment
          number  and an  offset that  can be  resolved by  data in
          definitions_.   (ie:   sst$ptl  can  be  resolved  to the
          correct  segment  number  and  offset of  the  page table
          lock.)

      Segment name:
          a segment  name can be  resolved in many ways  but it can
          only provide  one part of  the virtual address,  azm will
          use 0 as the default offset for this pointer value.  (ie:
          tc_data would be resolved to SEGNO|0)

      Segment number:
          a segment number needs no resolution but a default action
          needs  to  be taken  for  the offset.   default  0.  (ie:
          SEGNO|0).

      Segment name/number and offset:
          the VIRTUAL-ADDR  in this case  can be a  segment name or
          segment number and an  OCTAL offset.  (ie:  the construct
          of pds|20 would be translated to SEGNO|20 or dseg|5 would
          be 0|5).  The  notation "|" and "$" MUST  be used without
          spaces (e.g., 244|0 or sst$cmp).

      Temporary pointers:
|         analyze_multics keeps a set  of 11 temporary pointers per
|         translation.  A  translation is one  complete entity such
|         as an  "FDUMP".  These pointers  can be set  with the set
|         request (ex:   set %sp 230|100).   All temporary pointers
|         are  prefixed  with  a  percent (%)  sign.   They  can be
|         referenced by other requests  as another type of "symbol"
|         in a  VIRTUAL-ADDR expression, after they  have been set.
|         If not set, these pointers are invalid.

|         In addition to the temporary pointers above, the user can
|         define  his own  temporary pointers via  the set request.
|         Any name beginning with a "%"  can be used as the name of
|         a virtual  pointer (ex:  set %bad_astep  16|0).  Up to 20
|         user-defined names can be defined at one time.


  analyze_multics Rev. 1                                    MTB-624

      Offset operators:
          The  operators  "+N"  and "-N"  immediately  preceding an
          octal  number, or  VIRTUAL-ADDR construct can  be used to
          alter  the  offset of  a  virtual address.   N  is number
          interpreted in octal.  No  spaces are allowed between the
          operator and  the N.  For  example, sst$ptl +30  would be
          resolved to be  the SEGNO for sst_seg with  the offset of
          ptl plus 30 octal locations, sst$ptl+30 is also valid).

      Indirection:
          A VIRTUAL-ADDR  can imply indirection,  the indirect word
          may be used as an ITS pair  if it is valid ITS word pair,
          if  not the  upper half  of the  word will  be used.  The
          following  VIRTUAL-ADDR  construct  is  used  to  specify
          indirection (sst$cmp,*).

      The format of an indirect pointer value is:
            segno|offset,*       segname|offset,*       symbol,*
            temp_ptr,*           temp_ptr|offset,*
      Examples of indirection:
            17|230,*        sst|230,*              sst$cmp,*+2
            sp,*            sp|230,*


  MTB-624                                    analyze_multics Rev. 1

      DESCRIPTION OF REQUESTS:
          These  are  grouped  into  two  categories,  a)  requests
          particular to the analyze_multics subsystem and b) a list
          of  requests relating  to the  subsytem environment.  The
          documentation for these general requests will be obtained
          from the ssu documentation  in the Programmer's Reference
          Manual and included in the final azm documentation.

      ANALYZE_MULTICS REQUESTS:

      absolute_address, absadr

      Syntax:  absadr VIRTUAL-ADDR

      Syntax as an active request:
            [absadr VIRTUAL-ADDR]

      Function:   Translates  a  'virtual address'  to  an absolute
            memory address.

      Arguments:

      VIRTUAL-ADDR
            May be a segment number, name or symbolic address (e.g.
            64, prds,  prds$am_data).  Do a  'help virtual_address'
            for    more   detailed    information   on   acceptable
            virtual-address constructs.

      Example of active request usage:

            !  display_absolute [absadr sst$cmp] 2


  analyze_multics Rev. 1                                    MTB-624

      add_request_table, arqt

      Syntax:  arqt PATH {-control_args}

      Function:  Adds a  user defined request table in  the list of
            request   tables   being   searched   by   the  current
            analyze_multics invocation.

      Arguments:

      PATH
            is  the path  name of  the request  table to  be added.
            This  request  table must  be  consistent for  use with
            subsystem  utility.   See   the  section  on  subsystem
            request language  in the Programmer's  Reference Manual
            for request table structure.
      -after STR, -af STR
            specifies  that  the  new request  table  be positioned
            after  the  request table  entry  denoted by  STR.  See
            Notes below.
      -before STR, -be STR
            specifies  that  the  new request  table  be positioned
            before  the request  table entry  denoted by  STR.  See
            Notes below.
      -first, -ft
            specifies that the request table  be added as the first
            entry in the request table list.
      -last, -lt
            specifies that  the request table be  added as the last
            entry in the request table list.  (Default)

      Notes:  STR can be either the pathname or the index number of |
            the request  table entry found  in the current  list of |
            request tables (see list_request_tables request).       |


  MTB-624                                    analyze_multics Rev. 1

      apply, ap

      Syntax:  apply VIRTUAL-ADDR {RANGE} command_line

      Function:  Extracts  all or part  of a segment,  specified by
            VIRTUAL-ADDR from the selected  FDUMP and places a copy
            in a temporary segment.  The new path name is passed as
            the last argument in the command_line.

      Arguments:

      VIRTUAL-ADDR
            May be a segment number, name or symbolic address (e.g.
            64, prds,  prds$am_data).  Do a  'help virtual_address'
            for    more   detailed    information   on   acceptable
            virtual-address constructs.
      RANGE
            Specifies the  number of words  in octal to  be copied.
            The default is the entire segment.
      command_line
            any command.

|     Notes:  The offset in the virtual address specifies where the
|           copying  of the  segment begins.   When only  part of a
|           segment is  extracted, it goes at  the beginning of the
|           temporary segment.  For example:
|                  apply pds$am_data 400 dump_segment
|           will put  256 (decimal) words  at the beginning  of the
|           segment.


  analyze_multics Rev. 1                                    MTB-624

      apte                                                          |

      Syntax:  apte {proc_indicator} {-control_args}

      Function:  Displays apte info for  processes in an FDUMP that
            match the states specified.

      Argument:

      proc_indicator                                                |
            for specifying  individual processes.  It  can take one |
            of three forms:                                         |
               - The decimal index (starting at zero) of a process in|
                 the FDUMP.                                         |
               - The octal apte offset of the process.              |
               - The octal process_id of the process.               |
      Below are  acceptable control_args  if proc_indicator  is not
            specified.

      Control Arguments:

      -all, -a                                                      |
            Displays  apte  info  for  all processes  in  any state |
            (Default).                                              |

      -blocked, -blk
            Displays  apte info  for all  processes in  the blocked
            state.

      -count, -ct                                                   |
            specifies  the  total number  of processes  meeting the |
            criteria specified by the  control_args.  With -all, it |
            gives the counts of each process state.                 |

      -page_tbl_lock, -ptl
            Displays  apte info  for all  processes marked  as page
            table locking.

      -ready, -rdy
            Displays  apte  info  for  all processes  in  the ready
            state.

      -run
            Displays  apte info  for all  processes in  the running
            state.

      -stopped, -stop
            Displays  apte info  for all  processes in  the stopped
            state.


  MTB-624                                    analyze_multics Rev. 1

      -wait
            Displays  apte info  for all  processes in  the waiting
            state.


  analyze_multics Rev. 1                                    MTB-624

      associative_memory, am

      Syntax:  am {-control_args}

      Function:  Display SDW and/or PTW Associative Memories.

      Location Control Arguments:                                   |

      -dump                                                         |
            displays the  "dump" Associative Memories  from the BOS |
            CPU  at  the  time the  dump  was taken.   This  is the |
            default.                                                |

      -prds                                                         |
            displays Associative memories that  have been stored in |
            the current processes prds.                             |

      Control arguments:

      -all, -a
            Specifies that ALL entries  in the Associative Memories
            are to be displayed.  Default  is to display only those
            entries that are valid (i.e., the full bit is on).
      -ptw
            Specifies that only the PTW Associative memories are to
            be displayed.
      -pageno PAGENO
            where  PAGENO is  an octal page  number.  Displays only
            those entries in the PTW Associative Memories that have
            a page number that matches the value of PAGENO.
      -sdw
            Specifies that only the SDW Associative Memories are to
            be displayed.
      -segno SEGNO
            where SEGNO is an  octal segment number.  Displays only
            those entries  in the SDW and  PTW Associative Memories
            that have  a segment number  that matches the  value of
            SEGNO.  See assoc_mem.incl.pl1.

      Notes:
            If no control arguments are given, BOTH the SDW and PTW
            Associative  Memories  are  displayed  for  the  "dump"
            Associative Memories.


  MTB-624                                    analyze_multics Rev. 1

|     aste

|     Syntax:  aste segno/segname {-control_args}

      Function:  Displays  page table information.   The default is
            to display the aste and page table info only.

      Arguments:

      segno/name
            is the segment number or segment name of interest.

      Control Arguments:

      -aste
            Displays  active  segment  table  information  for  the
            selected entry.
      -at offset, -at virtual-addr
            Displays  aste info  starting at the  offset or virtual
            address specified.
      -brief, -bf
            Displays everything excluding the page table info.
      -long, -lg
            Displays everything which includes the aste, page table
            and trailer information.
      -page_table, -pt
            Displays  page  table   information  for  the  selected
            segment.
      -trailer, -tr
            Displays   trailer   information  about   the  selected
            segment.


  analyze_multics Rev. 1                                    MTB-624

      clock                                                         |

      Syntax:  clock VALUE {-control_args}                          |

      Function:  Interprets a Multics clock reading in some form.   |

      Arguments:                                                    |

      VALUE                                                         |
            is the clock reading in one of the following forms:     |

      octal number                                                  |
            which   must   be  greater   than  262144   decimal  to |
            distinguish it from a virtual address.                  |
      decimal number                                                |
            identified by a trailing decimal point.                 |
      virtual address                                               |

      Control arguments:                                            |

      -short, -sh                                                   |
            causes  the upper  20 bits  of the  72 bit  value to be |
            ignored  (since  there  are programs  which  re-use the |
            upper halfword of a clock value)                        |
      -fstime                                                       |
            causes  a single  word to  be interpreted  (or found at |
            virtual_address) as a 36 bit file system time value.    |
      -uid                                                          |
            causes  a single  word to  be interpreted  (or found at |
            virtual_address) as  the time represented  by a Multics |
            unique  ID  string.  This  is  only a  very approximate |
            value,  since  unique  IDs  are  assigned  sequentially |
            during  any given  bootload, and  only initialized from |
            the clock at bootload time.                             |

      Note:  Clock values are  displayed in full long_date_time_ as |
            MM/DD/YY HH:MM:SS.mmmmmm ZZZ DDD.  The value is printed |
            in octal if it is outside the 20th century.             |


  MTB-624                                    analyze_multics Rev. 1

|     configuration_deck, cd

|     Syntax:  cd {card_names} {control_args}

      Function:   displays the  contents of the  config_deck in the
            selected  FDUMP.  This  request works  exactly like the
            standard  pcd command,  the only difference  is that it
            gets the config deck from the FDUMP.

      Arguments:

      card_names
            are the names of  the particular configuration cards to
            be displayed.   Up to 32  card names can  be specified.
            If no card_names are given the the complete config_deck
            will be printed.

      Control Arguments:

|     -brief, -bf
|           suppresses the error message when a requested card name
|           is not found.  (Default)
|     -exclude FIELD_SPECIFIERS, -ex FIELD_SPECIFIERS
|           excludes  particular  cards  or card  types  from being
|           displayed.  One to 14  field specifiers can be supplied
|           with  each  -exclude  control  argument, and  up  to 16
|           -exclude  arguments can  be specified.   To be eligible
|           for  exclusion, a  card must contain  fields that match
|           all  field   specifiers  supplied  with   any  -exclude
|           argument.
|     -long, -lg
|           prints an  error message when a  requested card name is
|           not found.
|     -match FIELD_SPECIFIERS
|           selects particular cards or card types to be displayed.
|           One to  14 field specifiers  can be supplied  with each
|           -match control argument, and  up to 16 -match arguments
|           can be specified.  To be eligible for selection, a card
|           must  contain  fields that  match all  field specifiers
|           supplied with any -match argument.

|     Notes:  Field specifiers can consist of a complete card field
|           or a  partial field and  an asterisk (*).   An asterisk
|           matches any part of  any field.  Specifiers for numeric
|           fields can be given in octal or decimal, but if decimal
|           they must contain a decimal point.  Asterisks cannot be
|           specified  in  numeric field  specifiers.   All numeric
|           field specifiers  are converted to  decimal and matched
|           against numeric  card fields, which  are also converted
|           to decimal.  Hence, the  field specifier "1024."  would
|           match a  card containing the octal  field 2000, and the


  analyze_multics Rev. 1                                    MTB-624

            field  specifier "1000"  would match  a card containing |
            the decimal field 512.                                  |

            Note that  all card names must  be specified before the |
            first  -match or  -exclude argument.   Field specifiers |
            following  a  -match or  -exclude argument  include all |
            arguments until the next -match or -exclude argument.   |


  MTB-624                                    analyze_multics Rev. 1

|     delete_dump, dld

|     Syntax:  dld {NAME} {-control_args}

|     Function:  Deletes the FDUMP specified  by NAME.  The dump to
|           be  deleted  is found  via the  dump search  list which
|           defaults to >dumps.

|     Arguments:

|     NAME
|           is  the ERF  number or  the path  name of  the zero (0)
|           component  of  the  FDUMP.   It can  also  be  the form
|           path>35   where   35  is   the  erf   number.   Several
|           control_args  are  also  acceptable   if  NAME  is  not
|           specified.

|     Control arguments:

|     -current, -cur
|           deletes the dump currently being looked at.

|     -first, -ft
|           deletes the first dump in  the dump directory found via
|           the dump search list.

|     -last, -lt
|           deletes  the  last  (most  current)  dump  in  the dump
|           directory.


  analyze_multics Rev. 1                                    MTB-624

      delete_request_table, drqt

      Syntax:  drqt STR

      Function:  Deletes  a defined request table  from the list of
            request tables being searched.

      Arguments:

      STR                                                           |
            can be either  the pathname or the index  number of the |
            request    table    entry    to    be    deleted   (see |
            list_request_tables request).                           |


  MTB-624                                    analyze_multics Rev. 1

|     display, d

|     Syntax:
|     display VIRTUAL-ADDR {+-EXP} {RANGE} {-mode} {-ctl_args}

|     Function:  displays  a selected portion  of a segment  in the
|           FDUMP.

|     Function  as  an active  request:  See  'Mode Specifications'
|           below.

|     Arguments:

*     VIRTUAL-ADDR
            specifies  the  initial offset  of the  virtual address
            space to be  dumped.  May be a segment  number, name or
            symbolic address  (e.g.  64, prds,  prds$am_data).  The
            entire segment is displayed if  no offset (or RANGE) is
            given.  Do  a 'help virtual_address'  for more detailed
            information on acceptable virtual-address constructs.
      EXP
            is an expression,  which is either an octal  value or a
            VIRTUAL-ADDR construct yielding an octal value.

      RANGE
            specifies the  number of words  to be dumped  in octal.
            If a range is not specified the default is one word (if
            the data to be dumped is  an ITS pair two words will be
            dumped).

      Mode Specifications:

|     -character, -ch, -ascii
|           displays the selected number of characters in ascii, in
|           addition to the  octal representation.  Characters that
|           cannot be printed are represented as periods.  Usage as
|           an active request is not allowed.
|     -bcd
|           displays  the  BCD  representation   of  the  words  in
|           addition to the octal form.  Usage as an active request
|           is not allowed.
|     -ebcdic9
|           displays the  EBCDIC representation of  each 9-bit byte
|           in addition to the  octal from.  Characters that cannot
|           be  printed are  represented as  periods.  Usage  as an
|           active request is not allowed.
|     -ebcdic8
|           displays the  EBCDIC representation of  each eight bits
|           in addition to the  octal form.  Characters that cannot
|           be  printed  are  represented  by periods.   If  an odd
|           number of words is requested  to display, the last four


  analyze_multics Rev. 1                                    MTB-624

            bits of the last word do not appear in the translation. |
            Usage as an active request is not allowed.              |
      -instruction, -inst
            displays the selected number  of words as instructions.
            Usage as an active request is not allowed.
      -no_octal, -noc                                               |
            excludes the octal representation from being displayed. |
      -octal, -oc
            displays  the  selected number  of characters  in octal
            (Default).  When used as  an active request returns the
            octal value of the requested address.
      -ptr, -p
            displays the selected number of word pairs as pointers.
            When used as an active  request returns the octal value
            of the form SEGNO|OFFSET.
      -pptr, -pp
            displays   the   selected   number   of   words   as  a
            packed-pointer.  When used as an active request returns
            the octal value of the form SEGNO|OFFSET.
      -pptrx, -ppx
            displays    the   selected    number   of    words   as
            packed-pointers  and  expands  the  segno|offset  to  a
            segment  name.   Usage  as  an  active  request  is not
            allowed.
      -ptrx, -px
            displays the selected number  of word pairs as pointers
            and expands the segno|offset  to a segment name.  Usage
            as an active request is not allowed.

      Control Arguments:

      -as  STRUCTURE_NAME
            This will display the data selected by the VIRTUAL-ADDR
            as a hardcore PL/I structure defined by STRUCTURE_NAME.
            The STRUCTURE_NAME is a hardcore SYSTEM defined include
            file.  Usage as an active request is not allowed.
      -long, -lg
            This control argument is  only implemented with the -as
            control  argument.  It  will display the  format of the
            data  for  each structure  level  as well  as  the data
            value.

      Examples:
            d 75|560 2
              this would display the two words in seg number 75 starting
              at offset 560.

            d pds|560 2
              this would display the two words in the segment named pds
              starting at offset 560.


  MTB-624                                    analyze_multics Rev. 1

            d pds$trace
              this would display one word in the pds segment beginning at
              the offset specified by $trace.

            dump 244|260 +20 4
              this would display four words of segment number 244 starting
              at offset 300 octal.

            d %sp 20
              this would display 20 octal words starting with the segment
              and offset defined in the azm internal temporary pointers
              (see set request).

            d sst$cmp,* +sst$cmesize sst$strsize
              this will  cause the word  at sst$cmp to be  used as an
              indirect word, or an indirect pointer if  the resultant
              address has ITS  modification, to  develop the starting
              virtual address. The value derived from sst$cmesize will
              then  be added to  the starting  offset for the 'final'
              starting address.  The range, or number  of words to be
              displayed, is  specified by  the value  contained in
              sst$strsize.

            d sst|2 -as apte
              That would display the APTE entry at the given offset in
              the SST as it is defined by apte.incl.pl1.

      Notes:
            For   more   information  on   developing  VIRTUAL-ADDR
            constructs refer to virtual_address.info.


  analyze_multics Rev. 1                                    MTB-624

      display_absolute, da                                          |

      Syntax:  da  ABS-ADDR {RANGE} {-mode} {-ctl_args}             |

      Function:   dumps  an absolute  memory  address space  in the |
            FDUMP.                                                  |

      Function  as  an active  request:  See  'Mode Specifications' |
            below.                                                  |

      Arguments:                                                    |

      ABS-ADDR                                                      |
            is the starting absolute memory address, in octal.      |

      RANGE                                                         |
            specifies the  number of words  to be dumped  in octal. |
            If a range is not specified the default is one word (if |
            the data to be dumped is  an ITS pair two words will be |
            dumped).                                                |

      Mode Specifications:                                          |

      For a description of the mode specifications, see the display |
            request.                                                |

      -character, -ch, -ascii                                       |
      -bcd                                                          |
      -ebcdic9                                                      |
      -ebcdic8                                                      |
      -instruction, -inst                                           |
      -no_octal, -noc                                               |
      -octal, -oc                                                   |
      -ptr, -p                                                      |
      -pptr, -pp                                                    |
      -pptrx, -ppx                                                  |
      -ptrx, -px                                                    |


  MTB-624                                    analyze_multics Rev. 1

|     error_code, err

|     Syntax:  err ERROR_CODE

|     Function:     Interprets   an    error_table_   value.    The
|           error_table_  is  found via  the hardcore  search list.
|           This is useful when interpreting argument lists.

|     Arguments:

|     ERROR_CODE
|           is  a  standard Multics  error code  value.  It  can be
|           specified   as   an  octal   value,  a   decimal  value
|           (identified by  a trailing decimal point)  or a virtual
|           address pointer.


  analyze_multics Rev. 1                                    MTB-624

      events, ev                                                    |

      Syntax:  events {-control_args}                               |

      Function:    Displays   'interesting   events',   in  reverse
            chronological  order,  from  an  FDUMP.   Those  events
            considered to be interesting are described in 'notes'.

      Control Arguments:

      -brief, -bf                                                   |
            displays each event on one line (Default).              |
      -connects, -con                                               |
            specifies that connects by device are to be displayed.  |
      -default_events                                               |
            specified  the   following  events  to   be  displayed: |
            traffic control, machine conditions, fim frames, syserr |
            messages  and  connects.  This  is a  shorthand control |
            argument (Default).                                     |
      -disk_queues, -dq                                             |
            specifies that disk queue events are to be displayed.   |
      -fim                                                          |
            displays fim frames in any stack.                       |
      -last N, -lt N                                                |
            displays the last N events.                             |
      -long, -lg                                                    |
            displays events on one or more lines each.              |
      -machine_conditions, -mc                                      |
            displays machine conditions from BOS, prds, pds and the |
            mc_trace_buf.                                           |
      -no_connects, -ncon                                           |
            excludes  device   connects  from  the   events  to  be |
            displayed.                                              |
      -no_disk_queues, -ndq                                         |
            excludes  disk  queue  events  from  the  events  to be |
            displayed.                                              |
      -no_fim                                                       |
            excludes fim frames from the events to be displayed.    |
      -no_machine_conditions, -nmc                                  |
            excludes  machine  conditions  from  the  events  to be |
            displayed.                                              |
      -no_syserr                                                    |
            excludes  syserr   messages  from  the   events  to  be |
            displayed.                                              |
      -no_traffic_control, -ntc                                     |
            excludes  traffic control  info from  the events  to be |
            displayed.                                              |
      -syserr                                                       |
            displays  syserr  messages  from  both  syserr_data and |
            syserr_log.                                             |
      -time NSECS, -tm NSECS                                        |
            specifies the time in seconds before the dump was taken |


  MTB-624                                    analyze_multics Rev. 1

|           when events were 'interesting'.
|     -traffic_control, -tc
|           displays traffic control state change time.

|     Notes:  The  following events are  considered as interesting:
|           Machine  Conditions  (from  BOS,   prds,  pds  and  the
|           mc_trace_buf),  Traffic  Control   state  change  time,
|           syserr messages (from both syserr_data and syserr_log),
|           Fim frames  in any stack,  connects by device  and disk
|           queues.   The  default action  is  to display  in brief
|           format, the  last 30 events  excluding disk_queues (eg.
|           ev -bf -lt 30 -tc -mc -fim -syserr -connects).


  analyze_multics Rev. 1                                    MTB-624

      fdump_components                                              |

      Syntax:  fdump_components {NAME}                              |

      Syntax as an active request:                                  |
             [fdump_components {NAME}]                              |

      Function:  prints the absolute  pathnames of all the segments |
            which  are  components of  the  selected FDUMP.   As an |
            active request it returns the absolute pathnames.       |

      Arguments:                                                    |

      NAME                                                          |
            is  the ERF  number or  the path  name of  the zero (0) |
            component  of  the  FDUMP.   It can  also  be  the form |
            path>35 where 35 is the erf number.                     |

      Notes:   If NAME  is not  specified, the  information for the |
            current FDUMP  is used.  This can  be used to construct |
            abbrevs  for  performing storage  system  operations on |
            fdumps,  such  as  copying   or  access  setting.   For |
            example:                                                |
             .ab old_dump do                                        |
               "e move ([fdump_components &rf1]) >dumps>old>== -bf" |
             .ab sa_dump do "e set_acl ([fdump_components]) &rf1"   |


  MTB-624                                    analyze_multics Rev. 1

      frame, fr

      Syntax:
        fr {VIRTUAL-ADDR | -next | -prev} {-control_arguments}

|     Function:   Displays information  from a  single stack frame.
|           The  default  displays the  frame name,  entry pointer,
|           return pointers,  and, if a fim  frame, the fault type,
|           PPR, and TPR.

      Frame Specifiers:

      VIRTUAL-ADDR
            Display information for the frame at this address.

       -next, -nx
            display information for the frame called by the current
            frame.

       -previous, -prev
            Display  information  for  the frame  which  called the
            current frame.

      If a VIRTUAL-ADDR,  -next,  or -previous  are  not specified,
            information is displayed for the current stack frame.

      Control arguments:

|     -brief, -bf
|           suppresses   any   information  being   displayed  when
|           changing stack frames.

      -arguments, -ag
*           displays the arguments for the stack frame.

|     -handlers
|           displays  on units  attached to  the frame,  giving the
|           name of the condition and location of the handler.

|     -long, -lg
|           displays the  arguments, handlers and an  octal dump of
|           the stack frame.

|     Notes:   The  frame request  will  automatically set  the %sp
|           pointer to  the frame currently being  looked at.  If a
|           fim frame, the %mcp pointer is also set.


  analyze_multics Rev. 1                                    MTB-624

      history_regs, hregs

      Syntax:  hregs {HREGS_specifier} {-control_args}
      Function:  Displays a composite analysis or octal dump of the
            processor history  registers.  This request,  hregs, is
            useful by people who  are knowledgable of the hardware.
            The  default action  is to  display the  AU, CU  and OU
            history registers  for the pds in  a threaded order and
            interpreted format.

      HREGS Specifiers:                                             |

      -condition VIRTUAL-ADDR, -cond VIRTUAL-ADDR                   |
            displays history registers from  a condition frame, the |
            location of which is described by VIRTUAL-ADDR.         |
      -dump                                                         |
            displays the "dump" history  registers from the BOS CPU |
            at the time the dump was taken.                         |
      -pds                                                          |
            displays the history registers that have been stored in |
            the current processes pds (Default).                    |
      VIRTUAL-ADDR
            displays the history registers that have been stored at
            the  address  space  specified  by  VIRTUAL-ADDR.   See
            virtual_address.info.

      Control Arguments:

      -au
            specifies that only the APU history registers are to be
            displayed.
      -cu
            specifies that only the CU  history registers are to be
            displayed.
      -du
            specifies that only the DU  history registers are to be
            displayed.
      -interpret                                                    |
            Display the  interpreted form of  the history registers |
            only (Default), or, if -octal is specified, include the |
            octal representation also.                              |
      -octal, -oc                                                   |
            Displays  the octal  values of  history registers only, |
            or, if -interpret is  also specified, display octal and |
            interpreted form.  If neither  -octal nor -interpret is |
            specified,  the  default  action   is  to  display  the |
            interpreted form only.                                  |
      -thread                                                       |
            Attempt  to display  the selected  history registers in |
            the "correct" order (Default).                          |
      -no_thread


  MTB-624                                    analyze_multics Rev. 1

            Display the selected history registers in serial order,
            without attempting to sort them.
      -ou
            specifies that only the OU  history registers are to be
            displayed.


  analyze_multics Rev. 1                                    MTB-624

      list_dumps, lsd                                               |

      Syntax:  lsd {PATH}                                           |

      Function:  Lists the FDUMP's  in the selected dump directory. |
            If  PATH  is  not  given,  FDUMPS  from  all  the  dump |
            directories  specified  in  the dumps  search  list are |
            listed.                                                 |

      Arguments:                                                    |

      PATH                                                          |
            specifies PATH as the dump directory to list.           |


  MTB-624                                    analyze_multics Rev. 1

|     list_processes, lsp

|     Syntax:
|         lsp {proc_indicator} {-control_argument}

|     Syntax as an active request:
|         [lsp {proc_indicator} {-control_argument}]

|     Function:  Lists  all known processes in  the selected FDUMP.
|           As  an  active  request,  it  returns  the  process_ids
|           meeting the control argument criteria.

|     Argument:

|     proc_indicator
|           specifies which process to be  listed.  It can take one
|           of three forms:
|              - The decimal index (starting at zero) of a process in
|                the FDUMP.
|              - The octal apte offset of the process.
|              - The octal process_id of the process.
|     Below are  acceptable control_args  if proc_indicator  is not
|           specified.

|     Control arguments:

|     -all, -a
|           Lists all processes in the FDUMP (Default).

|     -blocked, -blk
|           Lists processes marked as blocked.

|     -count, -ct
|           specifies the number of  processes meeting the criteria
|           specified by the control_args.  With -all, it gives the
|           counts of each process state.

|     -current, -cur
|           Lists the current process.

|     -page_tbl_lock, -ptl
|           Lists processes marked as page table locking.

|     -ready, -rdy
|           Lists processes marked as ready.

|     -run
|           Lists processes marked as running.

|     -stopped, -stop
|           Lists processes marked as stopped.


  analyze_multics Rev. 1                                    MTB-624

      -wait                                                         |
            Lists processes marked as waiting.                      |

      Example:                                                      |

            !  do "select_process &1;sdw 0" ([list_processes])      |

            Would display the SDW for DSEG for all processes in the |
            FDUMP.                                                  |


  MTB-624                                    analyze_multics Rev. 1

      list_request_tables, lrqt

      Syntax:  lqrt

      Function:  Lists  the request tables currently  in use by the
            analyze_multics invocation as shown below:
|           1) >unb>azm_request_table_
|           2) >dumps>more_azm_requests_


  analyze_multics Rev. 1                                    MTB-624

      machine_conditions, mc

      Syntax:  mc {MC_specifier} {-control_args}

      Function:  Displays all or  parts of Machine Conditions based
            on the given pointer.

      MC Specifiers:

      -dump                                                         |
            specifies  the dump  for the  BOS CPU  regs at  time of |
            dump.                                                   |
      -pds {STR1}                                                   |
            where STR1 can be:                                      |
                 all                                                |
                 fim                                                |
                 pgf, page_fault                                    |
                 sig, signal, signaller                             |
            and  defaults to 'all' if STR1 is not given.            |
      -prds {STR2}                                                  |
            where STR2 can be:                                      |
                all                                                 |
                fim                                                 |
                int, interrupt                                      |
                sys, system_trouble                                 |
            and defaults to 'all' if not given.                     |
      VIRTUAL-ADDR                                                  |
            is  the virtual  address construct  used to  define the |
            address   space  containing   Machine  Conditions  (see |
            virtual_address.info).                                  |

      If none  of the  above are  specified, the  temporary pointer |
            %mcp  is  used.  If  %mcp  is not  already set,  the mc |
            request will set it.                                    |

      Control arguments:

      -eis
            display the EIS Pointers & Lengths (interpreted).
      -faults, -flt
            display the fault register.
      -long, -lg
            display all elements of the MC.
      -mc_err
            display the mc_err data word.
      -misc
            display the miscellaneous data (ie:  mc_err, fault reg,
            time)
      -octal, -oc
            display the eis info, scu data, or pointer registers in
            octal.
      -pointers {PR_LIST}, -prs {PR_LIST}


  MTB-624                                    analyze_multics Rev. 1

            display pointer registers selected by PR_LIST {0 -> 7}.
            If  PR_LIST  is  not  specified, all  the  pointers are
            displayed.
      -ppr
            only display the PSR and IC from the MC.
      -registers {REG_LIST}, -regs {REG_LIST}
            display only  the basic OU  registers.  Where REGS_LIST
            can be any of the following:
                      x0, x1, x2, x3, x4, x5, x6, x7, a, q all.
            If REG_LIST is not specified, all of the basic OU registers
            are displayed.
      -scu
*           display only the scu data of the MC.
      -time, -tm
            display the MC time.
      -tpr
            only display the TSR and the CA from the MC.

|     Note: The default control arguments are:
|            -eis, -fault, -mc_err, -pointers -scu, -time and -tpr.
|           The machine_conditions request  will set all azm-defined
|           temporary  pointers  as seen  in  the machine_condition
|           frame.


  analyze_multics Rev. 1                                    MTB-624

      page_trace, pgt                                               |

      Syntax:  pgt {-control_arg}                                   |

      Function:  displays  the contents of the  page trace table in
            the current process data segment (PDS).  The default is
            to  display the  last 15 trace  entries.  Trace entries
            are always displayed in reverse chronological order.

      Control Arguments:

      -all, -a
            specifies that all trace entries are to be displayed.
      -last N, -lt N                                                |
            specifies  the number  of trace  entries, where  N is a
            positive decimal integer, to be displayed.


  MTB-624                                    analyze_multics Rev. 1

      replace, rp

|     Syntax:  replace segno/segname PATH

|     Function:  Replaces  the segment designated  by segno/segname
|           in the current translation  table, with another segment
|           designated by PATH.

|     Arguments:

|     PATH
|           is the path name of the segment.
|     segno/segname
|           the   segment  number   or  segment   name  within  the
|           translation table to be replaced.  The equal convention
|           can be used:
|              replace bound_system_faults [e wd]>=.new

|     Notes:   Both  per-process  and  per-system  segments  can be
|           replaced.   For example,  if the  pds is  replaced in a
|           process, it  affects only the  current process, whereas
|           if  tc_data is  replaced in  a process,  it affects the
|           whole FDUMP.


  analyze_multics Rev. 1                                    MTB-624

      scus                                                          |

      Syntax:  scus                                                 |

      Function:  Prints the memory address space (in octal) of each
            scu from the registers saved in the FDUMP.


  MTB-624                                    analyze_multics Rev. 1

      sdw

      Syntax:  sdw {segno/name} {segno/name}

      Function:  Displays the SDW's in the current processes DSEG.

      Arguments:

      segno/name
            is the  segment number or name  of interest.  The first
            is the  starting segment number  and the second  is the
            ending segment number.  If only  one is given then only
            one  is  displayed  if  none  are  given  then  all are
            displayed.


  analyze_multics Rev. 1                                    MTB-624

      search, srh

      Syntax:  search VIRTUAL-ADDR {range} SEARCH_STRING

      Function:   This command  will search  a segment  starting at
            VIRTUAL-ADDR matching on  SEARCH_STRING.  The search is
            performed on a 36 bit word boundary.

      Syntax as an active request:                                  |
               [search VIRTUAL-ADDR {range} SEARCH_STRING]          |

      Function as an active request:  Returns the virtual addresses |
            matching the criteria specified.                        |

      Arguments:

      VIRTUAL-ADDR
            is  the pointer  to the  address space  to search.  See
            virtual_address.info
      range
            specifies the  number of words to  be searched from the
            starting  offset, where  range is an  octal value.  The
            default is the rest of  segment.  The search is started
            from VIRTUAL-ADDR.
      SEARCH_STRING
            This is a 12 character string representing the 12 octal
            digits that make  up a machine word (36  bit,3 bits per
            digit).  This will be used to form both the search data
            and search  mask, by using  the hyphen (-)  as a "don't |
            care  character" in  the string.  The  "do care digits" |
            are octal "0 -> 7".  Any other character is illegal.

      Examples:
              To search for:                                        |
              all words in segment 76 that have the last two digits |
              of 43:                                                |

                 search 76 ----------43                             |

              all words in tc_data where the upper half = 070707    |

                 search tc_data 070707------                        |

              words that  end in 1234  in sst_seg starting  at 1000 |
              but only searching for 200 octal words                |

                 search sst_seg|1000 200 --------1234               |


  MTB-624                                    analyze_multics Rev. 1

|             words that start  with 45 and end with  77 starting a
|             sst_seg$ptl for 100 words

|                search sst_seg$ptl 100 45--------77


  analyze_multics Rev. 1                                    MTB-624

      segment_name, name                                            |

      Syntax:  name [VIRTUAL-ADDR | number]                         |

      Syntax as an active request:                                  |
               [name number] or [name VIRTUAL-ADDR]                 |

      Function:  Prints the segment name given a virtual address or
            a segment number.

      Arguments:

      VIRTUAL-ADDR
            is  the virtual  address construct  used to  define the
            segment (see virtual_address.info).

      number
            specifies the  segment number to be  interpreted to its
            associated name.


  MTB-624                                    analyze_multics Rev. 1

|     segment_number, number

|     Syntax:  number [VIRTUAL-ADDR | name]

|     Syntax as an active request:
|              [number name] or [number VIRTUAL-ADDR]

      Function:  Prints  the segment number given  either a virtual
            address or a segment name.

      Arguments:

      VIRTUAL-ADDR
            is  the virtual  address construct  used to  define the
            segment (see virtual_address.info).

      name
            specifies  the segment  name to  be interpreted  to its
            associated segment number.


  analyze_multics Rev. 1                                    MTB-624

      select_dump, sld                                              |

      Syntax:  sld {NAME} {-control_args}                           |

      Function:  Selects and translates an FDUMP of a system crash. |
            Found  via  the  dump  search  list  which  defaults to |
            >dumps.                                                 |

      Arguments:                                                    |

      NAME                                                          |
            is  the ERF  number or  the path  name of  the zero (0) |
            component  of  the  FDUMP.   It can  also  be  the form |
            path>35   where   35  is   the  erf   number.   Several |
            control_args  are  also  acceptable   if  NAME  is  not |
            specified.                                              |

      Control arguments:                                            |

      -first, -ft                                                   |
            selects the first dump in  the dump directory found via |
            the dump search list.                                   |

      -last, -lt                                                    |
            selects  the  last  (most  current)  dump  in  the dump |
            directory.                                              |

      -next, -nx                                                    |
            selects the  next dump in the  dump directory.  This is |
            relative to the dump currently being looked at.         |

      -previous, -prev                                              |
            selects the previous dump  in the dump directory.  This |
            is relative to the dump currently being looked at.      |


  MTB-624                                    analyze_multics Rev. 1

|     select_process, slp

|     Syntax:
|         slp {proc_indicator} {-control_argument}

|     Function:  selects a process for examination.

|     Argument:
|     proc_indicator
|           specifies  which process  to be selected.   It can take
|           one of three forms:
|              - The decimal index (starting at zero) of a process in
|                the FDUMP.
|              - The octal apte offset of the process.
|              - The octal process_id of the process.
|     Several control_args are acceptable  if proc_indicator is not
|           specified.

|     Control arguments:

|     -brief, -bf
|           suppresses the message about changing processes.
|     -cpu  TAG
|           selects  the  DBR for  the process  running on  the CPU
|           identified by TAG (where TAG is one character a -> h).
|     -dbr dbr_value
|           selects the process defined by the dbr_value.
|     -long, -lg
|           prints  a message  announcing the  new process selected
|           (Default).


  analyze_multics Rev. 1                                    MTB-624

      set

      Syntax:  set PTR_N VIRTUAL-ADDR

      Function:  set a internal  temporary pointer.  These pointers
            can   then  be   used  as   a  VIRTUAL-ADDR   by  other
            analyze_multics commands.

      Arguments:

      PTR_N                                                         |
            specifies   the   name   of   a   'temporary  pointer'. |
            analyze_multics  provides  8 temporary  pointers  and 3 |
            special  case  pointers.  These  get  set automatically |
            when the  machine_conditions, frame, machine_conditions |
            and why requests are invoked.  They are:                |
               %pr0     %pr1    %pr2    %pr3                        |
               %pr4     %pr5    %pr6    %pr7                        |
               %lp  intended as the linkage pointer for procedure   |
                    owning current stack frame                      |
               %mcp intended to be a pointer to the current MCs.    |
               %sp  intended to be a pointer to the current stack   |
                    frame.                                          |

            In addition to the above  PTR_Ns, up to 20 user-defined |
            pointers can be defined (eg.  set s4 234|0).            |

      VIRTUAL-ADDR
            may be a segment number, name or symbolic address (e.g.
            64, prds,  prds$am_data).  Do a  'help virtual_address'
            more    for   detailed    information   on   acceptable
            virtual-address constructs.

      Examples:
            set %pr6 240|100    set a temporary ptr named %pr6 (%sp).
            set %pr7 240             set the temporary ptr %pr7 to the
                                   base of seg 240 (240|0).

      Notes:
            The value  of a temporary pointer  can be displayed via
            the value request.


  MTB-624                                    analyze_multics Rev. 1

      syserr_log, slog

      Syntax:  syserr_log {-control_args}

|     Function:   Displays  all  or  parts  of  the  syserr_log and
|           syserr_data  segments  from  the  dump.   It  does  not
|           examine the  perm_syserr_log.  The default  is to print
|           the entire log.

|     Control arguments:

|     -action A
|           where A is  a decimal integer in the range  0 to 9.  If
|           this  argument is  used, only  messages with  an action
|           code specified by an A are candidates.
      -exclude STR1 ...  STRn, -ex STR1 ...  STRn
            where  STRi are  strings that  are matched  against the
            log, as  for -match.  Any message  that contains a STRi
            is not printed.
      -last N, -lt N
            where N is a  decimal integer.  This argument specifies
            that the scan is to start  N messages back from the end
            of the log.
*     -match STR1 ...  STRn
            where STRi  are strings to be  matched against messages
            in  the log.   Any message  that contains  a STRi  is a
            candidate to be printed.
      -expand, -exp
            specifies that messages that have binary data will have
            that binary data interpreted.   The format is generally
*           dependent on the text of the message.


  analyze_multics Rev. 1                                    MTB-624

      stack, sk                                                     |

      Syntax:  sk VIRTUAL-ADDR {-control_arguments}                 |

      Function:  Traces a given stack.

      Arguments:

      VIRTUAL-ADDR
            is any  segment and offset value  that is acceptable to
            the dump command.  See virtual_address.info

      Control arguments:

      -arguments, -ag
            This  will  print the  arguments  for the  stack frames
            traced.
      -for N
            This will cause the tracing  for N stack frames.  If no
            valid    stack   frames    exist   (stack_begin_ptr   =
            stack_end_ptr), then a -force is implied.
      -force, -fc
            This will force a forward stack trace.  To be used when
            there   are   no   valid    frames   for   this   stack
            (stack_begin_ptr = stack_end_ptr).
      -forward, -fwd
            will cause the tracing do be done in a forward manner.
      -handlers                                                     |
            displays  on units  associated with  each frame, giving |
            the name of the condition and location of the handler.  |
      -long, -lg
            This  will cause  the arguments, handlers  and an octal
            dump of the stack frames traced.

      Notes:  The  default is to  trace the stack  in reverse order |
            unless -fc or -fwd  are specified.  If the VIRTUAL-ADDR |
            has a zero  offset then the trace starts  at the offset |
            of the first  stack (stack_header.stack_begin_ptr).  If |
            the VIRTUAL-ADDR  has a non-zero offset  then the trace |
            is started from that offset in the given stack.  When a |
            non-zero  offset is  given, a  -force is  implied if no |
            valid stack frames exist.                               |


  MTB-624                                    analyze_multics Rev. 1

|     traffic_control_queue, tcq

|     Syntax:  tcq {-control_args}

|     Function:  Displays  process DBR, process  state, process ID,
|           current  CPU  and USERID  from the  Traffic Controllers
|           Eligible Queue, as well as  the "process number" in the
|           FDUMP.   The default  is to  display only  the eligible
|           queue.

|     Control Arguments:

|     -all
|           Displays   the  eligible,   realtime,  interactive  and
|           workclass  queue  entries,   including  the  unthreaded
|           entries.
|     -ready, -rdy
|           Displays   the  eligible,   realtime,  interactive  and
|           workclass queues, excluding the unthreaded entries.


  analyze_multics Rev. 1                                    MTB-624

      value, v                                                      |

      Syntax:  value {PTR_Ni..PTR_Nn | -all}                        |

      Function:  Displays  the current value  of one or  all of the
            temporary pointers.

      Arguments:

      PTR_N
            specifies  which  of the  temporary  pointers is  to be
            displayed.  Refer to the set  request for a list of the
            azm defined  pointer names.  User-defined  pointers can
            also be specified.
      -all, -a
            specifies that all of the  pointers are to be displayed
            (Default).


  MTB-624                                    analyze_multics Rev. 1

|     verify_associative_memory, vfam

|     Syntax:  vfam {-control_args}

|     Syntax as an active request:  [vfam {-control_args}]

      Function:   Performs a  consistency check  on the Associative
            Memories stored at the time of a dump by comparing them
            to the appropriate entries in  the "dump dseg" and page
            tables.  When used as  an active request returns "true"
            if any inconsistencies are found, "false" otherwise.

      Control Arguments:

      -ptw
            restricts  the  verification  to  the  PTW  Associative
            Memories.
      -sdw
            restricts  the  verification  to  the  SDW  Associative
            Memories.

      Notes:  If no argument is  given BOTH SDW and PTW Associative
            Memories are checked.


  analyze_multics Rev. 1                                    MTB-624

      why

      Syntax:  why

      Function:  The  why request will  try to find  the stack that
            has    a    call    to    syserr_real$syserr_real    or
            call_bos$call_bos and set  the temporary pointers, %pr6
            and %sp, to the stack  frame.  This command will search
            the  stacks for  a frame  that has  a return_to_ring_0_
            frame and  set the temporary pointers  from this set of
            machine conditions that called this entry.

            If the crash was  due to fim_util$check_fault finding a
            problem, the machine condition CU data is displayed and
            all  temporary  pointers  are  set  from  these machine
            conditions.   If this  was an  Execute Fault  then some
            lock info  is printed an  the process selected  is lock
            ordered.  (look at PTL first then ASTL)

            If  this dump  was due to  a manual return  to BOS then
            some pertinent lock info will also be printed.

            Notes:
            This  request  can also  be  invoked when  an  FDUMP is
            selected by the command line to invoke analyze_multics.
            The arguments would be -select_dump NAME -why.


  MTB-624                                    analyze_multics Rev. 1

      STANDARD SUBSYSTEM REQUESTS:

      ?

       .

      abbrev, ab

      answer

      do

      execute, e

      exec_com, ec

      help

      if

      list_help, lh

      list_requests, lr

      quit, q

      ready, rdy

      ready_off, rdf

      ready_on, rdn

      subsystem_name

      subsystem_version

      The  standard ".."   escape convention  for executing Multics
      command lines is also supported.