Google
 

Trailing-Edge - PDP-10 Archives - 6.1_emacs_manuals_1er - 2-diagnostics/dfnia.seq
There are no other files named dfnia.seq in the archive.
;DFNIA
                                                                                                                           SEQ 0001





                                IDENTIFICATION
                                --------------

        PRODUCT CODE:           AH-E???A-DD

        DIAGNOSTIC CODE:        DFNIA

        PRODUCT NAME:           DFNIAA0 NI Functional Diagnostic

        VERSION:                0.1

        DATE RELEASED:          December 31, 1983

        MAINTAINED BY:          Peripherals/CPS Engineering

        AUTHOR:                 Richard Stockdale



                        COPYRIGHT (C) 1983

                DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

        THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR  USE  ONLY  ON  A
        SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLUSION
        OF THE ABOVE COPYRIGHT NOTICE.   THIS  SOFTWARE,  OR  ANY  OTHER
        COPIES  THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE
        TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO
        AGREES  TO  THESE  LICENSE TERMS.  TITLE TO AND OWNERSHIP OF THE
        SOFTWARE  SHALL  AT  ALL  TIMES  REMAIN  IN  DIGITAL   EQUIPMENT
        CORPORATION.

        THE INFORMATION IN THIS DOCUMENT IS SUBJECT  TO  CHANGE  WITHOUT
        NOTICE  AND  SHOULD  NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
        EQUIPMENT CORPORATION.

        DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY  FOR THE
        USE OR RELIABILITY OF  ITS  SOFTWARE  IN  EQUIPMENT WHICH IS NOT
        SUPPLIED BY DIGITAL EQUIPMENT CORPORATION.
MAINDEC-10-DFNIA-A-D                                             Page ii
Table of Contents                                                                                                          SEQ 0002


                           Table of Contents
                                                                    Page
                                                                    ----

        1.0     PROGRAM ABSTRACT . . . . . . . . . . . . . . . . . . 1

        2.0     REQUIREMENTS . . . . . . . . . . . . . . . . . . . . 2
        2.1       Hardware Requirements  . . . . . . . . . . . . . . 2
        2.1.1       KL10 Microcode Requirements  . . . . . . . . . . 2
        2.1.2       Memory Requirements  . . . . . . . . . . . . . . 2
        2.1.3       Load Device  . . . . . . . . . . . . . . . . . . 2
        2.2       Software Requirements  . . . . . . . . . . . . . . 2
        2.3       Diagnostic Prerequisites . . . . . . . . . . . . . 3

        3.0     PROGRAM LOADING PROCEDURE  . . . . . . . . . . . . . 4

        4.0     PROGRAM STARTING PROCEDURE . . . . . . . . . . . . . 5
        4.1       Starting the Diagnostic  . . . . . . . . . . . . . 5
        4.2       Initial Program Switches . . . . . . . . . . . . . 5
        4.3       Startup Procedure  . . . . . . . . . . . . . . . . 5
        4.4       Optional Restart Address . . . . . . . . . . . . . 6

        5.0     PROGRAM STOPPING PROCEDURE . . . . . . . . . . . . . 7

        6.0     PROGRAM OPERATING PROCEDURE  . . . . . . . . . . . . 8
        6.1       Overview . . . . . . . . . . . . . . . . . . . . . 8
        6.2       Hardware Configuration . . . . . . . . . . . . . . 8
        6.2.1       Configuration Modification . . . . . . . . . . . 8
        6.3       NI Configuration . . . . . . . . . . . . . . . . . 8
        6.4       Choosing Run Time Options  . . . . . . . . . . . . 9
        6.5       Modes of Diagnostic Operation  . . . . . . . . . . 9
        6.6       Scope Looping  . . . . . . . . . . . . . . . . . . 9
        6.7       General User Interface Philosophy  . . . . . . .  10
        6.7.1       User Interface . . . . . . . . . . . . . . . .  10
        6.8       Terminal Input . . . . . . . . . . . . . . . . .  10
        6.8.1       General  . . . . . . . . . . . . . . . . . . .  10
        6.8.2       Control-C Capability (Ctrl-C)  . . . . . . . .  10
        6.8.3       Control-O Capability (Ctrl-O)  . . . . . . . .  11
        6.8.4       Control-Q Capability (Ctrl-Q)  . . . . . . . .  11
        6.8.5       Control-S Capability (Ctrl-S)  . . . . . . . .  11
        6.8.6       Control-T Capability (Ctrl-T)  . . . . . . . .  11
        6.8.7       Control-U Capability (Ctrl-U)  . . . . . . . .  11
        6.8.8       Control-Z Capability (Ctrl-Z)  . . . . . . . .  11
        6.8.9       Question Mark (?)  . . . . . . . . . . . . . .  12
        6.8.10      Altmode (ESC)  . . . . . . . . . . . . . . . .  12
        6.9       Terminal Output  . . . . . . . . . . . . . . . .  12
        6.9.1       Statistics Printouts . . . . . . . . . . . . .  12

        7.0     PROGRAM OPTIONS (SWITCHES) . . . . . . . . . . . .  14
        7.1       Left Hand Switches . . . . . . . . . . . . . . .  14
        7.1.1       Left Hand Switches (Brief Description) . . . .  15
        7.1.2       Left Hand Switches (Detailed Description)  . .  16
        7.2       Right Hand Switches  . . . . . . . . . . . . . .  19
        7.2.1       Right Hand Switches (Brief Description)  . . .  19
        7.2.2       Right Hand Switches (Detailed Description) . .  20
MAINDEC-10-DFNIA-A-D                                          Page iii
Table of Contents                                                                                                          SEQ 0003


        8.0     ERRORS . . . . . . . . . . . . . . . . . . . . . .  23
        8.1       User Input Errors at the Terminal  . . . . . . .  23
        8.2       Error Reporting of Hardware Detected Errors  . .  23
        8.2.1       Reporting to SPEAR . . . . . . . . . . . . . .  23
        8.2.2       Error Printouts  . . . . . . . . . . . . . . .  24
        8.3       Unexpected Errors  . . . . . . . . . . . . . . .  25

        9.0     PROGRAM DESCRIPTION  . . . . . . . . . . . . . . .  27
        9.1       Program Overview . . . . . . . . . . . . . . . .  27
        9.1.1       Program Purpose  . . . . . . . . . . . . . . .  27
        9.1.2       Testing Strategy . . . . . . . . . . . . . . .  27
        9.2       Run-Time Dynamics  . . . . . . . . . . . . . . .  27
        9.2.1       Memory Allocation Requirements . . . . . . . .  27
        9.2.2       Operating System Interactions  . . . . . . . .  27
        9.2.2.1       TOPS-10  . . . . . . . . . . . . . . . . . .  27
        9.2.2.2       TOPS-20  . . . . . . . . . . . . . . . . . .  28
        9.2.3       User Mode Restrictions . . . . . . . . . . . .  28
        9.2.3.1       User Mode Privileges . . . . . . . . . . . .  28
        9.2.3.2       User Mode Priority Interrupts  . . . . . . .  28
        9.3       Exec Mode Capability . . . . . . . . . . . . . .  28
        9.4       User Mode Capability . . . . . . . . . . . . . .  28
        9.5       Fault Detection  . . . . . . . . . . . . . . . .  28
        9.5.1       Error Resolution . . . . . . . . . . . . . . .  29
        9.5.2       Fault Detection And Isolation  . . . . . . . .  29
        9.5.3       Fault Detection  . . . . . . . . . . . . . . .  29
        9.6       Performance During Hardware Failures . . . . . .  29
        9.6.1       CPU/Memory Failures  . . . . . . . . . . . . .  29
        9.6.2       Power Fail/Restart . . . . . . . . . . . . . .  29
        9.6.3       Port Failure . . . . . . . . . . . . . . . . .  29
        9.6.4       Unexpected Traps . . . . . . . . . . . . . . .  30
        9.7       Program Applications . . . . . . . . . . . . . .  30
        9.7.1       Users and Uses . . . . . . . . . . . . . . . .  30
        9.7.2       Engineering Usage  . . . . . . . . . . . . . .  30
        9.7.3       Manufacturing Usage  . . . . . . . . . . . . .  30
        9.7.4       Customer Services Usage  . . . . . . . . . . .  30
        9.7.5       Customer Usage . . . . . . . . . . . . . . . .  30
        9.8       Test Design  . . . . . . . . . . . . . . . . . .  31
        9.8.1       Type of Tests  . . . . . . . . . . . . . . . .  31
        9.8.2       Test Flow  . . . . . . . . . . . . . . . . . .  32
        9.8.2.1       Starting the Test  . . . . . . . . . . . . .  32
        9.8.2.2       Stopping the Test  . . . . . . . . . . . . .  32
        9.8.2.3       Obtaining Run Time Status (Control-T)  . . .  33
        9.8.2.4       Obtaining Run Time Status (S or Control-S) .  33

        10.0    TEST DESCRIPTIONS  . . . . . . . . . . . . . . . .  34
        10.1      Test Description Assumptions . . . . . . . . . .  34
        10.2      Test Description Overview  . . . . . . . . . . .  34
        10.3      Program Option Selections  . . . . . . . . . . .  35
        10.3.1      Basic Description  . . . . . . . . . . . . . .  35
        10.3.2      Commands Available . . . . . . . . . . . . . .  35
        10.3.3      Detailed Command Description . . . . . . . . .  36
        10.3.3.1      Hardware Tests . . . . . . . . . . . . . . .  36
        10.3.3.2      General Commands . . . . . . . . . . . . . .  37
        10.3.3.3      Test Control Commands  . . . . . . . . . . .  38
        10.3.3.4      Statistics Commands  . . . . . . . . . . . .  39
        10.3.3.5      NI Configuration Command . . . . . . . . . .  39
MAINDEC-10-DFNIA-A-D                                           Page iv
Table of Contents                                                                                                          SEQ 0004


        10.3.3.6      Switches . . . . . . . . . . . . . . . . . .  40
        10.4      Hardware Tests . . . . . . . . . . . . . . . . .  42
        10.4.1      Hardware Tests - EBUS/MPROC/CBUS modules . . .  42
        10.4.2      Functional Tests . . . . . . . . . . . . . . .  42
        10.4.2.1      Basic Operations . . . . . . . . . . . . . .  42
        10.4.2.2      CRC Tests  . . . . . . . . . . . . . . . . .  42
        10.4.2.3      Datagram Tests . . . . . . . . . . . . . . .  42
        10.4.2.4      Multicast Tests  . . . . . . . . . . . . . .  42
        10.4.2.5      PTT Tests  . . . . . . . . . . . . . . . . .  42
        10.4.2.6      Miscellanous Tests . . . . . . . . . . . . .  43
        10.5      Debug Test . . . . . . . . . . . . . . . . . . .  44
        10.5.1      Basic Description  . . . . . . . . . . . . . .  44
        10.5.2      Commands Available . . . . . . . . . . . . . .  44
        10.5.3      Detailed Command Description . . . . . . . . .  47
        10.5.3.1      General Commands . . . . . . . . . . . . . .  48
        10.5.3.2      Starting, Stopping, Initializing the Port  .  52
        10.5.3.3      Handling port registers  . . . . . . . . . .  54
        10.5.3.4      Handling port CRAM locations . . . . . . . .  55
        10.5.3.5      2901 Commands  . . . . . . . . . . . . . . .  58
        10.5.3.6      Local Storage Commands . . . . . . . . . . .  59
        10.5.3.7      Mark Bit Commands  . . . . . . . . . . . . .  60
        10.5.3.8      Breakpoint Commands  . . . . . . . . . . . .  60
        10.5.3.9      Microcode Commands . . . . . . . . . . . . .  61
        10.5.3.10     Statistics Commands  . . . . . . . . . . . .  63
        10.5.3.11     NI Configuration Command . . . . . . . . . .  63
        10.5.3.12     NI Commands  . . . . . . . . . . . . . . . .  64
        10.5.3.13     PLI Register Commands  . . . . . . . . . . .  67
        10.5.3.14     Miscellaneous Commands . . . . . . . . . . .  68
        10.5.3.15     Data Transfer Commands . . . . . . . . . . .  71
        10.5.3.16     Switches . . . . . . . . . . . . . . . . . .  72

        11.0    PROGRAM RUN TIME . . . . . . . . . . . . . . . . .  74

        12.0    APPENDIX . . . . . . . . . . . . . . . . . . . . .  75
        12.1      Special Configurations . . . . . . . . . . . . .  75
        12.1.1      DMT Configuration  . . . . . . . . . . . . . .  75
        12.1.2      Creating the Modified Diagnostics  . . . . . .  75
        12.1.3      Modifying the System . . . . . . . . . . . . .  76
        12.1.4      Other configurations . . . . . . . . . . . . .  77
MAINDEC-10-DFNIA-A-D                                              Page 1
PROGRAM ABSTRACT                                                                                                           SEQ 0005


1.0  PROGRAM ABSTRACT

       DFNIA  is  a  functional  diagnostic  intended  to   verify   the
    functionality of a NI20 port consisting of an 3 Port modules, an NIA
    module, H4000 Transceiver, and NI cable.   It  attempts  to  isolate
    faults to either of - (1) 3 Port modules, and (2) NIA module + H4000
    Transceiver + cables.

       DFNIA tests the NI port consisting of three port modules residing
    in RH20 slot #5 and an NIA module residing in a separate card cage.

       DFNIA consists of two major program sections:

     o  Test section - Contains all of the hardware tests.  This section
        is  used to functionally verify the port or to isolate an actual
        problem.

     o  Debug section - Allows detailed manipulation  or  inspection  of
        the port.
MAINDEC-10-DFNIA-A-D                                              Page 2
REQUIREMENTS                                                                                                               SEQ 0006


2.0  REQUIREMENTS

    2.1  Hardware Requirements

       Hardware requirements consist of:

     o  A KL10, Model B, with at least 80K of memory.

     o  An NI20 Port in RH slot #5.

     o  Card cage installed, with an  NIA  module  inserted  and  a  PLI
        interface cable connecting the CBUS module with the NIA module.

     o  A load device.




    2.1.1  KL10 Microcode Requirements

       The NI20 requires special functionality of  the  KL10  microcode.
    Therefore, Version 312 or above must be loaded both in user and exec
    mode.



    2.1.2  Memory Requirements

       The diagnostic requires 80K of memory of any type.  Memory may be
    configured  in  any manner, i.e., internal, external, interleaved in
    any rational manner.  The diagnostic's performance is  not  affected
    by  memory  and  cache  options other than in overall diagnostic run
    time.



    2.1.3  Load Device

       The diagnostic loads from  any  standard  load  device.   Program
    loading  is  a  function  of  the  standard  diagnostic  loaders and
    monitors, i.e., DIAMON, D20MON, MAGMON, KLDCP, etc.



    2.2  Software Requirements

       Software requirements consist of:

     o  In exec mode the diagnostic may  be  loaded  by  KLDCP,  DIAMON,
        D20MON,  or MAGMON.  The Subroutine Package must be loaded prior
        to running the diagnostic.

     o  In user mode, TOPS-20, Release 6.1 or above is required.
MAINDEC-10-DFNIA-A-D                                              Page 3
REQUIREMENTS                                                                                                               SEQ 0007


    2.3  Diagnostic Prerequisites

       The diagnostic should only be run after it has been verified that
    the  system  has  no  solid hardware problems of a nature that would
    render the diagnostic unable to run.  This should be  determined  by
    first running the following diagnostic programs:

     o  CPU and Memory Diagnostics

     o  E-Bus Diagnostics

     o  C-Bus Diagnostics

     o  MAINDEC-10-DFRHB - RH20 Fault Isolator Diagnostic.

     o  MAINDEC-10-DFPTA - Port Basic Device Diagnostic.
MAINDEC-10-DFNIA-A-D                                              Page 4
PROGRAM LOADING PROCEDURE                                                                                                  SEQ 0008


3.0  PROGRAM LOADING PROCEDURE

       The diagnostic must be loaded via a  diagnostic  loader  program.
    Refer  to  loader  documentation  for  instructions  on  loading and
    operating the loader program.  The diagnostic may be run as a single
    program or may be chained with other programs using the loader chain
    feature.

       Additionally, in exec mode under KLDCP,  the  diagnostic  may  be
    loaded without using a diagnostic loader program by telling KLDCP to
    load the diagnostic.  This has the advantage of being  simpler,  but
    has  the  disadvantage  of inhibiting file handling operations which
    then prevents use of the TAKE command, and  loading  of  operational
    microcode by the diagnostic.
MAINDEC-10-DFNIA-A-D                                              Page 5
PROGRAM STARTING PROCEDURE                                                                                                 SEQ 0009


4.0  PROGRAM STARTING PROCEDURE

    4.1  Starting the Diagnostic

       The diagnostic is started  in  the  same  manner  as  most  other
    diagnostics.  The diagnostic loader program is run, then the name of
    the diagnostic, DFNIA, is specified.   The  loader  then  loads  and
    starts the diagnostic.

       If the diagnostic is already loaded, it may be restarted by a STD
    or STM in exec mode, or a START or CONTINUE in user mode.



    4.2  Initial Program Switches

       In exec mode, right hand switches may be selected  using  the  SW
    command  as  documented  in  the KL10 Maintanance Guide under KLDCP.
    Left hand switches may be selected on the PDP 11 switch  panel.   If
    the  switches  are  0,  the diagnostic runs 5 passes of all hardware
    tests then exits.  To allow the user to select which test(s) to run,
    the left hand switch 'OPRSEL' should be set.

       In user mode, switches will be queried when the diagnostic starts
    up.   At  this  point,  OPRSEL  switch  can  be  set,  and any other
    switches.

       In both exec and user mode, switch settings may be altered  after
    the diagnostic has been started.



    4.3  Startup Procedure

       When the diagnostic is started, the diagnostic name  and  version
    number will be printed, followed by a memory map of the system.

       If OPRSEL switch is not  set,  the  diagnostic  will  immediately
    begin  testing  the  NI port.  If this switch is set, the diagnostic
    will ask what test to execute.

       For example (OPRSEL switch not set):

    |  D20MON CMD - DFNIA
    |
    |  DFNIA NI Port Functional Diagnostic
    |  VERSION 0.1, SV=0.15, TOPS-20, KL10, CPU#=2263
    |  
    |  SWITCHES = 000000 000000 
    |  
    |  MEMORY MAP =
    |  FROM     TO         SIZE/K
    |  00000000 00215777     71
    |  
    |  End pass 1. at 3m 48s 
    |
MAINDEC-10-DFNIA-A-D                                              Page 6
PROGRAM STARTING PROCEDURE                                                                                                 SEQ 0010


    |  End pass 2. at 7m 32s 
    |
    |  End pass 3. at 11m 20s 
    |
    |  End pass 4. at 15m 8s 
    |
    |  End pass 5. at 18m 56s
    |
    |  D20MON CMD -


       For example (OPRSEL switch set):

    |  D20MON CMD - DFNIA
    |
    |  DFNIA NI Port Functional Diagnostic
    |  VERSION 0.1, SV=0.15, TOPS-20, KL10, CPU#=2263
    |  
    |  SWITCHES = 000010 000000 
    |  
    |  MEMORY MAP =
    |  FROM     TO         SIZE/K
    |  00000000 00215777     71
    |  
    |  Type ? for help
    |  
    |  What test - 


       The diagnostic asks what test to run.  Any test may be  selected,
    or ?  or HELP typed to find out what tests are available.

       At the end of a test the diagnostic  continues  at  the  question
    'What test -'.  The next test is selected and run and so on.



    4.4  Optional Restart Address

       Under TOPS-20 the diagnostic can be restarted via  the  'REENTER'
    command.   The  program switches are queried, then either testing is
    begun immediately (if OPRSEL switch is not set) or 'What Test - ' is
    asked (if OPRSEL switch is set).

       Startup is identical to what occurs if  the  'START'  command  is
    given, except for the DIAMON asking 'DIAMON CMD - '.
MAINDEC-10-DFNIA-A-D                                              Page 7
PROGRAM STOPPING PROCEDURE                                                                                                 SEQ 0011


5.0  PROGRAM STOPPING PROCEDURE

       Several methods may be used to stop the diagnostic:


     o  Altmode.

     o  Control-C.

     o  ABORT switch.

     o  RSTART switch.


       A test can be aborted at any time by typing  an  altmode  on  the
    terminal.   When an altmode is typed, the diagnostic is restarted at
    the test selection routine.  At this point, if OPRSEL switch is set,
    the  diagnostic asks what test to run next.  If OPRSEL switch is not
    set the diagnostic runs all tests over again.

       Control-C may be typed at any time to stop  the  diagnostic.   To
    restart,  a  'START',  'CONTINUE', or 'REENTER' may be typed in user
    mode.  In exec mode a 'STD', 'ST', 'STM', or 'RN' may be used.

       In exec mode, the ABORT switch may  be  set,  so  the  diagnostic
    halts at end of pass.

       In exec mode, the RSTART switch may  be  set.   This  causes  the
    diagnostic  to  be  restarted,  and  if  OPRSEL  switch  is set, the
    diagnostic will have effectively stopped and  will  be  waiting  for
    selection of what test to run.
MAINDEC-10-DFNIA-A-D                                              Page 8
PROGRAM OPERATING PROCEDURE                                                                                                SEQ 0012


6.0  PROGRAM OPERATING PROCEDURE

    6.1  Overview

       The diagnostic is designed to perform functional level testing of
    the NI port.

       Essentially, the diagnostic consists of a  series  of  functional
    tests  as well as 3 hardware tests.  The hardware tests constitute a
    basic confidence test of the 3 port modules.  The  functional  tests
    load  operational  microcode  and test functional characteristics of
    the port.



    6.2  Hardware Configuration

       When the diagnostic starts up  it  assumes  that  a  NI  port  is
    located  in  RH20 slot #5.  It will attempt to select the port (this
    always succeeds in exec mode, but may  fail  in  user  mode  if  the
    system does not give the port to the diagnostic when requested).



    6.2.1  Configuration Modification

       The configuration of a NI port in RH20 slot #5 cannot be  changed
    via  program  commands.   However,  a memory location in the program
    which contains the controller number can be changed  to  indicate  a
    different  port  in the unlikely event that the NI port was actually
    in RH20 slot #7.  This location is called 'MBCN' and can be  changed
    as follows:

    What test - DDT

    Type RTN$X to continue
    DDT

    MBCN/ 56400,,0   57400,,0 <CR>
    RTN$X

    What test - 




    6.3  NI Configuration

       The diagnostic can be directed  to  print  the  configuration  of
    nodes  on  the NI bus.  This is done with the 'CONFIG' command which
    is identical to  running  TST26  'Configuration  Test'.   It  merely
    prints whatever configuration data has been accumulated so far.  For
    example:
MAINDEC-10-DFNIA-A-D                                              Page 9
PROGRAM OPERATING PROCEDURE                                                                                                SEQ 0013



    |  What test - CONFIG
    |  
    |  ***** NI Configuration *****
    |     Physical Address      Ver  ECO  Usr                    Com    DLL
    |  Bt1 Bt2 Bt3 Bt4 Bt5 Bt6   #    #   ECO    Functionality   Dev   Type
    |  -----------------------  ---  ---  ---  ----------------  ---  --------
    |  252 000 003 003 000 000  (Self)
    |  252 000 003 003 000 006   1    0     0         12000030     0  Ethernet
    |  274 033 000 000 000 001   5  101     1         10004730     0  Ethernet


       Only those nodes which broadcast a  periodic  system  ID  message
    will  be  included.   Nodes  which are turned off or are not running
    will not be seen.



    6.4  Choosing Run Time Options

       Before starting a test, the diagnostic may ask how many times  to
    execute  test  selected.   If  the  OPRSEL  switch  is  not set this
    question is not asked.  No other run  time  options  are  available,
    aside  from  program switch options which are fully described in the
    Section 7.0 'Program Options (Switches)'.



    6.5  Modes of Diagnostic Operation

       The diagnostic runs in  either  user  mode  or  exec  mode.   The
    operation  of the diagnostic is almost identical in either case with
    the exception of the handling of  console  switches,  and  speed  of
    operation.   The  diagnostic  runs  faster  in exec mode for obvious
    reasons.  Also, the PI system  is  not  used  in  user  mode.   This
    affects the ease of using breakpoints when debugging microcode.

       In  addition,  the  diagnostic  runs   with   or   without   user
    interaction.   This  is  determined  by the console switch 'OPRSEL'.
    More  details  may  be  found  in  Section  7.0   'Program   Options
    (Switches)'.



    6.6  Scope Looping

       Scope looping is not supported by the diagnostic.   However,  one
    can loop on a test, using the right hand switch 'LOOPTS'.
MAINDEC-10-DFNIA-A-D                                             Page 10
PROGRAM OPERATING PROCEDURE                                                                                                SEQ 0014


    6.7  General User Interface Philosophy

       Decimal numbers are  always  followed  by  a  point.   All  other
    numbers are octal.

       All input is preceded with a prompt.  All input  is  checked  for
    legality  and  incorrect responses are followed by a reprompt and/or
    an additional error message.  All numerical input can  be  specified
    as an octal number.  Some numerical input may be alternatively given
    as a decimal number followed by a  decimal  point.   Where  the  the
    diagnostic   allows  multiple  input  options,  a  help  message  is
    available to explain the options.   The  diagnostic  requests  three
    types of input - numerical, yes or no, and sixbit.

       Additionally, the user may obtain  a  short  description  of  the
    input  expected at any point by typing a question mark followed by a
    carriage return.  The text is printed and the question re-asked.



    6.7.1  User Interface

       The user interface to the  diagnostic  is  dialogue  through  the
    terminal.   In  exec  mode  the  console switches on the KL are used
    directly in  addition  to  software  switches.   In  user  mode  the
    software   switches   are   used   as   standard   procedure.    All
    user/diagnostic dialogue is done through the  diagnostic  subroutine
    package.



    6.8  Terminal Input

    6.8.1  General

       Terminal input is handled by the Subroutine Package.  It does not
    have  COMND  JSYS style input.  However, some control characters are
    supported.  And the diagnostic supports ?  and help  commands  where
    appropriate to facilitate input.



    6.8.2  Control-C Capability (Ctrl-C)

       Control-C is used to halt diagnostic execution.   In  exec  mode,
    control  is returned to KLDCP at the ">." prompt.  In user mode, the
    user is returned to monitor level.

       When ready to continue, the user  may  restart  or  continue  the
    diagnostic  in any manner listed previously in Section 5.0, 'Program
    Stopping Procedure'.  This would be by  saying  'CONTINUE'  in  user
    mode or 'RN' in exec mode.
MAINDEC-10-DFNIA-A-D                                             Page 11
PROGRAM OPERATING PROCEDURE                                                                                                SEQ 0015


    6.8.3  Control-O Capability (Ctrl-O)

       Control-O inhibits terminal output.  Terminal output resumes when
    the  diagnostic  prints  some  forced  output or when the user types
    another Control-O.



    6.8.4  Control-Q Capability (Ctrl-Q)

       In exec mode Control-Q is treated as an illegal character by  the
    diagnostic  and  typing  it  in response to a question results in an
    error message.

       In user mode Control-Q allows terminal output which may have been
    inhibited  by a prior Control-S.  This character may be typed at any
    time with no other effect than resuming terminal output.



    6.8.5  Control-S Capability (Ctrl-S)

       In exec mode, Control-S is treated as an illegal character by the
    diagnostic  and  typing  it  in response to a question results in an
    error message.  It may also be typed followed by a  carriage  return
    in order to obtain run-time status of the diagnostic.

       In user mode, it is used as a terminal output  control  character
    along with Control-Q, and has no other function.



    6.8.6  Control-T Capability (Ctrl-T)

       Control-T is treated as an illegal character  by  the  diagnostic
    and  typing it in response to a question results in an error message
    in exec mode.  Under TOPS-20, Control-T gives  the  current  program
    status and does not interfere with program input.



    6.8.7  Control-U Capability (Ctrl-U)

       Control-U is used to delete whatever has been  typed  so  far  in
    response  to  a question.  After typing Control-U, the desired input
    can be entered.



    6.8.8  Control-Z Capability (Ctrl-Z)

       Control-Z is used to exit from DDT, to either KLDCP in exec  mode
    or to monitor level in user mode.
MAINDEC-10-DFNIA-A-D                                             Page 12
PROGRAM OPERATING PROCEDURE                                                                                                SEQ 0016


    6.8.9  Question Mark (?)

       Question mark may be typed in  response  to  any  question.   The
    diagnostic  prints  a short help message and reprompts the user.  If
    the diagnostic is asking for a test name  or  a  debug  command,  it
    prints a list of all valid commands that may be typed.

       If a question mark is typed after a legal command,  the  expected
    format of the command is given, showing possible arguments.



    6.8.10  Altmode (ESC)

       Altmode is normally used to abort a test or a sequence  of  test.
    If  it is given in response to a question, the diagnostic aborts the
    task which is under way.  For example, in DEBUG test, if the user is
    altering  a  CRAM  location and types altmode in the middle of that,
    the diagnostic aborts the operation and returns to  'DEBUG>'  prompt
    without writing the location.



    6.9  Terminal Output

       The terminal output generated by the diagnostic consists of:


     o  Program initialization information

     o  Program questions/messages

     o  Test error messages

     o  Statistics printouts


       Much  of  this  output  can  be  affected  by  program  switches,
    specifically, NOPNT, PNTLPT, TXTINH, and INHMSG.



    6.9.1  Statistics Printouts

       Statistics are kept on NI traffic originating from or received at
    this  node.   They are not printed out by the program automatically.
    To obtain a printout, the  'OPRSEL'  switch  must  be  set  and  the
    command 'STATIS' given explicitly.

       Statistics may be useful when running a  debugger  test  such  as
    'WATCH'  over  a  long period of time.  One can obtain data from the
    statistics such as which NI path has the highest  occurrence  of  no
    responses or other failures.
MAINDEC-10-DFNIA-A-D                                             Page 13
PROGRAM OPERATING PROCEDURE                                                                                                SEQ 0017


    A sample printout follows:

    |  What test - STATIS
    |  
    |  *** STATISTICS - Packets Sent (0m 16s) ***
    |   (All numbers decimal)
    |                        Packets     Bytes     Transmit
    |     Type                Sent       Sent       Errors
    |     ----                ----       ----       ------
    |  Self-Directed DGMs     4329       470821        44 
    |  Other DGMs                5          240         0 
    |  Other Packets             0            0         0 
    |  
    |  *** STATISTICS - Packets Received (0m 16s) ***
    |   (All numbers decimal)                              Unexpected  Expected
    |                        Packets     Bytes       Rcvd      CRC       CRC
    |     Type                Rcvd       Rcvd       Errors    Errors    Errors
    |     ----                ----       ----       ------    ------    ------
    |  Self-Directed DGMs     4329       470821         3         0         0 
    |  Other DGMs                0            0         0         0         0 
    |  Other Packets             0            0         0         0         0 
MAINDEC-10-DFNIA-A-D                                             Page 14
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0018


7.0  PROGRAM OPTIONS (SWITCHES)

       Program options are controlled by switches.  Left  hand  switches
    are  predefined  but  not  all  are  used.   Most  of the right hand
    switches are defined specific to the diagnostic.



    7.1  Left Hand Switches

       In exec mode, left hand switches  are  modified  either  via  the
    front  end  console switches or by using the KLDCP command ESW.  See
    KLDCP documentation for details on  the  use  of  the  ESW  command.
    Typically,   these  switches  are  modified  by  using  the  console
    switches.

       In user mode, left hand switches are queried when the  diagnostic
    starts.   After  that,  if the OPRSEL switch is set, switches may be
    changed using the SWITCH command.  The diagnostic will ask  for  the
    switches  in the same manner as occurred at start up.  Also the name
    of the switch can be typed as a command.  This turns the  switch  on
    or off depending on its state.

       For example:

    |  What test - TXTINH
    |
    |  [TXTINH On]
    |
    |  What test - TXTINH
    |
    |  [TXTINH On]
    |
    |  What test - SWPRIN
    |
    |  Switches:  000210 000000   TXTINH OPRSEL
    |
    |  What test - TXTINH
    |
    |  [TXTINH Off]
    |
    |  What test - SWITCH
    |
    |  Print the selectable pgm switches? (Y or N) - N
    |
    |  Switches = 000010 000000 
    |
    |  10  LH Switches <# or ?> - 210
    |
    |  0  RH Switches <# or ?> - 0
    |
    |  SWITCHES = 020210 000000 
    |
    |  What test - SWPRIN
    |
    |  Switches:  000210 000000   TXTINH OPRSEL 
MAINDEC-10-DFNIA-A-D                                             Page 15
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0019






    7.1.1  Left Hand Switches (Brief Description)


      Switch       Symbol  State   Function Description
      ------       ------  -----   --------------------

    0 (400000)     ABORT      0    No function.
                              1    Abort at end of pass.

    1 (200000)     RSTART     0    No function.
                              1    Restart diagnostic.
                                   
    2 (100000)     TOTALS     0    No function.
                              1    No function.

    3 (040000)     NOPNT      0    Normal typeout.
                              1    Inhibit all printing except forced.

    4 (020000)     PNTLPT     0    Normal output to TTY.
                              1    Print on LPT (user, logical dev).

    5 (010000)     DING       0    No function.
                              1    Ring bell on error.

    6 (004000)     LOOPER     0    Normal operation.
                              1    Normal operation.

    7 (002000)     ERSTOP     0    Normal operation.
                              1    Halt on error.

    8 (001000)     PALERS     0    Print only first error in loop.
                              1    Print all errors.

    9 (000400)     RELIAB     0    No function.
                              1    Reliability mode switch.

    10 (000200)    TXTINH     0    Print full error messages.
                              1    Short error messages.

    11 (000100)    INHPAG     0    KL - allow 4096K addressing.
                              1    KL - inhibit paging.

    12 (000040)    MODDVC     0    No function.
                              1    Modify device codes.

    13 (000020)    INHCSH     0    Use cache.
                              1    Inhibit using cache on pgm start.

    14 (000010)    OPRSEL     0    Run default operations.
                              1    Operator test selections.

    15 (000004)    CHAIN      0/1  Used by "DIAMON", etc. to control
MAINDEC-10-DFNIA-A-D                                             Page 16
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0020


                                   chain operations.

    16 (000002)    Unused     0    KA10 60 Hertz power
                              1    KA10 50 Hertz power

    17 (000001)    Unused          Reserved



    7.1.2  Left Hand Switches (Detailed Description)

       The following is a detailed  description  of  each  console  data
    switch function:


    Switch 0 (ABORT)

       When this switch is set, the diagnostic returns  control  to  the
    diagnostic loader at end of pass.


    Switch 1 (RSTART)

       When this switch is set while  a  test  is  being  executed,  the
    diagnostic  aborts testing after completion of the current test, and
    restarts the diagnostic.


    Switch 2 (TOTALS)

       Setting this switch has no effect on diagnostic operation.


    Switch 3 (NOPNT)

       This switch inhibits all printout except forced.  Forced printout
    is  used  with  questions  requiring  user response.  This switch is
    useful when it is desired to force a test to  run  without  printing
    error  information.   To  suppress  the remainder of a current error
    report, type a Control-O  on  the  terminal.   This  suppresses  the
    remaining  error  information  for  the  current  error  and  allows
    printing to start again for the next error.


    Switch 4 (PNTLPT)

       When this switch is zero, all printouts from the  diagnostic  are
    printed  on  the terminal.  If set only forced printouts are printed
    on the terminal.  All data, including forced printouts,  is  printed
    on the line printer.


    Switch 5 (DING)
MAINDEC-10-DFNIA-A-D                                             Page 17
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0021


       This switch causes the terminal bell to be  rung  when  an  error
    occurs.


    Switch 6 (LOOPER) - Unused


    Switch 7 (ERSTOP)

       This switch causes the diagnostic to terminate  testing  when  an
    error  occurs.   If  the  OPRSEL  switch  is set the diagnostic will
    continue at the 'What Test -' prompt.  If the OPRSEL switch  is  not
    set  the  diagnostic  will exit and return control to the diagnostic
    loader.


    Switch 8 (PALERS)

       Normally an error message is printed only the first time an error
    occurs  if  that error is being repeated continuously.  To print all
    occurrences of every error, set this switch.


    Switch 9 (RELIAB)

       If this switch is set, each test is run 4 times before control is
    passed  to  the  next  test  selected.   If  only  one test has been
    selected, the test would be run 4 times the repeat count  given  for
    the test.


    Switch 10 (TXTINH)

       If this switch is not set, complete data  is  printed  with  each
    error  message.   If  this  switch is set, less data is printed in a
    shortened form.


    Switch 11 (INHPAG)

       This switch inhibits paging if set and allows it if not set.


    Switch 12 (MODDVC)

       If  this  switch  is  set,  DIAMON  asks  for  any  device   code
    modifications.  This is not used by the diagnostic itself.


    Switch 13 (INHCSH)

       This switch, if set, inhibits the use of cache  during  the  time
    the  diagnostic  is run.  This switch is inspected only in exec mode
    and only at diagnostic start up.  Changes of the switch  setting  do
    not affect the cache after the diagnostic has started up.
MAINDEC-10-DFNIA-A-D                                             Page 18
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0022



    Switch 14 (OPRSEL)

       If set, this switch  enables  increased  user  interaction.   The
    diagnostic  asks explicitly what test or function to do before doing
    anything.  Test selection is made in response to the question:

            What Test? -


       At least enough letters to recognize the test selection  must  be
    typed  although up to six letters are accepted.  '?' may be typed to
    get a list of the test names or commands.  'HELP' may  be  typed  to
    get a short description of each test or command.

       If this switch is not  set,  the  diagnostic  runs  all  hardware
    tests,  prints  fault isolation data (if the inhibit fault isolation
    switch is not set), then exits.


    Switch 15 (CHAIN)

       This switch is used by DIAMON in chaining operations and  is  not
    used by the diagnostic in normal operation.


    Switch 16 (50CYC) - Unused

       This switch is used on KA10's to select 50 hertz  power.   It  is
    not used by this diagnostic.


    Switch 17 - Unused

       This switch is reserved for use  by  the  diagnostic  monitor  or
    subroutine package and is not used by the diagnostic.
MAINDEC-10-DFNIA-A-D                                             Page 19
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0023


    7.2  Right Hand Switches

    7.2.1  Right Hand Switches (Brief Description)


      Switch       Symbol  State   Function Description
      ------       ------  -----   --------------------

    18 (400000)    TRACE      0    Normal operation.
                              1    Trace operation of tests.

    19 (200000)    INHFLT     0    Normal operation.
                              1    Inhibit fault isolation.

    20 (100000)    INHMSG     0    Normal operation.
                              1    Inhibit error message printout.

    21 (040000)    LOOPGM     0    Normal operation.
                              1    Loop on program.

    22 (020000)    LOOPTS     0    Normal operation.
                              1    Loop on selected test.

    23 (010000)    RUNALL     0    Normal operation.
                              1    Run all segments of each test.

    24 (004000)    DSPEAR     0    Normal operation.
                              1    Disable SPEAR error reporting.

    25 (002000)    UDEBUG     0    Normal operation.
                              1    Diagnostic debug mode.

    26 (001000)    MDEBUG     0    Normal operation.
                              1    Error message debug mode.

    27 (000400)    LDEBUG     0    Normal operation.
                              1    Inhibit loading of test microcode.

    28 (000200)    DDEBUG     0    Normal operation.
                              1    Dump port state upon error.

    29 (000100)    EDEBUG     0    Normal operation.
                              1    Print expanded error message upon error.

    30 (000040)    Unused

    31 (000020)    Unused

    32 (000010)    Unused

    33 (000004)    Unused

    34 (000002)    Unused

    35 (000001)    Unused
MAINDEC-10-DFNIA-A-D                                             Page 20
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0024


    7.2.2  Right Hand Switches (Detailed Description)


    Switch 18 (TRACE)

       This switch is used if the user wants to  follow  test  progress.
    As  each test is started, the diagnostic prints the name of the test
    and the current PC.  This is  useful  to  gain  assurance  that  the
    diagnostic  is  running  or to find out what test it died on, if the
    diagnostic fades into oblivion.

       The names of all tests selected are printed.   If  the  test  has
    been  disabled,  the  test  name  is  printed followed by the phrase
    '(Disabled)'.


    Switch 19 (INHFLT)

       If set, this switch inhibits  fault  isolation.   All  tests  are
    still run and in the same order, but the module callout in any error
    messages is ommitted.


    Switch 20 (INHMSG)

       This switch is  used  to  run  the  diagnostic  with  all  normal
    printout  except error messages.  It can be used in place of 'NOPNT'
    switch when looping on a test.


    Switch 21 (LOOPGM)

       If this switch is not set and  OPRSEL  switch  is  not  set,  the
    diagnostic  runs 5 passes of all tests.  Then the diagnostic returns
    to DIAMON or D20MON or KLDCP.

       If this  switch  is  set  and  OPRSEL  switch  is  not  set,  the
    diagnostic runs all tests continuously, pass after pass.

       If OPRSEL switch is set, the diagnostic asks 'What Test  -  '  to
    determine  what  test to run.  When done with a test, the diagnostic
    returns to this question.  The LOOPGM switch is not used.


    Switch 22 (LOOPTS)

       This switch allows a specified test to be looped on forever.   It
    is  equivalent  to  specifying '22 377777777777' to run TST22 a very
    large number of times.  This switch may be overridden by  specifying
    an explicit repeat count.

       This switch is effective only when selecting a single test.  If a
    class of tests is selected, the switch is ineffective.
MAINDEC-10-DFNIA-A-D                                             Page 21
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0025


       If this switch is not set the default repeat count when selecting
    a specific test is 1 repetition.


    Switch 23 (RUNALL)

       This switch forces every segment of a test to be run.   Normally,
    a  test  exits  after  the first error, unless looping on error.  To
    force the diagnostic to run every segment of the test regardless  of
    error, this switch may be set.

       This switch has no  effect  if  LOOPER  switch  is  set  and  the
    diagnostic is looping on an error.


    Switch 24 (DSPEAR)

       This switch enables or disables SPEAR error  reporting.   If  the
    switch  is not set, the diagnostic will make two SPEAR entries - (1)
    an entry when the diagnostic is started and (2) an entry either upon
    first error or at end of pass if no errors have occurred.

       If the switch is set, no SPEAR entries  will  be  made.   If  the
    diagnostic has already started, the second entry will not be made.


    Switch 25 (UDEBUG)

       This switch allows the diagnostic to be run in user mode  without
    a  port  for  the purposes of diagnostic development or debug or for
    the purpose of familiarization with the diagnostic without affecting
    or requiring a port.

       If this  switch  is  set,  the  diagnostic  runs  every  test  as
    demanded.   All  tests and most commands in the DEBUG test appear to
    succeed.


    Switch 26 (MDEBUG)

       This switch forces every test to fail and  prints  out  an  error
    message for each failure.  This may be used to debug error messages,
    or familiarize  a  person  with  typical  error  printouts  of  this
    diagnostic.   It  can also be used when trying to diagnose a failing
    test which passes the first few test segments - this  switch  causes
    error  messages  to  be  printed for passing portions of the test so
    that it can be seen  what  the  port  is  doing  correctly,  without
    looking through the diagnostic listing.


    Switch 27 (LDEBUG)

       The first action of any test is normally to  load  the  microcode
    required  by  the  test.  Setting this switch inhibits the automatic
    loading of microcode.  This allows test  microcode  to  be  modified
    using the DEBUG facility and the test to be rerun.
MAINDEC-10-DFNIA-A-D                                             Page 22
PROGRAM OPTIONS (SWITCHES)                                                                                                 SEQ 0026




    Switch 28 (DDEBUG)

       This switch affects the contents of error printouts.  If not  set
    error  printouts  contain  the  usual  amount  of data.  If set, the
    diagnostic prints a complete dump of the port  (about  12  pages  of
    data)  upon  any  error  applicable error.  The types of errors with
    which this would occur are such things as port hung or status  error
    in received packet, etc.

       This switch would be used if complete data regarding the state of
    the port and microcode was desired on any error.

    Switch 29 (EDEBUG)

       This switch affects the contents of error printouts.  If not  set
    error  printouts  contain  the  usual  amount  of data.  If set, the
    diagnostic prints port number and, if user mode, date  and  time  of
    error.

    Switch 30 - Unused

    Switch 31 - Unused

    Switch 32 - Unused

    Switch 33 - Unused

    Switch 34 - Unused

    Switch 35 - Unused
MAINDEC-10-DFNIA-A-D                                             Page 23
ERRORS                                                                                                                     SEQ 0027


8.0  ERRORS

       This section describes  the  operation  of  the  diagnostic  upon
    encountering  various  types  of  errors.  There are basically three
    types:

     o  User input errors

     o  Hardware errors

     o  Unexpected errors




    8.1  User Input Errors at the Terminal

       The diagnostic requests three types of input:  numerical, yes  or
    no, and SIXBIT.  The action taken upon input error is as follows:

       When an error is  detected  on  numerical  input  the  diagnostic
    prints  an  error  message  describing  the  type of error.  Then it
    either asks the question again, or  returns  to  'What  test  -'  or
    'DEBUG>'.

       When an error is detected on a yes  or  no  input,  the  user  is
    merely reprompted, until a Y or N is typed.

       When an error is detected on SIXBIT input  an  error  message  is
    printed and the user is asked the question again.  The user can then
    ask the diagnostic for further information by  asking  for  help  or
    typing '?'.



    8.2  Error Reporting of Hardware Detected Errors

       Upon the occurrence of a hardware error a full error  description
    is  printed, depending on the setting of switches 'NOPNT', 'PNTLPT',
    'TXTINH', and 'INHMSG'.

       If the diagnostic is looping on error only the  first  occurrence
    of an error is printed.  Subsequent errors at the same place are not
    printed.  If the 'DING' switch is set, the terminal bell is  sounded
    to  indicate  that  an  error  was  detected, even though nothing is
    printed.



    8.2.1  Reporting to SPEAR

       The diagnostic makes 2 SPEAR entries.  The first is an entry when
    the  diagnostic  is  started.   This  entry contains the date, time,
    user, diagnostic name and version.  A second entry is made when  the
    first  error  occurs.   This  entry  contains  the date, time, user,
    diagnostic name and version, failing test name and test description.
MAINDEC-10-DFNIA-A-D                                             Page 24
ERRORS                                                                                                                     SEQ 0028


       If the diagnostic completes a successful pass with no errors,  it
    will  make the second entry as above, but there will be no test name
    or test description included.

       If, thereafter, an error occurs and the  diagnostic  has  already
    made  an  entry  indicating  successful  completion  of  a pass, the
    diagnostic will make one more entry, giving the error information.

       Whenever the diagnostic is restarted by an STM  or  reloaded  and
    restarted,  it will make entries into the system error file.  If the
    2 entries have already been made, restarting via a STD or CONT  will
    not result in additional entries.

       SPEAR entries can be disabled using the switch 'DSPEAR'.



    8.2.2  Error Printouts

       Errors are printed as they  occur  in  a  standard  form.   Where
    appropriate,  the  CSR register or LAR register contents is printed.
    A sample printout with TXTINH switch not set follows:

    |  +-+-+-+-+-+-+
    |  Error:  TST6-4 - NSA ROM Address Test
    |  Error PC = 430'  Switches = 000010 000000   Ucode version 0
    |  NSA not read correctly:
    |  Correct (Bytes 0-5):  252 005 252 003 000 005 
    |  Actual (Bytes 0-5):   000 000 000 000 000 000 
    |  FRU:  NIA Module
    |  -------------


       This error printout gives the following data:


     o  Test name - TST4-6 (Test #4 segment #6), name of  test  is  'NSA
        ROM Address Test'.

     o  Error PC - 430' - address which can be found in  the  diagnostic
        listing  of  the call to the scope loop routine.  Note that this
        is a relative address also.

     o  Switches - those in effect at the time of the error printout.

     o  'NSA not read correctly:' - description of the error.

     o  Results, correct and actual.

     o  Module callout - NIA module.
MAINDEC-10-DFNIA-A-D                                             Page 25
ERRORS                                                                                                                     SEQ 0029


    |  +-+-+-+-+-+-+
    |  Error:  TST10-311 - CRC Test 1
    |  Error PC = 1050'  Switches = 000010 000000   Ucode version 55
    |  Errors noted with self-directed datagrams:
    |   What             Expected   Actual
    |  -----------       --------   ------
    |  Packets Sent          200.     200.
    |    Status Errors         0.       0.
    |  Packets Rcvd          200.       0.
    |    Status Errors         0.       0.
    |    CRC Errors            0.       0.
    |    DtCmp Errors (PKTS)   0.       0.
    |    DtCmp Errors (WORDS)  0.       0.
    |  FRU:  NIA Module
    |  -------------


       This error printout gives the following data:


     o  Test name - TST10-311 (Test #10 segment #311), name of  test  is
        'CRC Test 1'.

     o  Microcode version number - 55.

     o  Error PC - 1050' -  address  of  the  call  to  the  scope  loop
        routine.

     o  Switches - those in effect at the time of the error printout.

     o  'Errors noted with self-directed datagrams:'  -  description  of
        the  error  including  packets  sent  and  receive and number of
        errors expected and actual.

     o  Module callout - the NIA Module.




    8.3  Unexpected Errors

       The diagnostic  is  written  to  recover  from  any  usual  error
    condition  and  continue  testing.   However,  there are a few halts
    coded into the diagnostic to catch a completely lost program because
    of some unexpected malfunction:

    ADDRESS        REASON
     1011    Fatal push list pointer error
     1012    Initial push list pointer error
     1013    MUUO with LUUO handler wiped out
     1014    DTE20 interrupt without doorbell
     1015    DTE20 clock interrupt without flag set
     1016    CPU initialization error
     1017    End of program error
     1020    Interrupt with LUUO handler wiped out
MAINDEC-10-DFNIA-A-D                                             Page 26
ERRORS                                                                                                                     SEQ 0030


    The diagnostic is coded with several fatal instructions which cause

                Fatal program error at address  xxxxx

    to be printed and the diagnostic to halt.   These  instructions  are
    placed  where  the  diagnostic  finds itself in a situation where it
    does not know how to proceed.   There  are  no  anticipated  program
    deficiencies that allow a fatal error to be executed.
MAINDEC-10-DFNIA-A-D                                             Page 27
PROGRAM DESCRIPTION                                                                                                        SEQ 0031


9.0  PROGRAM DESCRIPTION

       This section provides a functional overview  of  the  diagnostic,
    giving  information  concerning requirements and restrictions, fault
    detection and isolation, error handling, terminal input  and  output
    characteristics, and diagnostic applications.



    9.1  Program Overview

    9.1.1  Program Purpose

       DFNIA  is  a  functional  diagnostic  intended  to   verify   the
    functionality  of  a  NI20  port  consisting  of 3 Port modules, NIA
    module, H4000 Transceiver, and NI cables.  It  attempts  to  isolate
    faults  to  either  -  (1)  3  Port  modules, (2) NIA module + H4000
    Transceiver + cable.



    9.1.2  Testing Strategy

       The diagnostic attempts to run simpler tests first that  exercise
    a  small amount of logic.  Then more and more testing is done, until
    the tests are exercising much of the logic  of  the  port  at  once.
    First, the three port modules are tested, with basic hardware tests.
    Then basic port operations are verified.  Then datagrams of  varying
    types.



    9.2  Run-Time Dynamics

    9.2.1  Memory Allocation Requirements

       The diagnostic loads and executes in less  than  80K  of  memory.
    This  includes  the memory used by the diagnostic monitor (DIAMON or
    D20MON or MAGMON) and the subroutine package (SUBRTN  or  SUBUSR  or
    SUBKL).



    9.2.2  Operating System Interactions

    9.2.2.1  TOPS-10

       The diagnostic does not run under TOPS-10.
MAINDEC-10-DFNIA-A-D                                             Page 28
PROGRAM DESCRIPTION                                                                                                        SEQ 0032


    9.2.2.2  TOPS-20

       The diagnostic interfaces with TOPS-20 via the  DIAG  JSYS.   The
    diagnostic  requests  the  port using the DIAG JSYS.  When done, the
    diagnostic releases the device also using the DIAG JSYS.

       The diagnostic can only be run if the port is not being  used  by
    the  operating  system.   The DIAG JSYS will succeed only if this is
    so.  Hence, the user must close any NI  connections  before  running
    this diagnostic.  This is accomplished via the OPR program.



    9.2.3  User Mode Restrictions

    9.2.3.1  User Mode Privileges

       Under TOPS-20 a user must have at least MAINTENANCE privileges in
    order  to  run  the  diagnostic.   WHEEL's  and OPERATOR's also have
    sufficient privileges to run the diagnostic in USER Mode.



    9.2.3.2  User Mode Priority Interrupts

       The diagnostic is not  allowed  to  use  the  Priority  Interrupt
    System  in  user  mode.   In user mode, the diagnostic polls the CSR
    Register for interrupt conditions.



    9.3  Exec Mode Capability

       The diagnostic runs in exec mode under  KLDCP  or,  additionally,
    under  DIAMON or MAGMON.  All tests are capable of being run in exec
    mode.



    9.4  User Mode Capability

       The diagnostic runs in user mode under TOPS-20  (Release  6.1  or
    newer).   There are some restrictions imposed upon the diagnostic in
    user mode that are listed in Section 9.2.3 'User Mode Restrictions'.



    9.5  Fault Detection
MAINDEC-10-DFNIA-A-D                                             Page 29
PROGRAM DESCRIPTION                                                                                                        SEQ 0033


    9.5.1  Error Resolution

       The diagnostic isolates faults to  a  logical  functional  group,
    either the three port modules, or the NIA module + H4000 Transceiver
    + cables.



    9.5.2  Fault Detection And Isolation

       The purpose of the diagnostic is to perform a functional test  of
    the  NI20,  not  necessarily  to detect and isolate faults.  However
    this diagnostic should detect 50% of solid  faults  in  the  3  port
    modules,  and  85%  of  faults in the NIA module, and isolate 95% of
    these to the FRU.



    9.5.3  Fault Detection

       Typically, the diagnostic detects a fault, then prints it out and
    continues  testing.   The  failing module is printed with each error
    message.

       Occasionally, particularly  with  EBUS  interface  failures,  the
    diagnostic  may just hang, or the KL10 microcode may hang.  This may
    happen if the port cannot complete an  EBUS  operation  such  as  an
    examine  or  deposit  properly.  If this occurs, no error message or
    module callout is  printed.   The  solution  is  to  run  the  basic
    diagnostic,  DFPTA,  in  order  to  debug  or  verify the three port
    modules, EBUS, MPROC, and CBUS modules.



    9.6  Performance During Hardware Failures

    9.6.1  CPU/Memory Failures

       Most CPU and memory faults are fatal errors to the diagnostic and
    it does not continue after one.



    9.6.2  Power Fail/Restart

       If a power fail occurs, the diagnostic must be reloaded and rerun
    when the system is back in operation.



    9.6.3  Port Failure

       Hardware failure in the port is anticipated  and  results  in  an
    error message.
MAINDEC-10-DFNIA-A-D                                             Page 30
PROGRAM DESCRIPTION                                                                                                        SEQ 0034


    9.6.4  Unexpected Traps

       The  diagnostic  can  fail  due  to  an  unexpected  malfunction.
    Sometimes  an  error  code  is  printed,  if  the subroutine package
    intercepts the error.  Other cases may result in a  hung  diagnostic
    or  CPU  or occasionally a fatal error message.  See the Section 8.3
    'Unexpected Errors' for more details.



    9.7  Program Applications

       The diagnostic can be used for coarse determination of a fault  -
    does the port work and if not what module is broken.

       It can also be used for detailed examination of a port.



    9.7.1  Users and Uses

       The diagnostic is generally used only by Manufacturing to  assist
    module  verification  and  debug,  and  by  Customer  Services  when
    determining the FRU of a failing port.



    9.7.2  Engineering Usage

       Engineering used this diagnostic  for  microcode  debug  and  for
    prototype debug and maintenance.  Engineering may use the diagnostic
    if any ECO's are made in the future.



    9.7.3  Manufacturing Usage

       This  diagnostic  is  used  by  Manufacturing  as  part  of   the
    acceptance procedure for an NI20.



    9.7.4  Customer Services Usage

       Customer Services uses  the  diagnostic  as  part  of  acceptance
    procedure,  when  an  NI20  is  sent  to  a  customer in a drop ship
    environment.  Customer Services also uses this during CM and PM.



    9.7.5  Customer Usage

       With the exception of OEM customers, it is not  likely  that  any
    customers  will use the diagnostic.  If they have a problem with the
    port they notify Customer Services who can then run the  diagnostic.
    OEM customers, running the diagnostic themselves, would interface to
MAINDEC-10-DFNIA-A-D                                             Page 31
PROGRAM DESCRIPTION                                                                                                        SEQ 0035


    their account sales representative  if  any  difficulties  arose  or
    problems discovered.



    9.8  Test Design

       The basic design of most tests is as follows:


     o  Do something to the port.

     o  Inspect the results.

     o  If error, print an error message.

     o  If error and error looping enabled, loop on error.


       This fits into the diagnostic as described by the following steps
    done by the diagnostic:

     o  Do program initialization

     o  Select test category

     o  Run these tests

         o  Select a test

         o  Run it

         o  Select next test, exit if no more


     o  Select next test category to  test  if  OPRSEL  switch  is  set,
        otherwise exit the diagnostic.




    9.8.1  Type of Tests

       There are three types of tests:


     o  Hardware Test

     o  Program Option Selection

     o  Debugger Test


       Whenever the tests are run without manual control of  which  test
    is  selected,  only  hardware  tests  are  run.   This  is the major
    function of the diagnostic and  these  tests  comprise  95%  of  the
MAINDEC-10-DFNIA-A-D                                             Page 32
PROGRAM DESCRIPTION                                                                                                        SEQ 0036


    diagnostic.

       Program option  selection  tests  can  be  selected  when  manual
    control  of what test to run has been selected.  These are not tests
    in that they do not do anything to the hardware.  But since they are
    selected  from  a  list  of  hardware  tests, they are called tests.
    These consist of  switch  selections  or  changes,  help,  and  exit
    commands.

       The debugger test is a special test that allows one to  to  CONI,
    CONO,  DATAI,  and DATAO's to the port and in effect write one's own
    test.  The purpose of this test is for hardware debug of  the  port,
    where  one  is interested in doing things and inspecting the results
    in a less formal fashion than just running tests.  This is only  one
    test but it allows many different things to be done to the port.  It
    is intended to be used primarily in diagnostic and microcode  debug,
    but may be used later by Customer Services or Manufacturing.



    9.8.2  Test Flow

       The diagnostic runs all tests in numerical sequence, printing out
    error message and module callouts as necessary.

       The following sections describe starting and stopping tests.



    9.8.2.1  Starting the Test

       After the program switches have either  been  given  via  console
    switches or by typing them in on the terminal, the diagnostic starts
    the tests as selected by the switches or by user input.

       If test tracing is enabled, the diagnostic prints the test pc and
    test  name  at  the  beginning  of  each  test, and a phrase such as
    '(disabled)' if the test actually is not going to be run.

       A test is disabled if such has been specified  with  the  DISABLE
    test command.



    9.8.2.2  Stopping the Test

       A test sequence may  stop  either  by  terminating  normally,  by
    halting  on error (if the ERSTOP switch is set), by the user setting
    the ABORT or RSTART switches, or by typing an Altmode or C.  In user
    mode, ABORT and RSTART are ignored if set.

       The diagnostic continues at one of several  places  depending  on
    switch  settings  and  whether or not the diagnostic is being run in
    exec or user mode  and  what  loader  has  been  used  to  load  the
    diagnostic:
MAINDEC-10-DFNIA-A-D                                             Page 33
PROGRAM DESCRIPTION                                                                                                        SEQ 0037


     o  D20MON CMD -

     o  DIAMON CMD -

     o  MAGMON CMD -

     o  What Test -

     o  @ (TOPS-20 prompt)

     o  o >.  (KLDCP prompt)




    9.8.2.3  Obtaining Run Time Status (Control-T)

       In user mode the current program status is given when T is typed.
    This is not available in exec mode.



    9.8.2.4  Obtaining Run Time Status (S or Control-S)

       In exec mode, while running tests, the current test name and time
    is printed when an S <CR>, s <CR> or Control-S is typed.

       In user mode, typing an S or s produces the printout.
MAINDEC-10-DFNIA-A-D                                             Page 34
TEST DESCRIPTIONS                                                                                                          SEQ 0038


10.0  TEST DESCRIPTIONS

    10.1  Test Description Assumptions

       All test descriptions assume that no program  switches  are  set.
    The action of a test if a particular switch is set may be determined
    by reviewing the function of the switch, given in prior sections.



    10.2  Test Description Overview

       The description for 'program option selection' test  consists  of
    what each item does and a description of its use.

       The description given for a 'hardware' test consists of a  single
    line  test  description.  The diagnostic listing provides a detailed
    description at the beginning of each test.  Specific  implementation
    details  can  be  obtained from the listing or from the microcode of
    the test.

       The description for the 'debug' test gives a list of commands and
    what each does.
MAINDEC-10-DFNIA-A-D                                             Page 35
TEST DESCRIPTIONS                                                                                                          SEQ 0039


    10.3  Program Option Selections

    10.3.1  Basic Description

       This is a set of commands that can be given to facilitate running
    tests or debugging the port.



    10.3.2  Commands Available

       The commands available in regular mode are as follows, which  are
    typed in response to the prompt 'What test - ':

    NAME         DESCRIPTION
    ----         -----------

    Hardware Tests:
    --------------

    ALL n   Execute ALL tests (n times)
    PORT n  Execute Port modules tests
    NIA n   Execute NIA module tests
    LOOP n  Execute Loopback tests
    FUNCT n Execute tests verifying microcode functionality
    m n     Test m

    General Commands:
    ----------------

    HELP    Print this message
    EXIT    Return to normal test dispatching
    DDT     Enter DDT (Type RTN$X to return)
    TAKE    Take cmds from file 
    NTAKE   Take cmds from file (not echoed)
    DEBUG   Enter port debugger
    DIAMON  Enter DIAMON

    Test Control Commands:
    ---------------------

    ENABLE n  Enable execution of test n
    DISABL n  Disable execution of test n
    DISLIS    List disabled tests

    LIST n    List all tests (or just test n)

    Statistics Commands:
    -------------------

    STATIS  Print statistics
    ZSTATS  Clear statistics

    CI Configuration Command:
    ------------------------
MAINDEC-10-DFNIA-A-D                                             Page 36
TEST DESCRIPTIONS                                                                                                          SEQ 0040


    CONFIG      Print configuration

    Switches:
    --------

    SWITCH  Enter switch information
    SWPRIN  Print current switch settings

    NOPNT   Complement 'no print' switch
    PNTLPT  Complement 'print lpt' switch
    DING    Complement 'bell on error' switch
    ERSTOP  Complement 'halt on error' switch
    PALERS  Complement 'print all errors' switch
    RELIAB  Complement 'reliability mode' switch
    TXTINH  Complement 'text inhibit' switch
    OPRSEL  Complement 'operator select' switch

    TRACE   Complement 'trace test' switch
    INHFLT  Complement 'inhibit fault isolation' switch
    INHMSG  Complement 'inhibit error message' switch
    LOOPGM  Complement 'loop on pgm' switch
    LOOPTS  Complement 'loop on test' switch
    RUNALL  Complement 'run all test segments' switch
    DSPEAR  Complement 'disable SPEAR reporting' switch
    UDEBUG  Complement 'user mode debug' switch
    MDEBUG  Complement 'error message debug' switch
    LDEBUG  Complement 'load microcode debug' switch
    DDEBUG  Complement 'dump on error' switch
    EDEBUG  Complement 'expanded error msg' switch




    10.3.3  Detailed Command Description

       In more detail these commands are as follows:



    10.3.3.1  Hardware Tests

       ALL n

       This command will run all hardware  tests  the  number  of  times
    specified by the repeat count.  If no repeat count is specified, the
    diagnostic asks how many passes to run.

       PORT n

       This command  will  run  all  port  related  (EBUS,  MPROC,  CBUS
    modules)  tests  the  number of times specified by the repeat count.
    If no repeat count is specified, the diagnostic asks how many passes
    to run.
MAINDEC-10-DFNIA-A-D                                             Page 37
TEST DESCRIPTIONS                                                                                                          SEQ 0041


       NIA n

       This command will run all NIA module tests the  number  of  times
    specified by the repeat count.  If no repeat count is specified, the
    diagnostic asks how many passes to run.

       LOOP n

       This command will run all LOOPBACK  tests  the  number  of  times
    specified by the repeat count.  If no repeat count is specified, the
    diagnostic asks how many passes to run.

       FUNCT n

       This command will run all tests which verify the functionality of
    the  microcode.   They  will be run the number of times specified by
    the repeat count.  If no repeat count is specified,  the  diagnostic
    asks how many passes to run.

       m n

       This command is given to run a single test.  The test  number  is
    given  followed  by  an optional repeat count.  If a repeat count is
    not given, the test is executed only once.



    10.3.3.2  General Commands

       HELP

       This command prints a one line description for each command.

       EXIT

       This command returns control to the diagnostic loader or to KLDCP
    if no loader program was used to load the diagnostic in exec mode.

       DDT

       This command invokes DDT.  When RTN$X (POPJ  17,0)  is  executed,
    the  diagnostic  resets  the  PI  system in exec mode and returns to
    'What Test -  '  question.   DDT  can  also  be  entered  by  typing
    Control-D and when done typing RTN$X.  When invoked in this fashion,
    the diagnostic does not reset the PI system.

       TAKE file ext

       This command takes  commands  from  a  file.   The  file  may  be
    specified  as  an  argument  to  the  command.   If  no file name is
    specified, the default file name is used.  The default file name  is
    either 'DFNIA.CMD' or the last file specified.

       Any legal  command  may  be  specified  except  another  TAKE  or
    commands  which cause exit from the diagnostic such as DDT or DIAMON
    or EXIT.  DIAMON or EXIT may be included but processing of the  take
MAINDEC-10-DFNIA-A-D                                             Page 38
TEST DESCRIPTIONS                                                                                                          SEQ 0042


    file  will  terminate  with the command.  The diagnostic prints each
    command and result on the terminal as it executes each command.

       The file specified must be on the load device known to MAGMON  or
    D20MON  or DIAMON.  If not, an error message is printed and the take
    command is aborted.

       If any error occurs while processing  the  take  file,  the  take
    command  is  aborted.   Errors include any unexpected errors such as
    unrecognized command, failures to start the port,  argument  errors,
    etc.

       NTAKE file ext

       This command is identical to the TAKE  command  with  the  single
    exception that the commands executed are not echoed on the terminal.
    All output resulting from execution of the commands is echoed.

       DEBUG

       Enter port debugger.  This test allows specific operations to  be
    done   with  the  port  without  the  restrictions  of  executing  a
    particular test.

       DIAMON

       Enter DIAMON.  This  is  the  same  as  the  EXIT  command  if  a
    diagnostic  loader  is  present.   If  MAGMON  is  loaded instead of
    DIAMON, control returns to MAGMON.



    10.3.3.3  Test Control Commands

       ENABLE n,n,n,...  and DISABL n,n,n,...

       The running of a particular test can be explicitly prevented with
    the  DISABL command.  The ENABLE command allows the execution of the
    specified  tests  to  be  enabled  again.   Disabling  a  test  will
    guarantee that the test will not be run.  Enabling a test will allow
    a test to be run, but whether or not  it  is  run,  depends  on  the
    determination   made  by  the  fault  isolation  algorithm  and  the
    availability of the required port modules.

       Example:

    |  What test - ENABLE 3,4
    |  What test - DISABL 3,4,10,22


       DISLIS

       This command lists what tests have been disabled.  Example:

    |  What test - DISLIS
    |
MAINDEC-10-DFNIA-A-D                                             Page 39
TEST DESCRIPTIONS                                                                                                          SEQ 0043


    |  TST1 TST3 TST4 TST11 TST22


       LIST n

       List all tests (or just test n).  This command  prints  the  test
    description  which  is  also  printed  in each error message.  If no
    argument is given, all test descriptions are printed  (this  can  be
    aborted by typing an altmode).  If a test number such as 2 is typed,
    only the description for that test will be printed.  Example:

    |  What test - LIST 2
    |
    |  TST2 - Port Hardware Test 2
    |
    |  What test - LIST
    |
    |  TST1 - Port Hardware Test 1
    |  TST2 - Port Hardware Test 2
    |  TST3 - Port Hardware Test 3
    |  ...
        



    10.3.3.4  Statistics Commands

       STATIS

       This command prints accumulated statistics.  Statistics are  kept
    only  on  packets  sent and packets received and various information
    connected with each.  See the Section 6.9.1  'Statistics  Printouts'
    for more details.

       ZSTATS

       This   command   clears   statistics.    Statistics   are    also
    automatically cleared whenever the diagnostic is restarted via a STM
    command.



    10.3.3.5  NI Configuration Command

       CONFIG

       This command directs the diagnostic to print the configuration of
    nodes   on   the  NI  bus.   This  is  identical  to  running  TST26
    'Configuration Test'.  It merely prints whatever configuration  data
    has been accumulated so far.  For example:
MAINDEC-10-DFNIA-A-D                                             Page 40
TEST DESCRIPTIONS                                                                                                          SEQ 0044



    |  What test - CONFIG
    |  
    |  ***** NI Configuration *****
    |     Physical Address      Ver  ECO  Usr                    Com    DLL
    |  Bt1 Bt2 Bt3 Bt4 Bt5 Bt6   #    #   ECO    Functionality   Dev   Type
    |  -----------------------  ---  ---  ---  ----------------  ---  --------
    |  252 000 003 003 000 000  (Self)
    |  252 000 003 003 000 006   1    0     0         12000030     0  Ethernet
    |  274 033 000 000 000 001   5  101     1         10004730     0  Ethernet


       Only those nodes which broadcast a  periodic  system  ID  message
    will  be  included.   Nodes  which are turned off or are not running
    will not be seen.



    10.3.3.6  Switches

       SWITCH

       Enter switch information.  Switches can  be  entered  as  in  the
    following  example.   Usually, though, it is easier just to type the
    switch name to turn on or off a switch.

    |  What Test - SWITCH
    |
    |  Print the selectable pgm switches? (Y or N) - Y
    |
    |  ----Left Side Switches--------     ----Right Side Switches--------
    |
    |  SW    KL10     11    Function      SW   Value  Function
    |  --    ----    ----   --------      --   -----  --------
    |   0   400000  100000  Abort         18  400000  Program trace
    |   ...
    |
    |  Switches = 020010 004000 
    |
    |  20010  LH Switches <# or ?> - ?
    |
    |  Type  Y,N,^,CR,^Z
    |
    |  N ABORT - 
    |  N RSTART - 
    |  ...
    |
    |  4000  RH Switches <# or ?> - ?
    |
    |  Type  Y,N,^,CR,^Z
    |
    |  N TRACE - 
    |  N INHFLT - 
    |  ...
MAINDEC-10-DFNIA-A-D                                             Page 41
TEST DESCRIPTIONS                                                                                                          SEQ 0045


       SWPRIN

       Print current switch settings.  Example:
     
    |  What Test - SWPRIN
    |
    |  Switches:  020010 002000   PNTLPT OPRSEL UDEBUG 


    NOPNT    PALERS   TRACE    LOOPTS   MDEBUG
    PNTLPT   RELIAB   INHFLT   RUNALL   LDEBUG
    DING     TXTINH   INHMSG   DSPEAR   DDEBUG
    ERSTOP   OPRSEL   LOOPGM   UDEBUG   EDEBUG
                      

       The name of each of these switches can be typed.  The  result  is
    to  complement  the switch setting.  If left hand switches are typed
    in exec mode an error message is printed.
MAINDEC-10-DFNIA-A-D                                             Page 42
TEST DESCRIPTIONS                                                                                                          SEQ 0046


    10.4  Hardware Tests

       More information on each of the following hardware  tests  listed
    here can be found in the program listing.



    10.4.1  Hardware Tests - EBUS/MPROC/CBUS modules

    TST1 - Port Hardware Test 1
    TST2 - Port Hardware Test 2
    TST3 - Port Hardware Test 3



    10.4.2  Functional Tests

    10.4.2.1  Basic Operations

    TST4 - Idle Loop Test
    TST5 - Queue Handling Test
    TST6 - NSA ROM Address Test
    TST7 - NSA RAM Address Test



    10.4.2.2  CRC Tests

    TST10 - CRC Test 1
    TST11 - CRC Test 2



    10.4.2.3  Datagram Tests

    TST12 - Non-BSD Datagram Loopback Test
    TST13 - BSD Datagram Loopback Test 1
    TST14 - BSD Datagram Loopback Test 2



    10.4.2.4  Multicast Tests

    TST15 - Multicast Table Test 1
    TST16 - Multicast Table Test 2
    TST17 - Multicast Table Test 3
    TST20 - Broadcast Test 3



    10.4.2.5  PTT Tests

    TST21 - PTT Table Test 1
    TST22 - PTT Table Test 2
    TST23 - PTT Table Test 3
MAINDEC-10-DFNIA-A-D                                             Page 43
TEST DESCRIPTIONS                                                                                                          SEQ 0047


    10.4.2.6  Miscellanous Tests

    TST24 - PAD Flag Bit Test 1
    TST25 - PAD Flag Bit Test 2
    TST26 - Configuration Test
    TST27 - Statistics Test
MAINDEC-10-DFNIA-A-D                                             Page 44
TEST DESCRIPTIONS                                                                                                          SEQ 0048


    10.5  Debug Test

    10.5.1  Basic Description

       This test allows the selection of different operations  that  may
    be  done  with  the  port.   In some cases, probably rarely, a field
    engineer may wish to diagnose a port by doing particular operations.
    More  often  this  type  of  testing  may  be  useful when repairing
    individual modules if  the  technician  doing  the  repair  is  very
    familiar  with  the module and how it works.  This test provides the
    ability to perform a basic operation such as writing a  register  or
    doing  something  with  microcode and then inspecting the results to
    see what happened.

       Normally,  the  port  tests  provide  sufficient  detection   and
    isolation  of faults to fix the port.  Occasionally, a person trying
    to fix the port may encounter an unusual problem not detected by the
    diagnostic  or  having  strange  symptoms.  This test may allow some
    understanding of the problem to be gained.

       This  test  can  also  be  used  to  debug  microcode  using  the
    breakpoint  facilities.   And  it can be used to run small microcode
    routines of the user's own devising.



    10.5.2  Commands Available

       The commands available in debug mode are as  follows,  which  are
    typed in response to the prompt 'DEBUG> ':

    NAME         DESCRIPTION
    ----         -----------

    General Commands:
    ----------------

    HELP        Print this message
    EXIT        Exit DEBUG mode
    DDT         Enter DDT (Type RTN$X to return)

    SET opt arg    Set/clear/print options
    TAKE file ext  Take commands from a file
    NTAKE file ext Take commands from file (unechoed)

    Starting, Stopping, Initializing the Port:
    -----------------------------------------

    RESET       Issue EBUS Reset
    CLEAR       Issue a 'Port Clear'

    START adr   Start the port micro-sequencer
    STOP        Stop the port micro-sequencer
    CONT        Continue the port micro-sequencer
    SSTEP cnt   Single step the port micro-sequencer
    STRACE cnt  Single step and trace execution
MAINDEC-10-DFNIA-A-D                                             Page 45
TEST DESCRIPTIONS                                                                                                          SEQ 0049


    SPRINT cnt  Print single step history data
    SCLEAR      Clear single step history data
    SSINIT      Set up single step addr/data/history

    Handling Port Registers:
    -----------------------

    ECSR        Examine CSR Register
    DCSR dat    Deposit CSR Register
    ZCSR        Zero CSR Register  

    EEBUF       Examine EBUF register
    DEBUF dat   Deposit EBUF register
    ZEBUF       Zero EBUF register

    ELAR        Examine LAR register
    DRAR dat    Deposit RAR register
    ZRAR        Zero RAR register

    Handling Port CRAM Locations:
    ----------------------------

       The next few  commands  must  have  at  least  one  argument  and
    possibly  two.   Two  arguments give the range of CRAM address to be
    altered or inspected.  If only one argument is given  the  range  is
    only  one location.  If the deposit command is given, the diagnostic
    will ask what to deposit into each location.

    DCRAM adr,adr  Deposit into CRAM
    BCRAM adr,adr  Deposit into CRAM by fields
    ACRAM adr,adr  Alter CRAM
    ECRAM adr,adr  Examine CRAM
    LCRAM adr,adr  List CRAM
    ZCRAM adr,adr  Zero CRAM  

    2901 Commands:
    -------------

    E2901 reg,reg  Examine 2901 registers
    D2901 reg,dat  Deposit 2901 register
    Z2901 reg,reg  Zero 2901 registers

    Local Storage Commands:
    ----------------------

    ELOCS adr,adr  Examine local storage
    DLOCS adr,dat  Deposit local storage
    ZLOCS adr,adr  Zero local storage

    Mark Bit Commands:
    -----------------

    MARK adr,adr   Set mark bit
    RMARK adr,adr  Remove mark bit
    CMARK adr,adr  Clear all mark bits
    LMARK adr,adr  List mark bits
MAINDEC-10-DFNIA-A-D                                             Page 46
TEST DESCRIPTIONS                                                                                                          SEQ 0050



    Breakpoint Commands:
    -------------------

    BREAK adr,adr   Set breakpoint
    RBREAK adr,adr  Remove breakpoint
    CBREAK adr,adr  Clear all breakpoints
    LBREAK adr,adr  List breakpoints

    Microcode Commands:
    ------------------

    LOAD tst    Load microcode from Test 'tst' into CRAM
    LIST tst    List microcode from Test 'tst'
    FLOAD       Load microcode from file into CRAM
    FVERFY      Verify microcode loaded from file
    FLIST       List microcode in file
    FEXAM       Examine microcode in file 

    Statistics Commands:
    -------------------

    STATIS    Print statistics
    ZSTATS    Clear statistics

    Configuration Commands:
    ----------------------

    CONFIG    Print configuration

    NI Commands:
    -----------

    NI Commands:
    -----------

    PINIT       Initialize PCB and queues
    SIDLE       Start port/wait for IDLE loop
    BPACK       Build packet/put on queue
    IQUEUE      Insert packet on command queue
    PQUEUE n    Print specified queue
    PPCB        Print PCB
    WATCH       Watch port and print events
    DEPPTT adr,data   Deposit into PTT table
    DEPMUL adr,data   Deposit into Multicast table
    DEPPAK adr,data   Deposit into packet

    PLI Register Commands:
    ---------------------

    DPLI lnk,data,rep  Deposit PLI data
    EPLI lnk,rep       Examine PLI data

    Miscellaneous Commands:
    ----------------------
MAINDEC-10-DFNIA-A-D                                             Page 47
TEST DESCRIPTIONS                                                                                                          SEQ 0051


    TRANSL dat  Translate data to CSR bits
    FILLNX dat  Fill CRAM with 'J=.+1,CTL=dat'
    FILLPC dat  Fill CRAM with 'J=.,CTL=dat'
    CCODE       Print condition codes
    ESTACK      Examine 2910 stack contents
    ENEXT       Examine next
    DNEXT arg   Deposit next
    DUMP        Dump entire port status

    IPRINT      Print accumulated interrupt activity
    ICLEAR      Clear accumulated interrupt activity
    IINIT       Init interrupt system 

    Data Transfer Commands:
    ----------------------

    CCWPNT    Print CCW list
    LOGPNT    Print logout data

    Switches:
    --------

    SWITCH  Enter switch information
    SWPRIN  Print current switch settings

    NOPNT   Complement 'no print' switch
    PNTLPT  Complement 'print lpt' switch
    DING    Complement 'bell on error' switch
    ERSTOP  Complement 'halt on error' switch
    PALERS  Complement 'print all errors' switch
    RELIAB  Complement 'reliability mode' switch
    TXTINH  Complement 'text inhibit' switch
    OPRSEL  Complement 'operator select' switch

    TRACE   Complement 'trace test' switch
    INHFLT  Complement 'inhibit fault isolation' switch
    INHMSG  Complement 'inhibit error message' switch
    LOOPGM  Complement 'loop on pgm' switch
    LOOPTS  Complement 'loop on test' switch
    RUNALL  Complement 'run all test segments' switch
    DSPEAR  Complement 'disable SPEAR reporting' switch
    UDEBUG  Complement 'user mode debug' switch
    MDEBUG  Complement 'error message debug' switch
    LDEBUG  Complement 'load microcode debug' switch
    DDEBUG  Complement 'dump on error' switch
    EDEBUG  Complement 'expanded error msg' switch




    10.5.3  Detailed Command Description

       In more detail these commands are as follows:
MAINDEC-10-DFNIA-A-D                                             Page 48
TEST DESCRIPTIONS                                                                                                          SEQ 0052


    10.5.3.1  General Commands

       HELP

       This command prints a one line description similar to  the  above
    for each command.

       EXIT

       This command returns control to normal test  dispatching  at  the
    'What Test -' question.

       DDT

       This command invokes DDT.  When RTN$X (POPJ  17,0)  is  executed,
    the  diagnostic  resets  the  PI  system in exec mode and returns to
    'DEBUG>' question.  DDT can also be entered by typing Control-D  and
    when   done  typing  RTN$X.   When  invoked  in  this  fashion,  the
    diagnostic does not reset the PI system.

       SET

       This command is used to set, clear,  or  print  program  options.
    The option is specified as the first argument and the option setting
    as the second argument.  The options that may be dealt with  are  as
    follows:

     o  SET ADDR adr.

        This command sets  the  start  address  of  the  microsequencer.
        Whenever  a  START  command  or  a  SSINIT command is given, the
        default address given here is used.  A START  command  may  also
        explicitly specify the starting address.  No commands other than
        SET ADDR alter the default starting address.

        The initial default address is location  0.   To  find  out  the
        current default address, type SET ADDR <CR>.

     o  SET CSR data.

        This command sets the initial CSR  register  starting  contents.
        When a subsequent START or SSINIT command is given, this data is
        written to the  CSR  when  starting  the  microsequencer.   This
        allows  the  state  of CSR bits to be set up - such as interrupt
        enable and PI level bits.

        The initial value is 0.  When a START or single step command  is
        given  with  the  default  CSR  data  equal to 0, the diagnostic
        writes 14 to the CSR register (MPRUN, PI Level 4)  or  20014  if
        single stepping (SINCYC bit included).

        To find out the current start data, type SET CSR <CR>.

     o  SET PARITY arg.
MAINDEC-10-DFNIA-A-D                                             Page 49
TEST DESCRIPTIONS                                                                                                          SEQ 0053


        This  command  affects  the  automatic  parity  generation  when
        loading  microcode  into  the  CRAM.   If  the flag is 'YES' the
        diagnostic  computes  correct  parity  before   it   loads   any
        microcode.   If  'NO'  the  diagnostic  assumes  the  parity has
        already computed and does not alter the parity bit specified  in
        the microcode data.

        This flag only affects microcode explicitly loaded in the  DEBUG
        test.   This flag does not affect loading microcode from a file.
        When operational microcode is loaded in this fashion, parity  is
        not affected.

        The initial value of the flag is 'YES'.  To find out the current
        setting, type SET PARITY <CR>.

     o  SET EBUF arg.

        This command affects the automatic preservation of the EBUF when
        single  stepping  or  stopping the microsequencer.  If 'preserve
        EBUF' flag is 'YES' the diagnostic will  read  the  EBUF  before
        reading the LAR and then write back the data afterwards.  If the
        flag is 'NO' the contents of the EBUF will  be  destroyed  every
        time the RAR is written or the LAR read.

        The initial value of the flag is 'YES'.  To find out the current
        setting, type SET EBUF <CR>.

     o  SET LENGTH len.

        This command sets the text length  in  bytes  to  be  used  when
        generating  datagrams.  Any length up to 750 (decimal) bytes may
        be specified.

        The initial length is '100.  bytes'.  To find  out  the  current
        setting, type SET LEN <CR>.

     o  SET PAT n.

        This command specifies the data pattern to be used when building
        a  datagram  containing a text portion.  Any data pattern from 1
        to 126 (octal) may be entered.

        The initial value is '1' (data pattern zeros).  To find out  the
        current setting, type SET PAT <CR>.

     o  SET PATLIS arg,arg.

        This command prints what data patterns are  available.   One  or
        two  arguments may be given to specify a range of data patterns.
        The diagnostic prints a description for each data pattern in the
        range  specified.   If  no  arguments  are  specified,  all data
        patterns will be printed.

     o  SET FNAME name ext
MAINDEC-10-DFNIA-A-D                                             Page 50
TEST DESCRIPTIONS                                                                                                          SEQ 0054


        The diagnostic allows a microcode file to be loaded into CRAM or
        listed  on  the  terminal.   The  commands  used  do not allow a
        microcode file name to be specified.  The name of the file  used
        can be changed by this command.

        The initial file name is 'NI20.ULD'.  To find  out  the  current
        setting, type SET FNAME <CR>.

     o  SET PCB arg

        This command is used for operational microcode debug.  A flag is
        maintained  that  determines  whether  or  not the START command
        should set up a CCW list specifying a portion of the  PCB  (Port
        Control  Block).  If the flag is set, the diagnostic will set up
        the CCW list.  The microcode reads  the  data  in  the  PCB  for
        initialization purposes.

        The initial value of the flag is 'NO'.  To find out the  current
        setting, type SET PCB <CR>.

     o  SET RESPON arg

        This option specifies  whether  or  not  a  response  packet  is
        desired  on  every  command  packet  given  to  the  operational
        microcode.  If the response flag is not set  in  the  packet,  a
        response  packet will be placed on the response queue only if an
        error occurs.  If the response flag is set, a response packet is
        always built.

        The initial setting of the flag  is  'YES'.   To  find  out  the
        current setting, type SET RESPON <CR>.

     o  SET DADDR

        This option specifies  the  destination  address.   All  packets
        built in DEBUG mode will contain this destination address.

        The initial setting of the destination address is '0'.  To  find
        out the current setting, type SET DADDR <CR>.

     o  SET SADDR

        This option sets the source address.  The diagnostic  reads  the
        station  address  ROM  on  the  NIA module and saves this as the
        source address.

        Whenever the microcode is started, the diagnostic reads  the  NI
        station  address  and  replaces  whatever  has been saved as the
        source address.

        To find out the current setting, type SET SADDR <CR>.

     o  SET PTTVAL
MAINDEC-10-DFNIA-A-D                                             Page 51
TEST DESCRIPTIONS                                                                                                          SEQ 0055


        This  option  determines  the  PTT  value  to   be   used   when
        constructing a packet.

        The initial setting is '5'.  To find out  the  current  setting,
        type SET PTTVAL <CR>.

     o  SET PRINT

        This option determines the amount of the text portion  to  print
        when printing a packet.

        The initial setting of the flag is '3 words'.  To find  out  the
        current setting, type SET PRINT <CR>.

     o  SET INTERV

        This parameter determines the interval to insert packets on  the
        command  queue  when running the special debug function 'WATCH'.
        If this is set to zero, packets will be stuffed on  the  command
        queue  until there is no more room, then as packets are received
        get put on the free  queue,  more  packets  are  placed  on  the
        command queue.

        The initial setting of the interval  is  '0  milliseconds'.   To
        find out the current setting, type SET INTERV <CR>.

     o  SET SUMMAR

        This parameter determines the summary interval when running  the
        special  debug  function  'WATCH'.   Short  statistics  will  be
        printed at this interval.

        The initial setting of the interval is '30  seconds'.   To  find
        out the current setting, type SET SUMMAR <CR>.

     o  SET WHAT

        This command prints the current selection of each option.

     o  SET HELP

        This command  prints  a  help  message  describing  each  option
        available to the set command.


       TAKE file ext

       This command takes  commands  from  a  file.   The  file  may  be
    specified  as  an  argument  to  the  command.   If  no file name is
    specified, the default file name is used.  The default file name  is
    either 'DFNIA.CMD' or the last file specified.

       Any  legal  command  may  be  specified  including  another  TAKE
    command.  The presence of a TAKE or DDT or EXIT (from DFNIA) command
    in the take file will  terminate  use  of  the  current  file.   The
    diagnostic  prints  each  command  and  result on the terminal as it
MAINDEC-10-DFNIA-A-D                                             Page 52
TEST DESCRIPTIONS                                                                                                          SEQ 0056


    executes each command.

       The file specified must be on the load device known to MAGMON  or
    D20MON  or DIAMON.  If not, an error message is printed and the TAKE
    command is aborted.

       If any error occurs while processing  the  take  file,  the  TAKE
    command  is  aborted.   Errors include any unexpected errors such as
    unrecognized command, failures to start the port,  argument  errors,
    etc.

       NTAKE file ext

       This command is identical to the TAKE  command  with  the  single
    exception that the commands executed are not echoed on the terminal.
    All output resulting from execution of the commands is echoed.



    10.5.3.2  Starting, Stopping, Initializing the Port

       The START, SSTEP or STRACE commands can  be  given  at  any  time
    without  concern if the port is running or not.  The diagnostic will
    stop the port if it has to and clear any  error  condition.   If  it
    changes  the  state  of the port, the diagnostic prints a message to
    that effect.

       RESET

       Issue EBUS Reset.  This does a CONO APR,200000.  In user  mode  a
    'Port Clear' is done instead.

       CLEAR

       Issue a 'Port Clear'.  A 400000 is written to the CSR register.

       START adr

       The port is started at address specified.  The  procedure  is  as
    follows:

     o  Determine start address.  If no address is specified, the  start
        address  used  is  the  default  address  given  by the SET ADDR
        command.

     o  Determine start CSR data.  This is the data specified by  a  SET
        CSR  command.   Insert  the  necessary  bit  'MPRUN'  and ensure
        'SINCYC' bit is not set.

     o  Read the CSR register, if the port is already running  or  error
        bits are set, stop the port or clear error bits as necessary.

     o  Write the start address to the RAR
MAINDEC-10-DFNIA-A-D                                             Page 53
TEST DESCRIPTIONS                                                                                                          SEQ 0057


     o  Write CSR data to the CSR


       CONT

       This command is identical in function to the START  command  with
    the exception of the start address.  In addition, if the port is not
    already stopped, an error message is printed and the start  sequence
    aborted.  The start address is the last 'next' address obtained from
    a single step command.

       The only purpose of this command is to start up  the  port  after
    single stepping it for a while.

       STOP

       Stop the port micro-sequencer and print out the contents  of  the
    LAR.   If  the CSR is inaccessible, or if error bits CRAM PE or MBUS
    Error are set, an error message is printed.

       SSTEP n and STRACE n

       Single step the port  micro-sequencer  'n'  times.   Before  this
    command  is  done  the first time, the start data and start CSR data
    must be set up using the SSINIT command.   Thereafter,  the  address
    written to the RAR each time the port is single stepped is the 'last
    address' read from the LAR after the prior single step.

       STRACE causes the single step history data to be printed  at  the
    same  time that single steps are being done.  The data is printed in
    the same format as the SPRINT command except for the order in  which
    the single steps are printed.

       The port is stopped or  error  bits  are  cleared  from  the  CSR
    register as necessary before any single steps are done.

       If CRAM PE or MBUS Error bits become set in the CSR  register,  a
    message is printed and the single stepping is aborted.

       To abort the single step procedure at any time, type altmode.

       SPRINT n

       Print single step history data.  Data for the last  'n'  (maximum
    128)  single  steps  are  printed  in  the  following format.  If no
    argument is given, no more than 20 single steps are printed.

    |  DEBUG> SPRINT 4
    |
    |   RAR   LAR   CSR (final)  SS#
    |  0000  0100  000000 020010  12
    |  0100  0230  000000 020010  11
    |  0230  0231  000000 020010  10
    |  0231  0232  000000 020010  7
MAINDEC-10-DFNIA-A-D                                             Page 54
TEST DESCRIPTIONS                                                                                                          SEQ 0058


       SCLEAR

       Clear single step history data.

       SSINIT

       Set up single step data.  This sets the single step address to be
    the  default  address specified by the SET ADDR command.  The single
    step CSR data is set to the default data specified by  the  SET  CSR
    command.  Also, the single step history data is cleared.

       This command MUST be given in order to execute the  first  single
    step.  If not given the port will start at the last address executed
    by a single step.



    10.5.3.3  Handling port registers

       Each of the EBUF commands  can  be  given  at  any  time  without
    concern if the port is running or not.  The diagnostic will stop the
    port if it has to and clear any error condition.  If it changes  the
    state of the port, the diagnostic prints a message to that effect.

       ECSR

       Examine CSR Register.  The contents  are  printed  in  octal  and
    translated into English as well.

       DCSR dat

       Deposit CSR Register.  The data expected is up to 6 octal digits.

       ZCSR

       Zero CSR Register.  This also stops the port if it is running.

       EEBUF

       Examine EBUF register.  The data is printed in halfword format.

       The port is stopped or  error  bits  are  cleared  from  the  CSR
    register as necessary before reading the EBUF.  Then the 'Test EBUF'
    bit is set in the CSR register if it is not already set and the EBUF
    is read.

       DEBUF dat

       Deposit EBUF register.  The data  expected  is  up  to  12  octal
    digits.

       The port is stopped or  error  bits  are  cleared  from  the  CSR
    register as necessary before reading the EBUF.  Then the 'Test EBUF'
    bit is set in the CSR register if it is not already set and the EBUF
    is written.
MAINDEC-10-DFNIA-A-D                                             Page 55
TEST DESCRIPTIONS                                                                                                          SEQ 0059


       ZEBUF

       Zero EBUF register

       The port is stopped or  error  bits  are  cleared  from  the  CSR
    register as necessary before reading the EBUF.  Then the 'Test EBUF'
    bit is set in the CSR register if it is not already set and the EBUF
    is zeroed.

       ELAR

       Examine LAR register and  print  it  as  'LAR/  0000'.   This  is
    actually  a  13 bit register.  The right most bit is the bit written
    to the RAR register to specify which half of  the  CRAM  to  access.
    This bit is not printed.

       DRAR dat

       Deposit RAR register.  The data consists of a 12 bit CRAM address
    followed by one bit specifying left or right half.  Example:

    |  DEBUG> DRAR 0            ; Write location 0 (right half)
    |  DEBUG> DRAR 1            ; Write location 0 (left half)
    |  DEBUG> DRAR 10           ; Write location 4 (right half)
    |  DEBUG> DRAR 11           ; Write location 4 (left half)


       ZRAR

       Zero RAR register.



    10.5.3.4  Handling port CRAM locations

       Each of the following commands can be given at any  time  without
    concern if the port is running or not.  The diagnostic will stop the
    port if it has to and clear any error condition.  If it changes  the
    state  of  the port, the diagnostic prints a message to that effect.
    The diagnostic also ensures that 'Test EBUF' bit is not set and 'Sel
    LAR' bit is not set.

       Commands that read or write CRAM locations  are  given  up  to  2
    arguments.  The action in each case is as follows:


     o  No arguments - The CRAM addresses used are those last used.   So
        if  a zero CRAM command is given to clear locations 1001 through
        1004, a subsequent examine cram command with no arguments  would
        examine locations 1001 through 1004.

     o  One  argument  -  The  range  of  CRAM  locations  is  taken  as
        addr1,addr1.
MAINDEC-10-DFNIA-A-D                                             Page 56
TEST DESCRIPTIONS                                                                                                          SEQ 0060


     o  Two arguments  -  The  range  of  CRAM  locations  is  taken  as
        addr1,addr2.


       DCRAM adr,adr

       Deposit  into  CRAM  locations  specified  either   by   explicit
    arguments  or by default.  The format of the data is the same format
    produced as output of the MICRO2 assembler.  Example:

    |  DEBUG> DCRAM 10
    |
    |  Type xxxx,xxxx,xxxx,xxxx,xxxx
    |  0010 ::   11,22,33,44,55


       BCRAM adr,adr

       Deposit  into  CRAM  locations  specified  either   by   explicit
    arguments  or  by default.  The data is asked for each location, one
    field at a time.  The initial  data  to  be  written  to  each  CRAM
    location is zero.  Example:

    |  DEBUG> BCRAM 10
    |
    |  Type  value,value... or ^,CR,^Z,field name
    |  0010 ::
    |  J - 
    |  PAR -              Type:  value<CR> value<CR> ...
    |  OENA -               or:  value,value,...<CR>
    |  MGC -                or:  ^ to back up to the previous
    |  SORC -                       value
    |  FUNC -               or:  <CR> to leave a value unchanged
    |  DEST -               or:  field name such as MGC or FUN or
    |  CENA -                       A or M (for MGC) .. to skip to
    |  RAM -                        a particular field
    |  A -                  or:  ^Z to terminate input and store
    |  B -                          the CRAM location
    |  SK -                 or:  $ (altmode) to abort the command
    |  BUS -                        and not store anything
    |  CRY - 
    |  CTL - 
    |  TIME -
    |  SPARE - 
    |  MARK - 

        Note:  Everything can be typed on one line, such as this
               example to change A, B, and MGC fields only:

    |         DEBUG> BCRAM 10
    |
    |         Type  value,value... or ^,CR,^Z,field name
    |         0010 ::
    |         J - A,3,4,M,1234,^Z
    |
    |         DEBUG>
MAINDEC-10-DFNIA-A-D                                             Page 57
TEST DESCRIPTIONS                                                                                                          SEQ 0061




       ACRAM adr,adr

       Alter CRAM locations specified either by explicit arguments or by
    default.   The data is asked for each location, one field at a time.
    Example:

    |  DEBUG> ACRAM 10
    |
    |  Type  value,value... or ^,CR,^Z,field name
    |  0010 ::
    |  0 J - 
    |  0 PAR -              Type:  value<CR> value<CR> ...
    |  0 OENA -               or:  value,value,...<CR>
    |  33 MGC -               or:  ^ to back up to the previous
    |  0 SORC -                       value
    |  1 FUNC -               or:  <CR> to leave a value unchanged
    |  0 DEST -               or:  field name such as MGC or FUN or
    |  0 CENA -                       A or M (for MGC) .. to skip to
    |  0 RAM -                        a particular field
    |  0 A -                  or:  ^Z to terminate input and store
    |  0 B -                          the CRAM location
    |  22 SK -                or:  $ (altmode) to abort the command
    |  0 BUS -                        and not store anything
    |  1 CRY - 
    |  0 CTL - 
    |  0 TIME - 
    |  0 SPARE - 
    |  0 MARK - 

        Note:  Everything can be typed on one line, as in the
               example under 'BCRAM' command above.


       ECRAM adr,adr

       Examine CRAM locations specified either by explicit arguments  or
    by  default.   The  data  is  printed  in  MICRO2  assembler format.
    Example:

    |  DEBUG> ECRAM 10,12
    |
    |  0010 / 0000 0001 0400 0000 0400
    |  0011 / 0000 0001 1400 0000 0440
    |  0012 / 0000 0001 2400 0000 0500


       LCRAM adr,adr

       List CRAM locations specified either by explicit arguments or  by
    default.  The data is printed in bit field format.  Example:

    |  DEBUG> LCRAM 0,3
    |
    |  ADDR/ JUMP PAR OUT MGC SOR FUN DES CC RAM PA PB SK BUS CRY CTL  TM SP MK
MAINDEC-10-DFNIA-A-D                                             Page 58
TEST DESCRIPTIONS                                                                                                          SEQ 0062


    |     0/    0  0   0    0  0   1   0   0  0   0  0  0  0   0  JZ    0  0  0 
    |     1/    0  0   0    0  0   3   0   0  0   0  0  0  0   0  JZ    0  1  0 
    |     2/    0  0   0    0  0   5   0   0  0   0  0  0  0   0  JZ    0  2  0 
    |     3/    0  0   0    0  0   7   0   0  0   0  0  0  0   0  JZ    0  3  0 


       ZCRAM adr,adr

       Zero CRAM locations specified either by explicit arguments or  by
    default.



    10.5.3.5  2901 Commands

       Each of the following commands can be given at any  time  without
    concern if the port is running or not.  The diagnostic will stop the
    port if it has to and clear any error condition.  If it changes  the
    state of the port, the diagnostic prints a message to that effect.

       These commands may be given up to 2  arguments.   The  action  in
    each case is as follows:


     o  No arguments - The 2901 registers used are those last used.   So
        if  registers  0  through  4  are examined, a subsequent examine
        command with no arguments would examine registers 0 through 4.

     o  One  argument  -  The  range  of  2901  registers  is  taken  as
        reg1,reg1.

     o  Two arguments  -  The  range  of  2901  registers  is  taken  as
        reg1,reg2


       E2901 reg,reg

       Examine the contents of the range of  2901  registers  specified.
    Microcode  is  loaded  into the port to accomplish this, but no 2901
    registers or local storage locations are affected.  And the original
    contents of the CRAM location used are restored.

       D2901 reg,data

       Deposit the data into the 2901 register specified.  Microcode  is
    loaded  into the port to accomplish this, and only the 2901 register
    specified is affected.  The original contents of the  CRAM  location
    used are restored.

       To deposit data into successive registers, additional data can be
    typed.   For example, to load registers 3,4,5,6 with 333,444,555,666
    respectively, type the following:

    |  DEBUG> D2901 3,333,444,555,666
    |
MAINDEC-10-DFNIA-A-D                                             Page 59
TEST DESCRIPTIONS                                                                                                          SEQ 0063


       Z2901 reg,reg

       Zero the range of 2901 registers specified.  Microcode is  loaded
    into the port to accomplish this.  The original contents of the CRAM
    location used are restored.



    10.5.3.6  Local Storage Commands

       Each of the following commands can be given at any  time  without
    concern if the port is running or not.  The diagnostic will stop the
    port if it has to and clear any error condition.  If it changes  the
    state of the port, the diagnostic prints a message to that effect.

       These commands may be given up to 2  arguments.   The  action  in
    each case is as follows:


     o  No arguments - The local storage addresses used are  those  last
        used.   So  if  a  zero  local storage command is given to clear
        locations 101 through 104, a subsequent  examine  local  storage
        command  with  no arguments would examine locations 1001 through
        1004.

     o  One argument - The range of local storage locations is taken  as
        addr1,addr1.

     o  Two arguments - The range of local storage locations is taken as
        addr1,addr2


       ELOCS adr,adr

       Examine  local  storage  addresses  specified  by  the  range  of
    addresses.  Microcode is loaded into the port to accomplish this and
    several 2901 registers are  destroyed  in  the  process.   No  local
    storage  locations  are  affected.  And the original contents of the
    CRAM locations used are restored.

       DLOCS adr,dat

       Deposit local storage address 'adr' with 36 bit octal data 'dat'.
    Microcode  is  loaded  into  the port to accomplish this and several
    2901 registers are destroyed  in  the  process.   No  local  storage
    locations  are  affected.   And  the  original  contents of the CRAM
    locations used are restored.

       To deposit data into successive locations, additional data can be
    typed.    For   example,  to  load  locations  103,104,105,106  with
    333,444,555,666 respectively, type the following:

    |  DEBUG> DLOCS 103,333,444,555,666
    |
MAINDEC-10-DFNIA-A-D                                             Page 60
TEST DESCRIPTIONS                                                                                                          SEQ 0064


       ZLOCS adr,adr

       Zero local storage addresses specified by the range of addresses.
    Microcode  is  loaded  into the port to accomplish this, but no 2901
    registers or local storage locations are affected.  And the original
    contents of the CRAM locations used are restored.



    10.5.3.7  Mark Bit Commands

       Each CRAM word has a mark bit that can be set or cleared.  It  is
    used  only  to  sync  a scope on.  Parity is not calculated for this
    location.

       The diagnostic does not keep track of which locations  have  mark
    bits  set.   If  it  is requested to list marked CRAM locations, the
    diagnostic just looks for locations with the mark bit set.

       Each of these commands can be given at any time  without  concern
    if the port is running or not.  The diagnostic will stop the port if
    it has to and clear any error condition.  If it changes the state of
    the port, the diagnostic prints a message to that effect.

       MARK adr1,adr2,adr3,...

       Set mark bit at locations adr1,adr2,adr3,...

       RMARK adr1,adr2,adr3,...

       Remove mark bit from locations adr1,adr2,adr3,...

       CMARK adr1,adr2

       Clear all mark bits between adr1 and adr2.  If only one  argument
    is  given  only  that one location is rewritten without the mark bit
    set.  If no arguments  are  supplied,  all  mark  bits  are  cleared
    throughout the CRAM.

       LMARK adr1,adr2

       List all locations with mark bit set between adr1 and  adr2.   If
    only one argument is given only that one location is checked.  If no
    arguments are supplied, all location with the  bit  set  are  listed
    throughout the CRAM.



    10.5.3.8  Breakpoint Commands

       A breakpoint  consists  of  a  location  with  bad  parity.   The
    diagnostic  does not keep track of these locations itself.  If it is
    requested to list breakpoints, it just looks for locations with  bad
    parity.
MAINDEC-10-DFNIA-A-D                                             Page 61
TEST DESCRIPTIONS                                                                                                          SEQ 0065


       Each of these commands can be given at any time  without  concern
    if the port is running or not.  The diagnostic will stop the port if
    it has to and clear any error condition.  If it changes the state of
    the port, the diagnostic prints a message to that effect.

       BREAK adr1,adr2,adr3,...

       Set breakpoints at locations adr1,adr2,adr3,...

       RBREAK adr1,adr2,adr3,...

       Remove breakpoints from locations adr1,adr2,adr3,...

       CBREAK adr1,adr2

       Clear all  breakpoints  between  adr1  and  adr2.   If  only  one
    argument  is  given  only  that  one location is rewritten with good
    parity.  If no arguments are supplied, all breakpoints  are  removed
    throughout the CRAM.

       LBREAK adr1,adr2

       List breakpoints between adr1 and adr2.  If only one argument  is
    given  only  that  one  location  is  checked for bad parity.  If no
    arguments are supplied, all breakpoints are  listed  throughout  the
    CRAM.



    10.5.3.9  Microcode Commands

       Each of these commands can be given at any time  without  concern
    if the port is running or not.  The diagnostic will stop the port if
    it has to and clear any error condition.  If it changes the state of
    the port, the diagnostic prints a message to that effect.

       LOAD tst

       Load microcode from Test 'tst' into CRAM and verify  the  result.
    Example:

    |  DEBUG> LOAD 3
    |
    |  [Done - Number of CRAM locations loaded/verified = 182.]


       LIST tst

       List microcode from Test 'tst'.  All locations are listed in  the
    order  that  they  would be loaded, not necessarily in order by CRAM
    address.  Example:

    |  DEBUG> LIST 3
    |
    |  ADDR/ JUMP PAR OUT MGC SOR FUN DES CC RAM PA PB SK BUS CRY CTL  TM SP MK
    |     0/    2  0   0    0  0   0   0   0  0   0  0  1  0   0  CJPP  0  0  0 
MAINDEC-10-DFNIA-A-D                                             Page 62
TEST DESCRIPTIONS                                                                                                          SEQ 0066


    |     1/   10  1   0    0  0   0   0   0  0   0  0  0  0   0  JMAP  0  0  0 
    |     2/    4  1   0    0  0   0   0   0  0   0  0  3  0   0  CJPP  0  0  0 
    |     3/   11  0   0    0  0   0   0   0  0   0  0  0  0   0  JMAP  0  0  0 
    |     ...


       FLOAD

       Load microcode from file into a buffer and from the  buffer  into
    CRAM.   The  file used is the default file name NI20.ULD or the file
    last specified by the SET FNAME command.  DIAMON or D20MON or MAGMON
    must be loaded in order to load the microcode from the selected load
    device.  The diagnostic prints an error message if it cannot  access
    the microcode file.  This command also verifies the microcode it has
    loaded.  Example:

    |  DEBUG> FLOAD
    |  
    |  [Reading file: NI20.ULD]
    |  
    |  [3040. microwords loaded]
    |  
    |  [Loading NI20.ULD into CRAM]
    |  
    |  [3040. CRAM locations loaded/verified]>
    |  
    |  [Ucode version 55]
    |  
    |  DEBUG>


       FVERFY

       This command causes the microcode  previously  loaded  into  CRAM
    from  a  file  to  be  verified.  Up to 3 verify errors are printed.
    Example:

    |  DEBUG> FVERFY
    |  
    |  3040. CRAM locations loaded - 74. verify errors:
    |   Addr           Correct                  Actual
    |   0000   0002 0000 1631 6702 0060   0000 0000 0100 0000 0000 
    |   0001   0002 0000 7510 0002 0060   0000 0000 0300 0000 0002 
    |   0002   0007 2000 4315 6002 0060   0000 0000 0500 0000 0004 
    |  
    |  DEBUG>


       FLIST

       List microcode in file in field format.  The  file  used  is  the
    default  file  name  NI20.ULD  or the file last specified by the SET
    FNAME command.  DIAMON or D20MON or MAGMON must be loaded  in  order
    to  obtain  the  microcode  from  the  selected  load  device.   The
    diagnostic prints an error message if it cannot access the microcode
    file.  Example:
MAINDEC-10-DFNIA-A-D                                             Page 63
TEST DESCRIPTIONS                                                                                                          SEQ 0067



    |  DEBUG> FLIST
    |
    |  ADDR/ JUMP PAR OUT MGC SOR FUN DES CC RAM PA PB SK BUS CRY CTL  TM SP MK
    |     0/    2  0   0    0  1   6   3   0  0  16 16  2  0   0  CJP   0  0  0 
    |     1/    2  1   0    0  7   5   1   0  0   0  0  2  0   0  CJP   0  0  0 
    |     2/    7  0   1    0  4   3   1   1  0  16  0  2  0   0  CJP   0  0  0 
    |     ...


       FEXAM

       List microcode in file in MICRO2 format.  The file  used  is  the
    default  file  name  NI20.ULD  or the file last specified by the SET
    FNAME command.  DIAMON or D20MON or MAGMON must be loaded  in  order
    to  obtain  the  microcode  from  the  selected  load  device.   The
    diagnostic prints an error message if it cannot access the microcode
    file.  Example:

    | DEBUG> FEXAM
    |
    |  0000 / 0001 0000 1631 6702 0060
    |  0001 / 0025 6000 4315 6542 0060
    |  0007 / 0004 4000 7510 7542 0060
    |  ...




    10.5.3.10  Statistics Commands

       STATIS

       This command prints accumulated statistics.  Statistics are  kept
    only  on  packets  sent and packets received and various information
    connected with each.  See the Section 6.9.1  'Statistics  Printouts'
    for more details.

       ZSTATS

       This   command   clears   statistics.    Statistics   are    also
    automatically cleared whenever the diagnostic is restarted via a STM
    command.



    10.5.3.11  NI Configuration Command


    |  What test - CONFIG
    |  
    |  ***** NI Configuration *****
    |     Physical Address      Ver  ECO  Usr                    Com    DLL
    |  Bt1 Bt2 Bt3 Bt4 Bt5 Bt6   #    #   ECO    Functionality   Dev   Type
    |  -----------------------  ---  ---  ---  ----------------  ---  --------
    |  252 000 003 003 000 000  (Self)
MAINDEC-10-DFNIA-A-D                                             Page 64
TEST DESCRIPTIONS                                                                                                          SEQ 0068


    |  252 000 003 003 000 006   1    0     0         12000030     0  Ethernet
    |  274 033 000 000 000 001   5  101     1         10004730     0  Ethernet


       Only those nodes which broadcast a  periodic  system  ID  message
    will  be  included.   Nodes  which are turned off or are not running
    will not be seen.



    10.5.3.12  NI Commands

       PINIT

       This command initializes the port control block and  all  of  the
    queues specified in it.

       SIDLE

       This command  sets  up  the  3  word  data  transfer  giving  the
    initialization  data  used by the microcode at start up.  It ensures
    that EPT location 34 contains a jump CCW word to the CCW in the PCB.
    Then the diagnostic starts up the port and waits up to 2 seconds for
    the microcode to enter the idle loop.  If it does not, a message  to
    that effect is printed.

       BPACK opcode

       This command builds a packet  which  can  then  be  placed  on  a
    command  queue.   A  packet  is  built  based  on opcode and program
    options.

       It  is  assumed  that  the  PCB  and  queues  have  already  been
    initialized.  The microcode need not have been started however.

       A list of opcodes may be obtained by typing BPACK ?  as follows:

    |  DEBUG> BP ?
    |  BPACK opcode (CR), where opcode:
    |     1-SNDDG     2-LDMCAT    3-LDPTT     4-RCCNT     6-WRPLI     7-RDPLI  
    |    10-RDNSA    11-WRNSA  
    |
    |  DEBUG>


       IQUEUE

       This command places a packet that has already been built  on  the
    command queue.

       PQUEUE queue1,queue2

       This command prints specified queue(s).  If only one queue number
    is  given, only that queue will be printed.  If a range of queues is
    given all of the queues specified will be printed.
MAINDEC-10-DFNIA-A-D                                             Page 65
TEST DESCRIPTIONS                                                                                                          SEQ 0069


       The queues are printed in the following format:

    |  DEBUG> PQUEUE 0,6
    |  
    |  CmdQ  (PCB   ): Flink = PCB+1   Blink = PCB+1 
    |   Queue is empty
    |  
    |  RspQ  (PCB+4 ): Flink = PCB+5   Blink = PCB+5 
    |   Queue is empty
    |  
    |  UnkFQ (PCB+10): Flink = QUNKF0  Blink = QUNKF7
    |   QUNKF0/ Flink = QUNKF1  Blink = PCB+11
    |   QUNKF1/ Flink = QUNKF2  Blink = QUNKF0
    |   QUNKF2/ Flink = QUNKF3  Blink = QUNKF1
    |   QUNKF3/ Flink = QUNKF4  Blink = QUNKF2
    |   QUNKF4/ Flink = QUNKF5  Blink = QUNKF3
    |   QUNKF5/ Flink = QUNKF6  Blink = QUNKF4
    |   QUNKF6/ Flink = QUNKF7  Blink = QUNKF5
    |   QUNKF7/ Flink = PCB+11  Blink = QUNKF6
    |  
    |  PttFQ (PTTFQ ): Flink = PTTF0   Blink = PTTF7 
    |   PTTF0 / Flink = PTTF1   Blink = PTTFQ+1
    |   PTTF1 / Flink = PTTF2   Blink = PTTF0 
    |   PTTF2 / Flink = PTTF3   Blink = PTTF1 
    |   PTTF3 / Flink = PTTF4   Blink = PTTF2 
    |   PTTF4 / Flink = PTTF5   Blink = PTTF3 
    |   PTTF5 / Flink = PTTF6   Blink = PTTF4 
    |   PTTF6 / Flink = PTTF7   Blink = PTTF5 
    |   PTTF7 / Flink = PTTFQ+1  Blink = PTTF6 
    |  
    |  ** Protocol Type Table **
    |    N  Ena   Type   Address
    |    -  ---   ----   -------
    |    0   Y       0   PTTFQ+1
    |    0   Y       1   PTTFQ+1
    |    0   Y       2   PTTFQ+1
    |    0   Y       3   PTTFQ+1
    |    0   Y       4   PTTFQ+1
    |    0   Y       5   PTTFQ+1
    |    0   Y       6   PTTFQ+1
    |    0   Y       7   PTTFQ+1
    |    0   Y      10   PTTFQ+1
    |    0   Y      11   PTTFQ+1
    |    0   Y      12   PTTFQ+1
    |    0   Y      13   PTTFQ+1
    |    0   Y      14   PTTFQ+1
    |    0   Y      15   PTTFQ+1
    |    0   Y      16   PTTFQ+1
    |    0   Y      17   PTTFQ+1
    |  
    |  ** Multi-Cast Table **
    |    N Ena  Bt5 BT4 BT3 BT2 BT1 BT0
    |    - ---  --- --- --- --- --- ---
    |    0  Y   000 000 000 000 000 003 
    |    0  Y   000 000 000 000 000 005 
    |    0  Y   000 000 000 000 000 007 
MAINDEC-10-DFNIA-A-D                                             Page 66
TEST DESCRIPTIONS                                                                                                          SEQ 0070


    |    0  Y   000 000 000 000 000 011 
    |    0  Y   000 000 000 000 000 013 
    |    0  Y   000 000 000 000 000 015 
    |    0  Y   000 000 000 000 000 017 
    |    0  Y   000 000 000 000 000 021 
    |    0  Y   000 000 000 000 000 023 
    |    0  Y   000 000 000 000 000 025 
    |    0  Y   000 000 000 000 000 027 
    |    0  Y   000 000 000 000 000 031 
    |    0  Y   000 000 000 000 000 033 
    |    0  Y   000 000 000 000 000 035 
    |    0  Y   000 000 000 000 000 037 
    |    0  Y   000 000 000 000 000 041 


       PPCB

       This command prints the current state of the PCB, as follows:

    |  DEBUG> PPCB
    |  
    |  PCB:
    |   PCB Base Addr:  71000
    |   PI Level:           0
    |   Int Vector:         0
    |   CCW:    000000 000000 
    |   ---------------
    |   PTT Address:   102350
    |   MCT Address:   105550
    |   ---------------
    |   Logout 0:  000000 000000 
    |   Logout 1:  000000 000000 
    |   Logout 2:  000000 000000 
    |   Logout 3:  000000 000000 
    |   ---------------
    |   # Queue  PCB Addr  Interlock  Flink  Blink
    |   - -----  --------  ---------  -----  -----
    |   0 CmdQ    PCB+ 0       -1     PCB+1   PCB+1 
    |   1 RspQ    PCB+ 4       -1     PCB+5   PCB+5 
    |   2 UnkFQ   PCB+10       -1     QUNKF0  QUNKF7


       WATCH

       This command allows one to watch the port and print  events  that
    occur.   If a command packet has previously been built, one may also
    place the packet again and again on the command queue.

       The diagnostic checks the CSR register periodically and prints it
    out whenever it changes.  It also looks for entries appearing on the
    response queue - if any are found they are removed from the response
    queue,  printed  out,  and  placed  back  on  the  free  queue.  The
    diagnostic also sets 'CmdQ Avail' bit in the CSR register  if  there
    is a command queue entry which has not yet been processed.
MAINDEC-10-DFNIA-A-D                                             Page 67
TEST DESCRIPTIONS                                                                                                          SEQ 0071


       While watching the port, 10 characters may  be  typed  to  obtain
    information or to perform some action:

     o  S - Insert another packet on the command queue (same  packet  as
        the last one built).

     o  O - Insert packets on the command queue (same packet as the last
        one  built).   Insert them at the interval specified by the 'SET
        INTERV' command or 10 seconds  if  the  interval  has  not  been
        explicitly defined.

     o  L - Loopback any packets received by this port.

     o  0 - Turn off echoing of packets sent and received.

     o  1 - Turn on echoing of packets sent and received.

     o  2 - Print CSR register.

     o  3 - Print PCB contents.

     o  4 - Print statistics

     o  $ (altmode) - Exit (back to DEBUG> prompt).

     o  ? - Print commands available


       DEPPAK offset,data

       Data can be initialized in a packet by using the BPACK command or
    by  going  into  DDT  and  physically  inserting the desired data at
    location PACKET.  To make this easier,  the  DEPPAK  command  allows
    data  to  be inserted in PACKET by giving the offset into PACKET and
    the data, without going into DDT.  This is then useful if a  command
    file  is  created  with a string of DEPPAK commands.  Then a TAKE of
    the command file is done to load the packet data.



    10.5.3.13  PLI Register Commands

       DPLI lnk,data,rep

       This command allows one to write 8 bits  of  data  over  the  PLI
    interface.   The  link  control  bits  specifying  the  register  is
    specified, as well as the 8 bit data.  Also, a repeat count  can  be
    given to repeat the deposit more than once.

       This can be used to write data into the transmit  buffer,  as  in
    the following example:

    |  DEBUG> DPLI ?
    |  DPLI cntrl,data,repcount (CR) where cntrl is:
    |  0-RdReg   4-RRecBf  10-ClrRBf  14-RcXmBf
    |  1-EnaLnk  5-WtAdrs  11-DsaLnk  15-RUBLst
MAINDEC-10-DFNIA-A-D                                             Page 68
TEST DESCRIPTIONS                                                                                                          SEQ 0072


    |  2-WFBLst  6-XmtAct  12-WRBfAd  16-RRcAtn
    |  3-WXmtBf  7-RdRSta  13-RdXSta  17-WtReg


       EPLI lnk,rep

       This command reads 8 bit data over the PLI interface.   The  link
    control  bits  are  specified  to indicate what register to read.  A
    repeat count is given to allow reading the register more than  once,
    which is useful when reading one of the transmit or receive buffers.

       An example follows:

    |  DEBUG> EPLI ?
    |  EPLI lnkctrl,repcount (CR) where lnkctrl is:
    |  0-RdReg   4-RRecBf  10-ClrRBf  14-RcXmBf
    |  1-EnaLnk  5-WtAdrs  11-DsaLnk  15-RUBLst
    |  2-WFBLst  6-XmtAct  12-WRBfAd  16-RRcAtn
    |  3-WXmtBf  7-RdRSta  13-RdXSta  17-WtReg
    |  
    |  DEBUG> EPLI 4,10              ; Read first 10 locations of receive buffer
    |  
    |  4-RRecBf:
    |   0/ 000 
    |   1/ 000 
    |   2/ 000 
    |   3/ 000 
    |   4/ 000 
    |   5/ 000 
    |   6/ 000 
    |   7/ 000 




    10.5.3.14  Miscellaneous Commands

       TRANSL dat

       This is used if a description of the CSR register is not at hand.
    The data (36 bits) is translated into English.  Example:

    |  DEBUG> TRANSL 3000
    |
    |  CSR: 000000 003000 FQErr  MVErr  


       FILLNX dat

       This command fills all of CRAM with special data 'J=.+1,CTL=dat'.
    The  argument specified is the control field for the microsequencer.
    This  may  be  useful  when   testing   out   dispatching   of   the
    microsequencer.
MAINDEC-10-DFNIA-A-D                                             Page 69
TEST DESCRIPTIONS                                                                                                          SEQ 0073


       If the port is running or halted with  an  error  condition,  the
    diagnostic  stops  the  port  and clears any error condition.  If it
    changes the state of the port, the diagnostic prints  a  message  to
    that effect.

       Example:  Fill CRAM with JMAP (unconditional jump) instructions:

    |  DEBUG> FILLNX 2
    |
    |  [Number of CRAM locations loaded = 4096.]
    |
    |  Cram now contains:
    |
    |  0000/ JMAP J=1
    |  0001/ JMAP J=2
    |  ...
    |  7776/ JMAP J=7777
    |  7777/ JMAP J=0


       FILLPC dat

       This command fills all of CRAM with special  data  'J=.,CTL=dat'.
    The  argument specified is the control field for the microsequencer.
    This  may  be  useful  when   testing   out   dispatching   of   the
    microsequencer.

       If the port is running or halted with  an  error  condition,  the
    diagnostic  stops  the  port  and clears any error condition.  If it
    changes the state of the port, the diagnostic prints  a  message  to
    that effect.

       Example:  Fill CRAM with JMAP (unconditional jump) instructions:

    |  DEBUG> FILLPC 2
    |
    |  [Number of CRAM locations loaded = 4096.]
    |
    |  Cram now contains:
    |
    |  0000/ JMAP J=0
    |  0001/ JMAP J=1
    |  ...
    |  7776/ JMAP J=7776
    |  7777/ JMAP J=7777


       CCODE

       This command determines the setting of each  condition  code  and
    prints  it  out.  It loads special microcode to do this but restores
    the original contents afterwards.

       Some condition codes cannot be seen in their proper  state  since
    this  command  may change them.  These are 'CSR Changed', 'MB Sign',
    and 'F Eql Zero', but they are printed anyway.  For example:
MAINDEC-10-DFNIA-A-D                                             Page 70
TEST DESCRIPTIONS                                                                                                          SEQ 0074



    |  What test - CCODE
    |
    |  CC On:   CBAV FEQ0 CSRC MVRP PLPE CBLW
    |  CC Off:  GCSR EBPE RATN EOFF XATN ERQS IACT MSGN CBPE CHER


       ESTACK

       This  command  determines  the  contents  of  the  internal  2910
    microsequencer  stack.   It  loads  special microcode to do this but
    restores the original contents afterwards.  For example:

    |  What test - ESTACK
    |
    |  2910 Stack:
    |   Location   Contents (addr)
    |     Top        3042
    |      -1         733
    |      -2         140
    |      -3        5732
    |      -4          10


       ENEXT

       ENEXT does an  'examine  next'  function.   Whatever  examine  or
    deposit operation was previously done, the next location or register
    is examined.  The commands which set up for  an  examine  next  are:
    ECRAM,  DCRAM,  BCRAM,  ACRAM,  ZCRAM,  LCRAM,  E2901, D2901, Z2901,
    ELOCS, DLOCS, ZLOCS, EPLI, and DPLI.

       DNEXT arg

       DNEXT does an  'deposit  next'  function.   Whatever  examine  or
    deposit  operation  was previously done, the data given is deposited
    into the next location or register.  No argument is expected on  the
    BCRAM  or  ACRAM  type  of  deposit,  the data for each field of the
    microword will be queried.  The commands which set up for an examine
    next  are:   ECRAM, DCRAM, BCRAM, ACRAM, ZCRAM, LCRAM, E2901, D2901,
    Z2901, ELOCS, DLOCS, ZLOCS, EPLI, and DPLI.

       DUMP

       This command prints the complete state of the  port.   It  prints
    the following data:

     o  CSR data

     o  EBUF contents

     o  LAR contents

     o  2901 register contents
MAINDEC-10-DFNIA-A-D                                             Page 71
TEST DESCRIPTIONS                                                                                                          SEQ 0075


     o  2910 stack contents

     o  PCB

     o  Queues

     o  Local storage contents

     o  Transmit and receive buffers contents

     o  Channel logout data


       IPRINT

       This command prints accumulated interrupt activity.  The data for
    up  to 20 interrupts are held in an interrupt data table.  This data
    can be printed with this command.

       Printing can be aborted by typing an  altmode  or  suppressed  by
    typing a Control-O.

       ICLEAR

       This  command  clears   the   accumulated   interrupt   activity.
    Subsequent interrupts are numbered 1,2,...

       IINIT

       In the event the PI system  got  shut  off  in  exec  mode,  this
    command  may  be given to initialize the interrupt system and set up
    40+2n addresses.  This may be useful in  the  event  the  diagnostic
    shuts off the PI system because of too many interrupts - this occurs
    after 8192 interrupts.



    10.5.3.15  Data Transfer Commands

       CCWPNT

       This command prints the CCW list last generated which is kept  in
    PCB+27.  Example:

    |  DEBUG> CCWPNT
    |
    |  CCW (PCB+27):  000000 000000   OP=Halt WC=0. Adr=00000000 


       LOGPNT

       This command prints the logout data last stored  by  the  channel
    upon  receipt  of  the 'store' command issued by the microprocessor.
    Example:

    |  DEBUG> LOGPNT
MAINDEC-10-DFNIA-A-D                                             Page 72
TEST DESCRIPTIONS                                                                                                          SEQ 0076


    |
    |  Channel-5 Logout Data
    |  Loc   Contents
    |   1    ICW: 000000 000000 
    |   2    SW1:   CLP points to: 0
    |   3    Last Updated CCW: 000000 000000    WC=0.  ADR=0




    10.5.3.16  Switches

       SWITCH

       Enter switch information.  Switches can  be  entered  as  in  the
    following  example.   Usually, though, it is easier just to type the
    switch name to turn on or off a switch.

    |  DEBUG> SWITCH
    |
    |  Print the selectable pgm switches? (Y or N) - Y
    |
    |  ----Left Side Switches--------   ----Right Side Switches--------
    |
    |  SW    KL10     11    Function     SW   Value  Function
    |  --    ----    ----   --------     --   -----  --------
    |   0   400000  100000  Abort        18  400000  Program trace
    |   ...
    |
    |  Switches = 020010 004000 
    |
    |  20010  LH Switches <# or ?> - ?
    |
    |  Type  Y,N,^,CR,^Z
    |
    |  N ABORT - 
    |  N RSTART - 
    |  ...
    |
    |  4000  RH Switches <# or ?> - ?
    |
    |  Type  Y,N,^,CR,^Z
    |
    |  N TRACE - 
    |  ...


       SWPRIN

       Print current switch settings.  Example:

    |  DEBUG> SWPRIN
    |
    |  Switches:  020010 002000   PNTLPT OPRSEL UDEBUG 
MAINDEC-10-DFNIA-A-D                                             Page 73
TEST DESCRIPTIONS                                                                                                          SEQ 0077


    NOPNT    PALERS   TRACE    LOOPTS   MDEBUG
    PNTLPT   RELIAB   INHFLT   RUNALL   LDEBUG
    DING     TXTINH   INHMSG   DSPEAR   DDEBUG
    ERSTOP   OPRSEL   LOOPGM   UDEBUG   EDEBUG

       The name of each of these switches can be typed.  The  result  is
    to  complement  the switch setting.  If left hand switches are typed
    in exec mode an error message is printed.
MAINDEC-10-DFNIA-A-D                                             Page 74
PROGRAM RUN TIME                                                                                                           SEQ 0078


11.0  PROGRAM RUN TIME

       The run time varies according to the sequence  of  tests  chosen,
    the  test options selected, and the program switch options selected.
    In default mode the run time is approximately 4  minutes,  excluding
    any time taken to print error messages.

       Running all of the tests with 'RELIAB'  switch  set  extends  the
    time by a factor of 4 - to 16 minutes.
MAINDEC-10-DFNIA-A-D                                             Page 75
APPENDIX                                                                                                                   SEQ 0079


12.0  APPENDIX

    12.1  Special Configurations

    12.1.1  DMT Configuration

       There are several features of the diagnostic which enable  it  to
    be used for DMT.  The DMT configuration is as follows:

     o  One KL10

     o  Four ports and NIA module sets, all connected to an 'NI'  via  a
        loopback connector so that all are independent

     o  TOPS-20 Release 5.0 or later (modified so that the  system  does
        not know about RH's 1,3,5,7)

     o  DFNIA being run under PTYCON (4 copies)




    12.1.2  Creating the Modified Diagnostics

       The diagnostic must be modified to create 4 different copies each
    for a different RH20 slot.  The changes are:

     o  DIAG 'Request device' and 'Release device'  are  replaced  by  a
        SKIPA (to noop the action)

     o  Port number (MBC number) is changed to  reflect  the  particular
        port

     o  Switches are set to 10,,140 which are 'OPRSEL',  'DDUMP'  (which
        can  cause  a  complete  dump  of  the port to be printed (where
        appropriate)), and 'EDEBUG' (which prints port number, date, and
        time with each error message)

     o  The  diagnostics  are   renamed   to   DFNIA1.EXE,   DFNIA3.EXE,
        DFNIA5.EXE, and DFNIA7.EXE to reflect the port number


       To create the 4 copies, the following steps are done:  Note  that
    the  diagnostic  is  modified  by  the  EXEN$G (which eliminates the
    DIAG's) and the P7$G ...  (which changes the port number).

            @RUN D20MON
            
            * D20MON [DDQDH] - DECSYSTEM20 DIAGNOSTIC MONITOR - VER 0.3 *
            
            D20MON CMD - DFNIA
            
            DFNIA NI Port Functional Diagnostic
            VERSION 1.1, SV=0.15, TOPS-20, KL10, CPU#=2263
            
            TTY SWITCH CONTROL ? - 0,S, Y OR N <CR> - ^D
MAINDEC-10-DFNIA-A-D                                             Page 76
APPENDIX                                                                                                                   SEQ 0080


            DDT
            EXEN$G
            DDT
            P7$G
            DDT
            ^Z
            @CSAVE DFNIA7.EXE
             DFNIA7.EXE.1 Saved
            @DDT
            DDT
            P5$G
            DDT
            ^Z
            @CSAVE DFNIA5.EXE
             DFNIA5.EXE.1 Saved
            @DDT
            DDT
            P3$G
            DDT
            ^Z
            @CSAVE DFNIA5.EXE
             DFNIA3.EXE.1 Saved
            @DDT
            DDT
            P1$G
            DDT
            ^Z
            @CSAVE DFNIA5.EXE
             DFNIA1.EXE.1 Saved




    12.1.3  Modifying the System

       To run  a  modified  non-DIAG  diagnostic,  the  system  must  be
    modified  so  that it does not know about the channel with which the
    diagnostic is to be run.  This  is  done  by  going  into  MDDT  and
    modifying the channel table (CHNTAB) as follows:

            @ENABLE               ; must have privileges
            $SDDT                 ; DDT from anyplace will do
            DDT

            JSYS 777$X            ; to get into MDDT
            MDDT

            CHNTAB+5/ address 0   ; replace whatever is there by a zero
            MRETN$G<>             ; get out of MDDT
            ^Z
MAINDEC-10-DFNIA-A-D                                             Page 77
APPENDIX                                                                                                                   SEQ 0081


    12.1.4  Other configurations

       This has been described particular to DMT of the NI20, but  there
    may  be  other  applications that may need to do the above, possibly
    only 2 copies.  One configuration which is  possible  is  running  a
    copy  of  DFNIA  which uses DIAG's and one which doesn't.  To create
    the one without DIAG's, the prior steps are done.  To create the one
    with DIAG's, instead of doing an EXEN$G, an EXE$G must be done.
------------------------------------------------------------------------
                                                                                                                           SEQ 0082
VERSION:	MAINDEC-10-DFNIA-A	Version 0.2

AUTHOR:		Richard Stockdale

DATE:		February 1984

REASON:		Updates to reflect microcode changes, particularly
		as regards performance counters.

------------------------------------------------------------------------

VERSION:	MAINDEC-10-DFNIA-A	Version 0.1

AUTHOR:		Richard Stockdale

DATE:		March 1983

REASON:		Original release.

------------------------------------------------------------------------
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 1             
                                                                                                                           SEQ 0083




















				   DOCUMENT
				**************
				  DFNIA  LST
				**************

















		    COPYRIGHT 1984
		    DIGITAL EQUIPMENT CORPORATION
		    MAYNARD, MASS. 01754
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 2             
                                                                                                                           SEQ 0084

				 TABLE OF CONTENTS
				*******************


	1	

	757	*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, SEPT 18,1979

	792	*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979

	998	ERROR HANDLING UUO DEFINITIONS, SEPT 18,1979

	1036	*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979

	3	Externs / Entrys

	90	Initialization

	264	Test/Command Selection

	987	Test Dispatching

	1314	Port Debugger

	7187	Program Utility Routines

	7650	Statistics Routines

	7906	Microcode Handling Routines

	8638	NI Initialization Routines

	9218	Packet Handling Routines

	10338	Queue Print Routines

	11500	Port Control Block and Data Areas

	11903	SPEAR Reporting

	12090	Miscellaneous Test Variables

	1	Test Module DFNIA2.MAC

	38	Port Modules

	1806	Miscellaneous Routines
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 3             
                                                                                                                           SEQ 0085

				 TABLE OF CONTENTS
				*******************


	1	Test Module DFNIA3.MAC

	40	Microcode Functional Tests

	385	NSA Tests

	744	CRC Tests

	1277	Datagram Loopback Tests

	2257	Multicast Address Tests

	3298	Protocol Type Tests

	4077	Miscellaneous Tests

	4758	Miscellaneous Routines

	1	Port Controller Utility Package

	59	Port Register Read/Write Routines

	390	Port Specific Utility Routines

	799	PI System Routines

	1203	Channel Handling Routines

	1572	User Mode Support Routines

	2011	Miscellaneous Routines

	1	UTILITY Routines Module

	62	Printout/Typin Routines

	470	Clock Handling Routines

	743	TOPS10/20 Related Routines

	822	File Handling Routines

	965	Data Pattern Generator/Compare Routines
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 4             
                                                                                                                           SEQ 0086

				 TABLE OF CONTENTS
				*******************


	1112	Data Patterns

	1428	Switch Handling Routines

	1950	Miscellaneous Routines

	2672	Scope Looping And Error Reporting Routine
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 5             
                                                                                                                           SEQ 0087
		*****************************************************************
	1	DFNIA TITLE FILE
		*****************************************************************

		20		Copyright (C) 1983
				DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
				
				This software is furnished under a license  for  use  only
				on a single computer system and  may  be  copied only with
				the inclusion of the of the above copyright  notice.  This
				software, or any other copies thereof, may not be provided
				or otherwise made available to any other person except for
				use  on such system and to one who agrees to these license
				terms. Title to and ownership of the software shall at all
				times remain in DEC.
				
				The information in this  document  is  subject  to  change
				without notice and should not be construed as a commitment
				by Digital Equipment Corporation.
				
				DEC assumes no responsibility for the use or reliability
				of its software on equipment which is not supplied by DEC.
			
				Author:		Dick Stockdale
				Maintainer:	36-Bit Diagnostic Engineering

		44	 Program Parameters

		59	 Assembly Parameters

		90	 Channel Logout Status Bits

		106	 Right Hand Switches

		123	 OP Code definitions (for operational microcode)

		150	 Macro Definitions

		154	 Text macros

		181	 ASCII text macro

		187	 RPUT/RGET - Multiple put/get

		225	 Test Dispatch Table Definitions

		237	 Port CONI/CONO CSR Bit Assignments

		273	 OPDEF/UUO Definitions
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 6             
                                                                                                                           SEQ 0088
		301	 Bit Definitions For "SCOPE" UUO Handler - Error Message Printer

		313	 Microword Field Definitions

		713	 Microword Macros (Note: If ADDR not specified, 'ADDR'+1 is used).

		*****************************************************************
	757	*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, SEPT 18,1979
		*****************************************************************

		762	DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE)
			LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE
			AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS

		*****************************************************************
	792	*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979
		*****************************************************************

		795	SPECIAL SUBPROGRAM LINKAGES

		806	SPECIAL SUBROUTINE FATAL HALTS
			USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE

		*****************************************************************
	998	ERROR HANDLING UUO DEFINITIONS, SEPT 18,1979
		*****************************************************************

		*****************************************************************
	1036	*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979
		*****************************************************************

		*****************************************************************
	3	Externs / Entrys
		*****************************************************************

		*****************************************************************
	90	Initialization
		*****************************************************************
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 7             
                                                                                                                           SEQ 0089
		*****************************************************************
	264	Test/Command Selection
		*****************************************************************

		267	 DISPAT - Routine to dispatch to proper test as typed by the operator
				   in response to the 'WHAT TEST' prompt.

		489	 DISLIS - List of all valid test names that can be typed

		547	 DISGO - Test dispatch addresses

		603	 ALL    Execute all tests
			 PORT   Execute Port modules related tests
			 NIA    Execute NIA module related tests
			 LOOP   Execute Loopback tests
			 FUNCT  Execute Functional tests

		628	 TSTLIS - List test description for either single test or range of tests.

		693	 TSTDIA - Return to DIAMON

		704	 TSTDDT - Enter DDT

		718	 TSTHLT - Program halts - CONTINUE will start it back up.

		733	 TSTZER - Clear statistics

		744	 TSTCON - Print configuration

		754	 TSTHLP - Help for 'WHAT TEST' question.

		826	 TSTDSA - Disable a test.
			 TSTENA - Enable a test.

		869	 TSTDSL - List disabled tests

		896	 TSTPRI - Print statistics

		906	 TSTSWI/TSTSWP - Input switches / Print switch selections

		923	 TSTSSW - Switch complement commands

		935	 TSTTAK - Take commands from a file
			 TSTTAN - Take commands from a file without echoing results
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 8             
                                                                                                                           SEQ 0090
		*****************************************************************
	987	Test Dispatching
		*****************************************************************

		990	 TSTSPC - Run only one test

		1016	 RANGEN - Random number generator

		1071	 TSTDIS - Dispatch to the tests

		*****************************************************************
	1314	Port Debugger
		*****************************************************************

		1317	 TSTDEB - Console command utility for the port.

		1625	 .DBCMD - List of acceptable commands

		1783	 .DBDIS - List of dispatch addresses

		1945	 DHELP - Print DEBUG> help message

		2128	 DSET - Set/clear/print options

		2197	 DSETAD - Set start address for START/SSTEP/CONT commands

		2222	 DSETCS - Set start CSR data for START/CONT commands

		2242	 DSETPR - Set/clear automatic parity generation for load cram command

		2265	 DSETEB - Set/clear preserve EBUF for single stepping

		2289	 DSETPC - Set/clear PCB CCW list made up for START command

		2312	 DSETFN - Set default microcode file name

		2343	 DSETPA - Set data pattern to insert in buffer

		2385	 DSETPL - List data patterns

		2430	 DSETRE - Set/clr forced response

		2456	 DSETFO - Set format (COMPAT or HIDEN)

		2483	 DSETBS - Set BSD stype datagram

		2507	 DSETPD - Set pad flag

		2530	 DSETLN - Set length of text portion of packet
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 9             
                                                                                                                           SEQ 0091
		2554	 DSETDA - Set destination address

		2641	 DSETSA - Set self address

		2668	 DSETPV - Set protocol type value

		2687	 DSETPT - Set length of text portion to print

		2712	 DSETIN - Set interval (milliseconds)

		2731	 DSETSU - Set summary interval (seconds)

		2751	 DSETWH - Print all selected options

		2780	 DSETHE - Set help message

		2819	 Program Flags

		2856	 DECSR - Examine CSR register

		2870	 DDCSR - Deposit CSR register

		2885	 DZCSR - Zero CSR register

		2897	 DRESET - Issue an EBUS Reset

		2907	 DCLEAR - Issue a 'Port Clear'

		2918	 DSINIT - Set up start addr/data/history prior to single step command

		2935	 DSTART - Start the port

		2984	 DSTOP - Stop the port

		3014	 DSSTEP - Single step the port
			 DTRACE - Single step the port and trace progress

		3114	 DSSPNT - Print single step history

		3138	 DSSCLR - Clear single step history data

		3159	 PNTHST - Print a single step history entry

		3182	 SAVHST - Save single step history data

		3207	 DCONT - Continue the port

		3234	 DEEBUF - Examine EBUF register
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 10            
                                                                                                                           SEQ 0092
		3256	 DDEBUF - Deposit EBUF register
			 DZEBUF - Zero EBUF register

		3283	 DELAR - Examine LAR register

		3304	 DDRAR - Deposit RAR register

		3322	 DZRAR - Zero RAR register

		3335	 DECRAM - Examine CRAM locations specified by "PARG1" and "PARG2".

		3343	 DDCRAM - Change CRAM locations.

		3351	 DBCRAM - Change CRAM locations by field

		3359	 DACRAM - Alter CRAM locations.

		3367	 DZCRAM -- Zero CRAM addresses specified.

		3375	 DLCRAM -- List CRAM addresses specified.

		3964	 DEALU - Examine 2901 registers

		4066	 DDALU - Deposit register 

		4143	 DZALU - Zero 2901 registers

		4261	 DELOCS - Examine local storage 

		4364	 DDLOCS - Deposit local storage 

		4436	 DZLOCS - Zero local storage 

		4553	 DMARK - Set mark bit in CRAM locations

		4596	 DRMARK - Remove mark bit in CRAM locations

		4639	 DCMARK - Clear all mark bits

		4712	 DLMARK - List locations with mark bit set

		4798	 DDPLI - Deposit data to PLI

		4896	 DEPLI - Examine PLI registers

		5040	 DETBUF - Read transmit buffer

		5054	 DERBUF - Read receive buffer
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 11            
                                                                                                                           SEQ 0093
		5067	 DDUMP - Dump port state

		5175	 RDBUFT - Read transmit buffer (80 bytes only)

		5206	 RDBUFR - Read transmit buffers

		5248	 PLOG - Obtain EPT logout data

		5406	 DENEXT - Examine next

		5479	 DDNEXT - Deposit next

		5559	 DDPPTT - Deposit into PTT table

		5594	 DDPMUL - Deposit into Multicast table

		5629	 DDPPAK - Deposit into packet

		5664	 DESTAK - examine 2910 stack

		5718	 DBREAK - Set breakpoint

		5769	 DRBRK - Remove breakpoint

		5808	 DCBRK - Clear all breakpoints 

		5876	 DLBRK - List breakpoints

		5965	 DLOAD - Load microcode into CRAM from a test.

		5996	 DLIST - List microcode from test

		6021	 DFLOAD - Load microcode from file into CRAM

		6064	 DFVERF - Verify microcode from file versus CRAM

		6087	 DFLIST - List microcode in file

		6122	 DFEXAM - Examine microcode in file

		6158	 DTRANS - Translate CSR bits to English

		6173	 DCCODE - Print condition codes

		6270	 DFILLN - Fill CRAM with special data (J=PC+1,OPCode)

		6298	 DFILLP - Fill CRAM with special data (J=PC,OPCode)

		6323	 DCWPNT - Print CCW list
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 12            
                                                                                                                           SEQ 0094
		6335	 DLGPNT - Print logout data

		6347	 DSWIT - Switch complement commands

		6361	 IPRINT - Print interrupt history

		6419	 IINIT - Initialize interrupt system

		6431	 DPINIT - Initialize PCB and queues

		6442	 DSIDLE - Start port and wait for IDLE loop

		6457	 DBPACK - Build packet

		6528	 DIQUEU - Insert a packet on a command queue

		6555	 DPPCB - Print PCB

		6566	 DPQUEU - Print specified queue

		6616	 DWATCH - Watch port and print events and loop back packets

		7017	 SANCHK - Sanity check of the free queue

		7048	 CONVRR - Convert physical address to virtual

		7071	 PNTRSP - Print a response queue entry

		7107	 DCONF - Determine and print NI configuration

		7116	 SETENA - Ensure the port is in the enabled state

		7163	 SETDSA - Disable the port

		*****************************************************************
	7187	Program Utility Routines
		*****************************************************************

		7190	 TRACE - Program Trace Routine

		7230	 TSTEND - Do end of test processing

		7238	 TSTPNT - Print test name/number

		7261	 PNTCRM - Print CRAM word

		7346	 PNTWD - Print a CRAM word (xxxx xxxx xxxx xxxx xxxx)

		7372	 CALPAR - Calculate parity for a CRAM location
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 13            
                                                                                                                           SEQ 0095
		7423	 CSRPNT - Print CSR register as 'CSR: xxxxxx,,xxxxxx' followed by
			          English translation.

		7444	 CSRENG - Print CSR data in English

		7478	 CSRENB - CSR bits

		7525	 SAVCRM - Save specified CRAM locations in a buffer

		7545	 RESCRM - Restore CRAM locations

		7571	 CONPNT - Print configuration data

		7613	 SAVCON - Accumulate configuration data

		*****************************************************************
	7650	Statistics Routines
		*****************************************************************

		7653	 SUPDAT - Update statistics for datagrams sent

		7698	 RUPDAT - Update statistics for datagrams received

		7786	 SREPOR - Report statistics

		7866	 SZERO - Clear statistics

		7876	 Statistics data areas

		*****************************************************************
	7906	Microcode Handling Routines
		*****************************************************************

		7929	 TFLOAD - Load operational microcode for a test

		8006	 FLOADB - Load operational microcode into buffer

		8098	 FLOADC - Load microcode buffer contents into the port

		8181	 FVERFC - Verify port microcode against buffer contents

		8273	 FUERR -  Print verify error data

		8314	 ZCOUNT - Zero counters data (local storage locations 1400-1777)

		8366	 MLOADN - Load microcode and verify it (do not print errors)
			 MLOADY - Load microcode and verify it (print errors)

		8514	 MVPNT - Print verify error data
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 14            
                                                                                                                           SEQ 0096
		8565	 MLIST - List microcode of a test

		8603	 TLOAD - Load microcode/verify it for a test

		*****************************************************************
	8638	NI Initialization Routines
		*****************************************************************

		8641	 TPCB - Set up initial PCB

		9162	 TIDLE - Start the port and wait for IDLE bit to set in CSR

		9194	 RDADDR - Read NI physical address register (ROM)

		*****************************************************************
	9218	Packet Handling Routines
		*****************************************************************

		9272	 BPACK - Build a packet

		9334	 BPAK1 - Build packet for DGSNT command

		9391	 BPAK4 - Build packet for RCCNT command

		9407	 BPAK6 - Build packet for WRPLI command

		9447	 BPAK7 - Build packet for RDPLI command

		9473	 BPAK11 - Build packet for WRNSA command

		9534	 ITEXT - get text length + text

		9586	 ICRC - Calculate CRC

		9734	 CRCCAL - Calculate CRC (cumulative) for 8 bits

		9757	 CRCFIX - Adjust properly

		9777	 RWAIT - Wait for a response (by CSR bit 'RspQAvail' bit being set.

		9799	 CHKINT - Check/set up interlock for queue

		9869	 CONVIR - Convert physical address to virtual

		9907	 INSQUE - Insert a packet into a queue

		10010	 GETQUE - Remove a queue entry from the beginning of a queue

		10070	 PUTQUE - Insert an entry onto the specified queue
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 15            
                                                                                                                           SEQ 0097
		10145	 CHKRSP - Check if a response queue entry

		10212	 CHKRQV - Check for response queue available

		10228	 PTCHKP - Check type of packet and for matching PTT value

		10271	 CHKQUE - Determine which queue to insert entry back on

		10325	 SHUTRQ - Turn off response queue available

		*****************************************************************
	10338	Queue Print Routines
		*****************************************************************

		10341	 PQUEUE - Print a set of queue entries

		10464	 PPAKC - Print a command queue entry

		10507	 PPAKR - Print a response queue entry

		10523	 PPAKF - Print a free queue entry

		10545	 PACK1 - Print a packet - SNDDG command / DGSNT response

		10610	 PACK2 - Print a packet - LDMCAT command / MCATLD response

		10618	 PACK3 - Print a packet - LDPTT command / PTTLD response

		10625	 PACK4 - Print a packet - RCCNT command / CNTRC response

		10775	 PACK5 - Print a packet - DGRCV response

		10804	 PACK6 - Print a packet - WRPLI command / PLIWR response

		10818	 PACK7 - Print a packet - RDPLI command / PLIRD response

		10833	 PACK10 - Print a packet - RDNSA command / NSARD response

		10867	 PACK11 - Print a packet - WRNSA command / NSAWR response

		10891	 PACKG - Print a general type packet (unrecognized)

		10911	 OPCPNT - Print opcode of command packet

		10965	 DECOPC - Decode op code

		11006	 PHEAD - Print header info of a packet

		11033	 PADDR - Print 6 byte source/destination address
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 16            
                                                                                                                           SEQ 0098
		11053	 PSTATS - Print status field

		11118	 PFLAGS - Print flags field (AC1 contains status byte (right justified))

		11172	 PTEXT - Print text data in a datagram

		11229	 PBSD - Print BSD segment

		11266	 LINKP - Print FLINK/BLINK data in symbolic format

		11278	 LINKV - Print FLINK/BLINK data in symbolic format

		11423	 PPCB - Print current data in the PCB

		*****************************************************************
	11500	Port Control Block and Data Areas
		*****************************************************************

		11503	 IPCB - PCB initial data

		11538	 IPTAB - PTABLE initial data

		11560	 IMTAB - MTABLE initial data

		11597	 PCB - Port Control Block

		11646	 Command/Unknown protocol queues

		11702	 PTABLE - Protocol type free queues

		11864	 MTABLE - Table of multi-cast addresses

		*****************************************************************
	11903	SPEAR Reporting
		*****************************************************************

		11906	 SPREP1 - Print initial SPEAR report 'diagnostic started'

		11959	 SPREP2 - Print error or successful completion SPEAR report

		12076	 GETPPN - Find out PPN number
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 17            
                                                                                                                           SEQ 0099
		*****************************************************************
	12090	Miscellaneous Test Variables
		*****************************************************************

		12128	 Special code to test SPEAR entries

		12171	 Special code to produce an EXE version

		*****************************************************************
	1	Test Module DFNIA2.MAC
		*****************************************************************

		*****************************************************************
	38	Port Modules
		*****************************************************************

		41	 TEST 1 - Port Hardware Test 1

		443	 TEST 2 - Port Hardware Test 2

		1358	 TEST 3 - Port Hardware Test 3

		*****************************************************************
	1806	Miscellaneous Routines
		*****************************************************************

		1809	 MWAIT - Routine to wait for test completion and determine test results

		1856	 MSTART - Start the port at location 5777

		1871	 MPRINT - Print test completion data for a test

		*****************************************************************
	1	Test Module DFNIA3.MAC
		*****************************************************************

		*****************************************************************
	40	Microcode Functional Tests
		*****************************************************************

		43	 TEST 4 - Idle Loop Test

		175	 TEST 5 - Queue Handling Test
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 18            
                                                                                                                           SEQ 0100
		*****************************************************************
	385	NSA Tests
		*****************************************************************

		388	 TEST 6 - NSA ROM Address Test

		565	 TEST 7 - NSA RAM Address Test

		*****************************************************************
	744	CRC Tests
		*****************************************************************

		747	 TEST 10 - CRC Test 1

		1000	 TEST 11 - CRC Test 2

		*****************************************************************
	1277	Datagram Loopback Tests
		*****************************************************************

		1280	 TEST 12 - Non-BSD Datagram Loopback Test

		1622	 CRCINI - Special routine to clear a CRC table used by TST12...

		1638	 TEST 13 - BSD Datagram Loopback Test 1

		1948	 TEST 14 - BSD Datagram Loopback Test 2

		*****************************************************************
	2257	Multicast Address Tests
		*****************************************************************

		2260	 TEST 15 - Multicast Table Test 1

		2512	 TEST 16 - Multicast Table Test 2

		2778	 TEST 17 - Multicast Table Test 3

		3032	 TEST 20 - Broadcast Test
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 19            
                                                                                                                           SEQ 0101
		*****************************************************************
	3298	Protocol Type Tests
		*****************************************************************

		3301	 TEST 21 - PTT Table Test 1

		3569	 TEST 22 - PTT Table Test 2

		3824	 TEST 23 - PTT Table Test 3

		*****************************************************************
	4077	Miscellaneous Tests
		*****************************************************************

		4079	*******************************************************************
			 TEST 24 - PAD Flag Bit Test 1

		4327	*******************************************************************
			 TEST 25 - PAD Flag Bit Test 2

		4567	 TEST 26 - Configuration Test

		4595	 TEST 27 - Statistics Test

		*****************************************************************
	4758	Miscellaneous Routines
		*****************************************************************

		4761	 MPACK - Build a packet based on parameters in AC1

		4780	 MPACKN - Build a packet based on parameters in AC1

		4799	 MCOMP - Do data compare of a packet received

		4849	 MCOMP2 - Compare RSPONS against contents of PACKET

		4879	 MCHECK - Check results

		4922	 SAVPK1 - Save packet data (status error packet)
			 SAVPK2 - Save packet data (data error packet)

		4970	 PKPNT - Print special saved packet data

		4989	 LODERR - Print ucode load error

		5014	 CHKDEB - Check for debug mode (transfer entry from cmd to rsp queue)

		5053	 PIDLE - Start the port and wait for IDLE bit to set in CSR
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 20            
                                                                                                                           SEQ 0102
		5087	 QCHECK - Check for received type of free queue

		5104	 LOADPM - Load PTT table and MCAT tables and H4000 mode (via port commands)

		*****************************************************************
	1	Port Controller Utility Package
		*****************************************************************

		*****************************************************************
	59	Port Register Read/Write Routines
		*****************************************************************

		62	 Notes On I/O Routine Design

		111	 Port Register Load Routines

		123	 LDEBUF - Load EBUF

		140	 LDCSR - Load CSR (This is simply a CONO).

		154	 LDRAR - Load RAR

		180	 LDCRAM - Load CRAM

		201	 Port Register Read Routines

		218	 RDEBUF - Read EBUF

		234	 RDCSR - Read CSR

		258	 RDLAR - Read LAR

		281	 RDCRAM - Read CRAM

		300	 .CONI - Do a simple CONI (no error checking)

		319	 .CONO - Do a simple CONO

		340	 .DATAI - Do a simple DATAI (no error checking)

		359	 .DATAO - Do a simple DATAO

		379	 ERESET - Issue an EBUS reset
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 21            
                                                                                                                           SEQ 0103
		*****************************************************************
	390	Port Specific Utility Routines
		*****************************************************************

		393	 ISTOP - Stop IPA either by a port clear or by clearing the CSR register

		440	 IPACLR - Issue a port clear

		451	 SETEBU - Check that 'Diag Test EBUF' bit is set in CSR and set if not.

		473	 SETLAR - Check that 'Diag Sel LAR' bit is set in CSR and set if not.

		494	 CLREBU - Check that 'Diag Test EBUF' is not set in CSR and clear if is.

		515	 CHKCSR - Check if error bits are set in the CSR register

		544	 IPASRT - Start the port at the address given in 'SADDR' and with
			          initial parameters given in 'SDATA'.

		626	 IPASTP - Stop the port

		692	 IPASST - Single step the port at the address given in 'SNEXT' and
			          with initial parameters given in 'SDATA'.

		*****************************************************************
	799	PI System Routines
		*****************************************************************

		802	 INITPI - Initialize and Turn On PI System

		843	 .PIOFF - Detach port from PI system 

		859	 .PION - Attach port to PI system (Channel 4)

		877	 PISYOF - Turn PI system off

		886	 PISYON - Turn PI system on

		894	 SETVEC - Set up interrupt vectors for an port under test

		918	 SET2N - Set up 40 + 2N locations with interrupt dispatch instruction

		940	 VIINT - Vectored interrupt (Port)

		1007	 NVIINx - Non-Vectored interrupt (Port)

		1156	 .INPNT - Print special interrupt data
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 22            
                                                                                                                           SEQ 0104
		*****************************************************************
	1203	Channel Handling Routines
		*****************************************************************

		1206	 Routines To Interface With A Channel

		1255	 CHINIT - Channel Initialization Routine

		1407	 GETLOG - Snapshot The Channel Logout Area

		1444	 CCWPNT - Prints CCW word currently in PCB+32.

		1473	 LOGPNT - Channel Logout Printer

		1549	 DIAGER - Report Monitor Call Error In User Mode

		*****************************************************************
	1572	User Mode Support Routines
		*****************************************************************

		1575	 DSETUP - Setup Routine For Diagnostic Function

		1662	 CPUTST - Determine Which Of 2 CPU's To Run On

		1705	 DEVREL - User Mode Release Routine

		1757	 DEVREQ - User Mode Request Routine

		1817	 ENDIAG - Enable the NI/CI port

		1835	 DGEPNT - Decode and print DIAG error

		1916	 LOCPHY - Lock part of the diagnostic

		1948	 USRION/USRIOF - Turn User I/O Privileges On/Off

		1990	 ENABLE - Enable Capabilities of This Process

		*****************************************************************
	2011	Miscellaneous Routines
		*****************************************************************

		2014	 FFF - Routine To Handle Fatals
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 23            
                                                                                                                           SEQ 0105
		*****************************************************************
	1	UTILITY Routines Module
		*****************************************************************

		*****************************************************************
	62	Printout/Typin Routines
		*****************************************************************

		65	 CONVSX - Convert sixbit to octal

		108	 ALTCHH - Handle altmode intercept

		133	 CLRBUF - Clear input buffer

		150	 TTYYES - Answer yes or no question

		180	 PSDN - Prints signed decimal numbers

		205	 .PNTOC - Print n digit octal number with leading zeros suppressed

		252	 .PNTDC - Print n digit decimal number with leading zeros suppressed

		299	 .PNTDL - Print decimal number left justified leading zeros suppressed

		346	 .PNTDP - Print n digit decimal number with leading zeros suppressed

		393	 PPDEC - Print decimal number in a field of size x.

		432	 PPDECF - Force print decimal number in a field of size x.

		*****************************************************************
	470	Clock Handling Routines
		*****************************************************************

		473	 STCLOK - Initialize program runtime clock

		515	 MONTIM - Read program runtime from monitor

		549	 PTIME - Print time of day

		567	 RUNTME - Calculate and print program runtime

		675	 PSTAMP - Check for an 'S' typed.

		711	 .DELAY - Delay a specified amount of time (in milliseconds)
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 24            
                                                                                                                           SEQ 0106
		*****************************************************************
	743	TOPS10/20 Related Routines
		*****************************************************************

		746	 .RESET - Subroutine to issue a RESET JSYS/UUO

		765	 .CLOSE - Subroutine to close opened files

		793	 .EXIT - Subroutine to exit job in user mode

		*****************************************************************
	822	File Handling Routines
		*****************************************************************

		825	 CHRIN - Routine to read an ASCII character from the selected file.

		836	 CHRINS - Routine to read an ASCII character from the selected file.

		862	 FGETW - Get microword entry from file

		910	 FGETA - Obtain microcode load address 'ADDR:' from file

		937	 FGETD - Obtain microcode data entry from file (4 digits).

		*****************************************************************
	965	Data Pattern Generator/Compare Routines
		*****************************************************************

		968	 BUFGEN - Generate the specified data pattern in the data buffer.
			 BUFCOM - Compare the data buffer with expected data

		1070	 DATMES - A data comparison error has been found.  Report the error,
			 printing a maximum of three lines of errors.

		*****************************************************************
	1112	Data Patterns
		*****************************************************************

		1115	 Data Patterns

		1336	 PATPNT - Translate pattern number to description
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 25            
                                                                                                                           SEQ 0107
		*****************************************************************
	1428	Switch Handling Routines
		*****************************************************************

		1431	 .SWCHP - Print switch settings in English

		1499	 SWITT - Get value of switches

		1512	 .ISWT - Complete switch handling

		1609	 .SLEFT - Input left hand switches

		1674	 .SRIGT - Enter right hand switches

		1846	 SWCHPT - Prints current state of switches

		1858	 SWCOM - Switch complement routine

		*****************************************************************
	1950	Miscellaneous Routines
		*****************************************************************

		1953	 PARSER - Additional CPU parity error service

		2001	 .COMM - Match a command entered against a command table.

		2052	 .COMM2 - Compare command typed to table to see if valid

		2088	 .SARG - Obtain SIXBIT argument

		2176	 .OARG - Obtain octal argument

		2267	 DECYN - Decode an argument which should be NO or YES

		2295	 .DARG - Obtain octal/decimal argument

		2389	 CHKARG - Check for argument when there shouldn't be any

		2436	 LASARG - Check for last argument when there shouldn't be any more

		2479	 FIOFF - Routine to turn off the 'file input' switch

		2497	 FINCMD - Input a sixbit command from a file

		2547	 FSARG - Input a sixbit argument from a file

		2597	 FOARG - Input a octal argument from a file

		2661	 FEOL - Skip characters until end of line is reached
DFNIA  LST                                                              DECDOC VER  00.25   24-SEP-84 20:13:07   PAGE 26            
                                                                                                                           SEQ 0108
		*****************************************************************
	2672	Scope Looping And Error Reporting Routine
		*****************************************************************

		2675	 SCOPE1 - Error reporter and scope loop controller
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 1
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0109

     1						SUBTTL	DFNIA TITLE FILE
     2
     3						SALL
     4
     5						UNIVERSAL DFNIA
     6						SEARCH	MONSYM
     7
     8						EXTERN	START,STARTA,PGMNAM,SCOPE1
     9						EXTERN	PPDEC,PPDECF,ALTCHH,.PNTOC,.PNTDC,.PNTDP,.PNTDL,.DELAY
    10
    11						.REQUIRE DFNIA1
    12						.REQUIRE DFNIA2
    13						.REQUIRE DFNIA3
    14						.REQUIRE DFNIAI
    15						.REQUIRE DFNIAU
    16
    17			000000			MCNVER==0
    18			000002			DECVER==2
    19
    20					;*	Copyright (C) 1983
    21					;*	DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
    22					;*	
    23					;*	This software is furnished under a license  for  use  only
    24					;*	on a single computer system and  may  be  copied only with
    25					;*	the inclusion of the of the above copyright  notice.  This
    26					;*	software, or any other copies thereof, may not be provided
    27					;*	or otherwise made available to any other person except for
    28					;*	use  on such system and to one who agrees to these license
    29					;*	terms. Title to and ownership of the software shall at all
    30					;*	times remain in DEC.
    31					;*	
    32					;*	The information in this  document  is  subject  to  change
    33					;*	without notice and should not be construed as a commitment
    34					;*	by Digital Equipment Corporation.
    35					;*	
    36					;*	DEC assumes no responsibility for the use or reliability
    37					;*	of its software on equipment which is not supplied by DEC.
    38					;*
    39					;*	Author:		Dick Stockdale
    40					;*	Maintainer:	36-Bit Diagnostic Engineering
    41
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 2
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0110

    42
    43					;#********************************************************************
    44					;* Program Parameters
    45					;#********************************************************************
    46
    47					; AC Assignments.
    48
    49			000011			OP=11				; op code
    50			000012			PK=12				; packet address
    51			000013			Q=13				; queue number
    52			000014			PAT=14				; data pattern in use
    53			000015			ERFLG=15			; error flag (gets cleared by SCOPER)
    54			000016			MBCN=16				; channel 54000,,0 to 57400,,0
    55			000017			P=17				; stack pointer
    56
    57
    58					;#********************************************************************
    59					;* Assembly Parameters
    60					;#********************************************************************
    61
    62			000005			ITERAT==5			; default to 5 passes
    63			000001			KL10==1				; assemble for KL10
    64			000001			EXCASB==1			; assemble for exec mode
    65			000001			USRASB==1			; assemble for user mode
    66			000001			MEMMAP==1			; allow memory to be mapped
    67
    68			000001			$LPAPER==1			; don't list literals
    69
    70			030000			SADR1=BEGIN
    71			030000			SADR2=BEGIN
    72			030000			SADR3=BEGIN
    73			030007			SADR4=SRTDDT
    74			000000*			SADR5=START			; ^C restart
    75			030007			SADR6=SRTDDT
    76		254200	000000*			SADR7=HALT START
    77		254200	000000*			SADR8=HALT START
    78		254200	000000*			SADR9=HALT START
    79		254200	000000*			SADR10=HALT START
    80		254200	000000*			SADR11=HALT START
    81
    82		711523	655207			PAREA1==711523,,655207		; random number base
    83			000000			PAREA2==0
    84		444656	514100			PAREA3==SIXBIT/DFNIA/
    85		605664	000000			PAREA4==SIXBIT/PNT/
    86			000000			PAREA5==0
    87			000000			PAREA6==0
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 3
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0111

    88
    89					;#************************************************************
    90					;* Channel Logout Status Bits
    91					;#************************************************************
    92
    93		400000	000000			LOGO==1B0			; channel log out bit
    94		200000	000000			MPER==1B1			; memory parity error
    95		100000	000000			ADRPE==1B2			; set when no address parity error
    96		040000	000000			NOTWC0==1B3			; not word count zero
    97		020000	000000			NEXM==1B4			; non-existant memory
    98		000400	000000			LAXER==1B9			; last xfer error
    99		000200	000000			IPAER==1B10			; IPA20 error
   100		000100	000000			LGWC==1B11			; long word count
   101		000040	000000			SHWC==1B12			; short word count
   102		000020	000000			OVN==1B13			; overrrun
   103
   104
   105					;#********************************************************************
   106					;* Right Hand Switches
   107					;#********************************************************************
   108
   109			400000			TRACET==1B18			; program test # trace feature
   110			200000			INHFLT==1B19			; inhibit fault isolation
   111			100000			INHMSG==1B20			; inhibit error message printout
   112			040000			LOOPGM==1B21			; loop on program
   113			020000			LOOPTS==1B22			; loop on test
   114			010000			RUNALL==1B23			; run all segments of a test	
   115			004000			DSPEAR==1B24			; disable SPEAR switch
   116			002000			DEBUG1==1B25			; debug mode (debug without an IPA)
   117			001000			DEBUG2==1B26			; debug mode (print error messages)
   118			000400			DEBUG3==1B27			; debug mode (don't load test ucode)
   119			000200			DEBUG4==1B28			; debug mode (dump on error)
   120			000040			DEBUG6==1B30			; debug mode (expanded error message)
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 4
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0112

   121
   122					;#********************************************************************
   123					;* OP Code definitions (for operational microcode)
   124					;#********************************************************************
   125
   126					; Op code sent
   127
   128			000001			SNDDG==1
   129			000002			LDMCAT==2
   130			000003			LDPTT==3
   131			000004			RCCNT==4
   132			000006			WRPLI==6
   133			000007			RDPLI==7
   134			000010			RDNSA==10
   135			000011			WRNSA==11
   136
   137					; Op code received
   138
   139			000001			DGSNT==SNDDG
   140			000005			DGRCV==5
   141			000002			MCATLD==LDMCAT
   142			000003			PTTLD==LDPTT
   143			000004			CNTRC==RCCNT
   144			000006			PLIWR==WRPLI
   145			000007			PLIRD==RDPLI
   146			000010			NSARD==RDNSA
   147			000011			NSAWR==WRNSA
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 5
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0113

   148
   149					;#*********************************************************************
   150					;* Macro Definitions
   151					;#*********************************************************************
   152
   153					;#********************************************************************
   154					;* Text macros
   155					;#********************************************************************
   156
   157						DEFINE	TMSG(TEXT),<PNTMSG	[ASCIZ ^TEXT^]>
   158
   159						DEFINE	TMSGC(TEXT),<PNTMSG	[ASCIZ ^
   160					TEXT^]>
   161
   162						DEFINE	TMSGD(TEXT),<PNTMSG	[ASCIZ ^TEXT
   163					^]>
   164
   165						DEFINE	TMSGCD(TEXT),<PNTMSG	[ASCIZ ^
   166					TEXT
   167					^]>
   168						DEFINE	FMSG(TEXT),<PNTMSF	[ASCIZ ^TEXT^]>
   169
   170						DEFINE	FMSGC(TEXT),<PNTMSF	[ASCIZ ^
   171					TEXT^]>
   172
   173						DEFINE	FMSGD(TEXT),<PNTMSF	[ASCIZ ^TEXT
   174					^]>
   175
   176						DEFINE	FMSGCD(TEXT),<PNTMSF	[ASCIZ ^
   177					TEXT
   178					^]>
   179
   180					;#********************************************************************
   181					;* ASCII text macro
   182					;#********************************************************************
   183
   184						DEFINE	TASCIZ (TEXT)<[ASCIZ /TEXT/]>
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 6
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0114

   185
   186					;#********************************************************************
   187					;* RPUT/RGET - Multiple put/get
   188					;#********************************************************************
   189
   190						DEFINE	RPUT (R0,R1<-1>,R2<-1>,R3<-1>,R4<-1>,R5<-1>,R6<-1>,R7<-1>,R8<-1>,R9<-1>)<
   191						PUT	R0
   192						XLIST
   193						IFGE R1,<PUT	R1>
   194						IFGE R2,<PUT	R2>
   195						IFGE R3,<PUT	R3>
   196						IFGE R4,<PUT	R4>
   197						IFGE R5,<PUT	R5>
   198						IFGE R6,<PUT	R6>
   199						IFGE R7,<PUT	R7>
   200						IFGE R8,<PUT	R8>
   201						IFGE R9,<PUT	R9>
   202						LIST>
   203
   204						DEFINE	RGET (R0,R1<-1>,R2<-1>,R3<-1>,R4<-1>,R5<-1>,R6<-1>,R7<-1>,R8<-1>,R9<-1>)<
   205						GET	R0
   206						XLIST
   207						IFGE R1,<GET	R1>
   208						IFGE R2,<GET	R2>
   209						IFGE R3,<GET	R3>
   210						IFGE R4,<GET	R4>
   211						IFGE R5,<GET	R5>
   212						IFGE R6,<GET	R6>
   213						IFGE R7,<GET	R7>
   214						IFGE R8,<GET	R8>
   215						IFGE R9,<GET	R9>
   216						LIST>
   217
   218					; Microword table macro
   219
   220						DEFINE	SUBTAB(ADDR)<
   221						-2
   222						ADDR>
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 7
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0115

   223
   224					;#********************************************************************
   225					;* Test Dispatch Table Definitions
   226					;#********************************************************************
   227
   228		400000	000000			PORT==1B0			; PORT tests
   229		200000	000000			NIA==1B1			; NIA tests
   230		100000	000000			LOOP==1B2			; Loopback tests
   231		040000	000000			FUNCT==1B3			; Functional tests
   232		740000	000000			ALL==17B3			; All tests
   233		000100	000000			TDENA==1B11			; test dispatch enable (0-yes,1-no)
   234
   235
   236					;#*********************************************************************
   237					;* Port CONI/CONO CSR Bit Assignments
   238					;#*********************************************************************
   239
   240		400000	000000			PORTP==1B0			; port present
   241		200000	000000			CSRRQS==1B1			; diag request CSR
   242		100000	000000			CSRCHN==1B2			; diag CSR changed
   243		040000	000000			DINIT==1B3			; diag initialized
   244		020000	000000			PI00RQ==1B4			; PI Level 0 interrupt in progress
   245		010000	000000			RQINT==1B5			; request interrupt
   246		004000	000000			CRAMPE==1B6			; CRAM parity error
   247		002000	000000			MBERR==1B7			; MBUS error
   248		000100	000000			IDLE==1B11			; IDLE loop
   249		000040	000000			DCOMP==1B12			; disable complete
   250		000020	000000			ECOMP==1B13			; enable complete
   251			400000			PCLEAR==1B18			; port clear
   252			200000			TSTEBF==1B19			; diag test EBUF
   253			100000			GENEPE==1B20			; diag generate EBUS parity error
   254			040000			SELLAR==1B21			; diag select LAR/SQR
   255			020000			SINCYC==1B22			; diag single cycle
   256			010000			SPARE1==1B23			; spare bit
   257			004000			EBUSPE==1B24			; EBUS parity error
   258			002000			FQUERR==1B25			; free queue error
   259			001000			MVRERR==1B26			; data mover error
   260			000400			CMDQAV==1B27			; command queue available
   261			000200			RESQAV==1B28			; response queue available
   262			000100			SPARE2==1B29			; spare bit
   263			000040			PDSABL==1B30			; disable
   264			000020			PENABL==1B31			; enable
   265			000010			MPRUN==1B32			; mproc run
   266			000004			PIA00==1B33			; PIA field bit 0
   267			000002			PIA01==1B34			; PIA field bit 1
   268			000001			PIA02==1B35			; PIA field bit 2
   269
   270			002000			TCOMP==1B25			; test completed bit
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 8
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0116

   271
   272					;#*********************************************************************
   273					;* OPDEF/UUO Definitions
   274					;#*********************************************************************
   275
   276		104000	000000			OPDEF	JSYS	[104000,,0]	; TOPS-20 command
   277		104000	000100			OPDEF	CFIBF	[JSYS 100]	; clear TOPS-20 input buffer
   278
   279		001000	000000			OPDEF	PNTOCC	[1B8]		; print n digits leading 0's suppressed
   280		002000	000000			OPDEF	PDECF   [2B8]		; force print decimal number
   281		003000	000000			OPDEF	PNTDCC	[3B8]		; print n digits leading 0's suppressed
   282		004000	000000			OPDEF	PNTDCP	[4B8]		; print n digits leading 0's suppressed
   283		005000	000000			OPDEF	DELAY	[5B8]		; delay for n milliseconds
   284		006000	000000			OPDEF	PDEC    [6B8]		; print decimal number
   285		007000	000000			OPDEF	ALTCHK  [7B8]		; check for altmode character typed
   286		010000	000000			OPDEF	PNTDCL	[10B8]		; print decimal number left justified
   287		027000	000000			OPDEF	SCOPER	[27B8]		; error handler UUO
   288
   289			000000*			LUUO1==.PNTOC			; service routine for n digit octal
   290			000000*			LUUO2==PPDECF			; force print decimal number
   291			000000*			LUUO3==.PNTDC			; service routine for n digit decimal
   292			000000*			LUUO4==.PNTDP			; service routine for n digit decimal
   293			000000*			LUUO5==.DELAY			; delay routine (n milliseconds)
   294			000000*			LUUO6==PPDEC			; print decimal number
   295			000000*			LUUO7==ALTCHH			; check if an altmode was typed
   296			000000*			LUUO10==.PNTDL			; print decimal number left justified
   297			000000*			LUUO27==SCOPE1			; error print routine
   298
   299
   300					;#*********************************************************************
   301					;* Bit Definitions For "SCOPE" UUO Handler - Error Message Printer
   302					;#*********************************************************************
   303
   304		100000	000000			MSG==1B2			; ASCIZ message
   305		200000	000000			CALL==2B2			; call special print routine
   306		300000	000000			GOTO==3B2			; goto (new address of error table)
   307		040000	000000			TXNOT==1B3			; print/call entry if TXTINH not set
   308		020000	000000			TXYES==1B4			; print/call entry if TXTINH set
   309		060000	000000			TXALL==3B4			; print/call entry always
   310		010000	000000			LAST==1B5			; last table entry
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 9
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0117

   311
   312					;#********************************************************************
   313					;* Microword Field Definitions
   314					;
   315					;  These definitions are arranged for the macro which generates pairs
   316					;  of microwords as (addr & parity flags & left 20 bits,right 36 bits).
   317					;  These are of the form:
   318					;
   319					;  Word 1:  Bits 00-11 - Microword load address (0000-7777)
   320					;		 12-35 - Bits 0-23 of microword to load
   321					;  Word 2:  Bits 00-34 - Bits 24-57,59 of microword to load
   322					;	         35 ---- Force Bad Parity flag
   323					;
   324					;  In detail:
   325					;
   326					;  Word 1:  Bits 00-11 - Microword load address
   327					;		 12-23 - MWJMPFLD
   328					;		 24    - MWPAR
   329					;		 25    - MWOUTPUTENA
   330					;		 26-35 - MWMGCFLD
   331					;
   332					;  Word 2:  Bits 00-02 - MWSORCEFLD
   333					;		 03-05 - MWFUNCTFLD
   334					;		 06-08 - MWDESTFLD
   335					;		 09    - MWCCENA
   336					;		 10    - MWRAMODE
   337					;		 11-14 - MWPORTAFLD
   338					;		 15-18 - MWPORTBFLD
   339					;		 19-23 - MWSKIPFLD
   340					;		 24-26 - MWBUSCTLFLD
   341					;		 27    - MWCARRY
   342					;		 28-31 - MWCTRLFLD
   343					;		 32    - MWTIMEFLD
   344					;		 33    - MWSPARE00
   345					;		 34    - MWMARKBIT
   346					;
   347					;		 35    - Force bad parity flag
   348					;
   349					;  The microwords are generated using a set of field  definitions
   350					;  describing how the two words are to be constructed. Each field
   351					;  is defined as a bit position in the first word, a bit position
   352					;  in the right word, and a magnitude describing the size  of the
   353					;  field.  These are defined as follows:
   354					;
   355					;      .Lxxxx - Specifies the rightmost bit position of the field
   356					;		in the left word. If the field does not appear in
   357					;		left word, this will be zero.
   358					;
   359					;      .Rxxxx - Specifies the rightmost bit position of the field
   360					;		in the right word.  If the field  does not appear
   361					;		in right word, this will be zero.
   362					;
   363					;      .Mxxxx - Specifies the maximum magnitude of the  field  in
   364					;		the word.
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 10
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0118

   365
   366					;  The microwords are generated as follows:
   367					;
   368					;  Left word = ((value AND .Mxxxx) times .Lxxxx) ! next field ...
   369					;  Right word = ((value AND .Mxxxx) times .Rxxxx) ! next field ...
   370					;
   371					;  Parity is calculated prior to loading into the CRAM.  The parity
   372					;  bit  may be specified explicitly by specifying EVEN or ODD.  The
   373					;  microcode  loader  will  ensure  that the word has the specified
   374					;  parity.  If not specified, the correct parity will be calculated.
   375					;
   376					;  Sample microword definitions:
   377					;
   378					;  (a) Specify:  J 1000, OUTENA, SORCE fld = 2, DEST fld = 3
   379					;		 load address = 120
   380					;
   381					;      Type:     MWORD	<ADDR=120,J=1000,OENA,SORC=2,DEST=3>
   382					;#********************************************************************
   383
   384		000100	000000			.LADDR==1B11			; MW load address
   385			000000			.RADDR==0
   386			007777			.MADDR==7777
   387
   388			010000			.LJ==1B23			; MW jump field         (00:11)
   389			000000			.RJ==0
   390			007777			.MJ==7777
   391
   392			004000			.LPAR==1B24			; MW parity		(12:12)
   393			000000			.RPAR==0
   394			000001			.MPAR==1
   395
   396			002000			.LOENA==1B25			; MW output enable      (13:13)
   397			000000			.ROENA==0
   398			000001			.MOENA==1
   399
   400			000001			.LMGC==1B35			; MW magic number field (14:23)
   401			000000			.RMGC==0
   402			001777			.MMGC==1777
   403
   404			000000			.LSORC==0			; MW source field       (24:26)
   405		100000	000000			.RSORC==1B2
   406			000007			.MSORC==7
   407
   408			000000				.LSAQ==0		; Source = AQ
   409			000000				.RSAQ==0B2
   410			000007				.MSAQ==7
   411
   412			000000				.LSAB==0		; Source = AB
   413		100000	000000				.RSAB==1B2
   414			000007				.MSAB==7
   415
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 11
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0119

   416			000000				.LS0Q==0		; Source = 0Q
   417		200000	000000				.RS0Q==2B2
   418			000007				.MS0Q==7
   419
   420			000000				.LS0B==0		; Source = 0B
   421		300000	000000				.RS0B==3B2
   422			000007				.MS0B==7
   423
   424			000000				.LS0A==0		; Source = 0A
   425		400000	000000				.RS0A==4B2
   426			000007				.MS0A==7
   427
   428			000000				.LSDA==0		; Source = DA
   429		500000	000000				.RSDA==5B2
   430			000007				.MSDA==7
   431
   432			000000				.LSDQ==0		; Source = DQ
   433		600000	000000				.RSDQ==6B2
   434			000007				.MSDQ==7
   435
   436			000000				.LSD0==0		; Source = D0
   437		700000	000000				.RSD0==7B2
   438			000007				.MSD0==7
   439
   440			000000			.LFUNC==0			; MW function field     (27:29)
   441		010000	000000			.RFUNC==1B5
   442			000007			.MFUNC==7
   443
   444			000000				.LPLUS==0		; R PLUS S function
   445			000000				.RPLUS==0B5
   446			000007				.MPLUS==7
   447
   448			000000				.LSMIN==0		; R MINUS S function
   449		010000	000000				.RSMIN==1B5
   450			000007				.MSMIN==7
   451
   452			000000				.LRMIN==0		; R MINUS S function
   453		020000	000000				.RRMIN==2B5
   454			000007				.MRMIN==7
   455
   456			000000				.LOR==0			; R OR S function
   457		030000	000000				.ROR==3B5
   458			000007				.MOR==7
   459
   460			000000				.LAND==0		; R AND S function
   461		040000	000000				.RAND==4B5
   462			000007				.MAND==7
   463
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 12
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0120

   464			000000				.LNAND==0		; NOT R AND S function
   465		050000	000000				.RNAND==5B5
   466			000007				.MNAND==7
   467
   468			000000				.LXOR==0		; R XOR S function
   469		060000	000000				.RXOR==6B5
   470			000007				.MXOR==7
   471
   472			000000				.LXNOR==0		; R XNOR S function
   473		070000	000000				.RXNOR==7B5
   474			000007				.MXNOR==7
   475
   476			000000			.LD==0				; MW destination field  (30:32)
   477		001000	000000			.RD==1B8
   478			000007			.MD==7
   479
   480			000000			.LCENA==0			; MW CC enable          (33:33)
   481		000400	000000			.RCENA==1B9
   482			000001			.MCENA==1
   483
   484			000000				.LDISA==0		; MW CC disable
   485			000000				.RDISA==0B9
   486			000001				.MDISA==1
   487
   488			000000				.LENA==0		; MW CC enable
   489		000400	000000				.RENA==1B9
   490			000001				.MENA==1
   491
   492			000000			.LRAM==0			; MW RAM mode           (34:34)
   493		000200	000000			.RRAM==1B10
   494			000001			.MRAM==1
   495
   496			000000			.LA==0				; MW Port A field       (35:38)
   497		000010	000000			.RA==1B14
   498			000017			.MA==17
   499
   500			000000			.LB==0				; MW Port B field       (39:42)
   501			400000			.RB==1B18
   502			000017			.MB==17
   503
   504			000000			.LSK==0				; MW skip field         (43:47)
   505			010000			.RSK==1B23
   506			000037			.MSK==37
   507
   508			000000				.LCCON==0		; Select CC 'on' (CCCSRCHNG)
   509			030000				.RCCON==03B23
   510			000037				.MCCON==37
   511
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 13
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0121

   512			000000				.LCCOF==0		; Select CC 'off' (CCGRNTCSR)
   513			010000				.RCCOF==01B23
   514			000037				.MCCOF==37
   515
   516			000000				.LCCCA==0		; Select CCCBUSAVAIL
   517			000000				.RCCCA==0B23
   518			000037				.MCCCA==37
   519
   520			000000				.LCCGC==0		; Select CCGRNTCSR
   521			010000				.RCCGC==01B23
   522			000037				.MCCGC==37
   523
   524			000000				.LCCFZ==0		; Select CCFEQ0
   525			020000				.RCCFZ==02B23
   526			000037				.MCCFZ==37
   527
   528			000000				.LCCCC==0		; Select CCCSRCHNG
   529			030000				.RCCCC==03B23
   530			000037				.MCCCC==37
   531
   532			000000				.LCCEB==0		; Select CCEBPARERR
   533			040000				.RCCEB==4B23
   534			000037				.MCCEB==37
   535
   536			000000				.LCCRA==0		; Select CCRCVATTN
   537			050000				.RCCRA==5B23
   538			000037				.MCCRA==37
   539
   540			000000				.LCCEF==0		; Select CCEOFRAME
   541			060000				.RCCEF==6B23
   542			000037				.MCCEF==37
   543
   544			000000				.LCCXA==0		; Select CCXMTRATTN
   545			070000				.RCCXA==7B23
   546			000037				.MCCXA==37
   547
   548			000000				.LCCER==0		; Select CCEBUSRQST
   549			100000				.RCCER==10B23
   550			000037				.MCCER==37
   551
   552			000000				.LCCIA==0		; Select CCINTRACTIVE
   553			110000				.RCCIA==11B23
   554			000037				.MCCIA==37
   555
   556			000000				.LCCMB==0		; Select CCMBSIGN
   557			120000				.RCCMB==12B23
   558			000037				.MCCMB==37
   559
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 14
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0122

   560			000000				.LCCMP==0		; Select CCMVRPARCHK
   561			130000				.RCCMP==13B23
   562			000037				.MCCMP==37
   563
   564			000000				.LCCCP==0		; Select CCCBUSPARERR
   565			140000				.RCCCP==14B23
   566			000037				.MCCCP==37
   567
   568			000000				.LCCPP==0		; Select CCPLIPARERR
   569			150000				.RCCPP==15B23
   570			000037				.MCCPP==37
   571
   572			000000				.LCCCE==0		; Select CCCHANERR
   573			160000				.RCCCE==16B23
   574			000037				.MCCCE==37
   575
   576			000000				.LCCLW==0		; Select CCCBLSTWD
   577			170000				.RCCLW==17B23
   578			000037				.MCCLW==37
   579
   580			000000				.LLSAD==0		; Load SAD Reg
   581			200000				.RLSAD==20B23
   582			000037				.MLSAD==37
   583
   584			000000				.LSKMB==0		; Select MBUS field
   585			210000				.RSKMB==21B23
   586			000037				.MSKMB==37
   587
   588			000000				.LLDLM==0		; Load Local Mem
   589			230000				.RLDLM==23B23
   590			000037				.MLDLM==37
   591
   592			000000				.LRDLM==0		; Read Local Mem
   593			220000				.RRDLM==22B23
   594			000037				.MRDLM==37
   595
   596			000000				.LSKCN==0		; Select constant field
   597			240000				.RSKCN==24B23
   598			000037				.MSKCN==37
   599
   600			000000			.LBUS==0			; MW bus control field  (48:50)
   601			001000			.RBUS==1B26
   602			000007			.MBUS==7
   603
   604			000000				.LSELP==0		; Select PLI field
   605			001000				.RSELP==1B26
   606			000007				.MSELP==7
   607
   608			000000				.LSELM==0		; Select Mbus field
   609			002000				.RSELM==2B26
   610			000007				.MSELM==7
   611
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 15
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0123

   612			000000				.LSELF==0		; Select Fmtr field
   613			003000				.RSELF==3B26
   614			000007				.MSELF==7
   615
   616			000000				.LSELC==0		; Select Cbus field
   617			004000				.RSELC==4B26
   618			000007				.MSELC==7
   619
   620			000000				.LSELE==0		; Select Ebus field
   621			005000				.RSELE==5B26
   622			000007				.MSELE==7
   623
   624			000000			.LCRY==0			; MW carry              (51:51)
   625			000400			.RCRY==1B27
   626			000001			.MCRY==1
   627
   628			000000			.LOP==0				; MW control field      (52:55)
   629			000020			.ROP==1B31
   630			000017			.MOP==17
   631
   632			000000				.LJZ==0			; Jump zero instruction
   633			000000				.RJZ==00B31
   634			000017				.MJZ==17
   635
   636			000000				.LCJS==0		; Conditional JSB pipeline instruction
   637			000020				.RCJS==01B31
   638			000017				.MCJS==17
   639
   640			000000				.LJMAP==0		; Jump MAP instruction
   641			000040				.RJMAP==02B31
   642			000017				.MJMAP==17
   643
   644			000000				.LCJP==0		; Conditional jump pipeline instruction
   645			000060				.RCJP==03B31
   646			000017				.MCJP==17
   647
   648			000000				.LPUSH==0		; Push/cond load counter instruction
   649			000100				.RPUSH==04B31
   650			000017				.MPUSH==17
   651
   652			000000				.LJSRP==0		; Cond JSB R/Pipeline instruction
   653			000120				.RJSRP==05B31
   654			000017				.MJSRP==17
   655
   656			000000				.LCJV==0		; Conditional jump vector instruction
   657			000140				.RCJV==06B31
   658			000017				.MCJV==17
   659
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 16
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0124

   660			000000				.LJRP==0		; Cond jump R/Pipeline instruction
   661			000160				.RJRP==07B31
   662			000017				.MJRP==17
   663
   664			000000				.LRFCT==0		; Repeat loop, counter#0 instruction
   665			000200				.RRFCT==10B31
   666			000017				.MRFCT==17
   667
   668			000000				.LRPCT==0		; Repeat pipeline, counter#0 instr
   669			000220				.RRPCT==11B31
   670			000017				.MRPCT==17
   671
   672			000000				.LCRTN==0		; Conditional RTN instruction
   673			000240				.RCRTN==12B31
   674			000017				.MCRTN==17
   675
   676			000000				.LCJPP==0		; Cond jump pipeline and pop instr
   677			000260				.RCJPP==13B31
   678			000017				.MCJPP==17
   679
   680			000000				.LLDCT==0		; Load counter and continue instruction
   681			000300				.RLDCT==14B31
   682			000017				.MLDCT==17
   683
   684			000000				.LLOOP==0		; Test end loop instruction
   685			000320				.RLOOP==15B31
   686			000017				.MLOOP==17
   687
   688			000000				.LCONT==0		; Continue instruction
   689			000340				.RCONT==16B31
   690			000017				.MCONT==17
   691
   692			000000				.LTWB==0		; Three way branch instruction
   693			000360				.RTWB==17B31
   694			000017				.MTWB==17
   695
   696			000000			.LTIM==0			; time field
   697			000010			.RTIM==1B32
   698			000001			.MTIM==1
   699
   700			000000			.LSPAR==0			; 1st spare bit
   701			000004			.RSPAR==1B33
   702			000001			.MSPAR==1
   703
   704			000000			.LMARK==0			; mark bit
   705			000002			.RMARK==1B34
   706			000001			.MMARK==1
   707
   708			000000			.LBAD==0			; force bad parity
   709			000001			.RBAD==1B35
   710			000001			.MBAD==1
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 17
DFNIAT	MAC	14-Feb-84 16:51		DFNIA TITLE FILE                                                                   SEQ 0125

   711
   712					;#********************************************************************
   713					;* Microword Macros (Note: If ADDR not specified, 'ADDR'+1 is used).
   714					;
   715					;  Left word = ((value AND .Mxxxx) times .Lxxxx) ! next field ...
   716					;  Right word = ((value AND .Mxxxx) times .Rxxxx) ! next field ...
   717					;
   718					;  Samples:	MWORD	<J=1000,OENA,SORC=2,DEST=3>
   719					;		MWORD	<J=0,OENA,SORC=2,DEST=3>
   720					;#********************************************************************
   721
   722					; CALC - Insert field value into the microwords under construction
   723
   724						DEFINE	CALC($ARG1)<
   725						IFE .L'$ARG1-1B11,<%ADDR==$ARG2>
   726						IFN .L'$ARG1-1B11,<%ML=%ML!<<$ARG2&.M'$ARG1>*.L'$ARG1>
   727								   %MR=%MR!<<$ARG2&.M'$ARG1>*.R'$ARG1>>>
   728
   729					; CONCAT - Build string argument
   730
   731						DEFINE	CONCAT($A)<
   732						$B=<SIXBIT /$A/>_-36		; get right justified character in
   733						$CHR=$CHR_6+$B>			;   octal and accumulate in string
   734
   735					; FIELD - Decode argument in the form XXXX=NNNN into XXXX and NNNN
   736
   737						DEFINE	FIELD($ARG)<
   738						$CHR=0				; init string argument
   739						$GARG=0				; init numeric argument
   740						IRPC $ARG,<IFN $GARG,<$ARG2=$ARG2*8+$ARG>
   741							  IFIDN "=",$ARG,<$GARG=1
   742									 $ARG2=0>
   743							  IFE $GARG,<CONCAT $ARG>
   744							  IFE $GARG,<$ARG2=1>>
   745						CALC \'$CHR>			; enter into microword
   746
   747					; MWORD - Build microwords
   748
   749						DEFINE	MWORD ($FLD)<
   750						%ML==0				; init left word
   751						%MR==0				; init right word
   752						IRP $FLD,<DEFINE MFLD($A)<FIELD $A>
   753							 MFLD	$FLD>
   754						%ML==%ML!%ADDR_^D24
   755						%ADDR==%ADDR+1
   756						EXP	%ML,%MR>		; done
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 1
PARAM	KLM	18-Sep-79 17:16		*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, SEPT 18,1979                              SEQ 0126

   757					SUBTTL	*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, SEPT 18,1979
   758
   759					DEFINE	S,<; *********************************************************************>
   760
   761					; **********************************************************************
   762					;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE)
   763					;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE
   764					;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS
   765					; **********************************************************************
   766
   767			400000		ABORT==	400000			;ABORT PROGRAM ON PASS COMPLETION
   768			200000		RSTART==200000			;RESTART TEST, PRINT TOTALS
   769			100000		TOTALS==100000			;PRINT TOTALS, CONTINUE
   770
   771			040000		NOPNT==	040000			;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED)
   772			020000		PNTLPT==020000			;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE)
   773			010000		DING==	010000			;RING BELL ON ERROR
   774
   775			004000		LOOPER==004000			;ENTER EXERCISE/CHECK LOOP ON ERROR
   776			002000		ERSTOP==002000			;HALT ON TEST ERROR
   777			001000		PALERS==001000			;PRINT ALL ERRORS
   778
   779			000400		RELIAB==000400			;RELIABILITY MODE
   780			000200		TXTINH==000200			;INHIBIT ERROR TEXT
   781			000100		INHPAG==000100			;INHIBIT PAGING
   782
   783			000040		MODDVC==000040			;MODIFY DEVICE CODE
   784			000020		INHCSH==000020			;INHIBIT CACHE
   785			000010		OPRSEL==000010			;OPERATOR SELECTION
   786
   787			000004		CHAIN==	000004			;CHAIN CONTROL SWITCH
   788
   789			000002		KAHZ50==000002			;KA10 50 HERTZ POWER
   790
   791									;SWITCH 17 RESERVED !!!
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 2
PARAM	KLM	18-Sep-79 17:16		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979                                SEQ 0127

   792					SUBTTL	*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979
   793
   794					; **********************************************************************
   795					;*SPECIAL SUBPROGRAM LINKAGES
   796					; **********************************************************************
   797
   798			027772		FSELNK=	27772	;FILE SELECT LINK
   799			027773		FRDLNK=	27773	;FILE READ LINK
   800			027774		LDLNK=	27774	;LOAD LINKAGE ADDRESS
   801			027775		DDTLNK=	27775	;DDT LINKAGE ADDRESS
   802			027776		MODLNK=	27776	;OPERATIONAL MODE CHECK LINKAGE ADDRESS
   803			027777		SUBLNK=	27777	;SUBROUTINE LINKAGE ADDRESS
   804
   805					; **********************************************************************
   806					;*SPECIAL SUBROUTINE FATAL HALTS
   807					;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE
   808					; **********************************************************************
   809
   810					;ADDRESS   TAG	REASON
   811					;---------------------
   812
   813					; 1010 	NOEXEC	;PROGRAM NOT CODED FOR EXEC MODE OPERATION
   814					; 1011  PLERR	;FATAL PUSH LIST POINTER ERROR
   815					; 1012  PLERR1	;INITIAL PUSH LIST POINTER ERROR
   816					; 1013  MUOERR	;MUUO WITH LUUO HANDLER WIPED OUT
   817					; 1014  DTEBER	;DTE20 INTERRUPT WITHOUT DOORBELL
   818					; 1015  DTECER	;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET
   819					; 1016  CPIERR	;CPU INITIALIZATION ERROR
   820					; 1017  EOPERR	;END OF PROGRAM ERROR
   821					; 1020  LUOERR	;INTERRUPT WITH LUUO HANDLER WIPED OUT
   822
   823					; **********************************************************************
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 3
PARAM	KLM	18-Sep-79 17:16		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979                                SEQ 0128

   824					; **********************************************************************
   825					;OPERATOR DEFINITIONS (NON-UUO'S)
   826					; **********************************************************************
   827
   828		260740	000000		OPDEF	GO	[PUSHJ	P,]	;SUBROUTINE CALL
   829		263740	000000		OPDEF	RTN	[POPJ	P,]	;SUBROUTINE RETURN 
   830		261740	000000		OPDEF	PUT	[PUSH	P,]	;PUT DATA ON PUSH LIST
   831		262740	000000		OPDEF	GET	[POP	P,]	;GET DATA FROM PUSH LIST 
   832		254000	000000		OPDEF	PJRST	[JRST	]	;JRST TO ROUTINE THAT RTN'S
   833		254200	000000		OPDEF	HALT	[JRST	4,]	;DEFINITION FOR DDT
   834		254100	000000		OPDEF	JRSTF	[JRST	2,]	;DEFINITION FOR DDT
   835		254500	000000		OPDEF	JEN	[JRST	12,]	;DEFINITION FOR DDT
   836
   837					; **********************************************************************
   838					;SUBROUTINE INITIALIZATION CALL
   839					; **********************************************************************
   840
   841		265000	030011		OPDEF	PGMINT	[JSP	0,SBINIT]	;SUBROUTINE INITIALIZATION
   842
   843					; **********************************************************************
   844					;HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION).
   845					; **********************************************************************
   846
   847		037640	000004		OPDEF	FATAL	[37B8!15B12!4]	;FATAL PROGRAMMING HALT
   848		037600	000004		OPDEF	ERRHLT	[37B8!14B12!4]	;PROGRAM ERROR HALT
   849
   850					; **********************************************************************
   851					;TERMINAL INPUT UUO'S
   852					;ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE
   853					;CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE.
   854					; **********************************************************************
   855
   856		037000	000003		OPDEF	TTICHR 	[37B8!0B12!3]	;TTY, INPUT ANY CHARACTER
   857		037040	000003		OPDEF	TTIYES	[37B8!1B12!3]	;TTY, NORMAL RETURN Y
   858		037100	000003		OPDEF	TTINO	[37B8!2B12!3]	;TTY, NORMAL RETURN N
   859		037140	000003		OPDEF	TTIOCT	[37B8!3B12!3]	;TTY, INPUT OCTAL WORD
   860		037200	000003		OPDEF	TTIDEC	[37B8!4B12!3]	;TTY, INPUT DECIMAL WORD
   861		037240	000003		OPDEF	TTICNV	[37B8!5B12!3]	;TTY, INPUT CONVERTABLE WORD
   862		037300	000003		OPDEF	TTLOOK	[37B8!6B12!3]	;TTY, KEYBOARD CHECK
   863		037340	000003		OPDEF	TTALTM	[37B8!7B12!3]	;TTY, ALT-MODE CHECK
   864		037400	000003		OPDEF	TTSIXB	[37B8!10B12!3]	;TTY, INPUT SIXBIT WORD
   865		037440	000003		OPDEF	TTYINP	[37B8!11B12!3]	;TTY, IMAGE MODE INPUT
   866		037500	000003		OPDEF	TTICLR	[37B8!12B12!3]	;TTY, CLEAR INPUT
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 4
PARAM	KLM	18-Sep-79 17:16		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979                                SEQ 0129

   867					;TERMINAL OUTPUT UUO'S.
   868
   869		037000	000000		OPDEF	PNTA	[37B8!0B12!0]	;PRINT ASCII WORD
   870		037000	000001		OPDEF	PNTAF	[37B8!0B12!1]	;PRINT ASCII WORD FORCED
   871		037740	000000		OPDEF	PNTAL	[37B8!17B12!0]	;PRINT ASCIZ LINE
   872		037740	000001		OPDEF	PNTALF	[37B8!17B12!1]	;PRINT ASCIZ LINE FORCED
   873		037600	000003		OPDEF	PSIXL	[37B8!14B12!3]	;PRINT SIXBIT'Z LINE
   874		037640	000003		OPDEF	PSIXLF	[37B8!15B12!3]	;PRINT SIXBIT'Z LINE FORCED
   875		037000	000000		OPDEF	PNTMSG	[37B8!0B12!0]	;PRINT MESSAGE IMMEDIATE
   876		037040	000000		OPDEF	PNTMSF	[37B8!1B12!0]	;PRINT MESSAGE IMMEDIATE FORCED
   877		037100	000000		OPDEF	PSIXM	[37B8!2B12!0]	;PRINT SIXBIT'Z MSG IMMEDIATE
   878		037200	000000		OPDEF	PSIXMF	[37B8!4B12!0]	;PRINT SIXBIT'Z MSG IMM FORCED
   879		037000	000000		OPDEF	PNTCI	[37B8!0B12!0]	;PRINT CHARACTER IMMEDIATE
   880		037040	000000		OPDEF	PNTCIF	[37B8!1B12!0]	;PRINT CHARACTER IMMEDIATE FORCED
   881		037500	000000		OPDEF	PNTCHR	[37B8!12B12!0]	;PRINT CHARACTER
   882		037500	000001		OPDEF	PNTCHF	[37B8!12B12!1]	;PRINT CHARACTER FORCED
   883		037040	000000		OPDEF	PNT1	[37B8!1B12!0]	;PRINT ONE OCTAL DIGIT
   884		037040	000001		OPDEF	PNT1F	[37B8!1B12!1]	;PRINT 1 OCTAL DIGIT FORCED	
   885		037100	000000		OPDEF	PNT2	[37B8!2B12!0]	;PRINT TWO OCTAL DIGITS
   886		037100	000001		OPDEF	PNT2F	[37B8!2B12!1]	;PRINT 2 OCTAL DIGITS FORCED	
   887		037140	000000		OPDEF	PNT3	[37B8!3B12!0]	;PRINT THREE OCTAL DIGITS
   888		037140	000001		OPDEF	PNT3F	[37B8!3B12!1]	;PRINT THREE OCTAL DIGITS FORCED	
   889		037200	000000		OPDEF	PNT4	[37B8!4B12!0]	;PRINT FOUR OCTAL DIGITS
   890		037200	000001		OPDEF	PNT4F	[37B8!4B12!1]	;PRINT FOUR OCTAL DIGITS FORCED
   891		037240	000000		OPDEF	PNT5	[37B8!5B12!0]	;PRINT FIVE OCTAL DIGITS
   892		037240	000001		OPDEF	PNT5F	[37B8!5B12!1]	;PRINT FIVE OCTAL DIGITS FORCED
   893		037300	000000		OPDEF	PNT6	[37B8!6B12!0]	;PRINT SIX OCTAL DIGITS
   894		037300	000001		OPDEF	PNT6F	[37B8!6B12!1]	;PRINT SIX OCTAL DIGITS FORCED
   895		037340	000000		OPDEF	PNT7	[37B8!7B12!0]	;PRINT 7 OCTAL DIGITS
   896		037340	000001		OPDEF	PNT7F	[37B8!7B12!1]	;PRINT 7 OCTAL DIGITS FORCED
   897		037440	000000		OPDEF	PNT11	[37B8!11B12!0]	;PRINT 11 OCTAL DIGITS
   898		037440	000001		OPDEF	PNT11F	[37B8!11B12!1]	;PRINT 11 OCTAL DIGITS FORCED.
   899		037400	000000		OPDEF	PNTADR	[37B8!10B12!0]	;PRINT PHYSICAL ADDRESS
   900		037400	000001		OPDEF	PNTADF	[37B8!10B12!1]	;PRINT PHYSICAL ADDRESS FORCED
   901		037600	000000		OPDEF	PNTOCT  [37B8!14B12!0]	;PRINT FULL WORD OCTAL
   902		037600	000001		OPDEF	PNTOTF	[37B8!14B12!1]	;PRINT FULL WORD OCTAL FORCED
   903		037540	000000		OPDEF	PNTHW	[37B8!13B12!0]	;PRINT OCTAL HALF WORDS, 6 SP 6
   904		037540	000001		OPDEF	PNTHWF	[37B8!13B12!1]	;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED
   905		037700	000003		OPDEF	PNTOCS	[37B8!16B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S
   906		037740	000003		OPDEF	PNTOCF	[37B8!17B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED
   907		037640	000000		OPDEF	PNTDEC	[37B8!15B12!0]	;PRINT DECIMAL, SUPRESS LEADING 0'S
   908		037640	000001		OPDEF	PNTDCF	[37B8!15B12!1]	;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED
   909		037700	000000		OPDEF	PNTDS	[37B8!16B12!0]	;PRINT DECIMAL, SPACES FOR LD 0'S
   910		037700	000001		OPDEF	PNTDSF	[37B8!16B12!1]	;PRINT DECIMAL, SPACES FOR LD 0'S FORCED
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 5
PARAM	KLM	18-Sep-79 17:16		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979                                SEQ 0130

   911		037200	000002		OPDEF	PNTNM	[37B8!4B12!2]	;PRINT PROGRAM NAME
   912		037000	000002		OPDEF	PNTSIX	[37B8!0B12!2]	;PRINT SIXBIT WORD
   913		037040	000002		OPDEF	PNTSXF	[37B8!1B12!2]	;PRINT SIXBIT WORD FORCED
   914		037240	000002		OPDEF	DROPDV	[37B8!5B12!2]	;CLOSE LOGICAL FILE, USER MODE
   915		037100	000002		OPDEF	PNTCW	[37B8!2B12!2]	;PRINT DF10 CONTROL WORD
   916		037140	000002		OPDEF	PNTCWF	[37B8!3B12!2]	;PRINT DF10 CONTROL WORD FORCED
   917		037000	030242		OPDEF	PCRL	[37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED
   918		037040	030242		OPDEF	PCRLF	[37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED
   919		037000	000040		OPDEF	PSP	[37B8!0B12!40]	;PRINT SPACE
   920		037040	000040		OPDEF	PSPF	[37B8!1B12!40]	;PRINT SPACE FORCED
   921		037000	030243		OPDEF	PCRL2	[37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE)
   922		037040	030243		OPDEF	PCRL2F	[37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED
   923		037040	000007		OPDEF	PBELL	[37B8!1B12!7]	;PRINT TTY BELL
   924
   925		037040	000026		OPDEF	PFORCE	[37B8!1B12!26]	;PRINT FORCE, CONTROL O OVERRIDE
   926
   927					DEFINE	PMSG	(ARG),<
   928						PSIXM	[SIXBIT\ARG'_\]>
   929
   930					DEFINE	PMSGF	(ARG),<
   931						PSIXMF	[SIXBIT\ARG'_\]>
   932
   933					;SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING
   934					;	CONSERVES CORE OVER ASCIZ
   935
   936					DEFINE	SIXBTZ	(ARG),<	[SIXBIT\ARG'_\]>
   937
   938					;CONSOLE SWITCH INPUT UUO.
   939					;READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF
   940					; USER MODE.
   941
   942		037400	000002		OPDEF	SWITCH	[37B8!10B12!2]	;INPUT CONSOLE SWITCHES
   943
   944					;CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION
   945					;EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR.
   946
   947		037540	000004		OPDEF	CLOKOP	[37B8!13B12!4]	;CLOCK OPERATION UUO - PDP-11 CLOCK
   948		037200	000004		OPDEF	MTROP	[37B8!4B12!4]	;CLOCK OPERATION UUO - DK20 METER
   949
   950					;KL10 ONLY CACHE OPERATION UUO'S
   951
   952		037040	000004		OPDEF	CINVAL	[37B8!1B12!4]	;CACHE INVALIDATE
   953		037100	000004		OPDEF	CFLUSH	[37B8!2B12!4]	;CACHE FLUSH
   954		037140	000004		OPDEF	CWRTBI	[37B8!3B12!4]	;CACHE WRITE-BACK & INVALIDATE
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 6
PARAM	KLM	18-Sep-79 17:16		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979                                SEQ 0131

   955					;END OF PASS/PROGRAM UUOS
   956
   957					;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT,
   958					;DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC.
   959
   960		037500	000004		OPDEF	ENDUUO	[37B8!12B12!4]	;UUO TO DISPLAY LIGHTS
   961		037700	000004		OPDEF	EOPUUO	[37B8!16B12!4]	;END OF PROGRAM UUO
   962
   963					;MEMORY MANAGEMENT UUO'S
   964					;UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING,
   965					;ADDRESS CONVERSION, ETC...
   966
   967		037000	000004		OPDEF	MAPMEM	[37B8!0B12!4]	;MAP MEMORY
   968		037500	000002		OPDEF	MEMZRO	[37B8!12B12!2]	;ZERO MEMORY
   969		037440	000002		OPDEF	MEMSEG	[37B8!11B12!2]	;SETUP MEMORY SEGMENT
   970		037540	000002		OPDEF	MAPADR	[37B8!13B12!2]	;VIRTUAL TO PHYSICAL ADR CONVERT
   971		037640	000002		OPDEF	MAPCNK	[37B8!15B12!2]	;MAP MEMORY CHUNK
   972		037600	000002		OPDEF	MAPSET	[37B8!14B12!2]	;SET KI10 EXEC PAGE MAP
   973		037740	000002		OPDEF	MAPPNT	[37B8!17B12!2]	;PRINT MEMORY MAP
   974
   975					;DEVICE CODE MODIFICATION UUO
   976					;ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO
   977					;IOT'S TO A DIFFERENT DEVICE CODE.
   978
   979		037340	000002		OPDEF	MODPCU	[37B8!7B12!2]	;MODIFY PERHIPERAL CODE, USER
   980		037300	000002		OPDEF	MODPCP	[37B8!6B12!2]	;MODIFY PERHIPERAL CODE, PROGRAM
   981
   982			030000			IFNDEF	MODDVL,<MODDVL==BEGIN>
   983			030000			IFNDEF	MODDVU,<MODDVU==BEGIN>
   984
   985					;"DIAMON" FILE SELECTION AND READ UUOS
   986
   987		037240	000004		OPDEF	FSELECT	[37B8!5B12!4]	;FILE SELECTION
   988		037300	000004		OPDEF	FREAD	[37B8!6B12!4]	;FILE READ - ASCII DATA
   989		037340	000004		OPDEF	FRD36	[37B8!7B12!4]	;FILE READ - 36 BIT DATA
   990		037400	000004		OPDEF	FRD8	[37B8!10B12!4]	;FILE READ - 8 BIT DATA
   991
   992					;KI10 ONLY UUO FOR PRINTING MARGIN VALUES
   993
   994		037700	000002		OPDEF	PNTMGN	[37B8!16B12!2]	;PRINT MARGIN VALUE
   995
   996						XLIST
   997					IFNDEF	KLOLD,<LIST
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 7
PARAM	KLM	18-Sep-79 17:16		ERROR HANDLING UUO DEFINITIONS, SEPT 18,1979                                       SEQ 0132

   998					SUBTTL	ERROR HANDLING UUO DEFINITIONS, SEPT 18,1979
   999
  1000					; **********************************************************************
  1001					;ERROR HANDLER PARAMETERS
  1002					; **********************************************************************
  1003
  1004		036000	000000		OPDEF	ERUUO	[36B8]		;ERROR CALL UUO
  1005		035000	000000		OPDEF	ERLOOP	[35B8]		;ERROR LOOP, CHECKS PC,REPT,REPT1,ERROR
  1006		035040	000000		OPDEF	ERLP1	[35B8!1B12]	;ERROR LOOP IF PC'S MATCH
  1007		035100	000000		OPDEF	ERLP2	[35B8!2B12]	;ERROR LOOP IF ANY ERROR
  1008		034000	000000		OPDEF	REPTUO	[34B8]		;REPEAT LOOP UUO
  1009
  1010					;THE ERROR HANDLER MACROS
  1011
  1012					;A MACRO TO REPORT AN ERROR AND LOOP
  1013
  1014						DEFINE	ERROR	(ADR,FORMAT,CORECT,ACTUAL,F,D,ERR)<
  1015												SALL
  1016						ERUUO	FORMAT,[T,,[SIXBIT\F'_\]
  1017							   CORECT,,ACTUAL
  1018							   [SIXBIT\D'_\],,ERR]
  1019												XALL
  1020						ERLOOP	ADR		;IF ERROR, LOOP TO ADR
  1021					>
  1022
  1023					;A MACRO TO REPORT AN ERROR AND NOT LOOP
  1024
  1025						DEFINE	ERROR1	(FORMAT,CORECT,ACTUAL,F,D,ERR)<
  1026												SALL
  1027						ERUUO	FORMAT,[T,,[SIXBIT\F'_\]
  1028							   CORECT,,ACTUAL
  1029							   [SIXBIT\D'_\],,ERR]
  1030												XALL>
  1031
  1032					>;END OF KLOLD CONDITIONAL
  1033
  1034						XLIST
  1035						LIST
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 1
FIXED	KLM	18-Sep-79 17:18		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979                           SEQ 0133

  1036					SUBTTL	*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979
  1037
  1038	030000					LOC	30000
  1039
  1040					; **********************************************************************
  1041					;PROGRAM STARTING ADDRESSES
  1042					;THESE ADDRESSES CALL VARIOUS SPECIAL START ROUTINES AND OR OPTIONS
  1043					;NORMAL START ADDRESS IS 30000 ALL OTHERS ARE SPECIAL. INVOKED BECAUSE
  1044					;OF END OF PASS, POWER FAILURE, DDT START, RE-ENTERING(TYPICALLY USER
  1045					;MODE), OR ANY NUMBER OF SPECIAL FEATURE TESTS.
  1046					; **********************************************************************
  1047
  1048	030000	254 00 1 00 027776 	BEGIN:	JRST	@MODLNK		;STAND-ALONE START
  1049	030001	254 00 0 00 000000*	$START:	JRST	START		;MODE CHECK STARTING ADDRESS
  1050
  1051	030002	254 00 1 00 027774 	DIAGMN:	JRST	@LDLNK		;DIAGNOSTIC MONITOR START
  1052
  1053	030003	254 00 1 00 027774 	SYSEXR:	JRST	@LDLNK		;SYSTEM EXERCISER START
  1054
  1055	030004	254 00 0 00 030000 	SFSTRT:	JRST	SADR1		;SPECIAL FEATURE START
  1056
  1057	030005	254 00 0 00 030000 	PFSTRT:	JRST	SADR2		;POWER FAIL RESTART
  1058
  1059	030006	254 00 0 00 030000 	REENTR:	JRST	SADR3		;REENTER START(USUALLY USER MODE ONLY)
  1060
  1061	030007				SRTDDT:				;COMMONLY MISTAKEN NAME FOR "DDTSRT"
  1062	030007	254 00 1 00 027775 	DDTSRT:	JRST	@DDTLNK		;DDT START
  1063
  1064	030010	254 00 0 00 000000*	BEGIN1:	JRST	STARTA		;LOOP START(END OF PASS COMES HERE)
  1065	030011	254 00 1 00 027777 	SBINIT:	JRST	@SUBLNK		;PMGINT LINKAGE
  1066	030012	000000	000000		RETURN:	0			;RETURN ADDRESS STORAGE
  1067
  1068	030013	254200	030001*		START1:	SADR7			;OPTIONAL STARTING ADR/INSTRUCTIONS
  1069	030014	254200	030013*		START2:	SADR8			; "
  1070	030015	254200	030014*		START3:	SADR9			; "
  1071	030016	254200	030015*		START4:	SADR10			; "
  1072	030017	254200	030016*		START5:	SADR11			; "
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 2
FIXED	KLM	18-Sep-79 17:18		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979                           SEQ 0134

  1073					; **********************************************************************
  1074					;PROGRAM FIXED PARAMETER AREA
  1075					; **********************************************************************
  1076
  1077	030020	444656	514100		PNTNAM:	PAREA3		;SIXBIT PROGRAM NAME
  1078	030021	605664	000000		PNTEXT:	PAREA4		;SIXBIT PROGRAM EXTENSION
  1079	030022	711523	655207		RANDBS:	PAREA1		;RANDOM BASE NUMBER
  1080	030023	000000	000000		SWTEXR:	PAREA2		;SYSTEM EXERCISER SWITCHES
  1081	030024	000000	000005		ITRCNT:	ITERAT		;PROGRAM ITERATIONS
  1082	030025	000000000000#		$PNAME:	PGMNAM		;POINTER TO PROGRAMS NAME
  1083	030026	000000	000002		$PVER:	MCNVER,,DECVER	;MCN & DEC VERSION LEVEL
  1084	030027	000000	030000		$MODVL:	MODDVL		;DEVICE CODE CHANGE LOWER LIMIT
  1085	030030	000000	030000		$MODVU:	MODDVU		;DEVICE CODE CHANGE UPPER LIMIT
  1086	030031	777777	777777		$EMODE:	IFNDEF EXCASB,<0> IFDEF EXCASB,<-1>	;EXEC ALLOWED
  1087	030032	777777	777777		$UMODE:	IFNDEF USRASB,<0> IFDEF USRASB,<-1>	;USER ALLOWED
  1088	030033	000000	000000		$DSKUP:	IFNDEF DSKUPD,<0> IFDEF DSKUPD,<-1>	;DISK UPDATE MODE
  1089	030034	777777	777777		$MMAP:	IFNDEF MEMMAP,<0> IFDEF MEMMAP,<-1>	;ALLOW MEMORY RTNS
  1090	030035	000000	000000		PAREA7:	PAREA5		;OPTIONAL PARAMETER
  1091	030036	000000	000000		PAREA8:	PAREA6		;OPTIONAL PARAMETER
  1092
  1093					; **********************************************************************
  1094					;PROGRAM VARIABLE PARAMETER AREA
  1095					; **********************************************************************
  1096
  1097	030037	000000	000000		USER:	0		; 0 = EXEC, -1 = USER MODE FLAG
  1098	030040	000000	000000		KAIFLG:	0		;PROCESSOR TYPE, 0 = KA10, -1 = KI10
  1099	030041	000000	000000		KLFLG:	0		;PROCESSOR TYPE, 0 = KA/KI, -1 = KL10
  1100	030042	777777	777777		MONFLG:	-1		;DIAG MONITOR SPECIAL USER FLAG
  1101	030043	000000	000000		MONCTL:	0		;DIAG MON/SYS EXR FLAG
  1102	030044	000000	000000		MONTEN:	0		;-1= LOADED BY 10
  1103	030045	000000	000000		CLOCKF:	0		;CLOCK TICKED FLAG
  1104	030046	000000	000000		CONSW:	0		;CONSOLE SWITCH SETTINGS
  1105	030047	000000	000000		PASCNT:	0		;PROGRAM PASS COUNT
  1106	030050	000000	000000		RUNFLG:	0		;PROGRAM RUN FLAG
  1107	030051	000000	000000		TESTPC:	0		;SUBTEST PC
  1108	030052	000000	000000		ERRPC:	0		;ERROR PC
  1109	030053	000000	000000		ERRTLS:	0		;ERROR TOTALS
  1110	030054	000000	000000		TICKS:	0		;PROGRAM RUNNING TIME
  1111	030055	000000	000000		MARGIN:	0		;KI10 MARGIN WORD VALUE
  1112	030056	000000	000000		$ONETM:	0		;SUBROUTINE INITIALIZATION FLAG
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 3
FIXED	KLM	18-Sep-79 17:18		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979                           SEQ 0135

  1113					; **********************************************************************
  1114					;SPECIAL PROGRAM DISPATCH ADDRESSES
  1115					; **********************************************************************
  1116
  1117	030057	037 12 0 00 000004 	BEGEND:	ENDUUO		;END OF PASS
  1118	030060	254 00 0 00 030010 	$BEND1:	JRST	BEGIN1	;KEEP RUNNING PROGRAM
  1119	030061	037 16 0 00 000004 	$BEND2:	EOPUUO		;END OF PROGRAM - NO RETURN
  1120	030062	000000000000#		CNTLC:	SADR5		;CONTROL C XFER ADDRESS
  1121	030063	000000	030007		ALTMGO:	SADR6		;ALTMODE XFER ADDRESS
  1122	030064				CPOPJ1:			;SKIP RETURN
  1123	030064	350 00 0 17 000000 	UUOSKP:	AOS	(P)	;SKIP RETURN FROM UUO
  1124	030065				CPOPJ:			;NON-SKIP REGULAR RETURN
  1125	030065	263 17 0 00 000000 	UUOEXT:	RTN		;UUO RETURN
  1126	030066	255 00 0 00 000000 	UUORTN:	JFCL		;ADDITIONAL USERS UUO ROUTINE
  1127	030067	255 00 0 00 000000 	$UORTX:	JFCL		;ADDITIONAL UUO LINKAGE
  1128	030070	255 00 0 00 000000 	$UUOER:	JFCL		;INITED AS (JRST $UOERX)
  1129	030071	255 00 0 00 000000 	$ITRHL:	JFCL		;ADDITIONAL INTERRUPT LINKAGE
  1130	030072	255 00 0 00 000000 	$ITRX1:	JFCL		; "
  1131	030073	255 00 0 00 000000 	$USRHL:	JFCL		; "
  1132	030074	255 00 0 00 000000 	$RSRTX:	JFCL		;ADDITIONAL POWER FAIL LINKAGE
  1133	030075	255 00 0 00 000000 	$RSRTY:	JFCL		; "
  1134	030076	255 00 0 00 000000 	RESRT1:	JFCL		; INITED AS (JRST RESRTX)
  1135	030077	255 00 0 00 000000 	RESRT2:	JFCL		; "
  1136	030100	255 00 0 00 000000 	$PARER:	JFCL		;ADDITIONAL PARITY ERROR LINKAGE
  1137	030101	255 00 0 00 000000 	ERMORE:	JFCL		;ADDITIONAL ERROR HANDLER LINKAGE
  1138	030102	254 04 0 00 030102 		HALT	.	;IMPROPER TRANSFER HALT
  1139
  1140	030103	000000	000000		$PSHER:	0		;INITED AS (JRST PSHERR)
  1141	030104	000000	000000		ITRCH1:	0		;PC & FLAGS OF CURRENT INTERRUPT
  1142	030105	000000	000000			0		;INITED AS (JRST $ITRC1)
  1143
  1144					; **********************************************************************
  1145					;PROCESSOR CONTROL STORAGE
  1146					; **********************************************************************
  1147
  1148	030106	000000	000000		$ACC0:	0		;INTERRUPT SAVED AC0
  1149	030107	000000	000000		$SVPI:	0		;INTERRUPT SAVED PI
  1150	030110	000000	000000		$SVAPR:	0		;INTERRUPT SAVED APR
  1151	030111	000000	000000		$SVPAG:	0		;INTERRUPT SAVED PAG (DATAI)
  1152	030112	000000	000000		$SPAG1:	0		;INTERRUPT SAVED PAG (CONI)
  1153
  1154	030113	000000	000000		$SVUUO:	0		;CURRENT USERS UUO
  1155	030114	000000	000000		$SVUPC:	0		;PC OF CURRENT USERS UUO
  1156
  1157	030115	000000	000000		REPTU:	0		;REPEAT UUO ITERATIONS
  1158	030116	000000	000000		SCOPE:	0		;ERROR HANDLER SCOPE LOOP FLAG
  1159	030117	000000	000000		%CORFLG:0		; " CORRECT FLAG
  1160	030120	000000	000000		%COREC:	0		; " CORRECT DATA
  1161	030121	000000	000000		%ACTFL:	0		; " ACTUAL FLAG
  1162	030122	000000	000000		%ACTUL:	0		; " ACTUAL DATA
  1163	030123	000000	000000		%DISCR:	0		; " DISCREPENCY DATA
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 4
FIXED	KLM	18-Sep-79 17:18		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979                           SEQ 0136

  1164					; **********************************************************************
  1165					;UUO DISPATCH TABLE
  1166					; **********************************************************************
  1167						XLIST
  1168						LIST
  1169	030124	000000*	030070		UUODIS:	LUUO1,,$UUOER
  1170	030125	000000*	000000*			LUUO3,,LUUO2
  1171	030126	000000*	000000*			LUUO5,,LUUO4
  1172	030127	000000*	000000*			LUUO7,,LUUO6
  1173	030130	030070	000000*			LUUO11,,LUUO10
  1174	030131	030070	030070			LUUO13,,LUUO12
  1175	030132	030070	030070			LUUO15,,LUUO14
  1176	030133	030070	030070			LUUO17,,LUUO16
  1177	030134	030070	030070			LUUO21,,LUUO20
  1178	030135	030070	030070			LUUO23,,LUUO22
  1179	030136	030070	030070			LUUO25,,LUUO24
  1180	030137	000000*	030070			LUUO27,,LUUO26
  1181	030140	030070	030070			LUUO31,,LUUO30
  1182	030141	030070	030070			LUUO33,,LUUO32
  1183
  1184					; **********************************************************************
  1185					;MEMORY MANAGMENT STORAGE
  1186					; **********************************************************************
  1187
  1188	030142	000000	000000		DF22F:	0		;DF10 CONTROL FLAG, 0 = 18, -1 = 22 BIT
  1189	030143	000000	000000		MAPNEW:	0		;MEMORY MAPPING CONTROL FLAG, -1 = 4096K MAPPING
  1190	030144	000000	000000		MEMTOT:	0		;TOTAL MEMORY SIZE IN K (1024.)
  1191	030145	000000	000000		MEMLOW:	0		;LOWEST USABLE MEMORY
  1192	030146				MEMSIZ:	BLOCK ^D41	;MEMORY SEGMENT POINTER TABLE
  1193
  1194					; **********************************************************************
  1195					;PRINT CONTROL STORAGE
  1196					; **********************************************************************
  1197
  1198	030217	000000	000000		PNTFLG:	0		;PRINT FLAG, -1 WHILE IN PRINT ROUTINE
  1199	030220	000000	000000		PNTENB:	0		;PRINT ENABLE
  1200	030221	000000	000000		PDISF:	0		;PRINT DISABLED FLAG
  1201	030222	000000	000000		PNTINH:	0		;INHIBIT PRINT INPUT CHECKS
  1202	030223	000000	000000		PNTSPC:	0		;PRINT SPACE CONTROL
  1203	030224	000000	000000		OPTIME:	0		;TYPE-IN WAIT TIME
  1204	030225	000000	000000		$TWCNT:	0		;TIME WAITED
  1205	030226	000000	000000		$DVOFF:	0		;LOGICAL DEVICE INITED FLAG
  1206	030227	000000	000000		TTYFIL:	0		;TTY EXEC FILLERS FLAG
  1207	030230	000000	000000		TTYSPD:	0		;TTY EXEC BAUD RATE
  1208	030231	000000	000000		$TTCHR:	0		;ACTUAL TYPED IN CHAR
  1209	030232	000000	000000		$CHRIN:	0		;UPPER CASED & PARITY STRIPPED CHAR
  1210	030233	000000	000000		$TYPNB:	0		;TYPED IN NUMBER
  1211	030234	000000	000000		$CRLF:	0		;FREE CR/LF FLAG
  1212	030235	000000	000000		$TABF:	0		;TAB CONVERSION FLAG
  1213	030236	000000	000000		$FFF:	0		;FORM FEED CONVERSION FLAG
  1214	030237	000000	000000		$VTF:	0		;VERTICAL TAB CONVERSION FLAG
  1215	030240	000000	000000		USRLFF:	0		;USER LF FILLERS
  1216	030241	000000	000000		USRCRF:	0		;USER CR FILLERS
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 5
FIXED	KLM	18-Sep-79 17:18		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979                           SEQ 0137

  1217					; **********************************************************************
  1218					;THE FOLLOWING MISCELLANEOUS PRINT CHARACTERS ARE INCLUDED
  1219					;TO FACILITATE PRINTING AND ARE CALLED AS FOLLOWS:
  1220					;	MOVEI	NAME
  1221					;	PNTA		;OR PNTAF
  1222					; **********************************************************************
  1223
  1224	030242				CRLF:	ASCII/
  1225	030242	015 012 000 000 000 	/
  1226	030243				CRLF2:	ASCII/
  1227
  1228	030243	015 012 015 012 000 	/
  1229	030244	054 000 000 000 000 	COMMA:	ASCII/,/
  1230	030245	056 000 000 000 000 	PERIOD:	ASCII/./
  1231	030246	040 000 000 000 000 	SPACE:	ASCII/ /
  1232	030247	011 000 000 000 000 	TAB:	ASCII/	/
  1233	030250				MINUS:
  1234	030250	055 000 000 000 000 	HYPEN:	ASCII/-/
  1235	030251	053 000 000 000 000 	PLUS:	ASCII/+/
  1236	030252	052 000 000 000 000 	AST:	ASCII/*/
  1237	030253	100 000 000 000 000 	ATSIN:	ASCII/@/
  1238	030254	050 000 000 000 000 	LFP:	ASCII/(/
  1239	030255	051 000 000 000 000 	RTP:	ASCII/)/
  1240	030256	007 0000000000 		BELL:	BYTE (7) 007
  1241	030257	077 000 000 000 000 	QUEST:	ASCII/?/
  1242	030260	057 000 000 000 000 	SLASH:	ASCII!/!
  1243	030261	044 000 000 000 000 	DOLLAR:	ASCII/$/
  1244	030262	000000	000012		RADIX:	^D10			;DECIMAL PRINT RADIX
  1245	030263	000000	000040		RADLSP:	40			;DECIMAL PRINT LEADING CHAR
  1246	030264	000000	000012		RADLSC:	^D10			;DECIMAL PRINT LEADING CHAR COUNT
  1247
  1248					; **********************************************************************
  1249					;USER MODE OUTPUT FILE INFORMATION
  1250					; **********************************************************************
  1251
  1252	030265				$OBUF:	BLOCK	3		;LOGICAL FILE OUTPUT BUFFER HEADER
  1253	030270	60 62 51 56 64 00 	$OUTNM:	SIXBIT	/PRINT/		;FILE NAME
  1254	030271	60 56 64 00 00 00 	$OUTEX:	SIXBIT	/PNT/		;FILE NAME EXTENSION
  1255	030272					BLOCK	2
  1256
  1257					; **********************************************************************
  1258					;DISK UPDATE MODE FILE INFORMATION
  1259					; **********************************************************************
  1260
  1261	030274				$IBUF:	BLOCK	3
  1262	030277	60 62 51 56 64 00 	$INNM:	SIXBIT	/PRINT/
  1263	030300	60 56 64 00 00 00 	$INEXT:	SIXBIT	/PNT/
  1264	030301					BLOCK	2
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 6
FIXED	KLM	18-Sep-79 17:18		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979                           SEQ 0138

  1265					; **********************************************************************
  1266					;PUSHDOWN LIST CONTROL INFORMATION
  1267					; **********************************************************************
  1268
  1269	030303	777577	030303		PLIST:	PLIST-PLISTE,,PLIST
  1270	030304				PLISTS:	BLOCK	200
  1271	030504	000000	000000		PLISTE:	0		;END OF PUSHDOWN LIST
  1272
  1273					; **********************************************************************
  1274					;POWER LINE CLOCK FREQUENCY FLAG
  1275					; **********************************************************************
  1276
  1277	030505	000000	000000		CYCL60:	0	;0 = 60, -1 = 50 CYCLE
  1278
  1279					; **********************************************************************
  1280					;KL10 CACHE CONTROL FLAGS
  1281					; **********************************************************************
  1282
  1283	030506	000000	000000		CSHFLG:	0	;ALLOW CACHE IF 0
  1284	030507	000000	000000		CSHMEM:	0	;CACHE MEMORY SEGMENTS IF 0
  1285
  1286					; **********************************************************************
  1287					;NUMBER INPUT DIGIT FLAG
  1288					; **********************************************************************
  1289
  1290	030510	000000	000000		TTNBRF:	0	;-1 IF ANY DIGIT TYPED
  1291
  1292					; **********************************************************************
  1293					;KL10 & KI10 "INHPAG" SWITCH PAGING PREVENTION
  1294					; **********************************************************************
  1295
  1296	030511	000000	000000		PVPAGI:	0	;IF NON-ZERO, OVERRIDE "INHPAG" SWITCH ACTION
  1297
  1298					; **********************************************************************
  1299					;ERROR REPORTING ROUTINE ADDITIONAL USERS CONTROL INSTRUCTIONS
  1300					; **********************************************************************
  1301
  1302	030512	000000	000000		%ERHI1:	0	;IF NON-ZERO, XCT'D AT START OF %ERUUO
  1303	030513	000000	000000		%ERHI2:	0	;IF NON-ZERO, XCT'D AT END OF %ERUUO
  1304	030514	000000	000000		%ERHI3:	0	;IF NON-ZERO, XCT'D AFTER "PC" OF %ERUUO
  1305
  1306					; **********************************************************************
  1307					;SPECIAL USERS UUO INTERCEPT INSTRUCTION
  1308					; **********************************************************************
  1309
  1310	030515	000000	000000		$$UUO:	0	;IF NON-ZERO, XCT'D AT START OF $UORTN
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 7
FIXED	KLM	18-Sep-79 17:18		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979                           SEQ 0139

  1311					; **********************************************************************
  1312					;USER MODE MONITOR TYPE FLAG
  1313					; **********************************************************************
  1314
  1315	030516	000000	000000		MONTYP:	0	;0 = TOPS10, -1 = TOPS20
  1316
  1317					; **********************************************************************
  1318					;SPECIAL USERS MUUO INTERCEPT INSTRUCTION
  1319					; **********************************************************************
  1320
  1321	030517	000000	000000		$$MUUO:	0	;IF NON-ZERO, XCT'D AT START OF MUUOER
  1322
  1323					; **********************************************************************
  1324					;SPECIAL USERS USER MODE OUTPUT ERROR INTERCEPT INSTUCTION
  1325					; **********************************************************************
  1326
  1327	030520	000000	000000		$$OUTER:0	;IF NON-ZERO, XCT'D AT END OF USER MODE ERROR
  1328
  1329					; **********************************************************************
  1330					;"SWITCH" CALL USAGE CONTROL
  1331					; **********************************************************************
  1332
  1333	030521	000000	000000		$$TOGGLE:0	;IF NON-ZERO, USE C(CONSW) FOR SWITCHES
  1334
  1335					; **********************************************************************
  1336					;SPECIAL USERS ALTMODE SWITCH CALL INTERCEPT INSTRUCTIONS
  1337					; **********************************************************************
  1338
  1339	030522	000000	000000		$$TAX1:	0	;IF NON-ZERO, XCT'D AT START OF ALTMODE SWITCH CALL
  1340	030523	000000	000000		$$TAX2:	0	;IF NON-ZERO, XCT'D AT END OF ALTMODE SWITCH CALL
  1341
  1342					; **********************************************************************
  1343					;SM10 (KS-10) PROCESSOR TYPE FLAG
  1344					; **********************************************************************
  1345
  1346	030524	000000	000000		SM10:	0	;IF -1 THIS IS A KS-10
  1347
  1348					; **********************************************************************
  1349					;RIGHT HALF SWITCHES PROMPT TABLE ADDRESS
  1350					; **********************************************************************
  1351
  1352	030525	000000	000000		SWPTAB:	0	;0 = NO PROMPT, ADR = ADR OF SIXBIT PROMPT TABLE
  1353
  1354					; **********************************************************************
  1355					;SPECIAL FUTURE EXPANSION ROOM
  1356					; **********************************************************************
  1357
  1358					; **********************************************************************
  1359					;END OF FIXED STORAGE
  1360					; **********************************************************************
  1361
  1362	030577					LOC	30577
  1363	030577	000000	000000		ENDFIX:	0		;END OF FIXED STORAGE
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page 1
DFNIAE	MAC	20-Nov-82 15:06		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979                           SEQ 0140

  1364					;#********************************************************************
  1365					; End of DFNIAT,PARAM,FIXED,DFNIA files
  1366					;#********************************************************************
  1367
  1368						XLIST
  1369
NO ERRORS DETECTED

PROGRAM BREAK IS 030601
ABSOLUTE BREAK IS 030600
CPU TIME USED 00:05.889

69P CORE USED
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page S-1
DFNIAE	MAC	20-Nov-82 15:06		SYMBOL TABLE                                                                       SEQ 0141

ABORT		400000	spd	DEBUG3		000400	spd	IOCLR		200000	spd	LDATAF		000200	spd	
ADRPE	100000	000000	spd	DEBUG4		000200	spd	IPAER	000200	000000	spd	LDCASD		040020	spd	
ALL	740000	000000	spd	DEBUG6		000040	spd	ITERAT		000005	spd	LDIOPF		040400	spd	
ALTCHH		000000	ext	DECVER		000002	spd	ITRCH1		030104		LDLNK		027774		
ALTCHK	007000	000000		DELAY	005000	000000		ITRCNT		030024		LDMCAT		000002	spd	
ALTMGO		030063		DF22F		030142		JEN	254500	000000		LDNXER		042000	spd	
ANXM		010000	spd	DGRCV		000005	spd	JOB41		000041	spd	LDPAER		041000	spd	
AROV		400000	spd	DGSNT		000001	spd	JOBAPR		000125	spd	LDPTT		000003	spd	
AROVU		000010	spd	DIAGMN		030002		JOBCNI		000126	spd	LDPWRF		040100	spd	
AST		030252		DING		010000	spd	JOBDDT		000074	spd	LDSBER		044000	spd	
ATSIN		030253		DINIT	040000	000000	spd	JOBFF		000121	spd	LECASD		100020	spd	
BEGEND		030057		DOLLAR		030261		JOBOPC		000130	spd	LEIOPF		100400	spd	
BEGIN		030000		DROPDV	037240	000002		JOBREL		000044	spd	LENXER		102000	spd	
BEGIN1		030010		DSPEAR		004000	spd	JOBREN		000124	spd	LEPAER		101000	spd	
BELL		030256		EBUSPE		004000	spd	JOBSA		000120	spd	LEPWRF		100100	spd	
BIS		020000	spd	ECOMP	000020	000000	spd	JOBSYM		000116	spd	LESBER		104000	spd	
CALL	200000	000000	spd	ENDFIX		030577		JOBTPC		000127	spd	LEUPFW		000420	spd	
CCA		000014	spd	ENDUUO	037500	000004		JOBUSY		000117	spd	LEVNCD		100000	spd	
CFIBF	104000	000100		EOPUUO	037700	000004		JOBUUO		000040	spd	LEVNPA		400000	spd	
CFLUSH	037100	000004		ERFLG		000015		JOBVER		000137	spd	LEVNPD		200000	spd	
CHAIN		000004	spd	ERLOOP	035000	000000		JRSTF	254100	000000		LEXCMP		000000	spd	
CHNOFF		001000	spd	ERLP1	035040	000000		JSYS	104000	000000		LFLGCL		020000	spd	
CHNON		002000	spd	ERLP2	035100	000000		KAHZ50		000002	spd	LFLGDS		040000	spd	
CINVAL	037040	000004		ERMORE		030101		KAIFLG		030040		LFLGEN		100000	spd	
CLK		001000	spd	ERRHLT	037600	000004		KL10		000001	spd	LFLGST		010000	spd	
CLKCLR		001000	spd	ERRPC		030052		KLFLG		030041		LFP		030254		
CLKDIS		004000	spd	ERRTLS		030053		LAPRAL		127520	spd	LGWC	000100	000000	spd	
CLKENB		002000	spd	ERSTOP		002000	spd	LAPRP1		000001	spd	LINSTF		000400	spd	
CLKU		001000	spd	ERUUO	036000	000000		LAPRP2		000002	spd	LINT		000010	spd	
CLOCKF		030045		EXCASB		000001	spd	LAPRP3		000003	spd	LIOCLR		200000	spd	
CLOKOP	037540	000004		EXIOT		004000	spd	LAPRP4		000004	spd	LIOPFE		000400	spd	
CMDQAV		000400	spd	FATAL	037640	000004		LAPRP5		000005	spd	LKNTRP		000430	spd	
CNTLC		030062		FOV		040000	spd	LAPRP6		000006	spd	LKTRP		000431	spd	
CNTRC		000004	spd	FOVU		000100	spd	LAPRP7		000007	spd	LLACBL		400000	spd	
COMMA		030244		FQUERR		002000	spd	LAROVT		000421	spd	LLDUSB		100000	spd	
CONSW		030046		FRD36	037340	000004		LAST	010000	000000	spd	LLPRCN		200000	spd	
CPOPJ		030065		FRD8	037400	000004		LAXER	000400	000000	spd	LMUUO		000424	spd	
CPOPJ1		030064		FRDLNK		027773		LCASDE		000020	spd	LMUUOP		000425	spd	
CRAMPE	004000	000000	spd	FREAD	037300	000004		LCASLD		200000	spd	LNXMEN		002000	spd	
CRLF		030242		FSELEC	037240	000004		LCASLO		400000	spd	LNXMER		002000	spd	
CRLF2		030243		FSELNK		027772		LCASWB		200000	spd	LOGO	400000	000000	spd	
CRY0		200000	spd	FUNCT	040000	000000	spd	LCASWD		000020	spd	LOOP	100000	000000	spd	
CRY1		100000	spd	FXU		000100	spd	LCCASD		020020	spd	LOOPER		004000	spd	
CSHFLG		030506		GENEPE		100000	spd	LCHNOF		001000	spd	LOOPGM		040000	spd	
CSHMEM		030507		GET	262740	000000		LCHNON		002000		LOOPTS		020000	spd	
CSRCHN	100000	000000	spd	GO	260740	000000		LCIOPF		020400	spd	LPAREN		001000	spd	
CSRRQS	200000	000000	spd	GOTO	300000	000000	spd	LCNTRP		000434	spd	LPARER		001000	spd	
CWRTBI	037140	000004		HALT	254200	000000		LCNXER		022000	spd	LPDOVT		000422	spd	
CYCL60		030505		HYPEN		030250		LCPAER		021000	spd	LPFWPC		000426	spd	
DCK		000040	spd	IDLE	000100	000000	spd	LCPWRF		020100	spd	LPGFTR		000427	spd	
DCOMP	000040	000000	spd	INHCSH		000020	spd	LCSBER		024000	spd	LPICH1		000100	spd	
DDTLNK		027775		INHFLT		200000	spd	LCSLOA		200000	spd	LPICH2		000040	spd	
DDTSRT		030007		INHMSG		100000	spd	LCSLOO		400000	spd	LPICH3		000020	spd	
DEBUG1		002000	spd	INHPAG		000100	spd	LCTRP		000435	spd	LPICH4		000010	spd	
DEBUG2		001000	spd	INXM		000100	spd	LCWSX		000040	spd	LPICH5		000004	spd	
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page S-2
DFNIAE	MAC	20-Nov-82 15:06		SYMBOL TABLE                                                                       SEQ 0142

LPICH6		000002	spd	LUUO22		030070		NSARD		000010	spd	PION		000200	spd	
LPICH7		000001	spd	LUUO23		030070		NSAWR		000011	spd	PJRST	254000	000000		
LPICHA		000177	spd	LUUO24		030070		NXMU		010000	spd	PK		000012		
LPICLR		010000	spd	LUUO25		030070		OP		000011		PLIRD		000007	spd	
LPIIP1		040000	spd	LUUO26		030070		OPRSEL		000010	spd	PLIST		030303		
LPIIP2		020000	spd	LUUO27		000000*	spd	OPTIME		030224		PLISTE		030504		
LPIIP3		010000	spd	LUUO3		000000*	spd	OVN	000020	000000	spd	PLISTS		030304		
LPIIP4		004000	spd	LUUO30		030070		P		000017		PLIWR		000006	spd	
LPIIP5		002000	spd	LUUO31		030070		PAG		000010	spd	PLUS		030251		
LPIIP6		001000	spd	LUUO32		030070		PALERS		001000	spd	PNT1	037040	000000		
LPIIP7		000400	spd	LUUO33		030070		PARCLR		200000	spd	PNT11	037440	000000		
LPIOFF		000400	spd	LUUO4		000000*	spd	PARDIS		100000	spd	PNT11F	037440	000001		
LPION		000200	spd	LUUO5		000000*	spd	PAREA1	711523	655207	spd	PNT1F	037040	000001		
LPNTRP		000436	spd	LUUO6		000000*	spd	PAREA2		000000	spd	PNT2	037100	000000		
LPRCH1		000100	spd	LUUO7		000000*	spd	PAREA3	444656	514100	spd	PNT2F	037100	000001		
LPRCH2		000040	spd	LUUOI		000041	spd	PAREA4	605664	000000	spd	PNT3	037140	000000		
LPRCH3		000020	spd	LWRITE		000100	spd	PAREA5		000000	spd	PNT3F	037140	000001		
LPRCH4		000010	spd	MAPADR	037540	000002		PAREA6		000000	spd	PNT4	037200	000000		
LPRCH5		000004	spd	MAPCNK	037640	000002		PAREA7		030035		PNT4F	037200	000001		
LPRCH6		000002	spd	MAPMEM	037000	000004		PAREA8		030036		PNT5	037240	000000		
LPRCH7		000001	spd	MAPNEW		030143		PARENB		040000	spd	PNT5F	037240	000001		
LPTRP		000437	spd	MAPPNT	037740	000002		PARU		004000	spd	PNT6	037300	000000		
LPWRFE		000100	spd	MAPSET	037600	000002		PASCNT		030047		PNT6F	037300	000001		
LPWRFL		000100	spd	MARGIN		030055		PAT		000014		PNT7	037340	000000		
LREQSE		004000	spd	MBCN		000016		PBELL	037040	000007		PNT7F	037340	000001		
LRQCLR		020000	spd	MBERR	002000	000000	spd	PCLEAR		400000	spd	PNTA	037000	000000		
LSBSEN		004000	spd	MCATLD		000002	spd	PCRL	037000	030242		PNTADF	037400	000001		
LSBUSE		004000	spd	MCNVER		000000	spd	PCRL2	037000	030243		PNTADR	037400	000000		
LSCASD		010020	spd	MEMLOW		030145		PCRL2F	037040	030243		PNTAF	037000	000001		
LSECMO		040000	spd	MEMMAP		000001	spd	PCRLF	037040	030242		PNTAL	037740	000000		
LSIOPF		010400	spd	MEMSEG	037440	000002		PDEC	006000	000000		PNTALF	037740	000001		
LSMODE		040000	spd	MEMSIZ		030146		PDECF	002000	000000		PNTCHF	037500	000001		
LSNTRP		000432	spd	MEMTOT		030144		PDISF		030221		PNTCHR	037500	000000		
LSNXER		012000	spd	MEMZRO	037500	000002		PDLOVU		200000	spd	PNTCI	037000	000000		
LSPAER		011000	spd	MINUS		030250		PDSABL		000040	spd	PNTCIF	037040	000000		
LSPWRF		010100	spd	MODDVC		000040	spd	PENABL		000020	spd	PNTCW	037100	000002		
LSSBER		014000	spd	MODDVL		030000	spd	PERIOD		030245		PNTCWF	037140	000002		
LSTRP		000433	spd	MODDVU		030000	spd	PFORCE	037040	000026		PNTDCC	003000	000000		
LTRP3T		000423	spd	MODLNK		027776		PFSTRT		030005		PNTDCF	037640	000001		
LTRPAE		020000	spd	MODPCP	037300	000002		PGMINT	265000	030011		PNTDCL	010000	000000		
LTRPEN		020000	spd	MODPCU	037340	000002		PGMNAM		000000	ext	PNTDCP	004000	000000		
LUSCMP		000040	spd	MONCTL		030043		PI00RQ	020000	000000	spd	PNTDEC	037640	000000		
LUUO		000040	spd	MONFLG		030042		PIA00		000004	spd	PNTDS	037700	000000		
LUUO1		000000*	spd	MONTEN		030044		PIA01		000002	spd	PNTDSF	037700	000001		
LUUO10		000000*	spd	MONTYP		030516		PIA02		000001	spd	PNTENB		030220		
LUUO11		030070		MPER	200000	000000	spd	PICHN1		000100	spd	PNTEXT		030021		
LUUO12		030070		MPRUN		000010	spd	PICHN2		000040	spd	PNTFLG		030217		
LUUO13		030070		MPVU		020000	spd	PICHN3		000020	spd	PNTHW	037540	000000		
LUUO14		030070		MSG	100000	000000	spd	PICHN4		000010	spd	PNTHWF	037540	000001		
LUUO15		030070		MTROP	037200	000004		PICHN5		000004	spd	PNTINH		030222		
LUUO16		030070		MVRERR		001000	spd	PICHN6		000002	spd	PNTLPT		020000	spd	
LUUO17		030070		NEXM	020000	000000	spd	PICHN7		000001	spd	PNTMGN	037700	000002		
LUUO2		000000*	spd	NIA	200000	000000	spd	PICHNA		000177	spd	PNTMSF	037040	000000		
LUUO20		030070		NOPNT		040000	spd	PICLR		010000	spd	PNTMSG	037000	000000		
LUUO21		030070		NOTWC0	040000	000000	spd	PIOFF		000400	spd	PNTNAM		030020		
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page S-3
DFNIAE	MAC	20-Nov-82 15:06		SYMBOL TABLE                                                                       SEQ 0143

PNTNM	037200	000002		SADR5		000000*		TXNOT	040000	000000	spd	$SVUPC		030114		
PNTOCC	001000	000000		SADR6		030007		TXTINH		000200	spd	$SVUUO		030113		
PNTOCF	037740	000003		SADR7	254200	000000*		TXYES	020000	000000	spd	$TABF		030235		
PNTOCS	037700	000003		SADR8	254200	000000*		USER		030037		$TTCHR		030231		
PNTOCT	037600	000000		SADR9	254200	000000*		USERF		010000	spd	$TWCNT		030225		
PNTOTF	037600	000001		SBINIT		030011		USRASB		000001	spd	$TYPNB		030233		
PNTSIX	037000	000002		SCOPE		030116		USRCRF		030241		$UMODE		030032		
PNTSPC		030223		SCOPE1		000000	ext	USRLFF		030240		$UORTX		030067		
PNTSXF	037040	000002		SCOPER	027000	000000		UUODIS		030124		$USRHL		030073		
PORT	400000	000000	spd	SELLAR		040000	spd	UUOEXT		030065		$UUOER		030070		
PORTP	400000	000000	spd	SFSTRT		030004		UUORTN		030066		$VTF		030237		
PPDEC		030127	ext	SHWC	000040	000000	spd	UUOSKP		030064		%ACTFL		030121		
PPDECF		030125	ext	SINCYC		020000	spd	WRNSA		000011	spd	%ACTUL		030122		
PSIXL	037600	000003		SLASH		030260		WRPLI		000006	spd	%COREC		030120		
PSIXLF	037640	000003		SM10		030524		$$MUUO		030517		%CORFL		030117		
PSIXM	037100	000000		SNDDG		000001	spd	$$OUTE		030520		%DISCR		030123		
PSIXMF	037200	000000		SPACE		030246		$$TAX1		030522		%ERHI1		030512		
PSP	037000	000040		SPARE1		010000	spd	$$TAX2		030523		%ERHI2		030513		
PSPF	037040	000040		SPARE2		000100	spd	$$TOGG		030521		%ERHI3		030514		
PTTLD		000003	spd	SRTDDT		030007		$$UUO		030515		.DELAY		000000	ext	
PUT	261740	000000		START		030017	ext	$ACC0		030106		.JB41		000041	spd	
PVPAGI		030511		START1		030013		$BEND1		030060		.JBAPR		000125	spd	
PWFCLR		400000	spd	START2		030014		$BEND2		030061		.JBCNI		000126	spd	
Q		000013		START3		030015		$CHRIN		030232		.JBDDT		000074	spd	
QUEST		030257		START4		030016		$CRLF		030234		.JBFF		000121	spd	
RADIX		030262		START5		030017		$DEVCH		000017	spd	.JBOPC		000130	spd	
RADLSC		030264		STARTA		030010	ext	$DSKUP		030033		.JBREL		000044	spd	
RADLSP		030263		SUBLNK		027777		$DVCH1		000016	spd	.JBREN		000124	spd	
RANDBS		030022		SWITCH	037400	000002		$DVOFF		030226		.JBSA		000120	spd	
RCCNT		000004	spd	SWPTAB		030525		$EMODE		030031		.JBSYM		000116	spd	
RDNSA		000010	spd	SWTEXR		030023		$FFF		030236		.JBTPC		000127	spd	
RDPLI		000007	spd	SYSEXR		030003		$IBUF		030274		.JBUSY		000117	spd	
REENTR		030006		TAB		030247		$INEXT		030300		.JBUUO		000040	spd	
RELIAB		000400	spd	TCOMP		002000	spd	$INNM		030277		.JBVER		000137	spd	
REPT		000015	spd	TDENA	000100	000000	spd	$ITRHL		030071		.LA		000000	spd	
REPT1		000016	spd	TESTPC		030051		$ITRX1		030072		.LADDR	000100	000000	spd	
REPTU		030115		TICKS		030054		$LPAPE		000001	spd	.LAND		000000	spd	
REPTUO	034000	000000		TOTALS		100000	spd	$MMAP		030034		.LB		000000	spd	
REQSET		004000	spd	TRACET		400000	spd	$MODVL		030027		.LBAD		000000	spd	
RESQAV		000200	spd	TSTEBF		200000	spd	$MODVU		030030		.LBUS		000000	spd	
RESRT1		030076		TTALTM	037340	000003		$OBUF		030265		.LCCCA		000000	spd	
RESRT2		030077		TTICHR	037000	000003		$ONETM		030056		.LCCCC		000000	spd	
RETURN		030012		TTICLR	037500	000003		$OUTEX		030271		.LCCCE		000000	spd	
RQINT	010000	000000	spd	TTICNV	037240	000003		$OUTNM		030270		.LCCCP		000000	spd	
RSTART		200000	spd	TTIDEC	037200	000003		$PARER		030100		.LCCEB		000000	spd	
RTN	263740	000000		TTINO	037100	000003		$PNAME		030025		.LCCEF		000000	spd	
RTP		030255		TTIOCT	037140	000003		$PSHER		030103		.LCCER		000000	spd	
RUNALL		010000	spd	TTIYES	037040	000003		$PVER		030026		.LCCFZ		000000	spd	
RUNFLG		030050		TTLOOK	037300	000003		$RSRTX		030074		.LCCGC		000000	spd	
SADR1		030000		TTNBRF		030510		$RSRTY		030075		.LCCIA		000000	spd	
SADR10	254200	000000*		TTSIXB	037400	000003		$SPAG1		030112		.LCCLW		000000	spd	
SADR11	254200	000000*		TTYFIL		030227		$START		030001		.LCCMB		000000	spd	
SADR2		030000		TTYINP	037440	000003		$SVAPR		030110		.LCCMP		000000	spd	
SADR3		030000		TTYSPD		030230		$SVPAG		030111		.LCCOF		000000	spd	
SADR4		030007		TXALL	060000	000000	spd	$SVPI		030107		.LCCON		000000	spd	
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page S-4
DFNIAE	MAC	20-Nov-82 15:06		SYMBOL TABLE                                                                       SEQ 0144

.LCCPP		000000	spd	.LSORC		000000	spd	.MOP		000017	spd	.RCCMP		130000	spd	
.LCCRA		000000	spd	.LSPAR		000000	spd	.MOR		000007	spd	.RCCOF		010000	spd	
.LCCXA		000000	spd	.LTIM		000000	spd	.MPAR		000001	spd	.RCCON		030000	spd	
.LCENA		000000	spd	.LTWB		000000	spd	.MPLUS		000007	spd	.RCCPP		150000	spd	
.LCJP		000000	spd	.LXNOR		000000	spd	.MPUSH		000017	spd	.RCCRA		050000	spd	
.LCJPP		000000	spd	.LXOR		000000	spd	.MRAM		000001	spd	.RCCXA		070000	spd	
.LCJS		000000	spd	.MA		000017	spd	.MRDLM		000037	spd	.RCENA	000400	000000	spd	
.LCJV		000000	spd	.MADDR		007777	spd	.MRFCT		000017	spd	.RCJP		000060	spd	
.LCONT		000000	spd	.MAND		000007	spd	.MRMIN		000007	spd	.RCJPP		000260	spd	
.LCRTN		000000	spd	.MB		000017	spd	.MRPCT		000017	spd	.RCJS		000020	spd	
.LCRY		000000	spd	.MBAD		000001	spd	.MS0A		000007	spd	.RCJV		000140	spd	
.LD		000000	spd	.MBUS		000007	spd	.MS0B		000007	spd	.RCONT		000340	spd	
.LDISA		000000	spd	.MCCCA		000037	spd	.MS0Q		000007	spd	.RCRTN		000240	spd	
.LENA		000000	spd	.MCCCC		000037	spd	.MSAB		000007	spd	.RCRY		000400	spd	
.LFUNC		000000	spd	.MCCCE		000037	spd	.MSAQ		000007	spd	.RD	001000	000000	spd	
.LJ		010000	spd	.MCCCP		000037	spd	.MSD0		000007	spd	.RDISA		000000	spd	
.LJMAP		000000	spd	.MCCEB		000037	spd	.MSDA		000007	spd	.RENA	000400	000000	spd	
.LJRP		000000	spd	.MCCEF		000037	spd	.MSDQ		000007	spd	.RFUNC	010000	000000	spd	
.LJSRP		000000	spd	.MCCER		000037	spd	.MSELC		000007	spd	.RJ		000000	spd	
.LJZ		000000	spd	.MCCFZ		000037	spd	.MSELE		000007	spd	.RJMAP		000040	spd	
.LLDCT		000000	spd	.MCCGC		000037	spd	.MSELF		000007	spd	.RJRP		000160	spd	
.LLDLM		000000	spd	.MCCIA		000037	spd	.MSELM		000007	spd	.RJSRP		000120	spd	
.LLOOP		000000	spd	.MCCLW		000037	spd	.MSELP		000007	spd	.RJZ		000000	spd	
.LLSAD		000000	spd	.MCCMB		000037	spd	.MSK		000037	spd	.RLDCT		000300	spd	
.LMARK		000000	spd	.MCCMP		000037	spd	.MSKCN		000037	spd	.RLDLM		230000	spd	
.LMGC		000001	spd	.MCCOF		000037	spd	.MSKMB		000037	spd	.RLOOP		000320	spd	
.LNAND		000000	spd	.MCCON		000037	spd	.MSMIN		000007	spd	.RLSAD		200000	spd	
.LOENA		002000	spd	.MCCPP		000037	spd	.MSORC		000007	spd	.RMARK		000002	spd	
.LOP		000000	spd	.MCCRA		000037	spd	.MSPAR		000001	spd	.RMGC		000000	spd	
.LOR		000000	spd	.MCCXA		000037	spd	.MTIM		000001	spd	.RNAND	050000	000000	spd	
.LPAR		004000	spd	.MCENA		000001	spd	.MTWB		000017	spd	.ROENA		000000	spd	
.LPLUS		000000	spd	.MCJP		000017	spd	.MXNOR		000007	spd	.ROP		000020	spd	
.LPUSH		000000	spd	.MCJPP		000017	spd	.MXOR		000007	spd	.ROR	030000	000000	spd	
.LRAM		000000	spd	.MCJS		000017	spd	.PNTDC		000000	ext	.RPAR		000000	spd	
.LRDLM		000000	spd	.MCJV		000017	spd	.PNTDL		030130	ext	.RPLUS		000000	spd	
.LRFCT		000000	spd	.MCONT		000017	spd	.PNTDP		030126	ext	.RPUSH		000100	spd	
.LRMIN		000000	spd	.MCRTN		000017	spd	.PNTOC		000000	ext	.RRAM	000200	000000	spd	
.LRPCT		000000	spd	.MCRY		000001	spd	.RA	000010	000000	spd	.RRDLM		220000	spd	
.LS0A		000000	spd	.MD		000007	spd	.RADDR		000000	spd	.RRFCT		000200	spd	
.LS0B		000000	spd	.MDISA		000001	spd	.RAND	040000	000000	spd	.RRMIN	020000	000000	spd	
.LS0Q		000000	spd	.MENA		000001	spd	.RB		400000	spd	.RRPCT		000220	spd	
.LSAB		000000	spd	.MFUNC		000007	spd	.RBAD		000001	spd	.RS0A	400000	000000	spd	
.LSAQ		000000	spd	.MJ		007777	spd	.RBUS		001000	spd	.RS0B	300000	000000	spd	
.LSD0		000000	spd	.MJMAP		000017	spd	.RCCCA		000000	spd	.RS0Q	200000	000000	spd	
.LSDA		000000	spd	.MJRP		000017	spd	.RCCCC		030000	spd	.RSAB	100000	000000	spd	
.LSDQ		000000	spd	.MJSRP		000017	spd	.RCCCE		160000	spd	.RSAQ		000000	spd	
.LSELC		000000	spd	.MJZ		000017	spd	.RCCCP		140000	spd	.RSD0	700000	000000	spd	
.LSELE		000000	spd	.MLDCT		000017	spd	.RCCEB		040000	spd	.RSDA	500000	000000	spd	
.LSELF		000000	spd	.MLDLM		000037	spd	.RCCEF		060000	spd	.RSDQ	600000	000000	spd	
.LSELM		000000	spd	.MLOOP		000017	spd	.RCCER		100000	spd	.RSELC		004000	spd	
.LSELP		000000	spd	.MLSAD		000037	spd	.RCCFZ		020000	spd	.RSELE		005000	spd	
.LSK		000000	spd	.MMARK		000001	spd	.RCCGC		010000	spd	.RSELF		003000	spd	
.LSKCN		000000	spd	.MMGC		001777	spd	.RCCIA		110000	spd	.RSELM		002000	spd	
.LSKMB		000000	spd	.MNAND		000007	spd	.RCCLW		170000	spd	.RSELP		001000	spd	
.LSMIN		000000	spd	.MOENA		000001	spd	.RCCMB		120000	spd	.RSK		010000	spd	
DFNIA	MACRO %53A(1152) 19:59 24-Sep-84 Page S-5
DFNIAE	MAC	20-Nov-82 15:06		SYMBOL TABLE                                                                       SEQ 0145

.RSKCN		240000	spd	
.RSKMB		210000	spd	
.RSMIN	010000	000000	spd	
.RSORC	100000	000000	spd	
.RSPAR		000004	spd	
.RTIM		000010	spd	
.RTWB		000360	spd	
.RXNOR	070000	000000	spd	
.RXOR	060000	000000	spd	
ABORT	   767#
ADRPE	    95#                                                                                                            SEQ 0146
ALL	   232#
ALTCHH	     9#	   295
ALTMGO	  1121#
ANXM	  1035#
AROV	  1035#
AROVU	  1035#
AST	  1236#
ATSIN	  1237#
BEGEND	  1117#
BEGIN	    70	    71	    72	   982	   983	  1048#
BEGIN1	  1064#	  1118
BELL	  1240#
BIS	  1035#
CALL	   305#
CCA	  1035#
CHAIN	   787#
CHNOFF	  1035#
CHNON	  1035#
CLK	  1035#
CLKCLR	  1035#
CLKDIS	  1035#
CLKENB	  1035#
CLKU	  1035#
CLOCKF	  1103#
CMDQAV	   260#
CNTLC	  1120#
CNTRC	   143#
COMMA	  1229#
CONSW	  1104#
CPOPJ	  1124#
CPOPJ1	  1122#
CRAMPE	   246#
CRLF	   917	   918	  1224#
CRLF2	   921	   922	  1226#
CRY0	  1035#
CRY1	  1035#
CSHFLG	  1283#
CSHMEM	  1284#
CSRCHN	   242#
CSRRQS	   241#
CYCL60	  1277#
DCK	  1035#
DCOMP	   249#
DDTLNK	   801#	  1062
DDTSRT	  1062#
DEBUG1	   116#
DEBUG2	   117#
DEBUG3	   118#
DEBUG4	   119#
DEBUG6	   120#
DECVER	    18#	  1083
DF22F	  1188#
DGRCV	   140#                                                                                                            SEQ 0147
DGSNT	   139#
DIAGMN	  1051#
DING	   773#
DINIT	   243#
DOLLAR	  1243#
DSKUPD	  1088
DSPEAR	   115#
EBUSPE	   257#
ECOMP	   250#
ENDFIX	  1363#
ERFLG	    53#
ERMORE	  1137#
ERRPC	  1108#
ERRTLS	  1109#
ERSTOP	   776#
EXCASB	    64#	  1086
EXIOT	  1035#
FOV	  1035#
FOVU	  1035#
FQUERR	   258#
FRDLNK	   799#
FSELNK	   798#
FUNCT	   231#
FXU	  1035#
GENEPE	   253#
GOTO	   306#
HYPEN	  1234#
IDLE	   248#
INHCSH	   784#
INHFLT	   110#
INHMSG	   111#
INHPAG	   781#
INXM	  1035#
IOCLR	  1035#
IPAER	    99#
ITERAT	    62#	  1081
ITRCH1	  1141#
ITRCNT	  1081#
JOB41	  1035#
JOBAPR	  1035#
JOBCNI	  1035#
JOBDDT	  1035#
JOBFF	  1035#
JOBOPC	  1035#
JOBREL	  1035#
JOBREN	  1035#
JOBSA	  1035#
JOBSYM	  1035#
JOBTPC	  1035#
JOBUSY	  1035#
JOBUUO	  1035#
JOBVER	  1035#
KA10	  1035                                                                                                             SEQ 0148
KAHZ50	   789#
KAIFLG	  1098#
KI10	  1035
KL10	    63#	  1035
KL10P0	  1035
KLFLG	  1099#
KLOLD	   997
LAPRAL	  1035#
LAPRP1	  1035#
LAPRP2	  1035#
LAPRP3	  1035#
LAPRP4	  1035#
LAPRP5	  1035#
LAPRP6	  1035#
LAPRP7	  1035#
LAROVT	  1035#
LAST	   310#
LAXER	    98#
LCASDE	  1035#
LCASLD	  1035#
LCASLO	  1035#
LCASWB	  1035#
LCASWD	  1035#
LCCASD	  1035#
LCHNOF	  1035#
LCHNON	  1035#
LCIOPF	  1035#
LCNTRP	  1035#
LCNXER	  1035#
LCPAER	  1035#
LCPWRF	  1035#
LCSBER	  1035#
LCSLOA	  1035#
LCSLOO	  1035#
LCTRP	  1035#
LCWSX	  1035#
LDATAF	  1035#
LDCASD	  1035#
LDIOPF	  1035#
LDLNK	   800#	  1051	  1053
LDMCAT	   129#	   141
LDNXER	  1035#
LDPAER	  1035#
LDPTT	   130#	   142
LDPWRF	  1035#
LDSBER	  1035#
LECASD	  1035#
LEIOPF	  1035#
LENXER	  1035#
LEPAER	  1035#
LEPWRF	  1035#
LESBER	  1035#
LEUPFW	  1035#                                                                                                            SEQ 0149
LEVNCD	  1035#
LEVNPA	  1035#
LEVNPD	  1035#
LEXCMP	  1035#
LFLGCL	  1035#
LFLGDS	  1035#
LFLGEN	  1035#
LFLGST	  1035#
LFP	  1238#
LGWC	   100#
LINSTF	  1035#
LINT	  1035#
LIOCLR	  1035#
LIOPFE	  1035#
LKNTRP	  1035#
LKTRP	  1035#
LLACBL	  1035#
LLDUSB	  1035#
LLPRCN	  1035#
LMUUO	  1035#
LMUUOP	  1035#
LNXMEN	  1035#
LNXMER	  1035#
LOGO	    93#
LOOP	   230#
LOOPER	   775#
LOOPGM	   112#
LOOPTS	   113#
LPAREN	  1035#
LPARER	  1035#
LPDOVT	  1035#
LPFWPC	  1035#
LPGFTR	  1035#
LPICH1	  1035#
LPICH2	  1035#
LPICH3	  1035#
LPICH4	  1035#
LPICH5	  1035#
LPICH6	  1035#
LPICH7	  1035#
LPICHA	  1035#
LPICLR	  1035#
LPIIP1	  1035#
LPIIP2	  1035#
LPIIP3	  1035#
LPIIP4	  1035#
LPIIP5	  1035#
LPIIP6	  1035#
LPIIP7	  1035#
LPIOFF	  1035#
LPION	  1035#
LPNTRP	  1035#
LPRCH1	  1035#                                                                                                            SEQ 0150
LPRCH2	  1035#
LPRCH3	  1035#
LPRCH4	  1035#
LPRCH5	  1035#
LPRCH6	  1035#
LPRCH7	  1035#
LPTRP	  1035#
LPWRFE	  1035#
LPWRFL	  1035#
LREQSE	  1035#
LRQCLR	  1035#
LSBSEN	  1035#
LSBUSE	  1035#
LSCASD	  1035#
LSECMO	  1035#
LSIOPF	  1035#
LSMODE	  1035#
LSNTRP	  1035#
LSNXER	  1035#
LSPAER	  1035#
LSPWRF	  1035#
LSSBER	  1035#
LSTRP	  1035#
LTRP3T	  1035#
LTRPAE	  1035#
LTRPEN	  1035#
LUSCMP	  1035#
LUUO	  1035#
LUUO1	   289#	  1168	  1169
LUUO10	   296#	  1168	  1173
LUUO11	  1168	  1173
LUUO12	  1168	  1174
LUUO13	  1168	  1174
LUUO14	  1168	  1175
LUUO15	  1168	  1175
LUUO16	  1168	  1176
LUUO17	  1168	  1176
LUUO2	   290#	  1168	  1170
LUUO20	  1168	  1177
LUUO21	  1168	  1177
LUUO22	  1168	  1178
LUUO23	  1168	  1178
LUUO24	  1168	  1179
LUUO25	  1168	  1179
LUUO26	  1168	  1180
LUUO27	   297#	  1168	  1180
LUUO3	   291#	  1168	  1170
LUUO30	  1168	  1181
LUUO31	  1168	  1181
LUUO32	  1168	  1182
LUUO33	  1168	  1182
LUUO4	   292#	  1168	  1171
LUUO5	   293#	  1168	  1171                                                                                             SEQ 0151
LUUO6	   294#	  1168	  1172
LUUO7	   295#	  1168	  1172
LUUOI	  1035#
LWRITE	  1035#
MAPNEW	  1189#
MARGIN	  1111#
MBCN	    54#
MBERR	   247#
MCATLD	   141#
MCNVER	    17#	  1083
MEMLOW	  1191#
MEMMAP	    66#	  1089
MEMSIZ	  1192#
MEMTOT	  1190#
MINUS	  1233#
MODDVC	   783#
MODDVL	   982	   982#	  1084
MODDVU	   983	   983#	  1085
MODLNK	   802#	  1048
MONCTL	  1101#
MONFLG	  1100#
MONTEN	  1102#
MONTYP	  1315#
MPER	    94#
MPRUN	   265#
MPVU	  1035#
MSG	   304#
MVRERR	   259#
NEXM	    97#
NIA	   229#
NOPNT	   771#
NOTWC0	    96#
NSARD	   146#
NSAWR	   147#
NXMU	  1035#
OP	    49#
OPRSEL	   785#
OPTIME	  1203#
OVN	   102#
P	    55#	   828	   829	   830	   831	  1035#	  1123
PAG	  1035#
PALERS	   777#
PARCLR	  1035#
PARDIS	  1035#
PAREA1	    82#	  1079
PAREA2	    83#	  1080
PAREA3	    84#	  1077
PAREA4	    85#	  1078
PAREA5	    86#	  1090
PAREA6	    87#	  1091
PAREA7	  1090#
PAREA8	  1091#
PARENB	  1035#                                                                                                            SEQ 0152
PARU	  1035#
PASCNT	  1105#
PAT	    52#
PCLEAR	   251#
PDISF	  1200#
PDLOVU	  1035#
PDSABL	   263#
PENABL	   264#
PERIOD	  1230#
PFSTRT	  1057#
PGMNAM	     8#	  1082
PI00RQ	   244#
PIA00	   266#
PIA01	   267#
PIA02	   268#
PICHN1	  1035#
PICHN2	  1035#
PICHN3	  1035#
PICHN4	  1035#
PICHN5	  1035#
PICHN6	  1035#
PICHN7	  1035#
PICHNA	  1035#
PICLR	  1035#
PIOFF	  1035#
PION	  1035#
PK	    50#
PLIRD	   145#
PLIST	  1269#	  1269
PLISTE	  1269	  1271#
PLISTS	  1270#
PLIWR	   144#
PLUS	  1235#
PNTENB	  1199#
PNTEXT	  1078#
PNTFLG	  1198#
PNTINH	  1201#
PNTLPT	   772#
PNTNAM	  1077#
PNTSPC	  1202#
PORT	   228#
PORTP	   240#
PPDEC	     9#	   294
PPDECF	     9#	   290
PTTLD	   142#
PVPAGI	  1296#
PWFCLR	  1035#
Q	    51#
QUEST	  1241#
RADIX	  1244#
RADLSC	  1246#
RADLSP	  1245#
RANDBS	  1079#                                                                                                            SEQ 0153
RCCNT	   131#	   143
RDNSA	   134#	   146
RDPLI	   133#	   145
REENTR	  1059#
RELIAB	   779#
REPT	  1035#
REPT1	  1035#
REPTU	  1157#
REQSET	  1035#
RESQAV	   261#
RESRT1	  1134#
RESRT2	  1135#
RETURN	  1066#
RQINT	   245#
RSTART	   768#
RTP	  1239#
RUNALL	   114#
RUNFLG	  1106#
SADR1	    70#	  1055
SADR10	    79#	  1071
SADR11	    80#	  1072
SADR2	    71#	  1057
SADR3	    72#	  1059
SADR4	    73#
SADR5	    74#	  1120
SADR6	    75#	  1121
SADR7	    76#	  1068
SADR8	    77#	  1069
SADR9	    78#	  1070
SBINIT	   841	  1065#
SCOPE	  1158#
SCOPE1	     8#	   297
SELLAR	   254#
SFSTRT	  1055#
SHWC	   101#
SINCYC	   255#
SLASH	  1242#
SM10	  1346#
SNDDG	   128#	   139
SPACE	  1231#
SPARE1	   256#
SPARE2	   262#
SRTDDT	    73	    75	  1061#
START	     8#	    74	    76	    77	    78	    79	    80	  1049
START1	  1068#
START2	  1069#
START3	  1070#
START4	  1071#
START5	  1072#
STARTA	     8#	  1064
SUBLNK	   803#	  1065
SWPTAB	  1352#
SWTEXR	  1080#                                                                                                            SEQ 0154
SYSEXR	  1053#
TAB	  1232#
TCOMP	   270#
TDENA	   233#
TESTPC	  1107#
TICKS	  1110#
TOTALS	   769#
TRACET	   109#
TSTEBF	   252#
TTNBRF	  1290#
TTYFIL	  1206#
TTYSPD	  1207#
TXALL	   309#
TXNOT	   307#
TXTINH	   780#
TXYES	   308#
USER	  1097#
USERF	  1035#
USRASB	    65#	  1087
USRCRF	  1216#
USRLFF	  1215#
UUODIS	  1169#
UUOEXT	  1125#
UUORTN	  1126#
UUOSKP	  1123#
WRNSA	   135#	   147
WRPLI	   132#	   144
$$MUUO	  1321#
$$OUTE	  1327#
$$TAX1	  1339#
$$TAX2	  1340#
$$TOGG	  1333#
$$UUO	  1310#
$ACC0	  1148#
$BEND1	  1118#
$BEND2	  1119#
$CHRIN	  1209#
$CRLF	  1211#
$DEVCH	  1035#
$DSKUP	  1088#
$DVCH1	  1035#
$DVOFF	  1205#
$EMODE	  1086#
$FFF	  1213#
$IBUF	  1261#
$INEXT	  1263#
$INNM	  1262#
$ITRHL	  1129#
$ITRX1	  1130#
$LPAPE	    68#
$MMAP	  1089#
$MODVL	  1084#
$MODVU	  1085#                                                                                                            SEQ 0155
$OBUF	  1252#
$ONETM	  1112#
$OUTEX	  1254#
$OUTNM	  1253#
$PAPER	  1035
$PARER	  1136#
$PNAME	  1082#
$PSHER	  1140#
$PVER	  1083#
$RSRTX	  1132#
$RSRTY	  1133#
$SPAG1	  1152#
$START	  1049#
$SVAPR	  1150#
$SVPAG	  1151#
$SVPI	  1149#
$SVUPC	  1155#
$SVUUO	  1154#
$TABF	  1212#
$TTCHR	  1208#
$TWCNT	  1204#
$TYPNB	  1210#
$UMODE	  1087#
$UORTX	  1127#
$USRHL	  1131#
$UUOER	  1128#	  1169
$VTF	  1214#
%ACTFL	  1161#
%ACTUL	  1162#
%COREC	  1160#
%CORFL	  1159#
%DISCR	  1163#
%ERHI1	  1302#
%ERHI2	  1303#
%ERHI3	  1304#
.DELAY	     9#	   293
.JB41	  1035#
.JBAPR	  1035#
.JBCNI	  1035#
.JBDDT	  1035#
.JBFF	  1035#
.JBOPC	  1035#
.JBREL	  1035#
.JBREN	  1035#
.JBSA	  1035#
.JBSYM	  1035#
.JBTPC	  1035#
.JBUSY	  1035#
.JBUUO	  1035#
.JBVER	  1035#
.LA	   496#
.LADDR	   384#
.LAND	   460#                                                                                                            SEQ 0156
.LB	   500#
.LBAD	   708#
.LBUS	   600#
.LCCCA	   516#
.LCCCC	   528#
.LCCCE	   572#
.LCCCP	   564#
.LCCEB	   532#
.LCCEF	   540#
.LCCER	   548#
.LCCFZ	   524#
.LCCGC	   520#
.LCCIA	   552#
.LCCLW	   576#
.LCCMB	   556#
.LCCMP	   560#
.LCCOF	   512#
.LCCON	   508#
.LCCPP	   568#
.LCCRA	   536#
.LCCXA	   544#
.LCENA	   480#
.LCJP	   644#
.LCJPP	   676#
.LCJS	   636#
.LCJV	   656#
.LCONT	   688#
.LCRTN	   672#
.LCRY	   624#
.LD	   476#
.LDISA	   484#
.LENA	   488#
.LFUNC	   440#
.LJ	   388#
.LJMAP	   640#
.LJRP	   660#
.LJSRP	   652#
.LJZ	   632#
.LLDCT	   680#
.LLDLM	   588#
.LLOOP	   684#
.LLSAD	   580#
.LMARK	   704#
.LMGC	   400#
.LNAND	   464#
.LOENA	   396#
.LOP	   628#
.LOR	   456#
.LPAR	   392#
.LPLUS	   444#
.LPUSH	   648#
.LRAM	   492#
.LRDLM	   592#                                                                                                            SEQ 0157
.LRFCT	   664#
.LRMIN	   452#
.LRPCT	   668#
.LS0A	   424#
.LS0B	   420#
.LS0Q	   416#
.LSAB	   412#
.LSAQ	   408#
.LSD0	   436#
.LSDA	   428#
.LSDQ	   432#
.LSELC	   616#
.LSELE	   620#
.LSELF	   612#
.LSELM	   608#
.LSELP	   604#
.LSK	   504#
.LSKCN	   596#
.LSKMB	   584#
.LSMIN	   448#
.LSORC	   404#
.LSPAR	   700#
.LTIM	   696#
.LTWB	   692#
.LXNOR	   472#
.LXOR	   468#
.MA	   498#
.MADDR	   386#
.MAND	   462#
.MB	   502#
.MBAD	   710#
.MBUS	   602#
.MCCCA	   518#
.MCCCC	   530#
.MCCCE	   574#
.MCCCP	   566#
.MCCEB	   534#
.MCCEF	   542#
.MCCER	   550#
.MCCFZ	   526#
.MCCGC	   522#
.MCCIA	   554#
.MCCLW	   578#
.MCCMB	   558#
.MCCMP	   562#
.MCCOF	   514#
.MCCON	   510#
.MCCPP	   570#
.MCCRA	   538#
.MCCXA	   546#
.MCENA	   482#
.MCJP	   646#
.MCJPP	   678#                                                                                                            SEQ 0158
.MCJS	   638#
.MCJV	   658#
.MCONT	   690#
.MCRTN	   674#
.MCRY	   626#
.MD	   478#
.MDISA	   486#
.MENA	   490#
.MFUNC	   442#
.MJ	   390#
.MJMAP	   642#
.MJRP	   662#
.MJSRP	   654#
.MJZ	   634#
.MLDCT	   682#
.MLDLM	   590#
.MLOOP	   686#
.MLSAD	   582#
.MMARK	   706#
.MMGC	   402#
.MNAND	   466#
.MOENA	   398#
.MOP	   630#
.MOR	   458#
.MPAR	   394#
.MPLUS	   446#
.MPUSH	   650#
.MRAM	   494#
.MRDLM	   594#
.MRFCT	   666#
.MRMIN	   454#
.MRPCT	   670#
.MS0A	   426#
.MS0B	   422#
.MS0Q	   418#
.MSAB	   414#
.MSAQ	   410#
.MSD0	   438#
.MSDA	   430#
.MSDQ	   434#
.MSELC	   618#
.MSELE	   622#
.MSELF	   614#
.MSELM	   610#
.MSELP	   606#
.MSK	   506#
.MSKCN	   598#
.MSKMB	   586#
.MSMIN	   450#
.MSORC	   406#
.MSPAR	   702#
.MTIM	   698#
.MTWB	   694#                                                                                                            SEQ 0159
.MXNOR	   474#
.MXOR	   470#
.PNTDC	     9#	   291
.PNTDL	     9#	   296
.PNTDP	     9#	   292
.PNTOC	     9#	   289
.RA	   497#
.RADDR	   385#
.RAND	   461#
.RB	   501#
.RBAD	   709#
.RBUS	   601#
.RCCCA	   517#
.RCCCC	   529#
.RCCCE	   573#
.RCCCP	   565#
.RCCEB	   533#
.RCCEF	   541#
.RCCER	   549#
.RCCFZ	   525#
.RCCGC	   521#
.RCCIA	   553#
.RCCLW	   577#
.RCCMB	   557#
.RCCMP	   561#
.RCCOF	   513#
.RCCON	   509#
.RCCPP	   569#
.RCCRA	   537#
.RCCXA	   545#
.RCENA	   481#
.RCJP	   645#
.RCJPP	   677#
.RCJS	   637#
.RCJV	   657#
.RCONT	   689#
.RCRTN	   673#
.RCRY	   625#
.RD	   477#
.RDISA	   485#
.RENA	   489#
.RFUNC	   441#
.RJ	   389#
.RJMAP	   641#
.RJRP	   661#
.RJSRP	   653#
.RJZ	   633#
.RLDCT	   681#
.RLDLM	   589#
.RLOOP	   685#
.RLSAD	   581#
.RMARK	   705#
.RMGC	   401#                                                                                                            SEQ 0160
.RNAND	   465#
.ROENA	   397#
.ROP	   629#
.ROR	   457#
.RPAR	   393#
.RPLUS	   445#
.RPUSH	   649#
.RRAM	   493#
.RRDLM	   593#
.RRFCT	   665#
.RRMIN	   453#
.RRPCT	   669#
.RS0A	   425#
.RS0B	   421#
.RS0Q	   417#
.RSAB	   413#
.RSAQ	   409#
.RSD0	   437#
.RSDA	   429#
.RSDQ	   433#
.RSELC	   617#
.RSELE	   621#
.RSELF	   613#
.RSELM	   609#
.RSELP	   605#
.RSK	   505#
.RSKCN	   597#
.RSKMB	   585#
.RSMIN	   449#
.RSORC	   405#
.RSPAR	   701#
.RTIM	   697#
.RTWB	   693#
.RXNOR	   473#
.RXOR	   469#
ALTCHK	   285#
CALC	   724#                                                                                                            SEQ 0161
CFIBF	   277#
CFLUSH	   953#
CINVAL	   952#
CLOKOP	   947#
CONCAT	   731#
CWRTBI	   954#
DELAY	   283#
DROPDV	   914#
ENDUUO	   960#	  1117
EOPUUO	   961#	  1119
ERLOOP	  1005#
ERLP1	  1006#
ERLP2	  1007#
ERRHLT	   848#
ERROR	  1014#
ERROR1	  1025#
ERUUO	  1004#
FATAL	   847#
FIELD	   737#
FMSG	   168#
FMSGC	   170#
FMSGCD	   176#
FMSGD	   173#
FRD36	   989#
FRD8	   990#
FREAD	   988#
FSELEC	   987#
GET	   831#
GO	   828#
HALT	    76	    77	    78	    79	    80	   833#	  1138
JEN	   835#
JRSTF	   834#
JSYS	   276#	   277
MAPADR	   970#
MAPCNK	   971#
MAPMEM	   967#
MAPPNT	   973#
MAPSET	   972#
MEMSEG	   969#
MEMZRO	   968#
MODPCP	   980#
MODPCU	   979#
MTROP	   948#
MWORD	   749#
PBELL	   923#
PCRL	   917#
PCRL2	   921#
PCRL2F	   922#
PCRLF	   918#
PDEC	   284#
PDECF	   280#
PFORCE	   925#
PGMINT	   841#                                                                                                            SEQ 0162
PJRST	   832#
PMSG	   927#
PMSGF	   930#
PNT1	   883#
PNT11	   897#
PNT11F	   898#
PNT1F	   884#
PNT2	   885#
PNT2F	   886#
PNT3	   887#
PNT3F	   888#
PNT4	   889#
PNT4F	   890#
PNT5	   891#
PNT5F	   892#
PNT6	   893#
PNT6F	   894#
PNT7	   895#
PNT7F	   896#
PNTA	   869#
PNTADF	   900#
PNTADR	   899#
PNTAF	   870#
PNTAL	   871#
PNTALF	   872#
PNTCHF	   882#
PNTCHR	   881#
PNTCI	   879#
PNTCIF	   880#
PNTCW	   915#
PNTCWF	   916#
PNTDCC	   281#
PNTDCF	   908#
PNTDCL	   286#
PNTDCP	   282#
PNTDEC	   907#
PNTDS	   909#
PNTDSF	   910#
PNTHW	   903#
PNTHWF	   904#
PNTMGN	   994#
PNTMSF	   876#
PNTMSG	   875#
PNTNM	   911#
PNTOCC	   279#
PNTOCF	   906#
PNTOCS	   905#
PNTOCT	   901#
PNTOTF	   902#
PNTSIX	   912#
PNTSXF	   913#
PSIXL	   873#
PSIXLF	   874#                                                                                                            SEQ 0163
PSIXM	   877#
PSIXMF	   878#
PSP	   919#
PSPF	   920#
PUT	   830#
REPTUO	  1008#
RGET	   204#
RPUT	   190#
RTN	   829#	  1125
S	   759#
SCOPER	   287#
SIXBTZ	   936#
SUBTAB	   220#
SWITCH	   942#
TASCIZ	   184#
TMSG	   157#
TMSGC	   159#
TMSGCD	   165#
TMSGD	   162#
TTALTM	   863#
TTICHR	   856#
TTICLR	   866#
TTICNV	   861#
TTIDEC	   860#
TTINO	   858#
TTIOCT	   859#
TTIYES	   857#
TTLOOK	   862#
TTSIXB	   864#
TTYINP	   865#
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 1
DFNIA1	MAC	18-Feb-84 20:30		Externs / Entrys                                                                   SEQ 0164

     1						TITLE	DFNIA (Port Functional Diagnostic)
     2
     3						SUBTTL	Externs / Entrys
     4
     5						SALL
     6
     7						SEARCH	DFNIA,MONSYM
     8	000137					LOC	137
     9	000137	000000	000002			MCNVER,,DECVER
    10	030600					LOC	ENDFIX+1
    11
    12					; Miscellaneous stuff
    13
    14						INTERN	UDEBUG			; no-IPA user mode debug switch
    15						INTERN	MDEBUG			; error message debug switch
    16						INTERN	LDEBUG			; ucode load debug switch
    17						INTERN	DDEBUG,DDUMP		; dump on error debug switch
    18						INTERN	EDEBUG			; expanded error message mode switch
    19						INTERN	PGMNAM			; program name
    20						INTERN	TXADDL			; additional text routine address
    21						ENTRY	START,STARTA		; start addresses
    22
    23					; Microcode routines
    24
    25						ENTRY	CALPAR,DWCRAM,DRCRAM,MLOADN,MLOADY,TLOAD,TFLOAD,MVPNT
    26						INTERN	CADDR,CWORDL,CWORDR,PARFLG,UVERSN,MLNUM
    27
    28					; Miscellaneous routines
    29
    30						ENTRY	CSRPNT,CSRENG,TRACE,RUPDAT,SUPDAT,SETENA,SETDSA,PACK4T,CNTPNT
    31						INTERN	FINPUT,FINECH,DSPRIN
    32						INTERN	STASNT,STARCV,.RREXP
    33
    34					; Test variables
    35
    36						ENTRY	TSTPNT,TSTEND
    37						INTERN	TSTNAM,TSTNUM,TSTSUB,TSTPC,TSTFLG,TSTMSK,TSTREP,TSTOFF
    38						INTERN	ALTF,TSLOAD,TAKFIL,SPEAR2,SPREP2,PMODE,TSTTAB
    39
    40					; Interrupt activity print routines
    41
    42						ENTRY	IPRINT
    43
    44					; Packet Handling Routines
    45
    46						ENTRY	BPACK,BPACKN,RWAIT,CHKINT,INSQUE,CHKRSP,RSPQUE,PNTRSP,CHKRQV
    47						ENTRY	CMDOPC,OPCPNT,TPCB,TIDLE,RDADDR,CONPNT,CONVIR,GETQUE,PUTQUE
    48						INTERN	CONTBL,NUMENT,RQAFLG,NEWENT,MTABLE,PTABLE,MCAT17
    49						INTERN	PACKET,RSPONS,BUFF,TPAT,TREGN,TREGD,TAMC,TH4000,TPRMSC,TRETRY
    50						INTERN	TDEST,TFMFLG,TRSFLG,TBSDFL,TPDFLG,TBYTE,TWORD,SADDR,TPTTVL
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 2
DFNIA1	MAC	18-Feb-84 20:30		Externs / Entrys                                                                   SEQ 0165

    51
    52					; Queue Print Routines
    53
    54						ENTRY	PQUEUE,PPAKC,PPAKR,PPAKF,PPCB,PPCBD
    55						INTERN	PCB,PTTFQ
    56
    57					; Tests 1-27
    58
    59						EXTERN	TST1,TST2,TST3,TST4,TST5,TST6,TST7,TST10,TST11,TST12
    60						EXTERN	TST13,TST14,TST15,TST16,TST17,TST20,TST21,TST22,TST23
    61						EXTERN	TST24,TST25,TST26,TST27
    62
    63					; Microcode Tests 2-3
    64
    65						EXTERN	T2M,T3M
    66
    67					; EXTERN's located in DFCIA3.MAC
    68
    69						EXTERN	CRCSAV,CRCOFF,CRCTAB
    70
    71					; EXTERN's located in DFNIAI.MAC (Port Handling Routines module)
    72
    73						EXTERN	LDEBUF,LDRAR,LDCRAM,LDCSR,RDEBUF,RDLAR,RDCRAM,RDCSR
    74						EXTERN	SETEBU,SETLAR,CLREBU,CHKCSR,ERESET,IPACLR,ISTOP
    75						EXTERN	IPASRT,IPASTP,IPASST,SLAST,SNEXT,EADDR,AADDR,SDATA
    76						EXTERN	INITPI,INITPD,SETVEC,.CONI,.CONO,.DATAI,.DATAO,USRION
    77						EXTERN	INTNUM,INTPC,INTTYP,INTCON,INTAPR,INTTIM,INTUSE,INTCSR,INTEND
    78						EXTERN	CHINIT,GETLOG,CCWPNT,LOGPNT,CBASE,.INPNT,.INWD1,ICWA0,ENABLE
    79						EXTERN	DSETUP,DEVREQ,DEVREL,SNARKF,FFF,HAVIPA,REQ1,REQ2,REL
    80						EXTERN	LOCDON,LOCPHY
    81
    82					; EXTERN's located in DFNIAU.MAC (Utility Routines module)
    83
    84						EXTERN	CLRBUF,TTYYES,STCLOK,PTIME,RUNTME,CURTIM,.CLOSE
    85						EXTERN	DEBTIM,FORPNT,CONVSX,FGETW,FINCMD,FIOFF,FOARG,.RESET
    86						EXTERN	.SWCHP,SWITT,.ISWT,SWCHPT,.RSWIT,.LSWIT,SWRGT,SWCOM,SCOSW
    87						EXTERN	.COMM,.CGOT,.SARG,.OARG,.DARG,ARGFLG,ARGUM,CHKARG,LASARG,DECYN
    88						EXTERN	SCOPE1,SCOOFF,BUFGEN,BUFCOM,WRDERR,PATPNT
    89
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 3
DFNIA1	MAC	18-Feb-84 20:30		Initialization                                                                     SEQ 0166

    90						SUBTTL	Initialization
    91
    92						SALL
    93
    94	030600				PGMNAM:	ASCIZ	$
    95	030600	015 012 104 106 116 	DFNIA NI Port Functional Diagnostic
    96	030601	111 101 040 116 111 
    97	030602	040 120 157 162 164 
    98	030603	040 106 165 156 143 
    99	030604	164 151 157 156 141 
   100	030605	154 040 104 151 141 
   101	030606	147 156 157 163 164 
   102	030607	151 143 015 012 000 	$
   103
   104	030610	402 00 0 00 030056 	SB:	SETZM	$ONETM			; reinit everything
   105	030611				START:
   106
   107					; First clear debug switches and set up PGMINT variables - MAPNEW, PVPAGI
   108
   109	030611	402 00 0 00 134255'		SETZM	UDEBUG#			; no-IPA user mode debug switch
   110	030612	402 00 0 00 134172'		SETZM	MDEBUG#			; error message debug switch
   111	030613	402 00 0 00 134166'		SETZM	LDEBUG#			; ucode load debug switch
   112	030614	402 00 0 00 134151'		SETZM	DDEBUG#			; dump on error debug switch
   113	030615	402 00 0 00 134156'		SETZM	EDEBUG#			; expanded error message switch
   114	030616	476 00 0 00 030143 		SETOM	MAPNEW			; map all memory
   115	030617	476 00 0 00 030511 		SETOM	PVPAGI			; always use paging
   116
   117					; MCPUS - Multiple cpu print switch - If this flag is cleared, the multiple
   118					; cpu message is printed in full, if set, only the question asking which
   119					; cpu to run on is asked.
   120
   121	030620	336 00 0 00 030056 		SKIPN	$ONETM			; first time through here?
   122	030621	402 00 0 00 134171'		SETZM	MCPUS#			; yes - clear the flag
   123
   124					; Set up cache usage
   125
   126	030622	402 00 0 00 030506 		SETZM	CSHFLG			; allow pgm and any buffer space 
   127	030623	402 00 0 00 030507 		SETZM	CSHMEM			;   to be in cache
   128
   129					; Init file input switch
   130
   131	030624	402 00 0 00 134161'		SETZM	FINPUT#			; initialize 'file input' switch
   132	030625	476 00 0 00 134160'		SETOM	FINECH#			; set echo switch
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 4
DFNIA1	MAC	18-Feb-84 20:30		Initialization                                                                     SEQ 0167

   133
   134					; Init flags/switches
   135
   136	030626	402 00 0 00 134162'		SETZM	FMTTYP#			; allow all data formats
   137	030627	402 00 0 00 134144'		SETZM	BONETM#			; clear $ONETM flag
   138	030630	336 00 0 00 030056 		SKIPN	$ONETM			; 1st time pgm init?
   139	030631	476 00 0 00 134144'		SETOM	BONETM			; yes - set $ONETM flag
   140	030632	332 00 0 00 030056 		SKIPE	$ONETM			; 1st time pgm init?
   141	030633	254 00 0 00 030651 		JRST	STRT1			; no - skip next bit of code
   142
   143					; First time only code
   144
   145	030634	402 00 0 00 000000*		SETZM	SWRGT			; yes - clear right hand switches
   146	030635	201 00 0 00 000000*		MOVEI	.RSWIT			; get start addr of prompt table
   147	030636	202 00 0 00 030525 		MOVEM	SWPTAB			; setup for switch prompting
   148
   149					; Init print enable, forced print switch, and statistics, and SPEAR flags
   150
   151	030637	211 00 0 00 023420 		MOVNI	^D10000			; set the printout limit
   152	030640	202 00 0 00 030220 		MOVEM	PNTENB			; so won't die too soon
   153	030641	402 00 0 00 000000*		SETZM	FORPNT			; clear forced print switch
   154	030642	402 00 0 00 030521 		SETZM	$$TOGGLE		; enable switches
   155	030643	260 17 0 00 043661 		GO	SZERO			; clear statistics
   156	030644	402 00 0 00 134244'		SETZM	SPEAR1#			; clear 'SPEAR initial msg prnted' flag
   157	030645	402 00 0 00 134245'		SETZM	SPEAR2#			; clear 'SPEAR err/fin msg prnted' flag
   158	030646	402 00 0 00 043151 		SETZM	CONTBL			; clear first word of config table
   159	030647	200 00 0 00 117020 		MOVE	[CONTBL,,CONTBL+1]	; build BLT pointer
   160	030650	251 00 0 00 043460 		BLT	CONTBL+^D199		; clear configuration table
   161
   162					; Standard startup and handle paging and clock
   163
   164	030651	260 17 0 00 000000*	STRT1:	GO	.RESET			; reset everything
   165	030652	265 00 0 00 030011 		PGMINT				; init the program
   166	030653	476 00 0 00 030516 		SETOM	MONTYP			; force to be TOPS-20
   167	030654	205 00 0 00 500000 		MOVSI	500000			; access bits for the page table
   168	030655	502 00 0 00 000400 		HLLM	400			; maps 340000 to physical 0
   169	030656	201 00 0 00 340000 		MOVEI	340000			; causes paging when E is calculated
   170	030657	202 00 0 00 000000*		MOVEM	CBASE			; channel routines now page correctly
   171	030660	260 17 0 00 000000*		GO	STCLOK			; start the clock ...
   172	030661	402 00 0 00 030047 		SETZM	PASCNT			; clear pass count
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 5
DFNIA1	MAC	18-Feb-84 20:30		Initialization                                                                     SEQ 0168

   173
   174					; Set/clear debug switches
   175
   176	030662	402 00 0 00 134255'		SETZM	UDEBUG			; clear no-IPA user mode debug switch
   177	030663	402 00 0 00 134172'		SETZM	MDEBUG			; clear error message debug switch
   178	030664	402 00 0 00 134166'		SETZM	LDEBUG			; clear ucode load debug switch
   179	030665	402 00 0 00 134151'		SETZM	DDEBUG			; clear dump on error debug switch
   180	030666	402 00 0 00 134156'		SETZM	EDEBUG			; clear expanded error message switch
   181	030667	260 17 0 00 000000*		GO	SWITT			; get switches
   182	030670	602 00 0 00 002000 		TRNE	DEBUG1			; debug switch set?
   183	030671	476 00 0 00 134255'		SETOM	UDEBUG			; set no-IPA user mode debug switch
   184	030672	602 00 0 00 001000 		TRNE	DEBUG2			; debug switch set?
   185	030673	476 00 0 00 134172'		SETOM	MDEBUG			; set error message debug switch
   186	030674	602 00 0 00 000400 		TRNE	DEBUG3			; debug switch set?
   187	030675	476 00 0 00 134166'		SETOM	LDEBUG			; set ucode load debug switch
   188	030676	602 00 0 00 000200 		TRNE	DEBUG4			; debug switch set?
   189	030677	476 00 0 00 134151'		SETOM	DDEBUG			; set dump on error debug switch
   190	030700	602 00 0 00 000040 		TRNE	DEBUG6			; debug switch set?
   191	030701	476 00 0 00 134156'		SETOM	EDEBUG			; set expanded error message switch
   192	030702	201 00 0 00 000005 		MOVEI	ITERAT			; get default pass count
   193	030703	202 00 0 00 030024 		MOVEM	ITRCNT			; save in FIXED area location
   194	030704	402 00 0 00 115611 		SETZM	PMODE			; set program mode to 'no test'
   195
   196					; Request device, ...
   197
   198	030705	200 16 0 00 115612 		MOVE	MBCN,NIPORT		; set up MBCN register
   199	030706	260 17 0 00 000000*		GO	DSETUP			; set up DIAG JSYS
   200	030707	260 17 0 00 000000*		GO	LOCPHY			; lock part of the diagnostic
   201	030710	260 17 0 00 000000*		GO	ENABLE			; enable privileges
   202	030711	260 17 0 00 000000*		GO	USRION			; set USRIOT bit
   203	030712	260 17 0 00 000000*		GO	RDCSR			; read CSR
   204	030713	400 01 0 00 000000 		SETZ	1,			; error
   205	030714	404 01 0 00 117021 		AND	1,[400003,,0]		; mask out all but hardwired bits
   206	030715	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
   207	030716	316 01 0 00 117021 		CAMN	1,[400003,,0]		; no - an NI20 here?
   208	030717	260 17 0 00 000000*		GO	DEVREQ			; yes - request the device
   209						JRST	[FMSGCD	<? NI port not found>
   210							 SKIPE	20000
   211							 JRST	20000
   212							 HALT	.+1
   213	030720	254 00 0 00 117027 			 JRST	START]
   214
   215					; Handle SPEAR reporting
   216
   217	030721	260 17 0 00 115360 		GO	SPREP1			; do initial SPEAR report
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 6
DFNIA1	MAC	18-Feb-84 20:30		Initialization                                                                     SEQ 0169

   218
   219					; Go do a test
   220
   221	030722	336 00 0 00 033704 	STARTA:	SKIPN	SADDR			; address already gotten?
   222						GO	[GO	RDADDR		; no - read station address and
   223							 DMOVE	SADDR		;   set up some defaults
   224							 DMOVEM	TDEST		;   ...
   225	030723	260 17 0 00 117034 			 RTN]
   226	030724	260 17 0 00 000000*		GO	INITPI			; initialize PI system
   227	030725	260 17 0 00 000000*		GO	SETVEC			; set up vector addresses
   228	030726	260 17 0 00 030766 		GO	DISPAT			; do a test
   229	030727	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
   230	030730	254 00 0 00 030746 		JRST	STARTB			; yes - exit
   231	030731	260 17 0 00 030667*		GO	SWITT			; get switches
   232	030732	607 00 0 00 000010 		TLNN	OPRSEL			; OPRSEL switch set?
   233	030733	260 17 0 00 030747 		GO	PASPNT			; no - print end of pass
   234	030734	260 17 0 00 030731*		GO	SWITT			; get switches
   235	030735	336 00 0 00 030037 		SKIPN	USER			; user mode?
   236	030736	607 00 0 00 400000 		TLNN	ABORT			; abort switch set?
   237	030737	334 00 0 00 000000 		SKIPA				; no (or user mode) - continue
   238	030740	254 00 0 00 030746 		JRST	STARTB			; yes - exit
   239	030741	037 12 0 00 000004 		ENDUUO				; end of pass handling
   240	030742	254 00 0 00 030722 		JRST	STARTA			; ITRCNT not exhausted - continue
   241	030743	260 17 0 00 030734*		GO	SWITT			; get switches
   242	030744	602 00 0 00 040000 		TRNE	LOOPGM			; loop on program switch set?
   243	030745	254 00 0 00 030722 		JRST	STARTA			; yes - loop forever
   244	030746	037 16 0 00 000004 	STARTB:	EOPUUO				; ITRCNT exhausted - exit pgm
   245
   246					; Print pass count
   247
   248	030747	200 00 0 00 030047 	PASPNT:	MOVE	PASCNT			; get pass count
   249	030750	350 00 0 00 000000 		AOS				; increment by 1
   250	030751	231 00 0 00 000012 		IDIVI	^D10			; divide by 10
   251	030752	332 00 0 00 000000 		SKIPE				; print pass number only for passes
   252	030753	326 01 0 00 117037 		JUMPN	1,[RTN]			;    1,2..7,10,20,30,40 ...
   253	030754	037 00 0 00 117040 		TMSGC	<End pass >		; print it
   254	030755	200 00 0 00 030047 		MOVE	PASCNT
   255	030756	350 00 0 00 000000 		AOS
   256	030757	037 15 0 00 000000 		PNTDEC
   257	030760	037 00 0 00 117043 		TMSG	<. at >
   258	030761	402 00 0 00 030641*		SETZM	FORPNT			; clear force print
   259	030762	200 03 0 00 117045 		MOVE	3,[JFCL]		; set up timer routine
   260	030763	260 17 0 00 000000*		GO	RUNTME			; print current time
   261	030764	037 00 0 00 030242 		PCRL
   262	030765	263 17 0 00 000000 		RTN				; return
   263
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 7
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0170

   264						SUBTTL	Test/Command Selection
   265
   266					;#*********************************************************************
   267					;* DISPAT - Routine to dispatch to proper test as typed by the operator
   268					;*	   in response to the 'WHAT TEST' prompt.
   269					;
   270					; COMMAND	DEFINITION
   271					; -------	----------
   272					; ALL	n	All tests
   273					; PORT	n	Port modules related tests
   274					; NIA	n	NIA module related tests
   275					; LOOP	n	Loopback tests
   276					; FUNCT n	Functional tests (including loopback)
   277					; n	n	Test n
   278					;
   279					; Other tests:
   280					;
   281					; DEBUG		Enter debugger
   282					;
   283					; DIAMON	Enter DIAMON
   284					; DDT   	Enter DDT
   285					; HELP  	Print this text
   286					; EXIT  	Exit program 
   287					;
   288					; TAKE		Take commands from a file
   289					; NTAKE		Take commands from a file (without echoing them)
   290					;
   291					; CONFIG	Print current configuration
   292					;
   293					; ENABLE	Enable execution of a test
   294					; DISABL	Disable execution of a test
   295					; DISLIS	List disabled tests
   296					;
   297					; LIST n	List all tests
   298					;
   299					; Switches:  To complement switch, type switch name
   300					;
   301					; SWITCH	Enter switches
   302					; SWPRIN	Print current switches
   303					;
   304					; NOPNT   ERSTOP  TXTINH  TRACE   LOOPGM  DSPEAR  LDEBUG
   305					; PNTLPT  PALERS  OPRSEL  INHMSG  LOOPTS  UDEBUG  DDEBUG
   306					; DING    RELIAB	  INHFLT  RUNALL  MDEBUG  EDEBUG
   307					;#********************************************************************
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 8
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0171

   308
   309	030766	402 00 0 00 134143'	DISPAT:	SETZM	ALTF#			; clear 'altmode typed' flag
   310
   311	030767	260 17 0 00 030743*		GO	SWITT			; get switches
   312	030770	603 00 0 00 000010 		TLNE	OPRSEL			; OPRSEL switch set?
   313	030771	037 01 0 00 117046 		FMSGCD	<Type ? for help>	; yes - print this
   314
   315					; Do a little initialization - first set up altmode transfer address
   316
   317	030772	202 17 0 00 134233'	DISP0:	MOVEM	P,SAVEP#		; save stack pointer
   318	030773	260 17 0 00 030767*		GO	SWITT			; get switches
   319	030774	603 00 0 00 000010 		TLNE	OPRSEL			; OPRSEL switch set?
   320						MOVEI	1,[PCRLF		; yes - set $ addr to print blank line
   321	030775	201 01 0 00 117052 			   JRST	DISP0]		;  line and continue at 'What test'
   322	030776	607 00 0 00 000010 		TLNN	OPRSEL			; OPRSEL switch set?
   323						MOVEI	1,[SETZM ALTF		; no - set up $ xfr addr to exit pass
   324							   GO	 FIOFF
   325	030777	201 01 0 00 117054 			   RTN]
   326	031000	202 01 0 00 030063 		MOVEM	1,ALTMGO		; store it
   327	031001	402 00 0 00 134143'		SETZM	ALTF			; clear 'altmode typed' flag
   328
   329					; Set up print limit, clear error flag, clear input buffer, set up MBCN
   330
   331	031002	201 00 0 00 303240 		MOVEI	^D100000		; re-set up print limit just in case
   332	031003	212 00 0 00 030220 		MOVNM	PNTENB			;   the last test exceeded it
   333	031004	400 15 0 00 000000 		SETZ	ERFLG,			; clear error flag
   334	031005	260 17 0 00 000000*		GO	CLRBUF			; clear input buffer
   335	031006	200 16 0 00 115612 		MOVE	MBCN,NIPORT		; set up MBCN register properly
   336	031007	476 00 0 00 134250'		SETOM	TSLOAD#			; initialize ucode loaded flag
   337
   338					; Set/clear debug switches
   339
   340	031010	402 00 0 00 134255'		SETZM	UDEBUG			; clear no-IPA user mode debug switch
   341	031011	402 00 0 00 134172'		SETZM	MDEBUG			; clear error message debug switch
   342	031012	402 00 0 00 134166'		SETZM	LDEBUG			; clear ucode load debug switch
   343	031013	402 00 0 00 134151'		SETZM	DDEBUG			; clear dump on error debug switch
   344	031014	402 00 0 00 134156'		SETZM	EDEBUG			; clear expanded error message switch
   345	031015	260 17 0 00 030773*		GO	SWITT			; get switches
   346	031016	602 00 0 00 002000 		TRNE	DEBUG1			; debug switch set?
   347	031017	476 00 0 00 134255'		SETOM	UDEBUG			; set no-IPA user mode debug switch
   348	031020	602 00 0 00 001000 		TRNE	DEBUG2			; debug switch set?
   349	031021	476 00 0 00 134172'		SETOM	MDEBUG			; set error message debug switch
   350	031022	602 00 0 00 000400 		TRNE	DEBUG3			; debug switch set?
   351	031023	476 00 0 00 134166'		SETOM	LDEBUG			; set ucode load debug switch
   352	031024	602 00 0 00 000200 		TRNE	DEBUG4			; debug switch set?
   353	031025	476 00 0 00 134151'		SETOM	DDEBUG			; set dump on error debug switch
   354	031026	602 00 0 00 000040 		TRNE	DEBUG6			; debug switch set?
   355	031027	476 00 0 00 134156'		SETOM	EDEBUG			; set expanded error message switch
   356	031030	402 00 0 00 115611 		SETZM	PMODE			; set program mode to 'no test'
   357	031031	402 00 0 00 134174'		SETZM	MULFLG#			; clear 'multiple examine' flag
   358	031032	476 00 0 00 134175'		SETOM	MULINI#			; set 'initial examine' flag
   359	031033	402 00 0 00 134254'		SETZM	TXADDL#			; clear 'addl text' routine address
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 9
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0172

   360
   361					; Set up PI system in case any interrupts occur
   362
   363	031034	260 17 0 00 030724*		GO	INITPI			; init PI system
   364	031035	260 17 0 00 030725*		GO	SETVEC			; set up vector addresses
   365
   366					; Do ALL test automatically if OPRSEL switch is not set
   367
   368	031036	201 01 0 00 000001 		MOVEI	1,1			; set to ALL test
   369	031037	607 00 0 00 000010 		TLNN	OPRSEL			; OPRSEL switch set?
   370	031040	254 00 0 00 031117 		JRST	DISP2			; no - go do test
   371	031041	402 00 0 00 030047 		SETZM	PASCNT			; clear pass count
   372
   373					; Now handle a normal command
   374
   375	031042	402 00 0 00 000000*		SETZM	.INWD1			; clear special interrupt data
   376	031043	476 00 0 00 134144'		SETOM	BONETM			; set 'not first time' flag
   377	031044	336 00 0 00 134161'		SKIPN	FINPUT			; file input?
   378	031045	476 00 0 00 134160'		SETOM	FINECH			; no - ensure echo flag set
   379	031046	332 00 0 00 134160'		SKIPE	FINECH			; echo flag set?
   380						GO	[PFORCE			; no - print all this
   381							 PCRLF
   382							 FMSG	<What test - >
   383	031047	260 17 0 00 117062 			 RTN]
   384	031050	332 00 0 00 134161'		SKIPE	FINPUT			; file input?
   385						JRST	[GO	FINCMD		; yes - input sixbit cmd
   386							 JRST	DISP0		; error or EOF
   387	031051	254 00 0 00 117066 			 JRST	DISP0B]		; continue
   388	031052	037 10 0 00 000003 	DISP0A:	TTSIXB				; get the name in sixbit
   389						ALTCHK	[GET	XXW#		; adjust stack properly
   390							 SKIPN	$TWCNT		; did a timeout occur?
   391							 JRST	DISP0		; yes - keep looking for input
   392							 MOVE	1,$TTCHR	; no - get character typed
   393							 CAIN	1,40		; space (delimiter) typed?
   394							 JRST	.+1		; yes - continue (no error condition)
   395							 CAIN	1,77		; was a question mark typed?
   396							 JRST	DISQUE		; yes - handle
   397	031053	007 00 0 00 117071 			 JRST	DISPE]		; no - error - reask question
   398					DISP0B:	JUMPE	[MOVE	$TTCHR		; anything typed?  if a space, keep
   399							 CAIN	40		;   looking for an argument, if not
   400							 JRST	DISP0A		;   exit
   401	031054	322 00 0 00 117102 			 JRST	DISP0]
   402	031055	202 00 0 00 134253'		MOVEM	TSTSAV#			; save the typed name
   403	031056	402 00 0 00 000000*		SETZM	ARGFLG			; clear 'argument given' flag
   404	031057	200 01 0 00 030231 		MOVE	1,$TTCHR		; get last character typed
   405	031060	302 01 0 00 000015 		CAIE	1,15			; CR? (end of line)
   406	031061	476 00 0 00 031056*		SETOM	ARGFLG			; set 'argument given' flag
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 10
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0173

   407
   408					; Process command
   409
   410	031062	200 01 0 00 134253'	DISP1:	MOVE	1,TSTSAV		; get command into AC1
   411	031063	201 02 0 00 031131 		MOVEI	2,DISLIS		; get address of cmd list
   412	031064	260 17 0 00 000000*		GO	.COMM			; handle command decoding
   413	031065	334 00 0 00 000000 		 SKIPA				; error return
   414	031066	254 00 0 00 031117 		JRST	DISP2			; dispatch to test
   415
   416					; Now check to see if a test number was selected in the form 'n r'
   417					; where 'n' is the test number and 'r' is the repeat count.
   418
   419			000027			MAXTST==TSTMAX-TSTTAB-1
   420
   421	031067	260 17 0 00 000000*		GO	CONVSX			; convert to octal test number
   422	031070	254 00 0 00 031106 		 JRST	DISPD			; error return (unrecognizable)
   423	031071	333 00 0 00 000001 		SKIPLE	1			; out of range?
   424	031072	303 01 0 00 000027 		CAILE	1,MAXTST		; out of range?
   425	031073	254 00 0 00 031100 		JRST	DISPR			; yes - handle
   426	031074	370 00 0 00 000001 		SOS	1			; normalize to 0..n
   427	031075	202 01 0 00 115576 		MOVEM	1,TSTNUM		; save test number
   428	031076	260 17 0 00 031563 		GO	TSTSPC			; execute it
   429	031077	254 00 0 00 031120 		JRST	DISPX			; end of test
   430
   431					; Range error
   432
   433	031100	037 01 0 00 117106 	DISPR:	FMSGC	<? Test selected is not in range 1->
   434	031101	201 00 0 00 000027 		MOVEI	MAXTST			; get range
   435	031102	037 17 0 00 000003 		PNTOCF				; print it
   436	031103	037 01 0 00 030242 		PCRLF
   437	031104	260 17 0 00 000000*		GO	FIOFF			; turn off file input
   438	031105	254 00 0 00 030772 		JRST	DISP0			; continue
   439
   440					; Possibly a DEBUG command was typed - check for this and handle
   441
   442	031106	200 01 0 00 134253'	DISPD:	MOVE	1,TSTSAV		; get command into AC1
   443	031107	201 02 0 00 032322 		MOVEI	2,.DBCMD		; get address of cmd list
   444	031110	260 17 0 00 031064*		GO	.COMM			; handle command decoding
   445	031111	254 00 0 00 031114 		 JRST	DISPE			; unrecognizable
   446	031112	260 17 1 01 032474 		GO	@.DBDIS(1)		; dispatch to test
   447	031113	254 00 0 00 030772 		JRST	DISP0			; return to 'DEBUG>' prompt
   448
   449					; Unrecognized command
   450
   451	031114	037 01 0 00 117116 	DISPE:	FMSGCD	<? Unrecognizable - Type ? for help>
   452	031115	260 17 0 00 031104*		GO	FIOFF			; turn off file input
   453	031116	254 00 0 00 030772 		JRST	DISP0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 11
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0174

   454
   455					; Dispatch to test
   456
   457	031117	260 17 1 01 031205 	DISP2:	GO	@DISGO(1)		; dispatch to test
   458
   459					; End of command - if OPRSEL switch set, ask for command
   460					;		   if OPRSEL switch not set, it is end of pass
   461
   462	031120	260 17 0 00 031015*	DISPX:	GO	SWITT			; get program switches
   463	031121	603 00 0 00 000010 		TLNE	OPRSEL			; OPRSEL set?
   464	031122	254 00 0 00 030772 		JRST	DISP0			; yes - not really end of pass
   465	031123	263 17 0 00 000000 		RTN				; no - end of pass
   466
   467					; Handle ? typed
   468
   469	031124	037 01 0 00 000026 	DISQUE:	PFORCE				; handle Control-O
   470	031125	037 00 1 00 031127 		PNTMSG	@DISQUU			; print text
   471	031126	254 00 0 00 030772 		JRST	DISP0			; continue
   472
   473	031127				DISQUU:	[ASCII	/
   474					Tests       Other         Switches
   475					-----   --------------  ----------------------
   476					ALL    DIAMON  ENABLE  NOPNT   TRACE   UDEBUG
   477					PORT   DDT     DISABL  PNTLPT  INHFLT  MDEBUG
   478					NIA    HELP    DISLIS  DING    INHMSG  LDEBUG
   479					LOOP   EXIT    LIST    ERSTOP  LOOPGM  DDEBUG
   480					FUNCT  TAKE    STATIS  PALERS  LOOPTS  EDEBUG
   481	031127	000000	117126		       NTAKE   ZSTATS  RELIAB  RUNALL  SWITCH    /]
   482						[ASCIZ	/
   483					DEBUG  CONFIG  ZCOUNT  TXTINH  DSPEAR  SWPRIN
   484					(Or 'n' where n        OPRSEL
   485					 is the test #).
   486	031130	000000	117240		/]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 12
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0175

   487
   488					;#*********************************************************************
   489					;* DISLIS - List of all valid test names that can be typed
   490					;#*********************************************************************
   491
   492	031131	777777	777655		DISLIS:	-123				; ignore
   493	031132	41 54 54 00 00 00 		SIXBIT	/ALL/			; execute ALL tests
   494	031133	60 57 62 64 00 00 		SIXBIT	/PORT/			; execute Port tests
   495	031134	56 51 41 00 00 00 		SIXBIT	/NIA/			; execute Link tests
   496	031135	54 57 57 60 00 00 		SIXBIT	/LOOP/			; execute Loopback tests
   497	031136	46 65 56 43 64 00 		SIXBIT	/FUNCT/			; execute Functional tests
   498	031137	62 41 56 44 57 55 		SIXBIT	/RANDOM/		; execute tests randomly
   499
   500					; Other
   501			
   502	031140	63 64 41 64 51 63 		SIXBIT	/STATIS/		; print collected statistics
   503	031141	72 63 64 41 64 63 		SIXBIT	/ZSTATS/		; clear statistics areas
   504	031142	43 57 56 46 51 47 		SIXBIT	/CONFIG/		; print current configuration
   505
   506	031143	45 56 41 42 54 45 		SIXBIT	/ENABLE/		; enable specified tests
   507	031144	44 51 63 41 42 54 		SIXBIT	/DISABL/		; disable specified tests
   508	031145	44 51 63 54 51 63 		SIXBIT	/DISLIS/		; list disabled tests
   509	031146	54 51 63 64 00 00 		SIXBIT	/LIST/			; list test descriptions
   510
   511	031147	64 41 53 45 00 00 		SIXBIT	/TAKE/			; take commands from a file
   512	031150	56 64 41 53 45 00 		SIXBIT	/NTAKE/			; take commands from a file
   513	031151	44 45 42 65 47 00 		SIXBIT	/DEBUG/			; execute debugger test
   514	031152	44 51 41 55 57 56 		SIXBIT	/DIAMON/		; exit to DIAMON
   515	031153	44 44 64 00 00 00 		SIXBIT	/DDT/			; enter DDT
   516	031154	45 70 51 64 00 00 		SIXBIT	/EXIT/			; exit pgm
   517	031155	50 45 54 60 00 00 		SIXBIT	/HELP/			; help
   518
   519					; Switches
   520
   521	031156	63 67 51 64 43 50 		SIXBIT	/SWITCH/		; input switches
   522	031157	63 67 60 62 51 56 		SIXBIT	/SWPRIN/		; print switch selections
   523	031160	56 57 60 56 64 00 		SIXBIT	/NOPNT/			; don't print anything
   524	031161	60 56 64 54 60 64 		SIXBIT	/PNTLPT/		; print on printer
   525	031162	44 51 56 47 00 00 		SIXBIT	/DING/			; ding on error
   526	031163	45 62 63 64 57 60 		SIXBIT	/ERSTOP/		; halt on error
   527	031164	60 41 54 45 62 63 		SIXBIT	/PALERS/		; print all errors
   528	031165	62 45 54 51 41 42 		SIXBIT	/RELIAB/		; reliability testing
   529	031166	64 70 64 51 56 50 		SIXBIT	/TXTINH/		; shorten printing
   530	031167	57 60 62 63 45 54 		SIXBIT	/OPRSEL/		; operator select
   531	031170	64 62 41 43 45 00 		SIXBIT	/TRACE/			; trace pgm flow
   532	031171	51 56 50 46 54 64 		SIXBIT	/INHFLT/		; inhibit fault isolation
   533	031172	51 56 50 55 63 47 		SIXBIT	/INHMSG/		; inhibit error messages
   534	031173	54 57 57 60 47 55 		SIXBIT	/LOOPGM/		; loop on program
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 13
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0176

   535	031174	54 57 57 60 64 63 		SIXBIT	/LOOPTS/		; loop on test
   536	031175	62 65 56 41 54 54 		SIXBIT	/RUNALL/		; run all test segments
   537	031176	44 63 60 45 41 62 		SIXBIT	/DSPEAR/		; disable SPEAR reporting
   538	031177	65 44 45 42 65 47 		SIXBIT	/UDEBUG/		; no-IPA user mode debug switch
   539	031200	55 44 45 42 65 47 		SIXBIT	/MDEBUG/		; error message debug switch
   540	031201	54 44 45 42 65 47 		SIXBIT	/LDEBUG/		; load microcode debug switch
   541	031202	44 44 45 42 65 47 		SIXBIT	/DDEBUG/		; dump on error debug switch
   542	031203	45 44 45 42 65 47 		SIXBIT	/EDEBUG/		; expanded error msg switch
   543	031204	000 00 0 00 000000 		Z
   544
   545
   546					;#********************************************************************
   547					;* DISGO - Test dispatch addresses
   548					;#********************************************************************
   549
   550	031205	000000	117037		DISGO:	[RTN]				; ignore
   551	031206	000000	031260			TSTEXE				; ALL - execute all tests
   552	031207	000000	031260			TSTEXE				; PORT - execute PORT modules tests
   553	031210	000000	031260			TSTEXE				; NIA - execute NIA module tests
   554	031211	000000	031260			TSTEXE				; LOOP - execute Loopback tests
   555	031212	000000	031260			TSTEXE				; FUNCT - execute Functional tests
   556	031213	000000	031626			TSTRAN				; RANDOM - execute tests randomly
   557
   558	031214	000000	031477			TSTPRI				; STATIS - Print statistics
   559	031215	000000	031361			TSTZER				; ZSTATS - Zero statistics
   560	031216	000000	031366			TSTCON				; CONFIG - Print configuration
   561
   562	031217	000000	031431			TSTENA				; ENABLE - enable specified tests
   563	031220	000000	031425			TSTDSA				; DISABL - disable specified tests
   564	031221	000000	031455			TSTDSL				; DISLIS - list disabled tests
   565	031222	000000	031266			TSTLIS				; LIST - list test descriptions
   566
   567	031223	000000	031527			TSTTAK				; TAKE - take commands from a file
   568	031224	000000	031525			TSTTAN				; NTAKE - take commands from a file
   569	031225	000000	032231			TSTDEB				; DEBUG - execute debugger test
   570	031226	000000	031332			TSTDIA				; DIAMON - re-enter DIAMON
   571	031227	000000	031337			TSTDDT				; DDT - enter DDT
   572	031230	000000	031350			TSTHLT				; EXIT - exit
   573	031231	000000	031373			TSTHLP				; HELP - help
   574
   575	031232	000000	031504			TSTSWI				; SWITCH - input switches
   576	031233	000000	031511			TSTSWP				; SWPRIN - print switch selections
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 14
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0177

   577
   578			000027		SWSTT==.-DISGO
   579
   580	031234	000000	031516			TSTSSW				; NOPNT
   581	031235	000000	031516			TSTSSW				; PNTLPT
   582	031236	000000	031516			TSTSSW				; DING
   583	031237	000000	031516			TSTSSW				; ERSTOP
   584	031240	000000	031516			TSTSSW				; PALERS
   585	031241	000000	031516			TSTSSW				; RELIAB
   586	031242	000000	031516			TSTSSW				; TXTINH
   587	031243	000000	031516			TSTSSW				; OPRSEL
   588	031244	000000	031516			TSTSSW				; TRACE
   589	031245	000000	031516			TSTSSW				; INHFLT
   590	031246	000000	031516			TSTSSW				; INHMSG
   591	031247	000000	031516			TSTSSW				; LOOPGM
   592	031250	000000	031516			TSTSSW				; LOOPTS
   593	031251	000000	031516			TSTSSW				; RUNALL
   594	031252	000000	031516			TSTSSW				; DSPEAR
   595	031253	000000	031516			TSTSSW				; UDEBUG
   596	031254	000000	031516			TSTSSW				; MDEBUG
   597	031255	000000	031516			TSTSSW				; LDEBUG
   598	031256	000000	031516			TSTSSW				; DDEBUG
   599	031257	000000	031516			TSTSSW				; EDEBUG
   600
   601
   602					;#********************************************************************
   603					;* ALL    Execute all tests
   604					;* PORT   Execute Port modules related tests
   605					;* NIA    Execute NIA module related tests
   606					;* LOOP   Execute Loopback tests
   607					;* FUNCT  Execute Functional tests
   608					;
   609					; All of these commands dispatch to TSTEXE which sets up test mask
   610					; and does dispatch to tests.
   611					;#********************************************************************
   612
   613					TSTEXE:	MOVE	[ALL			; get test mask
   614							 PORT
   615							 NIA
   616							 LOOP
   617	031260	200 00 0 01 117263 			 FUNCT]-1(1)
   618	031261	202 00 0 00 115602 		MOVEM	TSTMSK			; save test mask
   619	031262	260 17 0 00 031655 		GO	TSTDIS			; go dispatch to tests
   620
   621					; Handle SPEAR reporting
   622
   623	031263	400 15 0 00 000000 		SETZ	ERFLG,			; clear error flag
   624	031264	260 17 0 00 115421 		GO	SPREP2			; do final SPEAR report
   625	031265	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 15
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0178

   626
   627					;#********************************************************************
   628					;* TSTLIS - List test description for either single test or range of tests.
   629					;
   630					; Argument(s):  n - list only one test
   631					;		n,m - list range of tests
   632					;	        none - list all tests
   633					;#********************************************************************
   634
   635	031266	402 00 0 00 115577 	TSTLIS:	SETZM	TSTSUB			; clear subtest number
   636	031267	402 00 0 00 134251'		SETZM	TSTL1#			; set up start test number
   637	031270	350 00 0 00 134251'		AOS	TSTL1			; set to 1
   638	031271	201 00 0 00 000027 		MOVEI	MAXTST			; set up final test number
   639	031272	202 00 0 00 134252'		MOVEM	TSTL2#			; set to MAXTST
   640
   641					; Check for argument(s)
   642
   643	031273	200 01 0 00 117302 		MOVE	1,[FMSGCD <LIST test# (CR) or LIST test#,test# (CR)>]
   644	031274	260 17 0 00 000000*		GO	.DARG			; get test number
   645	031275	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
   646	031276	254 00 0 00 031310 		 JRST	TSTLI0			; no argument given
   647	031277	200 01 0 00 000000*		MOVE	1,ARGUM			; get argument
   648	031300	202 01 0 00 134251'		MOVEM	1,TSTL1			; save first test number
   649	031301	202 01 0 00 134252'		MOVEM	1,TSTL2			; save second test number
   650	031302	210 01 0 00 117302 		MOVN	1,[FMSGCD <LIST test# (CR) or LIST test#,test# (CR)>]
   651	031303	260 17 0 00 031274*		GO	.DARG			; get test number
   652	031304	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
   653	031305	254 00 0 00 031310 		 JRST	TSTLI0			; no 2nd argument given
   654	031306	200 01 0 00 031277*		MOVE	1,ARGUM			; get argument
   655	031307	202 01 0 00 134252'		MOVEM	1,TSTL2			; save second test number
   656
   657					; Range check the arguments
   658
   659	031310	333 01 0 00 134251'	TSTLI0:	SKIPLE	1,TSTL1			; first argument in range
   660	031311	303 01 0 00 000027 		CAILE	1,MAXTST		;   1-MAXTST?
   661						JRST	[FMSGCD	<? Range of test numbers is 1->
   662							 MOVEI	MAXTST		; get range
   663							 PNTOCF			; print it
   664							 PCRLF
   665							 GO	FIOFF		; turn off file input
   666	031312	254 00 0 00 117312 			 RTN]
   667	031313	200 02 0 00 134252'		MOVE	2,TSTL2			; get 2nd argument
   668	031314	311 02 0 00 000001 		CAML	2,1			; 2nd argument in range
   669	031315	303 02 0 00 000027 		CAILE	2,MAXTST		;   1st arg-MAXTST?
   670						JRST	[FMSGC	<? Range of test numbers is 1->
   671							 MOVEI	MAXTST		; get range
   672							 PNTOCF			; print it
   673							 PCRLF
   674							 GO	FIOFF		; turn off file input
   675	031316	254 00 0 00 117327 			 RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 16
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0179

   676
   677					; Print the test descriptions
   678
   679	031317	200 02 0 00 134251'	TSTLI1:	MOVE	2,TSTL1			; get test number
   680	031320	202 02 0 00 115576 		MOVEM	2,TSTNUM		; set up for TSTPNT
   681	031321	037 00 0 00 030242 		PCRL				; skip a line
   682	031322	260 17 0 00 042411 		GO	TSTPNT			; no - print it
   683	031323	350 02 0 00 134251'		AOS	2,TSTL1			; point to next test
   684	031324	313 02 0 00 134252'		CAMLE	2,TSTL2			; reach end of range?
   685	031325	254 00 0 00 031330 		JRST	TSTLIX			; yes - exit
   686	031326	037 07 0 00 000003 		TTALTM				; no - altmode typed?
   687	031327	254 00 0 00 031317 		JRST	TSTLI1			; no - do next test
   688	031330	037 00 0 00 030242 	TSTLIX:	PCRL				; final CRLF
   689	031331	263 17 0 00 000000 		RTN				; return
   690
   691
   692					;#********************************************************************
   693					;* TSTDIA - Return to DIAMON
   694					;#********************************************************************
   695
   696	031332	200 01 0 00 117341 	TSTDIA:	MOVE	1,[FMSGCD (DIAMON <CR>)]
   697	031333	260 17 0 00 000000*		GO	CHKARG			; check for argument
   698	031334	263 17 0 00 000000 		RTN				; error - exit
   699	031335	260 17 0 00 000000*		GO	DEVREL			; release the device
   700	031336	254 00 0 00 020000 		JRST	20000			; enter DIAMON
   701
   702
   703					;#********************************************************************
   704					;* TSTDDT - Enter DDT
   705					;#********************************************************************
   706
   707	031337	200 01 0 00 117345 	TSTDDT:	MOVE	1,[FMSGCD (DDT <CR>)]
   708	031340	260 17 0 00 031333*		GO	CHKARG			; check for argument
   709	031341	263 17 0 00 000000 		RTN				; error - exit
   710	031342	037 01 0 00 117346 		FMSGCD	<Type RTN$X to continue>
   711	031343	260 17 0 00 030007 		GO	SRTDDT			; enter DDT
   712	031344	260 17 0 00 000000*		GO	INITPD			; init PI system
   713	031345	260 17 0 00 031035*		GO	SETVEC			; set up vector addresses
   714	031346	400 01 0 00 000000 		SETZ	1,			; clear AC1
   715	031347	263 17 0 00 000000 		RTN				; ask for a test
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 17
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0180

   716
   717					;#********************************************************************
   718					;* TSTHLT - Program halts - CONTINUE will start it back up.
   719					;#********************************************************************
   720
   721	031350	200 01 0 00 117357 	TSTHLT:	MOVE	1,[FMSGCD (EXIT <CR>)]
   722	031351	260 17 0 00 031340*		GO	CHKARG			; check for argument
   723	031352	263 17 0 00 000000 		RTN				; error - exit
   724	031353	260 17 0 00 031335*		GO	DEVREL			; release the device
   725	031354	260 17 0 00 000000*		GO	.CLOSE			; close any open files
   726	031355	332 00 0 00 020000 		SKIPE	20000			; DIAMON loaded?
   727	031356	254 00 0 00 020000 		JRST	20000			; yes - return there
   728	031357	254 04 0 00 031360 		HALT	.+1			; no - halt
   729	031360	254 00 0 00 030611 		JRST	START			; continue
   730
   731
   732					;#********************************************************************
   733					;* TSTZER - Clear statistics
   734					;#********************************************************************
   735
   736	031361	200 01 0 00 117363 	TSTZER:	MOVE	1,[FMSGCD (ZERO <CR>)]
   737	031362	260 17 0 00 031351*		GO	CHKARG			; check for argument
   738	031363	263 17 0 00 000000 		RTN				; error - exit
   739	031364	260 17 0 00 043661 		GO	SZERO			; clear statistics
   740	031365	263 17 0 00 000000 		RTN				; done
   741
   742
   743					;#********************************************************************
   744					;* TSTCON - Print configuration
   745					;#********************************************************************
   746
   747	031366	200 01 0 00 117370 	TSTCON:	MOVE	1,[FMSGCD (CONFIG <CR>)]
   748	031367	260 17 0 00 031362*		GO	CHKARG			; check for argument
   749	031370	263 17 0 00 000000 		RTN				; error - exit
   750	031371	260 17 0 00 043073 		GO	CONPNT			; print configuration
   751	031372	263 17 0 00 000000 		RTN				; done
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 18
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0181

   752
   753					;#*********************************************************************
   754					;* TSTHLP - Help for 'WHAT TEST' question.
   755					;#*********************************************************************
   756
   757					TSTHLP:	MOVN	1,[FMSGD <
   758					HELP ALL     MISC
   759	031373	210 01 0 00 117402 	     TESTS   SWITCH>]
   760	031374	260 17 0 00 000000*		GO	.SARG			; get SIXBIT argument
   761	031375	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
   762						 GO	[MOVE	[SIXBIT /ALL/]	; no argument - assume all
   763							 MOVEM	ARGUM
   764	031376	260 17 0 00 117404 			 RTN]
   765	031377	200 01 0 00 031306*		MOVE	1,ARGUM			; get sixbit command
   766	031400	201 02 0 00 031413 		MOVEI	2,TSTHLC		; get address of cmd list
   767	031401	260 17 0 00 031110*		GO	.COMM			; handle command decoding
   768						 JRST	[FMSGCD	<? Unrecognizable - Type ? for help>
   769							 GO	FIOFF
   770	031402	254 00 0 00 117407 			 RTN]			; error return
   771	031403	037 01 0 00 000026 		PFORCE				; handle Control-O
   772	031404	200 02 0 00 000001 		MOVE	2,1			; get AC1
   773	031405	336 03 0 01 031420 	TSTHL0:	SKIPN	3,TSTHLL(1)		; get address of TMSG
   774	031406	263 17 0 00 000000 		RTN				; all done - exit
   775	031407	256 00 0 00 000003 		XCT	3			; print it
   776	031410	350 00 0 00 000001 		AOS	1			; point to next address
   777	031411	322 02 0 00 031405 		JUMPE	2,TSTHL0		; loop till done
   778	031412	263 17 0 00 000000 		RTN				; exit
   779
   780	031413	41 54 54 00 00 00 	TSTHLC:	SIXBIT	/ALL/			; print all help info
   781	031414	64 45 63 64 63 00 		SIXBIT	/TESTS/			; print test commands
   782	031415	55 51 63 43 00 00 		SIXBIT	/MISC/			; print miscellaneous commands
   783	031416	63 67 51 64 43 50 		SIXBIT	/SWITCH/		; print switch commands
   784	031417	000000	000000			0				; end of list
   785
   786	031420	037 00 0 00 117412 	TSTHLL:	TMSGCD	<Tests Available:>
   787
   788						TMSGD	<
   789					ALL n   Execute ALL tests (n times)
   790					PORT n  Execute Port modules tests
   791					NIA n   Execute NIA module tests
   792					LOOP n  Execute Loopback tests
   793					FUNCT n Execute Functional tests
   794	031421	037 00 0 00 117417 	m n     Test m>
   795
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 19
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0182

   796						TMSGD	<
   797					TAKE    Take cmds from file
   798					NTAKE   Take commands from file (unechoed)
   799					DEBUG   Enter port debugger
   800					DIAMON  Enter DIAMON
   801					DDT     Enter DDT
   802					HELP    Print this
   803					EXIT    Exit program   
   804					
   805					STATIS  Print statistics
   806					ZSTATS  Clear statistics
   807					ZCOUNT  Clear counters
   808					CONFIG  Print configuration   
   809					ENABLE  Enable specified tests
   810					DISABL  Disable specified tests
   811					DISLIS  List disabled tests
   812	031422	037 00 0 00 117466 	LIST    List test descriptions>
   813
   814						TMSGD	<
   815					Switches:  To complement switch, type switch name
   816					
   817					SWITCH  Enter switches
   818					SWPRIN  Print current switches
   819					
   820					NOPNT   ERSTOP  TXTINH  TRACE   LOOPGM  DSPEAR  LDEBUG
   821					PNTLPT  PALERS  OPRSEL  INHFLT  LOOPTS  UDEBUG  DDEBUG
   822	031423	037 00 0 00 117614 	DING    RELIAB          INHMSG  RUNALL  MDEBUG  EDEBUG>
   823	031424	000000	000000			0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 20
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0183

   824
   825					;#********************************************************************
   826					;* TSTDSA - Disable a test.
   827					;* TSTENA - Enable a test.
   828					;#********************************************************************
   829
   830	031425	402 00 0 00 134157'	TSTDSA:	SETZM	ENATST#			; clear 'enable' flag
   831	031426	200 00 0 00 117710 		MOVE	[FMSGCD (DISABL n1,n2, ... <CR>)]
   832	031427	202 00 0 00 134247'		MOVEM	TMP1#
   833	031430	254 00 0 00 031434 		JRST	TSTEN0			; continue
   834	031431	476 00 0 00 134157'	TSTENA:	SETOM	ENATST#			; set 'enable' flag
   835	031432	200 00 0 00 117714 		MOVE	[FMSGCD (ENABLE n1,n2, ... <CR>)]
   836	031433	202 00 0 00 134247'		MOVEM	TMP1#
   837	031434	336 00 0 00 031061*	TSTEN0:	SKIPN	ARGFLG			; argument given?
   838						JRST	[FMSGCD	<? Missing argument>
   839							 GO	FIOFF
   840	031435	254 00 0 00 117722 			 RTN]
   841
   842					; Get an argument
   843
   844	031436	200 01 0 00 134247'	TSTDS0:	MOVE	1,TMP1			; get help string
   845	031437	260 17 0 00 000000*		GO	.OARG			; yes - get octal argument
   846	031440	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
   847	031441	263 17 0 00 000000 		 RTN				; no more arguments
   848	031442	333 01 0 00 031377*		SKIPLE	1,ARGUM			; get argument
   849	031443	303 01 0 00 000027 		CAILE	1,MAXTST		; out of range?
   850						JRST	[FMSGC	<? Test selected is not in range 1->
   851							 MOVEI	MAXTST		; get range
   852							 PNTOCF			; print it
   853							 PCRLF
   854							 GO	FIOFF
   855	031444	254 00 0 00 117725 			 RTN]
   856	031445	202 01 0 00 115576 		MOVEM	1,TSTNUM		; save test number
   857
   858					; Now perform the specified function
   859
   860	031446	200 02 0 01 032037 		MOVE	2,TSTTAB(1)		; get test dispatch word
   861	031447	332 00 0 00 134157'		SKIPE	ENATST			; 'enable' flag set?
   862	031450	621 02 0 00 000100 		TLZ	2,(TDENA)		; yes - clear 'disable' bit
   863	031451	336 00 0 00 134157'		SKIPN	ENATST			; 'enable' flag set?
   864	031452	661 02 0 00 000100 		TLO	2,(TDENA)		; no - set 'disable' bit
   865	031453	202 02 0 01 032037 		MOVEM	2,TSTTAB(1)		; save test dispatch word
   866	031454	254 00 0 00 031436 		JRST	TSTDS0			; get next argument
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 21
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0184

   867
   868					;#********************************************************************
   869					;* TSTDSL - List disabled tests
   870					;#********************************************************************
   871
   872	031455	200 01 0 00 117737 	TSTDSL:	MOVE	1,[FMSGCD (DISLIS <CR>)]
   873	031456	260 17 0 00 031367*		GO	CHKARG			; check for argument
   874	031457	263 17 0 00 000000 		RTN				; error - exit
   875	031460	402 00 0 00 115576 		SETZM	TSTNUM			; initialize test number
   876	031461	400 06 0 00 000000 		SETZ	6,			; count of tests printed
   877	031462	350 01 0 00 115576 	TSTDL0:	AOS	1,TSTNUM		; point to next test
   878	031463	303 01 0 00 000027 		CAILE	1,MAXTST		; done yet?
   879						JRST	[PCRL			; yes - return
   880	031464	254 00 0 00 117740 			 RTN]
   881	031465	200 00 0 01 032037 		MOVE	TSTTAB(1)		; get test dispatch word
   882	031466	607 00 0 00 000100 		TLNN	(TDENA)			; disabled?
   883	031467	254 00 0 00 031462 		JRST	TSTDL0			; no - try next test
   884	031470	377 00 0 00 000006 		SOSG	6			; done with line yet?
   885						GO	[MOVEI	6,12		; yes - reset counter and
   886							 PCRL			;   print a blank line
   887	031471	260 17 0 00 117742 			 RTN]
   888	031472	037 00 0 00 117745 		TMSG	<TST>
   889	031473	200 00 0 00 115576 		MOVE	TSTNUM			; get test number
   890	031474	037 16 0 00 000003 		PNTOCS				; print it
   891	031475	037 00 0 00 000040 		PSP
   892	031476	254 00 0 00 031462 		JRST	TSTDL0			; continue
   893
   894
   895					;#********************************************************************
   896					;* TSTPRI - Print statistics
   897					;#********************************************************************
   898
   899	031477	200 01 0 00 117752 	TSTPRI:	MOVE	1,[FMSGCD (STATIS <CR>)]
   900	031500	260 17 0 00 031456*		GO	CHKARG			; check for argument
   901	031501	263 17 0 00 000000 		RTN				; error - exit
   902	031502	260 17 0 00 043571 		GO	SREPOR			; go print statistics
   903	031503	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 22
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0185

   904
   905					;#********************************************************************
   906					;* TSTSWI/TSTSWP - Input switches / Print switch selections
   907					;#********************************************************************
   908
   909	031504	200 01 0 00 117757 	TSTSWI:	MOVE	1,[FMSGCD (SWITCH <CR>)]
   910	031505	260 17 0 00 031500*		GO	CHKARG			; check for argument
   911	031506	263 17 0 00 000000 		RTN				; error - exit
   912	031507	260 17 0 00 000000*		GO	.ISWT			; input switches
   913	031510	263 17 0 00 000000 		RTN				; ask for a test
   914
   915	031511	200 01 0 00 117764 	TSTSWP:	MOVE	1,[FMSGCD (SWPRIN <CR>)]
   916	031512	260 17 0 00 031505*		GO	CHKARG			; check for argument
   917	031513	263 17 0 00 000000 		RTN				; error - exit
   918	031514	260 17 0 00 000000*		GO	.SWCHP			; print switches
   919	031515	263 17 0 00 000000 		RTN				; ask for a test
   920
   921
   922					;#********************************************************************
   923					;* TSTSSW - Switch complement commands
   924					;#********************************************************************
   925
   926	031516	200 01 0 00 117772 	TSTSSW:	MOVE	1,[FMSGCD (Switch Name <CR>)]
   927	031517	260 17 0 00 031512*		GO	CHKARG			; check for argument
   928	031520	263 17 0 00 000000 		RTN				; error - exit
   929	031521	200 01 0 00 000000*		MOVE	1,.CGOT			; get dispatch number
   930	031522	275 01 0 00 000027 		SUBI	1,SWSTT			; normalize to 0..
   931	031523	260 17 0 00 000000*		GO	SWCOM			; complement switch
   932	031524	263 17 0 00 000000 		RTN				; continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 23
DFNIA1	MAC	18-Feb-84 20:30		Test/Command Selection                                                             SEQ 0186

   933
   934					;#********************************************************************
   935					;* TSTTAK - Take commands from a file
   936					;* TSTTAN - Take commands from a file without echoing results
   937					;
   938					; This works by reading commands from a file as if they were being
   939					; typed to the diagnostic directly.  Either end of file or the first
   940					; occurrence of an error halts this procedure.
   941					;#********************************************************************
   942
   943	031525	402 00 0 00 134160'	TSTTAN:	SETZM	FINECH			; clear echo switch
   944	031526	334 00 0 00 000000 		SKIPA				; continue
   945	031527	476 00 0 00 134160'	TSTTAK:	SETOM	FINECH			; set echo switch
   946	031530	200 01 0 00 120003 		MOVE	1,[FMSGCD (TAKE <CR> or TAKE Fname Ext <CR>)]
   947	031531	260 17 0 00 031374*		GO	.SARG			; get SIXBIT argument
   948	031532	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
   949	031533	254 00 0 00 031544 		 JRST	TSTTA0			; no more arguments
   950	031534	200 01 0 00 031442*		MOVE	1,ARGUM			; get argument
   951	031535	202 01 0 00 031561 		MOVEM	1,TAKFIL		; save file name
   952	031536	210 01 0 00 120003 		MOVN	1,[FMSGCD (TAKE <CR> or TAKE Fname Ext <CR>)]
   953	031537	260 17 0 00 031531*		GO	.SARG			; get SIXBIT argument
   954	031540	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
   955	031541	254 00 0 00 031544 		 JRST	TSTTA0			; no more arguments
   956	031542	200 01 0 00 031534*		MOVE	1,ARGUM			; get argument
   957	031543	202 01 0 00 031562 		MOVEM	1,TAKFIL+1		; save file name extension
   958
   959					; Now start reading the file specified
   960
   961	031544	260 17 0 00 031115*	TSTTA0:	GO	FIOFF			; shut off previous file input
   962	031545	201 00 0 00 031561 		MOVEI	TAKFIL			; point to file name buffer
   963	031546	037 05 0 00 000004 		FSELECT				; init the file
   964						JRST	[FMSGC	<? Can't access ">
   965							 MOVE	TAKFIL			; get file name
   966							 PNTSXF				; print it
   967							 PNTCIF	"."
   968							 MOVE	TAKFIL+1		; get extension
   969							 PNTSXF				; print it
   970							 FMSGD	<" on selected load device.>
   971	031547	254 00 0 00 120016 			 RTN]
   972	031550	037 01 0 00 120026 		FMSGC	<[File input from: >
   973	031551	200 00 0 00 031561 		MOVE	TAKFIL			; get the selected file name
   974	031552	037 01 0 00 000002 		PNTSXF				; print it
   975	031553	037 01 0 00 000056 		PNTCIF	"."
   976	031554	200 00 0 00 031562 		MOVE	TAKFIL+1		; get the extension of file
   977	031555	037 01 0 00 000002 		PNTSXF				; print it
   978	031556	037 01 0 00 120033 		FMSGD	<]>
   979	031557	476 00 0 00 134161'		SETOM	FINPUT			; set 'file input' flag
   980	031560	263 17 0 00 000000 		RTN				; exit
   981
   982					; File name
   983
   984	031561	44 46 56 51 41 00 	TAKFIL:	SIXBIT	/DFNIA/
   985	031562	43 55 44 00 00 00 		SIXBIT	/CMD/
   986
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 24
DFNIA1	MAC	18-Feb-84 20:30		Test Dispatching                                                                   SEQ 0187

   987						SUBTTL	Test Dispatching
   988
   989					;#********************************************************************
   990					;* TSTSPC - Run only one test
   991					;#********************************************************************
   992
   993	031563	201 00 0 00 032003 	TSTSPC:	MOVEI	TSTALT			; set up altmode transfer address
   994	031564	202 00 0 00 030063 		MOVEM	ALTMGO			;   to exit IPA testing
   995	031565	402 00 0 00 115603 		SETZM	TSTREP			; clear pass count
   996	031566	260 17 0 00 031120*		GO	SWITT			; get program switches
   997	031567	602 00 0 00 020000 		TRNE	LOOPTS			; loop on test?
   998						JRST	[HRLEI	377777		; yes - get 'infinite' repeat count
   999	031570	254 00 0 00 120034 			 JRST	.+2]
  1000	031571	201 00 0 00 000001 		MOVEI	1			; no - set repeat count requested
  1001	031572	202 00 0 00 115604 		MOVEM	TSTREQ			;   to 1 pass
  1002	031573	402 00 0 00 115605 		SETZM	TSTMUL			; clear multiple test flag
  1003	031574	336 00 0 00 031434*		SKIPN	ARGFLG			; argument given?
  1004	031575	254 00 0 00 031604 		JRST	TSTSP0			; no - do the test
  1005	031576	210 01 0 00 120043 		MOVN	1,[FMSGCD (n RepeatCount <CR>)]
  1006	031577	260 17 0 00 031303*		GO	.DARG			; yes - get repeat count argument
  1007	031600	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  1008	031601	334 00 0 00 000000 		 SKIPA				; no argument given
  1009	031602	200 00 0 00 031542*		MOVE	ARGUM			; get argument
  1010	031603	202 00 0 00 115604 		MOVEM	TSTREQ			; save it
  1011	031604	476 00 0 00 031574*	TSTSP0:	SETOM	ARGFLG			; remember that we had an argument
  1012	031605	254 00 0 00 031716 		JRST	TSTD3			; do the test
  1013
  1014
  1015					;#********************************************************************
  1016					;* RANGEN - Random number generator
  1017					;#********************************************************************
  1018
  1019	031606	261 17 0 00 000001 	RANGEN:	RPUT	(1,2)			; save AC's
  1020
  1021	031610	200 01 0 00 134222'		MOVE	1,RANNUM#		; get base number
  1022	031611	270 01 0 00 030022 		ADD	1,RANDBS		; modify number in AC1
  1023	031612	241 01 0 00 777774 		ROT	1,-4			; to create a new number
  1024	031613	447 01 0 00 134222'		EQVB	1,RANNUM		; put result in AC1 and RANNUM
  1025	031614	405 01 0 00 007777 		ANDI	1,7777			; save only 4 digits
  1026	031615	220 01 0 17 777777 		IMUL	1,-1(P)			; obtain (0..n-1)*10000
  1027	031616	242 01 0 00 777764 		LSH	1,-^D12			; obtain 0..n-1
  1028	031617	350 00 0 00 000001 		AOS	1			; obtain 1..n
  1029	031620	313 01 0 17 777777 		CAMLE	1,-1(P)			; in range?
  1030	031621	200 01 0 17 777777 		MOVE	1,-1(P)			; no - force it to be
  1031	031622	250 01 0 17 777777 		EXCH	1,-1(P)			; set up returned argument
  1032	031623	262 17 0 00 000002 		RGET	(2,1)			; restore AC's
  1033
  1034	031625	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 25
DFNIA1	MAC	18-Feb-84 20:30		Test Dispatching                                                                   SEQ 0188

  1035
  1036					;#********************************************************************
  1037					; TSTRAN - Run tests randomly
  1038					;#********************************************************************
  1039
  1040	031626	201 00 0 00 031647 	TSTRAN:	MOVEI	TSTRAA			; set up altmode transfer address
  1041	031627	202 00 0 00 030063 		MOVEM	ALTMGO			;   to exit port testing
  1042	031630	402 00 0 00 115603 		SETZM	TSTREP			; clear pass count
  1043	031631	201 00 0 00 000001 		MOVEI	1			; set repeat count requested
  1044	031632	202 00 0 00 115604 		MOVEM	TSTREQ			;   to 1 pass
  1045	031633	402 00 0 00 115605 		SETZM	TSTMUL			; clear multiple test flag
  1046	031634	402 00 0 00 134221'		SETZM	RANCNT#			; initialize test count
  1047	031635	400 03 0 00 000000 		SETZ	3,			; set up a base number using the
  1048	031636	260 17 0 00 030763*		GO	RUNTME			;   program run time and save
  1049	031637	200 00 0 00 000000*		MOVE	CURTIM			;   it in RANNUM
  1050	031640	202 00 0 00 134222'		MOVEM	RANNUM
  1051
  1052					; Determine test to run
  1053
  1054	031641	201 01 0 00 000027 	TSTRA0:	MOVEI	1,MAXTST		; get range 1..MAXTST
  1055	031642	260 17 0 00 031606 		GO	RANGEN			; get a random number (in AC1)
  1056	031643	202 01 0 00 115576 		MOVEM	1,TSTNUM		; save test number
  1057	031644	260 17 0 00 031716 		GO	TSTD3			; do the test
  1058	031645	350 01 0 00 134221'		AOS	1,RANCNT		; increment test count
  1059	031646	254 00 0 00 031641 		JRST	TSTRA0			; keep looping
  1060
  1061					; Altmode exit
  1062
  1063	031647	037 01 0 00 120044 	TSTRAA:	FMSGC	<[Testing aborted after >
  1064	031650	200 00 0 00 134221'		MOVE	RANCNT			; get test count
  1065	031651	037 15 0 00 000001 		PNTDCF				; print it
  1066	031652	037 01 0 00 120052 		FMSG	<. tests]>
  1067	031653	262 17 0 00 134261'		GET	XXX#			; pop off extra item
  1068	031654	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 26
DFNIA1	MAC	18-Feb-84 20:30		Test Dispatching                                                                   SEQ 0189

  1069
  1070					;#********************************************************************
  1071					;* TSTDIS - Dispatch to the tests
  1072					;#********************************************************************
  1073
  1074					; Set up flags, defaults, etc.
  1075
  1076	031655	201 00 0 00 032003 	TSTDIS:	MOVEI	TSTALT			; set up altmode transfer address
  1077	031656	202 00 0 00 030063 		MOVEM	ALTMGO			;   to exit port testing
  1078	031657	402 00 0 00 115603 		SETZM	TSTREP			; clear pass count
  1079	031660	402 00 0 00 115604 		SETZM	TSTREQ			; set repeat count requested to 1
  1080	031661	350 00 0 00 115604 		AOS	TSTREQ			;   pass
  1081	031662	476 00 0 00 115605 		SETOM	TSTMUL			; set multiple test flag
  1082	031663	402 00 0 00 115576 		SETZM	TSTNUM			; initialize test number
  1083	031664	336 00 0 00 031604*		SKIPN	ARGFLG			; argument given?
  1084	031665	254 00 0 00 031675 		JRST	TSTD0			; no - do the tests
  1085	031666	210 01 0 00 120061 		MOVN	1,[FMSGCD (CMD RepeatCount <CR>)]
  1086	031667	260 17 0 00 031577*		GO	.DARG			; yes - get repeat count argument
  1087	031670	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  1088	031671	334 00 0 00 000000 		 SKIPA				; no argument given
  1089	031672	200 00 0 00 031602*		MOVE	ARGUM			; get argument
  1090	031673	202 00 0 00 115604 		MOVEM	TSTREQ			; save it
  1091	031674	476 00 0 00 031664*		SETOM	ARGFLG			; remember that we had an argument
  1092
  1093					; If OPRSEL switch is not set then all tests are run.
  1094
  1095	031675	402 00 0 00 032151 	TSTD0:	SETZM	TSTRES			; clear first word
  1096	031676	200 00 0 00 120062 		MOVE	[TSTRES,,TSTRES+1]	; build BLT pointer
  1097	031677	251 00 0 00 032230 		BLT	TSTRES+57		; clear the results
  1098	031700	260 17 0 00 031566*		GO	SWITT			; get the pgm switches
  1099	031701	607 00 0 00 000010 		TLNN	OPRSEL			; OPRSEL set?
  1100	031702	254 00 0 00 031716 		JRST	TSTD3			; no - go run all of them
  1101
  1102					; Handle pass count
  1103
  1104	031703	200 00 0 00 115604 	TSTD1:	MOVE	TSTREQ			; get argument typed
  1105	031704	332 00 0 00 031674*		SKIPE	ARGFLG			; any argument given?
  1106	031705	254 00 0 00 031715 		JRST	TSTD2			; yes - skip over this question
  1107	031706	332 00 0 00 134161'		SKIPE	FINPUT			; file input switch set?
  1108						JRST	[MOVEI	1		; yes - default to 1 iteration
  1109	031707	254 00 0 00 120063 			 JRST	TSTD2]
  1110	031710	037 01 0 00 120065 		FMSGC	<How many passes? (CR to loop forever) - >
  1111	031711	037 04 0 00 000003 		TTIDEC
  1112	031712	007 00 0 00 031703 		ALTCHK	TSTD1
  1113	031713	336 00 0 00 030510 		SKIPN	TTNBRF			; CR typed?
  1114	031714	200 00 0 00 120076 		MOVE	[377777,,777777]	; yes - loop forever
  1115	031715	202 00 0 00 115604 	TSTD2:	MOVEM	TSTREQ			; save count
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 27
DFNIA1	MAC	18-Feb-84 20:30		Test Dispatching                                                                   SEQ 0190

  1116
  1117					; Save test number selection for multiple pass use
  1118
  1119	031716	200 00 0 00 115576 	TSTD3:	MOVE	TSTNUM			; get test number
  1120	031717	202 00 0 00 134235'		MOVEM	SAVNUM#			; save test number
  1121	031720	476 00 0 00 115611 		SETOM	PMODE			; set program mode to 'test'
  1122
  1123					; Initialize test number at beginning of pass
  1124
  1125	031721	200 00 0 00 134235'	TSTD4:	MOVE	SAVNUM			; get test number
  1126	031722	202 00 0 00 115576 		MOVEM	TSTNUM			; save test number
  1127	031723	260 17 0 00 031700*		GO	SWITT			; get the pgm switches
  1128	031724	201 01 0 00 000001 		MOVEI	1,1			; initialize repeat count
  1129	031725	603 00 0 00 000400 		TLNE	RELIAB			; reliability switch set?
  1130	031726	201 01 0 00 000004 		MOVEI	1,4			; yes - set up count of 4
  1131	031727	202 01 0 00 115607 		MOVEM	1,TSTREL		; save it
  1132
  1133					; Now actually do the tests
  1134
  1135	031730	200 00 0 00 115607 	TSTD5:	MOVE	TSTREL			; get reliability count
  1136	031731	202 00 0 00 115610 		MOVEM	TSTCNT			; save it
  1137	031732	350 01 0 00 115576 		AOS	1,TSTNUM		; point to next test
  1138	031733	303 01 0 00 000027 		CAILE	1,MAXTST		; end of tests?
  1139	031734	254 00 0 00 031770 		JRST	TSTD9			; yes - handle
  1140	031735	200 16 0 00 115612 	TSTD6:	MOVE	MBCN,NIPORT		; valid test - set up MBCN
  1141	031736	200 02 0 01 032037 		MOVE	2,TSTTAB(1)		; get test dispatch word
  1142	031737	512 02 0 00 115601 		HLLZM	2,TSTFLG		; set up test flags
  1143	031740	552 02 0 00 115600 		HRRZM	2,TSTPC			; set up test PC
  1144	031741	402 00 0 00 134254'		SETZM	TXADDL			; clear 'addl text' routine address
  1145	031742	402 00 0 00 066700 		SETZM	IQFUL			; clear number of times freeq empty
  1146	031743	201 00 0 00 000100 		MOVEI	100			; set up minumum number of
  1147	031744	202 00 0 00 066701 		MOVEM	IQFMIN			;   entries on the free queue
  1148	031745	402 00 0 00 066702 		SETZM	IQCMAX			; clear maximum entries on cmd queue
  1149
  1150					; Verify that test should be run
  1151
  1152	031746	200 02 0 00 115602 		MOVE	2,TSTMSK		; get test mask
  1153	031747	332 00 0 00 115605 		SKIPE	TSTMUL			; multiple passes?
  1154	031750	612 02 0 00 115601 		TDNE	2,TSTFLG		; valid test to execute?
  1155	031751	260 17 1 00 115600 		GO	@TSTPC			; yes - dispatch to test
  1156
  1157					; Dispatch is done - now check altmode
  1158
  1159	031752	332 00 0 00 134143'	TSTD7:	SKIPE	ALTF			; 'altmode typed' flag set?
  1160	031753	254 00 1 00 030063 		JRST	@ALTMGO			; yes - exit
  1161	031754	037 07 0 00 000003 		TTALTM				; altmode typed?
  1162	031755	334 00 0 00 000000 		SKIPA				; no - continue
  1163	031756	254 00 1 00 030063 		JRST	@ALTMGO			; yes - exit thru $ transfer address
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 28
DFNIA1	MAC	18-Feb-84 20:30		Test Dispatching                                                                   SEQ 0191

  1164
  1165					; Loop till reliability count expired
  1166
  1167	031757	373 00 0 00 115610 		SOSLE	TSTCNT			; decrement reliability count
  1168	031760	254 00 0 00 031735 		JRST	TSTD6			; loop till done
  1169	031761	332 00 0 00 030037 	TSTD8:	SKIPE	USER			; user mode?
  1170	031762	254 00 0 00 031766 		JRST	.+4			; yes - continue
  1171	031763	260 17 0 00 031723*		GO	SWITT			; get switches
  1172	031764	603 00 0 00 200000 		TLNE	RSTART			; RSTART switch set?
  1173	031765	254 00 0 00 030611 		JRST	START			; yes - restart the diagnostic
  1174	031766	332 00 0 00 115605 		SKIPE	TSTMUL			; multiple tests being done?
  1175	031767	254 00 0 00 031730 		JRST	TSTD5			; yes - do next test
  1176
  1177					; Now bump pass count
  1178
  1179	031770	350 01 0 00 115603 	TSTD9:	AOS	1,TSTREP		; increment pass count
  1180	031771	332 00 0 00 115605 		SKIPE	TSTMUL			; multiple test flag set?
  1181	031772	260 17 0 00 032021 		GO	TSTEOP			; yes - print end of pass message
  1182	031773	260 17 0 00 031763*		GO	SWITT			; get switches
  1183	031774	336 00 0 00 030037 		SKIPN	USER			; user mode?
  1184	031775	607 00 0 00 400000 		TLNN	ABORT			; abort switch set?
  1185	031776	334 00 0 00 000000 		SKIPA				; no - continue (or user mode)
  1186	031777	263 17 0 00 000000 		RTN				; exit
  1187	032000	373 00 0 00 115604 		SOSLE	TSTREQ			; passes all done?
  1188	032001	254 00 0 00 031721 		JRST	TSTD4			; no - keep looping
  1189	032002	263 17 0 00 000000 		RTN				; exit
  1190
  1191					; Altmode transfer code
  1192
  1193	032003	037 01 0 00 120077 	TSTALT:	FMSGC	<[Testing aborted>
  1194	032004	336 00 0 00 115603 		SKIPN	TSTREP			; zero passes?
  1195	032005	254 00 0 00 032012 		JRST	TSTAL0			; yes - don't print how many
  1196	032006	037 01 0 00 120103 		FMSG	< after >
  1197	032007	200 00 0 00 115603 		MOVE	TSTREP			; get pass count
  1198	032010	037 15 0 00 000001 		PNTDCF				; print it
  1199	032011	037 01 0 00 120105 		FMSG	<. passes>
  1200	032012	037 01 0 00 120033 	TSTAL0:	FMSGD	<]>
  1201	032013	260 17 0 00 031544*		GO	 FIOFF			; clear 'file input' switch
  1202	032014	476 00 0 00 134143'		SETOM	ALTF			; set altmode typed flag
  1203	032015	260 17 0 00 031773*		GO	SWITT			; get program switches
  1204	032016	607 00 0 00 000010 		TLNN	OPRSEL			; OPRSEL switch set?
  1205	032017	254 00 0 00 031332 		JRST	TSTDIA			; no - exit to DIAMON
  1206	032020	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 29
DFNIA1	MAC	18-Feb-84 20:30		Test Dispatching                                                                   SEQ 0192

  1207
  1208					; End of pass message
  1209
  1210	032021	260 17 0 00 032015*	TSTEOP:	GO	SWITT			; get switches
  1211	032022	607 00 0 00 000010 		TLNN	OPRSEL			; operator select?
  1212	032023	263 17 0 00 000000 		RTN				; no - don't print end of pass
  1213	032024	332 00 0 00 134156'		SKIPE	EDEBUG			; expanded data switch set?
  1214						GO	[TMSG	<Port->		; yes - print what port
  1215							 LDB	[POINT 3,MBCN,9];   this is
  1216							 PNT2
  1217							 PSP
  1218	032025	260 17 0 00 120112 			 RTN]
  1219	032026	037 00 0 00 120117 		TMSG	<End Pass >		; print pass count
  1220	032027	200 00 0 00 115603 		MOVE	TSTREP
  1221	032030	037 15 0 00 000000 		PNTDEC
  1222	032031	037 00 0 00 117043 		TMSG	<. at >
  1223	032032	402 00 0 00 030761*		SETZM	FORPNT			; clear force print
  1224	032033	200 03 0 00 117045 		MOVE	3,[JFCL]		; set up timer routine
  1225	032034	260 17 0 00 031636*		GO	RUNTME			; print current time
  1226	032035	037 00 0 00 030242 		PCRL
  1227	032036	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 30
DFNIA1	MAC	18-Feb-84 20:30		Test Dispatching                                                                   SEQ 0193

  1228
  1229					; Table of test names and flags
  1230
  1231	032037	000000	000000		TSTTAB:	0
  1232	032040	000000000000#			PORT!TST1			; 1
  1233	032041	000000000000#			PORT!TST2			; 2
  1234	032042	000000000000#			PORT!TST3			; 3
  1235	032043	000000000000#			FUNCT!TST4			; 4
  1236	032044	000000000000#			FUNCT!TST5			; 5
  1237	032045	000000000000#			NIA!TST6			; 6
  1238	032046	000000000000#			NIA!TST7			; 7
  1239	032047	000000000000#			NIA!TST10			; 10
  1240	032050	000000000000#			NIA!TST11			; 11
  1241	032051	000000000000#			LOOP!TST12			; 12
  1242	032052	000000000000#			LOOP!TST13			; 13
  1243	032053	000000000000#			LOOP!TST14			; 14
  1244	032054	000000000000#			FUNCT!TST15			; 15
  1245	032055	000000000000#			FUNCT!TST16			; 16
  1246	032056	000000000000#			FUNCT!TST17			; 17
  1247	032057	000000000000#			FUNCT!TST20			; 20
  1248	032060	000000000000#			FUNCT!TST21			; 21
  1249	032061	000000000000#			FUNCT!TST22			; 22
  1250	032062	000000000000#			FUNCT!TST23			; 23
  1251	032063	000000000000#			FUNCT!TST24			; 24
  1252	032064	000000000000#			FUNCT!TST25			; 25
  1253	032065	000000000000#			FUNCT!TST26			; 26
  1254	032066	000000000000#			LOOP!TST27			; 27
  1255	032067	000000	000000		TSTMAX:	0
  1256
  1257					; Table of address of test microcode
  1258
  1259	032070	000000	000000		TSTMIC:	0
  1260	032071	000000	000000			0				; 1
  1261	032072	000000000000#			T2M				; 2
  1262	032073	000000000000#			T3M				; 3
  1263	032074	000000	000000			0				; 4
  1264	032075	000000	000000			0				; 5
  1265	032076	000000	000000			0				; 6
  1266	032077	000000	000000			0				; 7
  1267	032100	000000	000000			0				; 10
  1268	032101	000000	000000			0				; 11
  1269	032102	000000	000000			0				; 12
  1270	032103	000000	000000			0				; 13
  1271	032104	000000	000000			0				; 14
  1272	032105	000000	000000			0				; 15
  1273	032106	000000	000000			0				; 16
  1274	032107	000000	000000			0				; 17
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 31
DFNIA1	MAC	18-Feb-84 20:30		Test Dispatching                                                                   SEQ 0194

  1275	032110	000000	000000			0				; 20
  1276	032111	000000	000000			0				; 21
  1277	032112	000000	000000			0				; 22
  1278	032113	000000	000000			0				; 23
  1279	032114	000000	000000			0				; 24
  1280	032115	000000	000000			0				; 25
  1281	032116	000000	000000			0				; 26
  1282	032117	000000	000000			0				; 27
  1283
  1284					; Test names
  1285
  1286	032120	000000	000000		TSTNAM:	0
  1287	032121	037 00 0 00 120121 		TMSG	<Port Hardware Test 1> 		; 1
  1288	032122	037 00 0 00 120126 		TMSG	<Port Hardware Test 2>		; 2
  1289	032123	037 00 0 00 120133 		TMSG	<Port Hardware Test 3>		; 3
  1290	032124	037 00 0 00 120140 		TMSG	<Idle Loop Test>		; 4
  1291	032125	037 00 0 00 120143 		TMSG	<Queue Handling Test>		; 5
  1292	032126	037 00 0 00 120147 		TMSG	<NSA ROM Address Test>		; 6
  1293	032127	037 00 0 00 120154 		TMSG	<NSA RAM Address Test>		; 7
  1294	032130	037 00 0 00 120161 		TMSG	<CRC Test 1>			; 10
  1295	032131	037 00 0 00 120164 		TMSG	<CRC Test 2>			; 11
  1296	032132	037 00 0 00 120167 		TMSG	<Non-BSD Datagram Loopback Test>; 12
  1297	032133	037 00 0 00 120176 		TMSG	<BSD Datagram Loopback Test 1>	; 13
  1298	032134	037 00 0 00 120204 		TMSG	<BSD Datagram Loopback Test 2>	; 14
  1299	032135	037 00 0 00 120212 		TMSG	<Multicast Table Test 1> 	; 15
  1300	032136	037 00 0 00 120217 		TMSG	<Multicast Table Test 2>	; 16
  1301	032137	037 00 0 00 120224 		TMSG	<Multicast Table Test 3>	; 17
  1302	032140	037 00 0 00 120231 		TMSG	<Broadcast Test 3>		; 20
  1303	032141	037 00 0 00 120235 		TMSG	<PTT Table Test 1>		; 21
  1304	032142	037 00 0 00 120241 		TMSG	<PTT Table Test 2>		; 22
  1305	032143	037 00 0 00 120245 		TMSG	<PTT Table Test 3>		; 23
  1306	032144	037 00 0 00 120251 		TMSG	<PAD Flag Bit Test 1>		; 24
  1307	032145	037 00 0 00 120255 		TMSG	<PAD Flag Bit Test 2>		; 25
  1308	032146	037 00 0 00 120261 		TMSG	<Configuration Test> 		; 26
  1309	032147	037 00 0 00 120265 		TMSG	<Statistics Test>		; 27
  1310	032150	000000	000000			0
  1311
  1312	032151				TSTRES:	BLOCK	60			; test results
  1313
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 32
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0195

  1314						SUBTTL	Port Debugger
  1315
  1316					;#*********************************************************************
  1317					;* TSTDEB - Console command utility for the port.
  1318					;
  1319					; Command		Action
  1320					; -------		------
  1321					;  ?		   Print list of commands available.
  1322					;
  1323					;  HELP		   Print list of commands and description.
  1324					;  EXIT		   Exit debugger mode and go back to 'What Test' level.
  1325					;  DDT		   Enter DDT.
  1326					;
  1327					;  TAKE		   Take commands from specified file
  1328					;  NTAKE	   Take commands from specified file (unechoed)
  1329					;
  1330					;  SET ADDR adr      Set start address
  1331					;      CSR data      Set start CSR data
  1332					;      PARITY arg*   Set/clr auto par generation
  1333					;      EBUF arg*     Set/clr preserve EBUF flag
  1334					;      PCB arg*      Set/clr PCB CCW list for START
  1335					;      FNAME nm ext  Set default ucode file name
  1336					;      PAT n         Set data pattern
  1337					;      PATLIS arg    List data patterns
  1338					;      RESPON arg*   Set/clr forced response
  1339					;      FORMAT arg    Set format (COMPAT or HIDEN)
  1340					;      BSD arg       Set BSD style datagram
  1341					;      LENGTH len    Set text length
  1342					;      DADDR n1,n2   Set destination address
  1343					;      SADDR n1,n2   Set self address
  1344					;      PTTVAL arg    Set PTT value
  1345					;      PRINT adr     Set text length to print
  1346					;      INTERV sec    Interval (seconds)
  1347					;      SUMMAR sec    Summary interval (seconds)
  1348					;      WHAT          Print options
  1349					;      HELP          Set help message
  1350					;
  1351					;  ECSR		   Print contents of the CSR register (in octal).
  1352					;  DCSR	arg	   Change the contents of the CSR registers.
  1353					;  ZCSR		   Clear CSR register.
  1354					;
  1355					;  RESET	   Issue an EBUS reset.
  1356					;  CLEAR	   Issue a 'Clear Port'.
  1357					;
  1358					;  START adr	   Start port microcode by setting CSR Bit 21 'MPROC Run'.
  1359					;		   If address is supplied, start at that address; if no
  1360					;		   address is supplied, start at location 0.
  1361					;
  1362					;  STOP		   Stop port microcode by clearing CSR Bit 21 'MPROC Run'.
  1363					;		   Report the last CRAM address also.
  1364					;
  1365					;  CONT		   Clear the single step bit and set 'MPROC Run' in the port.
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 33
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0196

  1366
  1367					;  Response		Action
  1368					;  --------		------
  1369					;  SSTEP arg	   Single step the port microcode 'ARG' times.  Report 
  1370					;		   final CRAM address.
  1371					;
  1372					;  STRACE arg	   Single step the port microcode 'ARG' times.  Report 
  1373					;		   the CRAM address and CSR register contents after each
  1374					;		   micro-instruction.
  1375					;
  1376					;  SPRINT arg	   Print single step history data, 'ARG' entries.
  1377					;  SCLEAR	   Clear single step history data.
  1378					;  SSINIT	   Initialize single step data
  1379					;
  1380					;  EEBUF	   Print contents of EBUF register.
  1381					;  DEBUF arg	   Deposit data to EBUF register.
  1382					;  ZEBUF	   Zero EBUF register.
  1383					;
  1384					;  ELAR		   Print contents of LAR register.
  1385					;  DRAR	arg	   Deposit data to RAR register.
  1386					;  ZRAR		   Zero RAR register.
  1387					;
  1388					;  DCRAM adr,adr   Deposit data into port CRAM addresses specified by 'adr1'
  1389					;		   and 'adr2'.  The data will be queried for each address.
  1390					;		   The port microcode must be stopped.
  1391					;
  1392					;  BCRAM adr,adr   Deposit data as above, data is queried by bit field.
  1393					;
  1394					;  ACRAM adr,adr   Alter CRAM locations, addresses selected as above.
  1395					;
  1396					;  ECRAM adr,adr   Examine port CRAM addresses.  'Adr1' and 'adr2' specify
  1397					;		   examine limits.  The port microcode must be stopped.
  1398					;
  1399					;  LCRAM adr,adr   List port CRAM addresses.  'Adr1' and 'adr2' specify
  1400					;		   examine limits.  The port microcode must be stopped.
  1401					;
  1402					;  ZCRAM adr,adr   Zero port CRAM addresses.  'Adr1' and 'adr2' specify
  1403					;		   examine limits.  The port microcode must be stopped.
  1404					;
  1405					;  ELOCS adr,adr   Examine local storage contents
  1406					;  DLOCS adr,adr   Deposit local storage contents
  1407					;  ZLOCS adr,adr   Zero local storage contents
  1408					;
  1409					;  E2901 adr,adr   Examine 2901 registers
  1410					;  D2901 adr,data  Deposit 2901 registers
  1411					;  Z2901 adr,adr   Zero 2901 registers
  1412					;
  1413					;  MARK adr..      Set mark bit in CRAM locations
  1414					;  RMARK adr..	   Remove mark bit at CRAM address 'adr'
  1415					;  CMARK adr,adr   Clear mark bit in CRAM locations
  1416					;  LMARK	   List locations with mark bit set
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 34
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0197

  1417
  1418					;  Response		Action
  1419					;  --------		------
  1420					;  BREAK adr..	  Set a breakpoint at port CRAM address
  1421					;  RBREAK adr..	  Remove breakpoint at port CRAM address 'adr'
  1422					;  CBREAK adr,adr Clear all breakpoints
  1423					;  LBREAK adr,adr List breakpoints
  1424					;
  1425					;  LOAD	arg	  Load microcode into CRAM from a test.  'Arg' specifies
  1426					;		  the test number.
  1427					;  LIST arg	  List microcode of a test.  'Arg' specifies the test
  1428					;		  number.
  1429					;
  1430					;  FLOAD 	  Load microcode from disk file into CRAM.
  1431					;  FVERFY	  Verify microcode loaded.
  1432					;  FLIST	  List microcode on disk file.
  1433					;  FEXAM	  Examine microcode on disk file.
  1434					;
  1435					;  TRANSL arg     Translate given CSR bits to English.
  1436					;  CCODE	  Print current status of condition codes.
  1437					;  ESTACK	  Examine 2910 stack contents
  1438					;
  1439					;  FILLNX arg	  Fill CRAM with data as 'J=.+1,CTL=x', where 'x' is given.
  1440					;  FILLPC arg	  Fill CRAM with data as 'J=.,CTL=x', where 'x' is given.
  1441					;
  1442					;  IPRINT	  Print interrupt history
  1443					;  ICLEAR	  Clear interrupt history
  1444					;  IINIT	  Initialize interrupt system
  1445					;
  1446					;  STATIS	  Print statistics
  1447					;  ZSTATS	  Clear statistics
  1448					;  ZCOUNT	  Clear counters
  1449					;  CONFIG	  Print system configuration
  1450					;
  1451					;  CCWPNT	  Print CCW list
  1452					;  LOGPNT	  Print logout data
  1453					;
  1454					;  PINIT	  Initialize PCB
  1455					;  SIDLE	  Start port until reach IDLE loop
  1456					;  BPACK	  Build a packet
  1457					;  IQUEUE	  Put packet on cmd queue
  1458					;  PQUEUE	  Print contents of a queue
  1459					;  PPCB		  Print PCB
  1460					;  WATCH	  Watch port and print events
  1461					;
  1462					;  DEPPTT	  Deposit into PTT table
  1463					;  DEPMUL	  Deposit into Multicast address table
  1464					;  DEPPAK	  Deposit into packet
  1465					;
  1466					;  DPLI lnk,data  Deposit data to PLI
  1467					;  EPLI lnk,reg   Read PLI data
  1468					;
  1469					;  ETBUFF	  Read transmit buffers
  1470					;  ERBUFF	  Read receive buffers
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 35
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0198

  1471
  1472					;  Switches:  To complement switch, type switch name
  1473					;
  1474					;  SWITCH	   Enter switches
  1475					;  SWPRIN	   Print current switches
  1476					;
  1477					;  NOPNT   LOOPER  RELIAB   TRACE   LOOPGM  DSPEAR  LDEBUG
  1478					;  PNTLPT  ERSTOP  TXTINH   INHFLT  LOOPTS  UDEBUG  DDEBUG
  1479					;  DING    PALERS  OPRSEL   INHMSG  RUNALL  MDEBUG  EDEBUG
  1480					;
  1481					; Common Error Messages For 'DEBUG' Mode:
  1482					;
  1483					; "? Missing argument" - Response to "DEBUG>" prompt expects a command
  1484					;	plus an argument.
  1485					;
  1486					; "? Argument Error" - An attempt was made to decode an octal or decimal
  1487					;	argument.  It was undecipherable.
  1488					;
  1489					; "? Range nonsensical" - The beginning address is greater than ending
  1490					;	address.
  1491					;
  1492					; "? Range of CRAM locations is 0000-7777" - Argument(s) typed were not
  1493					;	in range.
  1494					;
  1495					; "? Port not stopped" - An operation requiring the port to be stopped
  1496					;	was issued when 'MPROC Run' was set.
  1497					;
  1498					; "? Port not running" - A function was issued to the port when it was
  1499					;	stopped.  It should have been running.
  1500					;
  1501					; "? Error accessing CSR registers" - A read of CSR register failed.
  1502					;
  1503					; "? Test specified does not have microcode" - An attempt to load ucode
  1504					;	from this test failed because the test doesn't have any.
  1505					;
  1506					; "? Unrecognized command" - Unrecognized command entered.
  1507					;#********************************************************************
  1508
  1509	032231	200 01 0 00 120274 	TSTDEB:	MOVE	1,[FMSGCD (DEBUG <CR>)]
  1510	032232	260 17 0 00 031517*		GO	CHKARG			; check for argument
  1511	032233	263 17 0 00 000000 		RTN				; error - exit
  1512	032234	202 17 0 00 134232'		MOVEM	P,SAVCMD#		; save PC
  1513
  1514					; Initialize things
  1515
  1516	032235	402 00 0 00 134213'	CMD0:	SETZM	PCMD#			; clear the command storage
  1517	032236	400 15 0 00 000000 		SETZ	ERFLG,			; clear error flag
  1518	032237	201 00 0 00 303240 		MOVEI	^D100000		; re-set up print limit just in case
  1519	032240	212 00 0 00 030220 		MOVNM	PNTENB			;   the last test exceeded it
  1520	032241	200 16 0 00 115612 		MOVE	MBCN,NIPORT		; set up MBCN register properly
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 36
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0199

  1521
  1522					; Set/clear debug switches
  1523
  1524	032242	402 00 0 00 134255'		SETZM	UDEBUG			; clear no-IPA user mode debug switch
  1525	032243	402 00 0 00 134172'		SETZM	MDEBUG			; clear error message debug switch
  1526	032244	402 00 0 00 134166'		SETZM	LDEBUG			; clear ucode load debug switch
  1527	032245	402 00 0 00 134151'		SETZM	DDEBUG			; clear dump on error debug switch
  1528	032246	260 17 0 00 032021*		GO	SWITT			; get switches
  1529	032247	602 00 0 00 002000 		TRNE	DEBUG1			; debug switch set?
  1530	032250	476 00 0 00 134255'		SETOM	UDEBUG			; set no-IPA user mode debug switch
  1531	032251	602 00 0 00 001000 		TRNE	DEBUG2			; debug switch set?
  1532	032252	476 00 0 00 134172'		SETOM	MDEBUG			; set error message debug switch
  1533	032253	602 00 0 00 000400 		TRNE	DEBUG3			; debug switch set?
  1534	032254	476 00 0 00 134166'		SETOM	LDEBUG			; set ucode load debug switch
  1535	032255	602 00 0 00 000200 		TRNE	DEBUG4			; debug switch set?
  1536	032256	476 00 0 00 134151'		SETOM	DDEBUG			; set dump on error debug switch
  1537	032257	402 00 0 00 115611 		SETZM	PMODE			; set program mode to 'no test'
  1538	032260	402 00 0 00 134174'		SETZM	MULFLG			; clear 'multiple examine' flag
  1539	032261	476 00 0 00 134175'		SETOM	MULINI			; set 'initial examine' flag
  1540	032262	402 00 0 00 134254'		SETZM	TXADDL			; clear 'addl text' routine address
  1541
  1542					; Input command
  1543
  1544	032263	260 17 0 00 031005*		GO	CLRBUF			; clear input buffer
  1545	032264	260 17 0 00 000000*	CMD1:	GO	.INPNT			; print interrupt fielded (if any)
  1546						MOVEI	[PCRL			; set up $ transfer address
  1547							 SETZM	ALTF
  1548							 GO	FIOFF
  1549	032265	201 00 0 00 120275 			 JRST	CMD0]
  1550	032266	202 00 0 00 030063 		MOVEM	ALTMGO
  1551	032267	402 00 0 00 134143'		SETZM	ALTF			; clear 'altmode typed' flag
  1552	032270	336 00 0 00 134161'		SKIPN	FINPUT			; file input?
  1553	032271	476 00 0 00 134160'		SETOM	FINECH			; no - ensure echo flag set
  1554	032272	332 00 0 00 134160'		SKIPE	FINECH			; echo flag set?
  1555						GO	[PFORCE			; no - print all this
  1556							 PCRLF
  1557							 FMSG	(DEBUG> )
  1558	032273	260 17 0 00 120303 			 RTN]
  1559	032274	332 00 0 00 134161'		SKIPE	FINPUT			; file input?
  1560						JRST	[GO	FINCMD		; yes - input sixbit cmd
  1561							 JRST	CMD1		; error or EOF
  1562	032275	254 00 0 00 120307 			 JRST	CMD2]		; continue
  1563	032276	037 10 0 00 000003 	CMD1A:	TTSIXB				; get operator input
  1564						ALTCHK	[GET	XXW#		; adjust stack properly
  1565							 SKIPN	$TWCNT		; did a timeout occur?
  1566							 JRST	CMD1		; yes - keep looking for input
  1567							 MOVE	1,$TTCHR	; no - get character typed
  1568							 CAIN	1,77		; was a question mark typed?
  1569							 JRST	CMDQUE		; yes - handle
  1570							 CAIN	1,40		; space (delimiter character) typed?
  1571							 JRST	.+1		; yes - continue (no error occurred)
  1572							 FMSGCD	<? Unrecognizable - Type ? for help>
  1573							 GO	FIOFF		; turn off file input
  1574	032277	007 00 0 00 120312 			 JRST	CMD0]		; error - reask question
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 37
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0200

  1575
  1576					CMD2:	JUMPE	[MOVE	$TTCHR		; anything typed?  if a space, keep
  1577							 CAIN	40		;   looking for an argument, if not
  1578							 JRST	CMD1A		;   exit
  1579	032300	322 00 0 00 120325 			 JRST	CMD1]
  1580	032301	202 00 0 00 134213'		MOVEM	PCMD			; save command typed
  1581	032302	402 00 0 00 031704*		SETZM	ARGFLG			; clear 'argument given' flag
  1582	032303	200 01 0 00 030231 		MOVE	1,$TTCHR		; get last character typed
  1583	032304	302 01 0 00 000015 		CAIE	1,15			; CR? (end of line)
  1584	032305	476 00 0 00 032302*		SETOM	ARGFLG			; set 'argument given' flag
  1585
  1586					; Decode the command
  1587
  1588	032306	200 01 0 00 134213'		MOVE	1,PCMD			; get sixbit command
  1589	032307	201 02 0 00 032322 		MOVEI	2,.DBCMD		; get address of cmd list
  1590	032310	260 17 0 00 031401*		GO	.COMM			; handle command decoding
  1591						 JRST	[FMSGCD	<? Unrecognizable - Type ? for help>
  1592							 GO	FIOFF
  1593	032311	254 00 0 00 120322 			 JRST	CMD0]		; error return
  1594	032312	260 17 1 01 032474 		GO	@.DBDIS(1)		; dispatch to test
  1595	032313	254 00 0 00 032235 		JRST	CMD0			; return to 'DEBUG>' prompt
  1596
  1597					; Question mark typed
  1598
  1599	032314	037 01 0 00 000026 	CMDQUE:	PFORCE				; handle Control-O
  1600	032315	037 00 1 00 032317 		PNTMSG	@CMDQUU			; print text
  1601	032316	254 00 0 00 032235 		JRST	CMD0			; look for new command
  1602
  1603	032317				CMDQUU:	[ASCII	/
  1604					-------- Miscellaneous ---------------------   - NI -  -- Switches --
  1605					HELP    IPRINT  START   EEBUF  ECRAM   MARK    PINIT   NOPNT   TRACE
  1606					EXIT    ICLEAR  STOP    DEBUF  BCRAM   RMARK   SIDLE   PNTLPT  INHFLT
  1607					DDT     IINIT   CONT    ZEBUF  ACRAM   CMARK   WATCH   DING    INHMSG
  1608	032317	000000	120331		                SSTEP          ECRAM   LMARK           ERSTOP  LOOPGM /]
  1609						[ASCII	/
  1610					SET     CCWPNT  STRACE  ELAR   LCRAM           BPACK   PALERS  LOOPTS
  1611					TAKE    LOGPNT  SPRINT  DRAR   ZCRAM   BREAK   IQUEUE  RELIAB  RUNALL
  1612					NTAKE           SCLEAR  ZRAR           RBREAK          TXTINH  DSPEAR
  1613					TRANSL  CONFIG  SSINIT         ECSR    CBREAK  PPCB    OPRSEL  UDEBUG
  1614	032320	000000	120440		FILLNX                  E2901  DCSR    LBREAK  PQUEUE          MDEBUG/]
  1615						[ASCIZ	/
  1616					FILLPC  FLOAD   ELOCS   D2901  ZCSR                    SWITCH  LDEBUG
  1617					STATIS  FVERFY  DLOCS   Z2901          DUMP    DEBPTT  SWPRIN  DDEBUG
  1618					ZSTATS  FLIST   ZLOCS          EPLI    CCODE   DEPMUL          EDEBUG
  1619					ZCOUNT  FEXAM           ENEXT  DPLI    ESTACK  DEPBAK
  1620					RESET                   DNEXT  ETBUFF
  1621					CLEAR                          ERBUFF
  1622	032321	000000	120547		/]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 38
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0201

  1623
  1624					;#********************************************************************
  1625					;* .DBCMD - List of acceptable commands
  1626					;#********************************************************************
  1627
  1628					; Miscellaneous commands
  1629
  1630	032322	777777	777655		.DBCMD:	-123				; ignore
  1631	032323	50 45 54 60 00 00 		SIXBIT	/HELP/			; print help message
  1632	032324	45 70 51 64 00 00 		SIXBIT	/EXIT/			; exit DEBUG mode
  1633	032325	44 44 64 00 00 00 		SIXBIT	/DDT/			; enter DDT
  1634
  1635	032326	63 45 64 00 00 00 		SIXBIT	/SET/			; set/print options
  1636	032327	64 41 53 45 00 00 		SIXBIT	/TAKE/			; take commands from a file
  1637	032330	56 64 41 53 45 00 		SIXBIT	/NTAKE/			; take commands from a file
  1638	032331	45 56 45 70 64 00 		SIXBIT	/ENEXT/			; examine next location
  1639	032332	44 56 45 70 64 00 		SIXBIT	/DNEXT/			; examine next location
  1640
  1641					; CSR commands
  1642
  1643	032333	45 43 63 62 00 00 		SIXBIT	/ECSR/			; examine CSR register
  1644	032334	44 43 63 62 00 00 		SIXBIT	/DCSR/			; deposit CSR register
  1645	032335	72 43 63 62 00 00 		SIXBIT	/ZCSR/			; zero CSR register
  1646
  1647	032336	62 45 63 45 64 00 		SIXBIT	/RESET/			; issue an EBUS Reset
  1648	032337	43 54 45 41 62 00 		SIXBIT	/CLEAR/			; issue a 'Port Clear'
  1649
  1650					; Start/stop/single step commands
  1651
  1652	032340	63 64 41 62 64 00 		SIXBIT	/START/			; start the port
  1653	032341	63 64 57 60 00 00 		SIXBIT	/STOP/			; stop the port
  1654	032342	43 57 56 64 00 00 		SIXBIT	/CONT/			; continue the port
  1655	032343	63 63 64 45 60 00 		SIXBIT	/SSTEP/			; single step the port
  1656	032344	63 64 62 41 43 45 		SIXBIT	/STRACE/		; single step the port while tracing
  1657	032345	63 60 62 51 56 64 		SIXBIT	/SPRINT/		; print single step history
  1658	032346	63 43 54 45 41 62 		SIXBIT	/SCLEAR/		; clear single step history data
  1659	032347	63 63 51 56 51 64 		SIXBIT	/SSINIT/		; set up ss start addr/data/history
  1660
  1661					; EBUF commands
  1662
  1663	032350	45 45 42 65 46 00 		SIXBIT	/EEBUF/			; examine EBUF register
  1664	032351	44 45 42 65 46 00 		SIXBIT	/DEBUF/			; deposit EBUF register
  1665	032352	72 45 42 65 46 00 		SIXBIT	/ZEBUF/			; zero EBUF register
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 39
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0202

  1666
  1667					; RAR/LAR commands
  1668
  1669	032353	45 54 41 62 00 00 		SIXBIT	/ELAR/			; examine LAR register
  1670	032354	44 62 41 62 00 00 		SIXBIT	/DRAR/			; deposit RAR register
  1671	032355	72 62 41 62 00 00 		SIXBIT	/ZRAR/			; zero RAR register
  1672
  1673					; CRAM commands
  1674
  1675	032356	44 43 62 41 55 00 		SIXBIT	/DCRAM/			; deposit into port CRAM
  1676	032357	42 43 62 41 55 00 		SIXBIT	/BCRAM/			; deposit into port CRAM by bit field
  1677	032360	41 43 62 41 55 00 		SIXBIT	/ACRAM/			; alter port CRAM
  1678	032361	45 43 62 41 55 00 		SIXBIT	/ECRAM/			; examine port CRAM
  1679	032362	54 43 62 41 55 00 		SIXBIT	/LCRAM/			; list port CRAM
  1680	032363	72 43 62 41 55 00 		SIXBIT	/ZCRAM/			; zero port CRAM
  1681
  1682					; 2901 commands
  1683
  1684	032364	45 22 31 20 21 00 		SIXBIT	/E2901/			; examine 2901 registers
  1685	032365	44 22 31 20 21 00 		SIXBIT	/D2901/			; deposit 2901 registers
  1686	032366	72 22 31 20 21 00 		SIXBIT	/Z2901/			; zero 2901 registers
  1687
  1688					; Local storage commmands
  1689
  1690	032367	45 54 57 43 63 00 		SIXBIT	/ELOCS/			; examine local storage
  1691	032370	44 54 57 43 63 00 		SIXBIT	/DLOCS/			; deposit local storage
  1692	032371	72 54 57 43 63 00 		SIXBIT	/ZLOCS/			; zero local storage
  1693
  1694					; Mark bit commands
  1695
  1696	032372	55 41 62 53 00 00 		SIXBIT	/MARK/			; set mark bit in locations
  1697	032373	62 55 41 62 53 00 		SIXBIT	/RMARK/			; remove mark bit in locations
  1698	032374	43 55 41 62 53 00 		SIXBIT	/CMARK/			; clear mark bit in locations
  1699	032375	54 55 41 62 53 00 		SIXBIT	/LMARK/			; list locations with mark bit set
  1700
  1701					; Breakpoint commands
  1702
  1703	032376	42 62 45 41 53 00 		SIXBIT	/BREAK/			; set breakpoint
  1704	032377	62 42 62 45 41 53 		SIXBIT	/RBREAK/		; remove breakpoint
  1705	032400	43 42 62 45 41 53 		SIXBIT	/CBREAK/		; clear all breakpoints
  1706	032401	54 42 62 45 41 53 		SIXBIT	/LBREAK/		; list breakpoints
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 40
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0203

  1707
  1708					; Microcode file commands
  1709
  1710	032402	54 57 41 44 00 00 		SIXBIT	/LOAD/			; load microcode from test into CRAM
  1711	032403	54 51 63 64 00 00 		SIXBIT	/LIST/			; list microcode from test
  1712	032404	46 54 57 41 44 00 		SIXBIT	/FLOAD/			; load microcode from file into CRAM
  1713	032405	46 66 45 62 46 71 		SIXBIT	/FVERFY/		; verify microcode loaded
  1714	032406	46 54 51 63 64 00 		SIXBIT	/FLIST/			; list microcode in file
  1715	032407	46 45 70 41 55 00 		SIXBIT	/FEXAM/			; examine microcode in file
  1716
  1717					; Miscellaneous commands
  1718
  1719	032410	64 62 41 56 63 54 		SIXBIT	/TRANSL/		; translate CSR bits
  1720	032411	43 43 57 44 45 00 		SIXBIT	/CCODE/			; print condition codes
  1721	032412	45 63 64 41 43 53 		SIXBIT	/ESTACK/		; examine 2910 stack contents
  1722	032413	46 51 54 54 56 70 		SIXBIT	/FILLNX/		; fill CRAM with special data
  1723	032414	46 51 54 54 60 43 		SIXBIT	/FILLPC/		; fill CRAM with special data
  1724	032415	51 60 62 51 56 64 		SIXBIT	/IPRINT/		; print interrupt history
  1725	032416	51 43 54 45 41 62 		SIXBIT	/ICLEAR/		; clear interrupt history
  1726	032417	51 51 56 51 64 00 		SIXBIT	/IINIT/			; initialize interrupt system
  1727
  1728	032420	63 64 41 64 51 63 		SIXBIT	/STATIS/		; print collected statistics
  1729	032421	72 63 64 41 64 63 		SIXBIT	/ZSTATS/		; clear statistics areas
  1730	032422	72 43 57 65 56 64 		SIXBIT	/ZCOUNT/		; clear counters data
  1731	032423	43 57 56 46 51 47 		SIXBIT	/CONFIG/		; print current configuration
  1732	032424	44 65 55 60 00 00 		SIXBIT	/DUMP/			; dump entire port status
  1733
  1734					; Data transfer routines
  1735
  1736	032425	43 43 67 60 56 64 		SIXBIT	/CCWPNT/		; print CCW list
  1737	032426	54 57 47 60 56 64 		SIXBIT	/LOGPNT/		; print logout data
  1738
  1739					; NI related commands
  1740
  1741	032427	60 51 56 51 64 00 		SIXBIT	/PINIT/			; initialize PCB and queues
  1742	032430	63 51 44 54 45 00 		SIXBIT	/SIDLE/			; start port and wait for IDLE loop
  1743	032431	42 60 41 43 53 00 		SIXBIT	/BPACK/			; build a packet
  1744	032432	51 61 65 45 65 45 		SIXBIT	/IQUEUE/		; insert on queue
  1745	032433	60 61 65 45 65 45 		SIXBIT	/PQUEUE/		; print specified queue
  1746	032434	60 60 43 42 00 00 		SIXBIT	/PPCB/			; print PCB
  1747	032435	67 41 64 43 50 00 		SIXBIT	/WATCH/			; watch port and print events
  1748	032436	44 60 54 51 00 00 		SIXBIT	/DPLI/			; deposit data to PLI
  1749	032437	45 60 54 51 00 00 		SIXBIT	/EPLI/			; examine PLI
  1750	032440	44 45 60 60 64 64 		SIXBIT	/DEPPTT/		; deposit into PTT table
  1751	032441	44 45 60 55 65 54 		SIXBIT	/DEPMUL/		; deposit into Multicast table
  1752	032442	44 45 60 60 41 53 		SIXBIT	/DEPPAK/		; deposit into packet
  1753	032443	45 64 42 65 46 46 		SIXBIT	/ETBUFF/		; read transmit buffers
  1754	032444	45 62 42 65 46 46 		SIXBIT	/ERBUFF/		; read receive buffers
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 41
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0204

  1755
  1756					; Switches
  1757
  1758	032445	63 67 51 64 43 50 		SIXBIT	/SWITCH/		; input switches
  1759	032446	63 67 60 62 51 56 		SIXBIT	/SWPRIN/		; print switch selections
  1760	032447	56 57 60 56 64 00 		SIXBIT	/NOPNT/			; don't print anything
  1761	032450	60 56 64 54 60 64 		SIXBIT	/PNTLPT/		; print on printer
  1762	032451	44 51 56 47 00 00 		SIXBIT	/DING/			; ding on error
  1763	032452	45 62 63 64 57 60 		SIXBIT	/ERSTOP/		; halt on error
  1764	032453	60 41 54 45 62 63 		SIXBIT	/PALERS/		; print all errors
  1765	032454	62 45 54 51 41 42 		SIXBIT	/RELIAB/		; reliability testing
  1766	032455	64 70 64 51 56 50 		SIXBIT	/TXTINH/		; shorten printing
  1767	032456	57 60 62 63 45 54 		SIXBIT	/OPRSEL/		; operator select
  1768	032457	64 62 41 43 45 00 		SIXBIT	/TRACE/			; trace pgm flow
  1769	032460	51 56 50 46 54 64 		SIXBIT	/INHFLT/		; inhibit fault isolation
  1770	032461	51 56 50 55 63 47 		SIXBIT	/INHMSG/		; inhibit error messages
  1771	032462	54 57 57 60 47 55 		SIXBIT	/LOOPGM/		; loop on program
  1772	032463	54 57 57 60 64 63 		SIXBIT	/LOOPTS/		; loop on test
  1773	032464	62 65 56 41 54 54 		SIXBIT	/RUNALL/		; run all test segments
  1774	032465	44 63 60 45 41 62 		SIXBIT	/DSPEAR/		; disable SPEAR reporting
  1775	032466	65 44 45 42 65 47 		SIXBIT	/UDEBUG/		; no-IPA user mode debug switch
  1776	032467	55 44 45 42 65 47 		SIXBIT	/MDEBUG/		; error message debug switch
  1777	032470	54 44 45 42 65 47 		SIXBIT	/LDEBUG/		; load microcode debug switch
  1778	032471	44 44 45 42 65 47 		SIXBIT	/DDEBUG/		; dump on error debug switch
  1779	032472	45 44 45 42 65 47 		SIXBIT	/EDEBUG/		; expanded error msg switch
  1780	032473	000 00 0 00 000000 		Z				; list terminator
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 42
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0205

  1781
  1782					;#********************************************************************
  1783					;* .DBDIS - List of dispatch addresses
  1784					;#********************************************************************
  1785
  1786	032474	000000	117037		.DBDIS:	[RTN]				; ignore
  1787	032475	000000	032645			DHELP				; HELP - print help message
  1788						[MOVE	1,[FMSGCD (EXIT <CR>)]	; EXIT - exit DEBUG mode
  1789						 GO	CHKARG
  1790						 RTN
  1791						 GET	XXX#
  1792	032476	000000	120655			 RTN]
  1793	032477	000000	031337			TSTDDT				; DDT - enter DDT
  1794
  1795	032500	000000	032737			DSET				; SET - set/clear/print options
  1796	032501	000000	031527			TSTTAK				; TAKE - take commands from file
  1797	032502	000000	031525			TSTTAN				; NTAKE - take commands from a file
  1798	032503	000000	040157			DENEXT				; ENEXT - examine next location
  1799	032504	000000	040241			DDNEXT				; DNEXT - deposit next location
  1800
  1801	032505	000000	033713			DECSR				; ECSR - examine CSR register
  1802	032506	000000	033723			DDCSR				; DCSR - deposit CSR register
  1803	032507	000000	033732			DZCSR				; ZCSR - zero CSR register
  1804
  1805	032510	000000	033740			DRESET				; RESET - issue an EBUS Reset
  1806	032511	000000	033745			DCLEAR				; CLEAR - issue a 'Port Clear'
  1807
  1808	032512	000000	033765			DSTART				; START - start the port
  1809	032513	000000	034014			DSTOP				; STOP - stop the port
  1810	032514	000000	035405			DCONT				; CONT - continue the port
  1811	032515	000000	034037			DSSTEP				; SSTEP - single step the port
  1812	032516	000000	034034			DTRACE				; STRACE - sstep the port while tracing
  1813	032517	000000	034106			DSSPNT				; SPRINT - print single step history
  1814	032520	000000	034130			DSSCLR				; SCLEAR - clear single step history
  1815	032521	000000	033752			DSINIT				; SSINIT - set up ss addr/data/history
  1816
  1817	032522	000000	035422			DEEBUF				; EEBUF - examine EBUF register
  1818	032523	000000	035443			DDEBUF				; DEBUF - deposit EBUF register
  1819	032524	000000	035436			DZEBUF				; ZEBUF - zero EBUF register
  1820
  1821	032525	000000	035455			DELAR				; ELAR - examine LAR register
  1822	032526	000000	035475			DDRAR				; DRAR - deposit RAR register
  1823	032527	000000	035507			DZRAR				; ZRAR - zero RAR register
  1824
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 43
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0206

  1825	032530	000000	035522			DDCRAM				; DCRAM - deposit CRAM
  1826	032531	000000	035525			DBCRAM				; BCRAM - deposit CRAM by bit field
  1827	032532	000000	035530			DACRAM				; ACRAM - alter port CRAM
  1828	032533	000000	035517			DECRAM				; ECRAM - examine port CRAM
  1829	032534	000000	035536			DLCRAM				; LCRAM - list port CRAM
  1830	032535	000000	035533			DZCRAM				; ZCRAM - zero port CRAM
  1831
  1832	032536	000000	036304			DEALU				; E2901 - examine 2901 registers
  1833	032537	000000	036412			DDALU				; D2901 - deposit 2901 registers
  1834	032540	000000	036473			DZALU				; Z2901 - zero 2901 registers
  1835
  1836	032541	000000	036610			DELOCS				; ELOCS - examine local storage
  1837	032542	000000	036713			DDLOCS				; DLOCS - deposit local storage
  1838	032543	000000	036767			DZLOCS				; ZLOCS - zero local storage
  1839
  1840	032544	000000	037103			DMARK				; MARK - set mark bits
  1841	032545	000000	037132			DRMARK				; RMARK - remove mark bits
  1842	032546	000000	037161			DCMARK				; CMARK - clear mark bits
  1843	032547	000000	037232			DLMARK				; LMARK - list mark bits
  1844
  1845	032550	000000	040455			DBREAK				; BREAK - set breakpoint
  1846	032551	000000	040510			DRBRK				; RBREAK - remove breakpoint
  1847	032552	000000	040533			DCBRK				; CBREAK - clear all breakpoints
  1848	032553	000000	040577			DLBRK				; LBREAK - list breakpoints
  1849
  1850	032554	000000	040660			DLOAD				; LOAD - load test microcode into CRAM
  1851	032555	000000	040701			DLIST				; LIST - list test microcode
  1852	032556	000000	040714			DFLOAD				; FLOAD - load ucode from file to CRAM
  1853	032557	000000	040737			DFVERF				; FVERFY - verify microcode loaded
  1854	032560	000000	040753			DFLIST				; FLIST - list microcode in file
  1855	032561	000000	041010			DFEXAM				; FEXAM - examine microcode in file
  1856
  1857	032562	000000	041045			DTRANS				; TRANSL - translate CSR bits
  1858	032563	000000	041055			DCCODE				; CCODE - print condition codes
  1859	032564	000000	040415			DESTAK				; ESTACK - examine 2910 stack
  1860	032565	000000	041204			DFILLN				; FILLNX - fill CRAM with special data
  1861	032566	000000	041230			DFILLP				; FILLPC - fill CRAM with special data
  1862	032567	000000	041277			DIPRIN				; IPRINT - print interrupt history
  1863						[MOVE	1,[FMSGCD (ICLEAR <CR>)]; ICLEAR - clear interrupt history
  1864						 GO	CHKARG
  1865						 RTN
  1866						 SETZM	INTNUM
  1867						 MOVE	[INTNUM,,INTNUM+1]
  1868						 BLT	INTEND
  1869						 SETOM	INTNUM
  1870	032570	000000	120670			 RTN]
  1871	032571	000000	041353			DIINIT				; IINIT - initialize interrupt system
  1872
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 44
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0207

  1873	032572	000000	031477			TSTPRI				; STATIS - print statistics
  1874	032573	000000	031361			TSTZER				; ZSTATS - clear statistics
  1875						[MOVE	1,[FMSGCD (ZCOUNT <CR>)]; ZCOUNT - clear counters
  1876						 GO	CHKARG
  1877						 RTN
  1878						 GO	ZCOUNT
  1879	032574	000000	120705			 RTN]
  1880	032575	000000	031366			TSTCON				; CONFIG - print configuration
  1881
  1882						[MOVE	1,[FMSGCD (DUMP <CR>)]	; DUMP - Dump entire port status
  1883						 GO	CHKARG
  1884						 RTN
  1885						 GO	DDUMP	
  1886	032576	000000	120716			 RTN]
  1887
  1888	032577	000000	041252			DCWPNT				; CCWPNT - print CCW list
  1889	032600	000000	041260			DLGPNT				; LOGPNT - print logout area data
  1890
  1891					; NI related commands
  1892
  1893	032601	000000	041361			DPINIT				; PINIT - initialize PCB and queues
  1894	032602	000000	041366			DSIDLE				; SIDLE - start port/wait for IDLE loop
  1895	032603	000000	041376			DBPACK				; BPACK - build packet
  1896	032604	000000	041453			DIQUEU				; IQUEUE - put packet on cmd queue
  1897	032605	000000	041472			DPQUEU				; PQUEUE - print specified queue
  1898	032606	000000	041464			DPPCB				; PPCB - print PCB
  1899	032607	000000	041531			DWATCH				; WATCH - watch port and print events
  1900	032610	000000	037310			DDPLI				; DPLI - deposit data to PLI
  1901	032611	000000	037400			DEPLI				; EPLI - examine PLI
  1902	032612	000000	040324			DDPPTT				; DEPPTT - deposit into PTT table
  1903	032613	000000	040347			DDPMUL				; DEPMUL - deposit into Multicast table
  1904	032614	000000	040372			DDPPAK				; DEPPAK - deposit into packet
  1905	032615	000000	037521			DETBUF				; ETBUFF - read transmit buffers
  1906	032616	000000	037526			DERBUF				; ERBUFF - read receive buffers
  1907
  1908					; Switches
  1909
  1910						[MOVE	1,[FMSGCD (SWITCH <CR>)]; SWITCH - input switches
  1911						 GO	CHKARG
  1912						 RTN
  1913						 GO	.ISWT
  1914	032617	000000	120723			 RTN]
  1915						[MOVE	1,[FMSGCD (SWPRIN <CR>)]; SWPRIN - print switches
  1916						 GO	CHKARG
  1917						 RTN
  1918						 GO	.SWCHP
  1919	032620	000000	120730			 RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 45
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0208

  1920
  1921			000125		SWSTP==.-.DBDIS
  1922
  1923	032621	000000	041266			DSWIT				; NOPNT
  1924	032622	000000	041266			DSWIT				; PNTLPT
  1925	032623	000000	041266			DSWIT				; DING
  1926	032624	000000	041266			DSWIT				; ERSTOP
  1927	032625	000000	041266			DSWIT				; PALERS
  1928	032626	000000	041266			DSWIT				; RELIAB
  1929	032627	000000	041266			DSWIT				; TXTINH
  1930	032630	000000	041266			DSWIT				; OPRSEL
  1931	032631	000000	041266			DSWIT				; TRACE
  1932	032632	000000	041266			DSWIT				; INHFLT
  1933	032633	000000	041266			DSWIT				; INHMSG
  1934	032634	000000	041266			DSWIT				; LOOPGM
  1935	032635	000000	041266			DSWIT				; LOOPTS
  1936	032636	000000	041266			DSWIT				; RUNALL
  1937	032637	000000	041266			DSWIT				; DSPEAR
  1938	032640	000000	041266			DSWIT				; UDEBUG
  1939	032641	000000	041266			DSWIT				; MDEBUG
  1940	032642	000000	041266			DSWIT				; LDEBUG
  1941	032643	000000	041266			DSWIT				; DDEBUG
  1942	032644	000000	041266			DSWIT				; EDEBUG
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 46
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0209

  1943
  1944					;#*********************************************************************
  1945					;* DHELP - Print DEBUG> help message
  1946					;#*********************************************************************
  1947
  1948					DHELP:	MOVN	1,[FMSGD <
  1949					HELP ALL     START  CRAM  BREAK   DTXFR
  1950					     MISC    CSR    2901  UCODE   NI
  1951					     INTRPT  EBUF   LOCS  STATIS  PLI
  1952	032645	210 01 0 00 120776 	     RESET   LAR    MARK  CONFIG  SWITCH>]
  1953	032646	260 17 0 00 031537*		GO	.SARG			; get SIXBIT argument
  1954	032647	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  1955						 GO	[MOVE	[SIXBIT /ALL/]	; no argument - assume all
  1956							 MOVEM	ARGUM
  1957	032650	260 17 0 00 117404 			 RTN]
  1958	032651	200 01 0 00 031672*		MOVE	1,ARGUM			; get sixbit command
  1959	032652	201 02 0 00 032665 		MOVEI	2,.HLCMD		; get address of cmd list
  1960	032653	260 17 0 00 032310*		GO	.COMM			; handle command decoding
  1961						 JRST	[FMSGCD	<? Unrecognizable - Type ? for help>
  1962							 GO	FIOFF
  1963	032654	254 00 0 00 117407 			 RTN]			; error return
  1964	032655	037 01 0 00 000026 		PFORCE				; handle Control-O
  1965	032656	200 02 0 00 000001 		MOVE	2,1			; get AC1
  1966	032657	336 03 0 01 032712 	DHELP0:	SKIPN	3,DHELP1(1)		; get address of TMSG
  1967	032660	263 17 0 00 000000 		RTN				; all done - exit
  1968	032661	256 00 0 00 000003 		XCT	3			; print it
  1969	032662	350 00 0 00 000001 		AOS	1			; point to next address
  1970	032663	322 02 0 00 032657 		JUMPE	2,DHELP0		; loop till done
  1971	032664	263 17 0 00 000000 		RTN				; exit
  1972
  1973	032665	41 54 54 00 00 00 	.HLCMD:	SIXBIT	/ALL/			; print all help info
  1974	032666	55 51 63 43 00 00 		SIXBIT	/MISC/			; print miscellaneous commands
  1975	032667	51 56 64 62 60 64 		SIXBIT	/INTRPT/		; print interrupt commands
  1976	032670	62 45 63 45 64 00 		SIXBIT	/RESET/			; print reset commands
  1977	032671	63 64 41 62 64 00 		SIXBIT	/START/			; print start... commands
  1978	032672	43 63 62 00 00 00 		SIXBIT	/CSR/			; print CSR commands
  1979	032673	45 42 65 46 00 00 		SIXBIT	/EBUF/			; print EBUF commands
  1980	032674	54 41 62 00 00 00 		SIXBIT	/LAR/			; print LAR commands
  1981	032675	43 62 41 55 00 00 		SIXBIT	/CRAM/			; print CRAM commands
  1982	032676	22 31 20 21 00 00 		SIXBIT	/2901/			; print 2901 commands
  1983	032677	54 57 43 63 00 00 		SIXBIT	/LOCS/			; print local storage commands
  1984	032700	55 41 62 53 00 00 		SIXBIT	/MARK/			; print mark commands
  1985	032701	42 62 45 41 53 00 		SIXBIT	/BREAK/			; print breakpoint commands
  1986	032702	65 43 57 44 45 00 		SIXBIT	/UCODE/			; print microcode commands
  1987	032703	63 64 41 64 51 63 		SIXBIT	/STATIS/		; print statisitics commands
  1988	032704	43 57 56 46 51 47 		SIXBIT	/CONFIG/		; print configuration commands
  1989	032705	44 64 70 46 62 00 		SIXBIT	/DTXFR/			; print data transfer commands
  1990	032706	56 51 00 00 00 00 		SIXBIT	/NI/			; print NI related commands
  1991	032707	60 54 51 00 00 00 		SIXBIT	/PLI/			; print PLI commands
  1992	032710	63 67 51 64 43 50 		SIXBIT	/SWITCH/		; print switch commands
  1993	032711	000000	000000			0				; end of list
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 47
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0210

  1994
  1995	032712	037 00 0 00 120777 	DHELP1:	TMSGCD	<DEBUG Commands:>
  1996
  1997						TMSGD	<
  1998					HELP arg    Print help
  1999					EXIT        Exit DEBUG mode
  2000					DDT         Enter DDT
  2001					SET opt arg    Set/clear/print options
  2002					TAKE file ext  Take commands from file
  2003					NTAKE file ext Take commands from file (unechoed)
  2004					TRANSL dat  Translate CSR data
  2005					CCODE       Print condition codes
  2006					ESTACK      Examine 2910 stack contents
  2007					FILLNX dat  Fill CRAM with 'J=.+1,CTL=dat'
  2008					FILLPC dat  Fill CRAM with 'J=.,CTL=dat'
  2009					ENEXT       Examine next
  2010	032713	037 00 0 00 121003 	DNEXT arg   Deposit next>
  2011
  2012						TMSGD	<
  2013					IPRINT      Print accumulated interrupt activity
  2014					ICLEAR      Clear accumulated interrupt activity
  2015	032714	037 00 0 00 121137 	IINIT       Init interrupt system>
  2016
  2017						TMSGD	<
  2018					RESET       Issue EBUS Reset
  2019	032715	037 00 0 00 121173 	CLEAR       Issue a 'Port Clear'>
  2020
  2021						TMSGD	<
  2022					START adr   Start the port microsequencer
  2023					STOP        Stop the port microsequencer
  2024					CONT        Continue the port microsequencer
  2025					SSTEP cnt   Single step the port microsequencer
  2026					STRACE cnt  Single step and trace execution
  2027					SPRINT cnt  Print single step history data
  2028					SCLEAR      Clear single step history data
  2029	032716	037 00 0 00 121211 	SSINIT      Set up ss addr/data/history>
  2030
  2031						TMSGD	<
  2032					ECSR        Examine CSR Register
  2033					DCSR dat    Deposit CSR Register
  2034	032717	037 00 0 00 121321 	ZCSR        Zero CSR Register>
  2035
  2036						TMSGD	<
  2037					EEBUF       Examine EBUF register
  2038					DEBUF dat   Deposit EBUF register
  2039	032720	037 00 0 00 121346 	ZEBUF       Zero EBUF register>
  2040
  2041						TMSGD	<
  2042					ELAR        Examine LAR register
  2043					DRAR dat    Deposit RAR register
  2044	032721	037 00 0 00 121373 	ZRAR        Zero RAR register>
  2045
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 48
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0211

  2046						TMSGD	<
  2047					DCRAM adr,adr  Deposit into CRAM
  2048					BCRAM adr,adr  Deposit into CRAM by fields
  2049					ACRAM adr,adr  Alter CRAM
  2050					ECRAM adr,adr  Examine CRAM
  2051					LCRAM adr,adr  List CRAM
  2052	032722	037 00 0 00 121420 	ZCRAM adr,adr  Zero CRAM>
  2053
  2054						TMSGD	<
  2055					E2901 reg,reg  Examine 2901 registers
  2056					D2901 reg,dat  Deposit 2901 register
  2057	032723	037 00 0 00 121466 	Z2901 reg,reg  Zero 2901 registers>
  2058
  2059						TMSGD	<
  2060					ELOCS adr,adr  Examine local storage
  2061					DLOCS adr,dat  Deposit local storage
  2062	032724	037 00 0 00 121516 	ZLOCS adr,adr  Zero local storage>
  2063
  2064						TMSGD	<
  2065					MARK adr,adr    Set mark bit
  2066					RMARK adr,adr   Remove mark bit
  2067					CMARK adr,adr   Clear all mark bits
  2068	032725	037 00 0 00 121545 	LMARK adr,adr   List mark bits>
  2069
  2070						TMSGD	<
  2071					BREAK adr,adr   Set breakpoint
  2072					RBREAK adr,adr  Remove breakpoint
  2073					CBREAK adr,adr  Clear all breakpoints
  2074	032726	037 00 0 00 121600 	LBREAK adr,adr  List breakpoints>
  2075
  2076						TMSGD	<
  2077					LOAD tst    Load microcode from Test 'tst' into CRAM
  2078					LIST tst    List microcode from Test 'tst'
  2079					FLOAD       Load microcode from file into CRAM
  2080					FVERFY      Verify microcode loaded from file
  2081					FLIST       List microcode in file
  2082	032727	037 00 0 00 121635 	FEXAM       Examine microcode in file>
  2083
  2084						TMSGD	<
  2085					STATIS    Print statistics
  2086					ZSTATS    Clear statistics
  2087	032730	037 00 0 00 121724 	ZCOUNT    Clear counters>
  2088
  2089						TMSGD	<
  2090	032731	037 00 0 00 121745 	CONFIG    Print configuration>
  2091
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 49
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0212

  2092						TMSGD	<
  2093					CCWPNT    Print CCW list
  2094	032732	037 00 0 00 121754 	LOGPNT    Print logout data>
  2095
  2096						TMSGD	<
  2097					PINIT     Initialize PCB and queues
  2098					SIDLE     Start port/wait for IDLE loop
  2099					BPACK     Build packet
  2100					IQUEUE    Put packet on cmd queue
  2101					PQUEUE n  Print specified queue
  2102					PPCB      Print PCB
  2103					WATCH     Watch port and print events
  2104					LOOP      Loop back packets
  2105					DEPPTT    Deposit into PTT table
  2106					DEPMUL    Deposit into Multicast table
  2107	032733	037 00 0 00 121770 	DEPPAK    Deposit into packet>
  2108
  2109						TMSGD	<
  2110					DPLI lnk,data,rep  Deposit PLI data
  2111					EPLI lnk,rep       Examine PLI data
  2112					
  2113					ETBUFF    Examine transmit buffers
  2114	032734	037 00 0 00 122102 	ERBUFF    Examine receive buffers>
  2115
  2116						TMSGD	<
  2117					SWITCH  Enter switch information
  2118					SWPRIN  Print current switch settings   
  2119					
  2120					(To complement switch setting, type switch name).
  2121					
  2122					NOPNT   ERSTOP  TXTINH  TRACE   LOOPGM  DSPEAR  LDEBUG
  2123					PNTLPT  PALERS  OPRSEL  INHFLT  LOOPTS  UDEBUG  DDEBUG
  2124	032735	037 00 0 00 122140 	DING    RELIAB          INHMSG  RUNALL  MDEBUG  EDEBUG>
  2125	032736	000000	000000			0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 50
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0213

  2126
  2127					;#********************************************************************
  2128					;* DSET - Set/clear/print options
  2129					;#********************************************************************
  2130
  2131					DSET:	MOVE	1,[FMSGD <
  2132					SET ADDR    PCB     RESPON  DADDR   PRINT   HELP
  2133					    CSR     FNAME   FORMAT  SADDR   INTERV
  2134					    PARITY  PAT     BSD     PTTVAL  SUMMAR
  2135	032737	200 01 0 00 122302 	    EBUF    PATLIS  LENGTH  PAD     WHAT>]
  2136	032740	260 17 0 00 032646*		GO	.SARG			; get SIXBIT argument
  2137	032741	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2138						 JRST	[FMSGCD	<? Missing argument>
  2139							 GO	FIOFF
  2140	032742	254 00 0 00 117722 			 RTN]
  2141	032743	200 01 0 00 032651*		MOVE	1,ARGUM			; get sixbit command
  2142	032744	201 02 0 00 032751 		MOVEI	2,.STCMD		; get address of cmd list
  2143	032745	260 17 0 00 032653*		GO	.COMM			; handle command decoding
  2144						 JRST	[FMSGCD	<? Unrecognizable - Type ? for help>
  2145							 GO	FIOFF
  2146	032746	254 00 0 00 117407 			 RTN]			; error return
  2147	032747	260 17 1 01 032777 		GO	@.STDIS(1)		; dispatch to test
  2148	032750	263 17 0 00 000000 		RTN				; return to 'DEBUG>' prompt
  2149
  2150	032751	41 44 44 62 00 00 	.STCMD:	SIXBIT	/ADDR/			; set start address
  2151	032752	43 63 62 00 00 00 		SIXBIT	/CSR/			; set start data for CSR
  2152	032753	60 41 62 51 64 71 		SIXBIT	/PARITY/		; set/clr auto parity generation
  2153	032754	45 42 65 46 00 00 		SIXBIT	/EBUF/			; set/clr preserve EBUF
  2154	032755	60 43 42 00 00 00 		SIXBIT	/PCB/			; set/clr PCB CCW list in use by START
  2155	032756	46 56 41 55 45 00 		SIXBIT	/FNAME/			; set file name
  2156	032757	60 41 64 00 00 00 		SIXBIT	/PAT/			; set data pattern
  2157	032760	60 41 64 54 51 63 		SIXBIT	/PATLIS/		; list data patterns
  2158	032761	62 45 63 60 57 56 		SIXBIT	/RESPON/		; set/clr forced response
  2159	032762	46 57 62 55 41 64 		SIXBIT	/FORMAT/		; set format (COMPAT or HIDEN)
  2160	032763	42 63 44 00 00 00 		SIXBIT	/BSD/			; set BSD style datagram
  2161	032764	54 45 56 47 64 50 		SIXBIT	/LENGTH/		; set length of text portion of packet
  2162	032765	44 41 44 44 62 00 		SIXBIT	/DADDR/			; set destination address
  2163	032766	63 41 44 44 62 00 		SIXBIT	/SADDR/			; set self address
  2164	032767	60 64 64 66 41 54 		SIXBIT	/PTTVAL/		; protocol type value
  2165	032770	60 41 44 00 00 00 		SIXBIT	/PAD/			; set pad flag
  2166	032771	60 62 51 56 64 00 		SIXBIT	/PRINT/			; set text length to print
  2167	032772	51 56 64 45 62 66 		SIXBIT	/INTERV/		; interval (seconds)
  2168	032773	63 65 55 55 41 62 		SIXBIT	/SUMMAR/		; summary interval (seconds)
  2169	032774	67 50 41 64 00 00 		SIXBIT	/WHAT/			; print options
  2170	032775	50 45 54 60 00 00 		SIXBIT	/HELP/			; set help message
  2171	032776	000 00 0 00 000000 		Z
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 51
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0214

  2172
  2173	032777	000000	033024		.STDIS:	DSETAD				; ADDR - set start address
  2174	033000	000000	033045			DSETCS				; CSR - set start CSR data
  2175	033001	000000	033062			DSETPR				; PARITY - set/clr auto par generation
  2176	033002	000000	033102			DSETEB				; EBUF - set/clr preserve EBUF flag
  2177	033003	000000	033122			DSETPC				; PCB - set/clr PCB CCW list for START
  2178	033004	000000	033142			DSETFN				; FNAME - set default ucode file name
  2179	033005	000000	033173			DSETPA				; PAT - set data pattern
  2180	033006	000000	033233			DSETPL				; PATLIS - list data patterns
  2181	033007	000000	033270			DSETRE				; RESPON - set/clr forced response
  2182	033010	000000	033311			DSETFO				; FORMAT - set format (COMPAT or HIDEN)
  2183	033011	000000	033333			DSETBS				; BSD - set BSD style datagram
  2184	033012	000000	033373			DSETLN				; LENGTH - set text length
  2185	033013	000000	033413			DSETDA				; DADDR - set destination address
  2186	033014	000000	033513			DSETSA				; SADDR - set self address
  2187	033015	000000	033537			DSETPV				; PTTVAL - protocol type value
  2188	033016	000000	033353			DSETPD				; PAD - set pad flag
  2189	033017	000000	033554			DSETPT				; PRINT - set text length to print
  2190	033020	000000	033574			DSETIN				; INTERV - interval (seconds)
  2191	033021	000000	033611			DSETSU				; SUMMAR - summary interval (seconds)
  2192	033022	000000	033626			DSETWH				; WHAT - print options
  2193	033023	000000	033655			DSETHE				; HELP - set help message
  2194
  2195
  2196					;#********************************************************************
  2197					;* DSETAD - Set start address for START/SSTEP/CONT commands
  2198					;#********************************************************************
  2199
  2200	033024	210 01 0 00 122315 	DSETAD:	MOVN	1,[FMSGCD (SET ADDR addr (0-7777) <CR> or SET ADDR <CR>)]
  2201	033025	260 17 0 00 031437*		GO	.OARG			; get argument
  2202	033026	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2203	033027	254 00 0 00 033037 		 JRST	DSADD1			; no argument given
  2204	033030	200 00 0 00 032743*		MOVE	ARGUM			; get argument
  2205	033031	202 00 0 00 033666 		MOVEM	DSADDR			; save it
  2206	033032	301 00 0 00 000000 		CAIL	0			; out of range?
  2207	033033	301 00 0 00 007777 		CAIL	7777
  2208						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  2209							 GO	FIOFF
  2210	033034	254 00 0 00 122327 			 RTN]
  2211	033035	202 00 0 00 033666 		MOVEM	DSADDR			; no - save it
  2212	033036	263 17 0 00 000000 		RTN				; exit
  2213
  2214	033037	037 00 0 00 030242 	DSADD1:	PCRL
  2215	033040	037 00 0 00 122332 	DSADD2:	TMSG	<Start address ............ >
  2216	033041	200 00 0 00 033666 		MOVE	DSADDR
  2217	033042	037 16 0 00 000003 		PNTOCS
  2218	033043	037 00 0 00 030242 		PCRL
  2219	033044	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 52
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0215

  2220
  2221					;#********************************************************************
  2222					;* DSETCS - Set start CSR data for START/CONT commands
  2223					;#********************************************************************
  2224
  2225	033045	210 01 0 00 122350 	DSETCS:	MOVN	1,[FMSGCD (SET CSR xxxxxx <CR> or SET CSR <CR>)]
  2226	033046	260 17 0 00 033025*		GO	.OARG			; get argument
  2227	033047	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2228	033050	254 00 0 00 033054 		 JRST	DSCSR1			; no argument given
  2229	033051	200 00 0 00 033030*		MOVE	ARGUM			; get argument
  2230	033052	202 00 0 00 033667 		MOVEM	DSDATA			; save it
  2231	033053	263 17 0 00 000000 		RTN				; exit
  2232
  2233	033054	037 00 0 00 030242 	DSCSR1:	PCRL
  2234	033055	037 00 0 00 122351 	DSCSR2:	TMSG	<Start CSR data ........... >
  2235	033056	200 00 0 00 033667 		MOVE	DSDATA
  2236	033057	037 16 0 00 000003 		PNTOCS
  2237	033060	037 00 0 00 030242 		PCRL
  2238	033061	263 17 0 00 000000 		RTN				; exit
  2239
  2240
  2241					;#********************************************************************
  2242					;* DSETPR - Set/clear automatic parity generation for load cram command
  2243					;#********************************************************************
  2244
  2245	033062	210 01 0 00 122367 	DSETPR:	MOVN	1,[FMSGCD (SET PAR NO or YES or SET PAR <CR>)]
  2246	033063	260 17 0 00 032740*		GO	.SARG			; get argument
  2247	033064	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2248	033065	254 00 0 00 033073 		 JRST	DSPAR1			; no argument given
  2249	033066	260 17 0 00 000000*		GO	DECYN			; decode argument Y or N
  2250	033067	263 17 0 00 000000 		 RTN				; error - unrecognized
  2251						JRST	[SETZM	PARFLG		; no - clear the flag
  2252	033070	254 00 0 00 122370 			 RTN]
  2253	033071	476 00 0 00 033670 		SETOM	PARFLG			; yes - set it
  2254	033072	263 17 0 00 000000 		RTN				; exit
  2255
  2256	033073	037 00 0 00 030242 	DSPAR1:	PCRL
  2257	033074	037 00 0 00 122372 	DSPAR2:	TMSG	<Auto parity generation ... >
  2258	033075	332 00 0 00 033670 		SKIPE	PARFLG			; set?
  2259	033076	037 00 0 00 122400 		TMSGD	<YES>
  2260	033077	336 00 0 00 033670 		SKIPN	PARFLG			; set?
  2261	033100	037 00 0 00 122402 		TMSGD	<NO>
  2262	033101	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 53
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0216

  2263
  2264					;#********************************************************************
  2265					;* DSETEB - Set/clear preserve EBUF for single stepping
  2266					;#********************************************************************
  2267
  2268	033102	210 01 0 00 122413 	DSETEB:	MOVN	1,[FMSGCD (SET EBUF NO or YES or SET EBUF <CR>)]
  2269	033103	260 17 0 00 033063*		GO	.SARG			; get argument
  2270	033104	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2271	033105	254 00 0 00 033113 		 JRST	DSEBU1			; no argument given
  2272	033106	260 17 0 00 033066*		GO	DECYN			; decode argument Y or N
  2273	033107	263 17 0 00 000000 		 RTN				; error - unrecognized
  2274						JRST	[SETZM	PRSFLG		; no - clear the flag
  2275	033110	254 00 0 00 122414 			 RTN]
  2276	033111	476 00 0 00 033671 		SETOM	PRSFLG			; yes - set it
  2277	033112	263 17 0 00 000000 		RTN				; exit
  2278
  2279	033113	037 00 0 00 030242 	DSEBU1:	PCRL
  2280	033114	037 00 0 00 122416 	DSEBU2:	TMSG	<EBUF preserved in sstep .. >
  2281	033115	332 00 0 00 033671 		SKIPE	PRSFLG			; set?
  2282	033116	037 00 0 00 122400 		TMSGD	<YES>
  2283	033117	336 00 0 00 033671 		SKIPN	PRSFLG			; set?
  2284	033120	037 00 0 00 122402 		TMSGD	<NO>
  2285	033121	263 17 0 00 000000 		RTN				; return
  2286
  2287
  2288					;#********************************************************************
  2289					;* DSETPC - Set/clear PCB CCW list made up for START command
  2290					;#********************************************************************
  2291
  2292	033122	210 01 0 00 122434 	DSETPC:	MOVN	1,[FMSGCD (SET PCB NO or YES or SET PCB <CR>)]
  2293	033123	260 17 0 00 033103*		GO	.SARG			; get argument
  2294	033124	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2295	033125	254 00 0 00 033133 		 JRST	DSPCB1			; no argument given
  2296	033126	260 17 0 00 033106*		GO	DECYN			; decode argument Y or N
  2297	033127	263 17 0 00 000000 		 RTN				; error - unrecognized
  2298						JRST	[SETZM	PCBFLG		; no - clear the flag
  2299	033130	254 00 0 00 122435 			 RTN]
  2300	033131	476 00 0 00 033675 		SETOM	PCBFLG			; yes - set it
  2301	033132	263 17 0 00 000000 		RTN				; exit
  2302
  2303	033133	037 00 0 00 030242 	DSPCB1:	PCRL
  2304	033134	037 00 0 00 122437 	DSPCB2:	TMSG	<Setup PCB CCW on START cmd >
  2305	033135	332 00 0 00 033675 		SKIPE	PCBFLG			; set?
  2306	033136	037 00 0 00 122400 		TMSGD	<YES>
  2307	033137	336 00 0 00 033675 		SKIPN	PCBFLG			; set?
  2308	033140	037 00 0 00 122402 		TMSGD	<NO>
  2309	033141	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 54
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0217

  2310
  2311					;#********************************************************************
  2312					;* DSETFN - Set default microcode file name
  2313					;#********************************************************************
  2314
  2315	033142	200 01 0 00 122457 	DSETFN:	MOVE	1,[FMSGCD (SET FNAME file ext <CR> or SET FNAME <CR>)]
  2316	033143	260 17 0 00 033123*		GO	.SARG			; get argument (file name)
  2317	033144	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2318	033145	254 00 0 00 033162 		 JRST	DSFNM1			; no argument - print it out
  2319	033146	200 00 0 00 033051*		MOVE	ARGUM			; get argument
  2320	033147	202 00 0 00 134247'		MOVEM	TMP1#			; save it
  2321	033150	210 01 0 00 122457 		MOVN	1,[FMSGCD (SET FNAME file ext <CR> or SET FNAME <CR>)]
  2322	033151	260 17 0 00 033143*		GO	.SARG			; get argument (extension)
  2323	033152	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2324	033153	254 00 0 00 033156 		 JRST	DSFNM0			; no extension given - exit
  2325	033154	200 00 0 00 033146*		MOVE	ARGUM			; get 2nd argument
  2326	033155	202 00 0 00 044325 		MOVEM	FNAME+1			; save it
  2327	033156	200 00 0 00 134247'	DSFNM0:	MOVE	TMP1			; get first argument
  2328	033157	202 00 0 00 044324 		MOVEM	FNAME			; save it
  2329	033160	402 00 0 00 044330 		SETZM	CNAME			; clear 'CRAM loaded' ucode flag
  2330	033161	263 17 0 00 000000 		RTN				; return
  2331
  2332	033162	037 00 0 00 030242 	DSFNM1:	PCRL
  2333	033163	037 00 0 00 122460 	DSFNM2:	TMSG	<Microcode file name ...... >
  2334	033164	200 00 0 00 044324 		MOVE	FNAME			; get name
  2335	033165	037 00 0 00 000002 		PNTSIX				; print it
  2336	033166	037 00 0 00 122466 		TMSG	<.>
  2337	033167	200 00 0 00 044325 		MOVE	FNAME+1			; get extension
  2338	033170	037 00 0 00 000002 		PNTSIX				; print it
  2339	033171	037 00 0 00 030242 		PCRL
  2340	033172	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 55
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0218

  2341
  2342					;#********************************************************************
  2343					;* DSETPA - Set data pattern to insert in buffer
  2344					;#********************************************************************
  2345
  2346	033173	200 01 0 00 122504 	DSETPA:	MOVE	1,[FMSGCD (SET PAT number (1-126 octal)(126=opr sel) or SET PAT <CR>)]
  2347	033174	260 17 0 00 033046*		GO	.OARG			; get argument
  2348	033175	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2349	033176	254 00 0 00 033220 		 JRST	DSPAT1			; no argument given
  2350	033177	200 00 0 00 033154*		MOVE	ARGUM			; get argument
  2351	033200	301 00 0 00 000001 		CAIL	1			; in range?
  2352	033201	303 00 0 00 000126 		CAILE	126
  2353						JRST	[FMSGCD	<? Out of range 1-126 octal>
  2354							 GO	FIOFF
  2355	033202	254 00 0 00 122514 			 RTN]
  2356	033203	202 00 0 00 033673 		MOVEM	DSPAT			; save it
  2357	033204	302 00 0 00 000126 		CAIE	126			; operator selected pattern?
  2358	033205	254 00 0 00 033214 		JRST	DSPATX			; no - exit
  2359	033206	200 01 0 00 122525 		MOVE	1,[FMSGCD <SET PAT 126,data (CR)>]
  2360	033207	260 17 0 00 033174*		GO	.OARG			; get argument
  2361	033210	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2362						 JRST	[FMSGCD	<? Missing argument>
  2363							 GO	FIOFF
  2364	033211	254 00 0 00 117722 			 RTN]
  2365	033212	200 00 0 00 033177*		MOVE	ARGUM			; get argument
  2366	033213	202 00 0 00 033674 		MOVEM	DSTPAT			; save it
  2367	033214	260 17 0 00 000000*	DSPATX:	GO	LASARG			; check for last argument
  2368	033215	263 17 0 00 000000 		RTN				; exit
  2369	033216	037 01 0 00 122517 		FMSGCD	<SET PAT 126,data (CR)>
  2370	033217	263 17 0 00 000000 		RTN				; exit
  2371
  2372	033220	037 00 0 00 030242 	DSPAT1:	PCRL
  2373	033221	037 00 0 00 122526 	DSPAT2:	TMSG	<Data pattern (#) ......... >
  2374	033222	200 01 0 00 033673 		MOVE	1,DSPAT			; get pattern
  2375	033223	256 00 0 01 000000*		XCT	PATPNT(1)		;  ...
  2376	033224	302 01 0 00 000126 		CAIE	1,126			; operator selected pattern?
  2377	033225	254 00 0 00 033231 		JRST	DSPAT3			; no - continue
  2378	033226	037 00 0 00 122534 		TMSG	< - >			; yes - print it out
  2379	033227	200 00 0 00 033674 		MOVE	DSTPAT
  2380	033230	037 13 0 00 000000 		PNTHW
  2381	033231	037 00 0 00 030242 	DSPAT3:	PCRL
  2382	033232	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 56
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0219

  2383
  2384					;#********************************************************************
  2385					;* DSETPL - List data patterns
  2386					;#********************************************************************
  2387
  2388	033233	200 01 0 00 122546 	DSETPL:	MOVE	1,[FMSGCD <SET PATLIS num1,num2 or SET PATLIS (CR)>]
  2389	033234	260 17 0 00 033207*		GO	.OARG			; get argument
  2390	033235	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2391						 JRST	[MOVE	PAT,DSPAT	; no argument - just print
  2392							 MOVEM	PAT,PAT1#	;   current selection
  2393							 MOVEM	PAT,PAT2#
  2394	033236	254 00 0 00 122547 			 JRST	DSETPP]
  2395	033237	200 00 0 00 033212*		MOVE	ARGUM			; get argument
  2396	033240	202 00 0 00 134211'		MOVEM	PAT1#			; save it
  2397
  2398	033241	200 01 0 00 122546 		MOVE	1,[FMSGCD <SET PATLIS num1,num2 or SET PATLIS (CR)>]
  2399	033242	260 17 0 00 033234*		GO	.OARG			; get argument
  2400	033243	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2401						 JRST	[MOVE	PAT,PAT1	; no 2nd argument - just print
  2402							 MOVEM	PAT,PAT2	;   one translation
  2403	033244	254 00 0 00 122553 			 JRST	DSETPP]
  2404	033245	200 00 0 00 033237*		MOVE	ARGUM			; get argument
  2405	033246	202 00 0 00 134212'		MOVEM	PAT2			; save it
  2406	033247	200 01 0 00 134212'		MOVE	1,PAT2			; get argument
  2407	033250	274 01 0 00 134211'		SUB	1,PAT1			; see if range ok
  2408						JUMPL	1,[FMSGCD <? Range nonsensical>
  2409							 GO	FIOFF
  2410	033251	321 01 0 00 122563 			 RTN]
  2411
  2412	033252	200 14 0 00 134211'	DSETPP:	MOVE	PAT,PAT1		; get pattern
  2413	033253	301 14 0 00 000001 		CAIL	PAT,1			; in range?
  2414	033254	303 14 0 00 000126 		CAILE	PAT,126
  2415						JRST	[FMSGCD	<? Out of range 1-126 octal>
  2416							 GO	FIOFF
  2417	033255	254 00 0 00 122514 			 RTN]
  2418	033256	037 00 0 00 030242 		PCRL
  2419	033257	256 00 0 14 033223*		XCT	PATPNT(PAT)		; print it
  2420	033260	350 00 0 00 000014 		AOS	PAT			; increment pattern number
  2421	033261	037 07 0 00 000003 		TTALTM				; altmode typed?
  2422	033262	334 00 0 00 000000 		SKIPA				; no - continue
  2423	033263	254 00 0 00 033266 		JRST	DSETPX			; yes - return
  2424	033264	317 14 0 00 134212'		CAMG	PAT,PAT2		; done yet?
  2425	033265	254 00 0 00 033253 		JRST	DSETPP+1		; no - loop till done
  2426	033266	037 00 0 00 030243 	DSETPX:	PCRL2				; final CRLF
  2427	033267	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 57
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0220

  2428
  2429					;#********************************************************************
  2430					;* DSETRE - Set/clr forced response
  2431					;#********************************************************************
  2432
  2433	033270	476 00 0 00 033676 	DSETRE:	SETOM	RSPFLG			; set the flag
  2434	033271	210 01 0 00 122577 		MOVN	1,[FMSGCD (SET RESPON NO or YES or SET RESPON <CR>)]
  2435	033272	260 17 0 00 033151*		GO	.SARG			; get argument
  2436	033273	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2437	033274	254 00 0 00 033302 		 JRST	DSRES1			; no argument given
  2438	033275	260 17 0 00 033126*		GO	DECYN			; decode argument Y or N
  2439	033276	263 17 0 00 000000 		 RTN				; error - unrecognized
  2440						JRST	[SETOM	RSPFLG		; no - clear the flag
  2441							 TMSGCD	<[No response requested not allowed]> 
  2442	033277	254 00 0 00 122610 			 RTN]
  2443	033300	476 00 0 00 033676 		SETOM	RSPFLG			; yes - set it
  2444	033301	263 17 0 00 000000 		RTN				; exit
  2445
  2446	033302	037 00 0 00 030242 	DSRES1:	PCRL
  2447	033303	037 00 0 00 122613 	DSRES2:	TMSG	<Request Packet Response .. >
  2448	033304	332 00 0 00 033676 		SKIPE	RSPFLG			; set?
  2449	033305	037 00 0 00 122400 		TMSGD	<YES>
  2450	033306	336 00 0 00 033676 		SKIPN	RSPFLG			; set?
  2451	033307	037 00 0 00 122402 		TMSGD	<NO>
  2452	033310	263 17 0 00 000000 		RTN				; return
  2453
  2454
  2455					;#********************************************************************
  2456					;* DSETFO - Set format (COMPAT or HIDEN)
  2457					;#********************************************************************
  2458
  2459	033311	210 01 0 00 122633 	DSETFO:	MOVN	1,[FMSGCD (SET FORMAT COMPAT or HIDEN or SET FORMAT <CR>)]
  2460	033312	260 17 0 00 033272*		GO	.SARG			; get argument
  2461	033313	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2462	033314	254 00 0 00 033323 		 JRST	DSFOR1			; no argument given
  2463	033315	200 01 0 00 033245*		MOVE	1,ARGUM			; get command into AC1
  2464	033316	201 02 0 00 033330 		MOVEI	2,DSFORL		; get address of cmd list
  2465	033317	260 17 0 00 032745*		GO	.COMM			; handle command decoding
  2466						 JRST	[FMSGCD	<? Unrecognized argument>
  2467	033320	254 00 0 00 122642 			 RTN]
  2468	033321	202 01 0 00 033677 		MOVEM	1,FORSEL		; save value
  2469	033322	263 17 0 00 000000 		RTN				; return
  2470
  2471	033323	037 00 0 00 030242 	DSFOR1:	PCRL
  2472	033324	037 00 0 00 122644 	DSFOR2:	TMSG	<Datagram Format .......... >
  2473	033325	200 01 0 00 033677 		MOVE	1,FORSEL		; get format value
  2474						XCT	[TMSGD	<COMPAT>	; print it
  2475	033326	256 00 0 01 122656 			 TMSGD	<HIDEN>](1)
  2476	033327	263 17 0 00 000000 		RTN				; return
  2477
  2478	033330	43 57 55 60 41 64 	DSFORL:	SIXBIT	/COMPAT/
  2479	033331	50 51 44 45 56 00 		SIXBIT	/HIDEN/
  2480	033332	000 00 0 00 000000 		Z
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 58
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0221

  2481
  2482					;#********************************************************************
  2483					;* DSETBS - Set BSD stype datagram
  2484					;#********************************************************************
  2485
  2486	033333	210 01 0 00 122670 	DSETBS:	MOVN	1,[FMSGCD (SET BSD NO or YES or SET BSD <CR>)]
  2487	033334	260 17 0 00 033312*		GO	.SARG			; get argument
  2488	033335	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2489	033336	254 00 0 00 033344 		 JRST	DSBSD1			; no argument given
  2490	033337	260 17 0 00 033275*		GO	DECYN			; decode argument Y or N
  2491	033340	263 17 0 00 000000 		 RTN				; error - unrecognized
  2492						JRST	[SETZM	BSDFLG		; no - clear the flag
  2493	033341	254 00 0 00 122671 			 RTN]
  2494	033342	476 00 0 00 033700 		SETOM	BSDFLG			; yes - set it
  2495	033343	263 17 0 00 000000 		RTN				; exit
  2496
  2497	033344	037 00 0 00 030242 	DSBSD1:	PCRL
  2498	033345	037 00 0 00 122673 	DSBSD2:	TMSG	<BSD Style Datagram ....... >
  2499	033346	332 00 0 00 033700 		SKIPE	BSDFLG			; set?
  2500	033347	037 00 0 00 122400 		TMSGD	<YES>
  2501	033350	336 00 0 00 033700 		SKIPN	BSDFLG			; set?
  2502	033351	037 00 0 00 122402 		TMSGD	<NO>
  2503	033352	263 17 0 00 000000 		RTN				; return
  2504
  2505
  2506					;#********************************************************************
  2507					;* DSETPD - Set pad flag
  2508					;#********************************************************************
  2509
  2510	033353	210 01 0 00 122711 	DSETPD:	MOVN	1,[FMSGCD (SET PAD NO or YES or SET PAD <CR>)]
  2511	033354	260 17 0 00 033334*		GO	.SARG			; get argument
  2512	033355	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2513	033356	254 00 0 00 033364 		 JRST	DSPAD1			; no argument given
  2514	033357	260 17 0 00 033337*		GO	DECYN			; decode argument Y or N
  2515	033360	263 17 0 00 000000 		 RTN				; error - unrecognized
  2516						JRST	[SETZM	PADFLG		; no - clear the flag
  2517	033361	254 00 0 00 122712 			 RTN]
  2518	033362	476 00 0 00 033701 		SETOM	PADFLG			; yes - set it
  2519	033363	263 17 0 00 000000 		RTN				; exit
  2520
  2521	033364	037 00 0 00 030242 	DSPAD1:	PCRL
  2522	033365	037 00 0 00 122714 	DSPAD2:	TMSG	<Pad all datagrams ........ >
  2523	033366	332 00 0 00 033701 		SKIPE	PADFLG			; set?
  2524	033367	037 00 0 00 122400 		TMSGD	<YES>
  2525	033370	336 00 0 00 033701 		SKIPN	PADFLG			; set?
  2526	033371	037 00 0 00 122402 		TMSGD	<NO>
  2527	033372	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 59
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0222

  2528
  2529					;#********************************************************************
  2530					;* DSETLN - Set length of text portion of packet
  2531					;#********************************************************************
  2532
  2533	033373	210 01 0 00 122735 	DSETLN:	MOVN	1,[FMSGCD (SET LEN length (1-1504. bytes) or SET LEN <CR>)]
  2534	033374	260 17 0 00 031667*		GO	.DARG			; get argument
  2535	033375	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2536	033376	254 00 0 00 033405 		 JRST	DSLEN1			; no argument given
  2537	033377	200 00 0 00 033315*		MOVE	ARGUM			; get argument
  2538	033400	303 00 0 00 000000 		CAILE	0			; argument in range 1-1504.?
  2539	033401	303 00 0 00 002740 		CAILE	^D1504
  2540						JRST	[FMSGCD	<? Out of range 1-1504. bytes>
  2541							 GO	FIOFF
  2542	033402	254 00 0 00 122745 			 RTN]
  2543	033403	202 00 0 00 033672 		MOVEM	DSBYTE			; save it
  2544	033404	263 17 0 00 000000 		RTN				; exit
  2545
  2546	033405	037 00 0 00 030242 	DSLEN1:	PCRL
  2547	033406	037 00 0 00 122750 	DSLEN2:	TMSG	<Text length (bytes) ...... >
  2548	033407	200 00 0 00 033672 		MOVE	DSBYTE
  2549	033410	037 15 0 00 000000 		PNTDEC
  2550	033411	037 00 0 00 117263 		TMSGD	<.>
  2551	033412	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 60
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0223

  2552
  2553					;#********************************************************************
  2554					;* DSETDA - Set destination address
  2555					;#********************************************************************
  2556
  2557	033413	120 00 0 00 033702 	DSETDA:	DMOVE	DADDR			; get address
  2558	033414	202 00 0 00 134230'		MOVEM	SAVAD1#			; save 1st word
  2559	033415	202 01 0 00 134231'		MOVEM	1,SAVAD2#		; save 2nd word
  2560
  2561						MOVE	1,[FMSGCD <SET DADDR B0,B1,B2,B3,B4,B5 or SET DADDR or SET DADDR SELF (CR)>
  2562	033416	200 01 0 00 122774 	]
  2563	033417	260 17 0 00 033354*		GO	.SARG			; get argument
  2564	033420	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2565	033421	254 00 0 00 033467 		 JRST	DSDAD1			; no argument given
  2566	033422	200 01 0 00 033377*		MOVE	1,ARGUM			; get command into AC1
  2567	033423	201 02 0 00 033511 		MOVEI	2,DSDADL		; get address of cmd list
  2568	033424	260 17 0 00 033317*		GO	.COMM			; handle command decoding
  2569						JRST	[MOVE	1,ARGUM		; error - may be an octal
  2570							 GO	CONVSX		;   number - check and handle
  2571							 SKIPA			;   as appropriate
  2572							 JRST	DSDAD0
  2573							 FMSGCD	<? Unrecognized argument>
  2574	033425	254 00 0 00 122775 			 RTN]
  2575	033426	260 17 0 00 065672 		GO	RDADDR			; read station address
  2576	033427	120 00 0 00 033704 		DMOVE	SADDR			; get it
  2577	033430	124 00 0 00 033702 		DMOVEM	DADDR			; save it
  2578	033431	037 00 0 00 030242 		PCRL
  2579	033432	254 00 0 00 033472 		JRST	DSDAD2			; print it out now
  2580
  2581	033433	200 00 0 00 000001 	DSDAD0:	MOVE	1			; get argument
  2582	033434	137 00 0 00 123003 		DPB	[POINT 8,SAVAD1,31]	; save it
  2583
  2584	033435	260 17 0 00 033242*		GO	.OARG			; get argument
  2585	033436	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2586	033437	254 00 0 00 033467 		 JRST	DSDAD1			; no argument given
  2587	033440	200 00 0 00 033422*		MOVE	ARGUM			; get argument
  2588	033441	137 00 0 00 123004 		DPB	[POINT 8,SAVAD1,23]	; save it
  2589
  2590	033442	260 17 0 00 033435*		GO	.OARG			; get argument
  2591	033443	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2592	033444	254 00 0 00 033467 		 JRST	DSDAD1			; no argument given
  2593	033445	200 00 0 00 033440*		MOVE	ARGUM			; get argument
  2594	033446	137 00 0 00 123005 		DPB	[POINT 8,SAVAD1,15]	; save it
  2595
  2596	033447	260 17 0 00 033442*		GO	.OARG			; get argument
  2597	033450	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2598	033451	254 00 0 00 033467 		 JRST	DSDAD1			; no argument given
  2599	033452	200 00 0 00 033445*		MOVE	ARGUM			; get argument
  2600	033453	137 00 0 00 123006 		DPB	[POINT 8,SAVAD1,7]	; save it
  2601
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 61
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0224

  2602	033454	260 17 0 00 033447*		GO	.OARG			; get argument
  2603	033455	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2604	033456	254 00 0 00 033467 		 JRST	DSDAD1			; no argument given
  2605	033457	200 00 0 00 033452*		MOVE	ARGUM			; get argument
  2606	033460	137 00 0 00 123007 		DPB	[POINT 8,SAVAD2,31]	; save it
  2607
  2608	033461	210 01 0 00 123022 		MOVN	1,[FMSGCD <SET DADDR B0,B1,B2,B3,B4,B5 or SET DADDR (CR)>]
  2609	033462	260 17 0 00 033454*		GO	.OARG			; get argument
  2610	033463	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2611	033464	254 00 0 00 033467 		 JRST	DSDAD1			; no argument given
  2612	033465	200 00 0 00 033457*		MOVE	ARGUM			; get argument
  2613	033466	137 00 0 00 123023 		DPB	[POINT 8,SAVAD2,23]	; save it
  2614	
  2615	033467	120 00 0 00 134230'	DSDAD1:	DMOVE	SAVAD1			; get address
  2616	033470	124 00 0 00 033702 		DMOVEM	DADDR			; save it
  2617	033471	037 00 0 00 030242 		PCRL
  2618
  2619	033472	037 00 0 00 123024 	DSDAD2:	TMSG	<Destination address ...... >
  2620	033473	135 00 0 00 123032 		LDB	[POINT 8,DADDR,31]
  2621	033474	037 03 0 00 000000 		PNT3
  2622	033475	135 00 0 00 123033 		LDB	[POINT 8,DADDR,23]
  2623	033476	037 03 0 00 000000 		PNT3
  2624	033477	135 00 0 00 123034 		LDB	[POINT 8,DADDR,15]
  2625	033500	037 03 0 00 000000 		PNT3
  2626	033501	135 00 0 00 123035 		LDB	[POINT 8,DADDR,7]
  2627	033502	037 03 0 00 000000 		PNT3
  2628	033503	135 00 0 00 123036 		LDB	[POINT 8,DADDR+1,31]
  2629	033504	037 03 0 00 000000 		PNT3
  2630	033505	135 00 0 00 123037 		LDB	[POINT 8,DADDR+1,23]
  2631	033506	037 03 0 00 000000 		PNT3
  2632	033507	037 00 0 00 030242 		PCRL
  2633	033510	263 17 0 00 000000 		RTN
  2634
  2635					; Command list
  2636
  2637	033511	63 45 54 46 00 00 	DSDADL:	SIXBIT	/SELF/
  2638	033512	000 00 0 00 000000 		Z
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 62
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0225

  2639
  2640					;#********************************************************************
  2641					;* DSETSA - Set self address
  2642					;#********************************************************************
  2643
  2644	033513	200 01 0 00 123044 	DSETSA:	MOVE	1,[FMSGCD <SET SADDR (CR)>]
  2645	033514	260 17 0 00 032232*		GO	CHKARG			; ensure last argument
  2646	033515	263 17 0 00 000000 		RTN				; error - exit
  2647	033516	260 17 0 00 065672 		GO	RDADDR			; read physical address ROM
  2648	033517	037 00 0 00 030242 		PCRL
  2649
  2650	033520	037 00 0 00 123045 	DSSAD2:	TMSG	<Our station address ...... >
  2651	033521	135 00 0 00 123053 		LDB	[POINT 8,SADDR,31]
  2652	033522	037 03 0 00 000000 		PNT3
  2653	033523	135 00 0 00 123054 		LDB	[POINT 8,SADDR,23]
  2654	033524	037 03 0 00 000000 		PNT3
  2655	033525	135 00 0 00 123055 		LDB	[POINT 8,SADDR,15]
  2656	033526	037 03 0 00 000000 		PNT3
  2657	033527	135 00 0 00 123056 		LDB	[POINT 8,SADDR,7]
  2658	033530	037 03 0 00 000000 		PNT3
  2659	033531	135 00 0 00 123057 		LDB	[POINT 8,SADDR+1,31]
  2660	033532	037 03 0 00 000000 		PNT3
  2661	033533	135 00 0 00 123060 		LDB	[POINT 8,SADDR+1,23]
  2662	033534	037 03 0 00 000000 		PNT3
  2663	033535	037 00 0 00 030242 		PCRL
  2664	033536	263 17 0 00 000000 		RTN
  2665
  2666
  2667					;#********************************************************************
  2668					;* DSETPV - Set protocol type value
  2669					;#********************************************************************
  2670
  2671	033537	210 01 0 00 123071 	DSETPV:	MOVN	1,[FMSGCD (SET PTTVAL n or SET PTTVAL <CR>)]
  2672	033540	260 17 0 00 033462*		GO	.OARG			; get argument
  2673	033541	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2674	033542	254 00 0 00 033546 		 JRST	DSPTT1			; no argument given
  2675	033543	200 00 0 00 033465*		MOVE	ARGUM			; get argument
  2676	033544	202 00 0 00 033712 		MOVEM	PTTVAL			; save it
  2677	033545	263 17 0 00 000000 		RTN				; exit
  2678
  2679	033546	037 00 0 00 030242 	DSPTT1:	PCRL
  2680	033547	037 00 0 00 123072 	DSPTT2:	TMSG	<PTT value ................ >
  2681	033550	200 00 0 00 033712 		MOVE	PTTVAL
  2682	033551	037 16 0 00 000003 		PNTOCS
  2683	033552	037 00 0 00 030242 		PCRL
  2684	033553	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 63
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0226

  2685
  2686					;#********************************************************************
  2687					;* DSETPT - Set length of text portion to print
  2688					;#********************************************************************
  2689
  2690	033554	210 01 0 00 123112 	DSETPT:	MOVN	1,[FMSGCD (SET PRINT nwords (1-1000.) or SET PRINT <CR>)]
  2691	033555	260 17 0 00 033374*		GO	.DARG			; get argument
  2692	033556	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2693	033557	254 00 0 00 033566 		 JRST	DSPNT1			; no argument given
  2694	033560	200 00 0 00 033543*		MOVE	ARGUM			; get argument
  2695	033561	303 00 0 00 000000 		CAILE	0			; argument in range 1-1000?
  2696	033562	303 00 0 00 001750 		CAILE	^D1000
  2697						JRST	[FMSGCD	<? Out of range 1-1000. words>
  2698							 GO	FIOFF
  2699	033563	254 00 0 00 123122 			 RTN]
  2700	033564	202 00 0 00 033706 		MOVEM	DSPRIN			; save it
  2701	033565	263 17 0 00 000000 		RTN				; exit
  2702
  2703	033566	037 00 0 00 030242 	DSPNT1:	PCRL
  2704	033567	037 00 0 00 123125 	DSPNT2:	TMSG	<Text to print (words) .... >
  2705	033570	200 00 0 00 033706 		MOVE	DSPRIN
  2706	033571	037 15 0 00 000000 		PNTDEC
  2707	033572	037 00 0 00 117263 		TMSGD	<.>
  2708	033573	263 17 0 00 000000 		RTN				; exit
  2709
  2710
  2711					;#********************************************************************
  2712					;* DSETIN - Set interval (milliseconds)
  2713					;#********************************************************************
  2714
  2715	033574	210 01 0 00 123145 	DSETIN:	MOVN	1,[FMSGCD (SET INTERV milliseconds or SET INTERV <CR>)]
  2716	033575	260 17 0 00 033555*		GO	.DARG			; get argument
  2717	033576	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2718	033577	254 00 0 00 033603 		 JRST	DSINT1			; no argument given
  2719	033600	200 00 0 00 033560*		MOVE	ARGUM			; get argument
  2720	033601	202 00 0 00 033710 		MOVEM	DSINT			; save it
  2721	033602	263 17 0 00 000000 		RTN				; exit
  2722
  2723	033603	037 00 0 00 030242 	DSINT1:	PCRL
  2724	033604	037 00 0 00 123146 	DSINT2:	TMSG	<Interval (milliseconds) .. >
  2725	033605	200 00 0 00 033710 		MOVE	DSINT
  2726	033606	037 15 0 00 000000 		PNTDEC
  2727	033607	037 00 0 00 117263 		TMSGD	<.>
  2728	033610	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 64
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0227

  2729
  2730					;#********************************************************************
  2731					;* DSETSU - Set summary interval (seconds)
  2732					;#********************************************************************
  2733
  2734	033611	210 01 0 00 123165 	DSETSU:	MOVN	1,[FMSGCD (SET SUMMAR seconds or SET SUMMAR <CR>)]
  2735	033612	260 17 0 00 033575*		GO	.DARG			; get argument
  2736	033613	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2737	033614	254 00 0 00 033620 		 JRST	DSSUM1			; no argument given
  2738	033615	200 00 0 00 033600*		MOVE	ARGUM			; get argument
  2739	033616	202 00 0 00 033707 		MOVEM	DSSUM			; save it
  2740	033617	263 17 0 00 000000 		RTN				; exit
  2741
  2742	033620	037 00 0 00 030242 	DSSUM1:	PCRL
  2743	033621	037 00 0 00 123166 	DSSUM2:	TMSG	<Summary interval (seconds) >
  2744	033622	200 00 0 00 033707 		MOVE	DSSUM
  2745	033623	037 15 0 00 000000 		PNTDEC
  2746	033624	037 00 0 00 117263 		TMSGD	<.>
  2747	033625	263 17 0 00 000000 		RTN				; exit
  2748
  2749
  2750					;#********************************************************************
  2751					;* DSETWH - Print all selected options
  2752					;#********************************************************************
  2753
  2754	033626	260 17 0 00 033214*	DSETWH:	GO	LASARG			; check for last argument
  2755	033627	263 17 0 00 000000 		RTN				; error - exit
  2756						JRST	[FMSGCD	(SET WHAT <CR>)	; ? typed - print msg and
  2757	033630	254 00 0 00 123200 			 RTN]			;   return
  2758	033631	037 00 0 00 123202 		TMSGCD	<Options:>
  2759	033632	260 17 0 00 033037 		GO	DSADD1			; print address
  2760	033633	260 17 0 00 033055 		GO	DSCSR2			; print CSR data
  2761	033634	260 17 0 00 033074 		GO	DSPAR2			; print parity flag
  2762	033635	260 17 0 00 033114 		GO	DSEBU2			; print EBUF flag
  2763	033636	260 17 0 00 033134 		GO	DSPCB2			; print PCB flag
  2764	033637	260 17 0 00 033163 		GO	DSFNM2			; print file name selected
  2765	033640	260 17 0 00 033221 		GO	DSPAT2			; print data pattern
  2766	033641	260 17 0 00 033303 		GO	DSRES2			; print response flag
  2767	033642	260 17 0 00 033324 		GO	DSFOR2			; print format
  2768	033643	260 17 0 00 033345 		GO	DSBSD2			; print BSD flag
  2769	033644	260 17 0 00 033406 		GO	DSLEN2			; print length
  2770	033645	260 17 0 00 033472 		GO	DSDAD2			; print destination address
  2771	033646	260 17 0 00 033520 		GO	DSSAD2			; print our station address
  2772	033647	260 17 0 00 033547 		GO	DSPTT2			; print PTT value
  2773	033650	260 17 0 00 033365 		GO	DSPAD2			; print pad flag
  2774	033651	260 17 0 00 033567 		GO	DSPNT2			; print length to print
  2775	033652	260 17 0 00 033604 		GO	DSINT2			; print interval
  2776	033653	260 17 0 00 033621 		GO	DSSUM2			; print summary interval
  2777	033654	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 65
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0228

  2778
  2779					;#********************************************************************
  2780					;* DSETHE - Set help message
  2781					;#********************************************************************
  2782
  2783	033655	200 01 0 00 123211 	DSETHE:	MOVE	1,[FMSGCD (SET HELP <CR>)]
  2784	033656	260 17 0 00 033514*		GO	CHKARG			; check for argument
  2785	033657	263 17 0 00 000000 		RTN				; error - exit
  2786	033660	037 01 0 00 000026 		PFORCE				; handle Control-O
  2787	033661	037 00 1 00 033663 		PNTMSG	@DSETHL			; print text
  2788	033662	263 17 0 00 000000 		RTN				; ask for a test
  2789
  2790	033663				DSETHL:	[ASCII	^
  2791					SET Command:   (* Arg - YES or NO)
  2792
  2793					SET ADDR adr    - set start address
  2794					SET CSR data    - set start CSR data
  2795					SET PARITY arg* - set/clr auto par generation
  2796					SET EBUF arg*   - set/clr preserve EBUF flag
  2797					SET PCB arg*    - set/clr PCB CCW list for START
  2798					SET FNAME name ext - set default ucode file name
  2799	033663	000000	123212		SET PAT n       - set data pattern   ^]
  2800						[ASCII	^
  2801					SET PATLIS arg  - list data patterns
  2802					SET RESPON arg* - set/clr forced response
  2803					SET FORMAT arg  - set format (COMPAT or HIDEN)
  2804					SET BSD arg*    - set/clr BSD style datagram
  2805					SET LENGTH len  - set text length
  2806					SET DADDR n1,n2 - set destination address
  2807					SET SADDR n1,n2 - set self address
  2808					SET PTTVAL arg  - set PTT value
  2809	033664	000000	123317		SET PAD arg*    - set/clr pad datagram   ^]
  2810						[ASCIZ	^
  2811					SET PRINT adr   - set text length to print
  2812					SET INTERV sec  - interval (seconds)
  2813					SET SUMMAR sec  - summary interval (seconds)
  2814					SET WHAT        - print options
  2815					SET HELP        - set help message
  2816	033665	000000	123430		^]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 66
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0229

  2817
  2818					;#********************************************************************
  2819					;* Program Flags
  2820					;#********************************************************************
  2821
  2822	033666	000000	000000		DSADDR:	0				; start address initially zero
  2823	033667	000000	000000		DSDATA:	0				; start data initially zero
  2824
  2825	033670	777777	777777		PARFLG:	-1				; 'automatic parity generation' flag
  2826	033671	777777	777777		PRSFLG:	-1				; 'preserve EBUF' flag
  2827
  2828	033672	000000	000144		DSBYTE:	^D100				; text length
  2829
  2830	033673	000000	000001		DSPAT:	1				; data pattern
  2831	033674	000000	000000		DSTPAT:	0				; operator select pattern
  2832
  2833	033675	000000	000000		PCBFLG:	0				; don't auto generate CCW list
  2834
  2835	033676	777777	777777		RSPFLG:	-1				; generate response flag
  2836	033677	000000	000000		FORSEL:	0				; datagram format
  2837	033700	000000	000000		BSDFLG:	0				; BSD style datagram flag
  2838	033701	000000	000000		PADFLG:	0				; pad datagrams flag
  2839
  2840	033702	000000	000000		DADDR:	0				; destination address
  2841	033703	000000	000000			0
  2842
  2843	033704	000000	000000		SADDR:	0				; self address
  2844	033705	000000	000000			0
  2845
  2846	033706	000000	000003		DSPRIN:	^D3				; default length to print
  2847
  2848	033707	000000	000036		DSSUM:	^D30				; default to 30 seconds
  2849	033710	000000	000000		DSINT:	0				; default to 0 milliseconds
  2850
  2851	033711	000000	000000		SANFLG:	0				; sanity checking
  2852
  2853	033712	000000	000005		PTTVAL:	5				; PTT value
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 67
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0230

  2854
  2855					;#*********************************************************************
  2856					;* DECSR - Examine CSR register
  2857					;#*********************************************************************
  2858
  2859	033713	200 01 0 00 123503 	DECSR:	MOVE	1,[FMSGCD (ECSR <CR>)]
  2860	033714	260 17 0 00 033656*		GO	CHKARG			; check for argument
  2861	033715	263 17 0 00 000000 		RTN				; error - exit
  2862	033716	260 17 0 00 030712*		GO	RDCSR			; read the CSR register
  2863	033717	037 00 0 00 123504 		 TMSGC	<[Rdcsr failed]>	; error return
  2864	033720	260 17 0 00 042605 		GO	CSRPNT			; print CSR data
  2865	033721	037 00 0 00 030242 		PCRL				; end of line
  2866	033722	263 17 0 00 000000 		RTN				; return
  2867
  2868
  2869					;#*********************************************************************
  2870					;* DDCSR - Deposit CSR register
  2871					;#*********************************************************************
  2872
  2873	033723	210 01 0 00 123515 	DDCSR:	MOVN	1,[FMSGCD (DCSR xxxxxx <CR>)]
  2874	033724	260 17 0 00 033540*		GO	.OARG			; get argument
  2875	033725	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2876						 JRST	[FMSGCD	<? Missing argument>
  2877							 GO	FIOFF
  2878	033726	254 00 0 00 117722 			 RTN]
  2879	033727	200 01 0 00 033615*		MOVE	1,ARGUM			; get argument
  2880	033730	260 17 0 00 000000*		GO	LDCSR			; write it
  2881	033731	263 17 0 00 000000 		RTN				; return
  2882
  2883
  2884					;#*********************************************************************
  2885					;* DZCSR - Zero CSR register
  2886					;#*********************************************************************
  2887
  2888	033732	200 01 0 00 123521 	DZCSR:	MOVE	1,[FMSGCD (ZCSR <CR>)]
  2889	033733	260 17 0 00 033714*		GO	CHKARG			; check for argument
  2890	033734	263 17 0 00 000000 		RTN				; error - exit
  2891	033735	400 01 0 00 000000 		SETZ	1,			; clear data
  2892	033736	260 17 0 00 033730*		GO	LDCSR			; write it
  2893	033737	263 17 0 00 000000 		RTN				; return
  2894
  2895
  2896					;#********************************************************************
  2897					;* DRESET - Issue an EBUS Reset
  2898					;#********************************************************************
  2899
  2900	033740	200 01 0 00 123525 	DRESET:	MOVE	1,[FMSGCD (RESET <CR>)]
  2901	033741	260 17 0 00 033733*		GO	CHKARG			; check for argument
  2902	033742	263 17 0 00 000000 		RTN				; error - exit
  2903	033743	260 17 0 00 000000*		GO	ERESET
  2904	033744	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 68
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0231

  2905
  2906					;#********************************************************************
  2907					;* DCLEAR - Issue a 'Port Clear'
  2908					;#********************************************************************
  2909
  2910	033745	200 01 0 00 123531 	DCLEAR:	MOVE	1,[FMSGCD (CLEAR <CR>)]
  2911	033746	260 17 0 00 033741*		GO	CHKARG			; check for argument
  2912	033747	263 17 0 00 000000 		RTN				; error - exit
  2913	033750	260 17 0 00 000000*		GO	IPACLR			; do a 'port clear'
  2914	033751	263 17 0 00 000000 		RTN				; return
  2915
  2916
  2917					;#********************************************************************
  2918					;* DSINIT - Set up start addr/data/history prior to single step command
  2919					;#********************************************************************
  2920
  2921	033752	200 01 0 00 123536 	DSINIT:	MOVE	1,[FMSGCD (SSINIT <CR>)]
  2922	033753	260 17 0 00 033746*		GO	CHKARG			; check for argument
  2923	033754	263 17 0 00 000000 		RTN				; error - exit
  2924	033755	200 00 0 00 033666 		MOVE	DSADDR			; get start address
  2925	033756	202 00 0 00 000000*		MOVEM	SNEXT			; save it for IPASST
  2926	033757	200 00 0 00 033667 		MOVE	DSDATA			; get start CSR data
  2927	033760	202 00 0 00 000000*		MOVEM	SDATA			; save it for IPASST
  2928	033761	260 17 0 00 033037 		GO	DSADD1			; print start address
  2929	033762	260 17 0 00 033055 		GO	DSCSR2			; print start data
  2930	033763	260 17 0 00 034130 		GO	DSSCLR			; clear sstep history
  2931	033764	263 17 0 00 000000 		RTN
  2932
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 69
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0232

  2933
  2934					;#********************************************************************
  2935					;* DSTART - Start the port
  2936					;
  2937					; Arguments set up:
  2938					;
  2939					; DSADDR - Current start address which has been specified by either a
  2940					;	   'SETADD' command, or as an argument to the 'START' command.
  2941					; DSDATA - Current start CSR data specified by a 'SETCSR' command.
  2942					; PCBFLG - Set up 3-Word CCW list automatically flag
  2943					;
  2944					; Arguments set up for IPASST:  SNEXT - Contents of DSADDR is used.
  2945					;				SLAST - Contents of DSADDR is used.
  2946					;				SDATA - Contents of DSDATA is used.
  2947					;#********************************************************************
  2948
  2949	033765	210 01 0 00 123546 	DSTART:	MOVN	1,[FMSGCD (START addr <CR> or START <CR>)]
  2950	033766	260 17 0 00 033724*		GO	.OARG			; get start address
  2951	033767	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  2952	033770	334 01 0 00 033666 		 SKIPA	1,DSADDR		; no argument given
  2953
  2954					; Check for PCB handling generation
  2955
  2956	033771	332 00 0 00 033675 		SKIPE	PCBFLG			; PCB flag set?
  2957	033772	260 17 0 00 000000*		GO	CHINIT			; yes - initialize software
  2958
  2959					; Start it up
  2960
  2961	033773	260 17 0 00 000000*	DSTAR0:	GO	ISTOP			; stop the port
  2962	033774	200 01 0 00 033727*		MOVE	1,ARGUM			; get argument
  2963	033775	202 01 0 00 033756*		MOVEM	1,SNEXT			; set it up
  2964	033776	202 00 0 00 000000*		MOVEM	SLAST			; set it up
  2965	033777	200 00 0 00 033667 		MOVE	DSDATA			; get start data
  2966	034000	202 00 0 00 033760*		MOVEM	SDATA			; set it up
  2967	034001	260 17 0 00 000000*		GO	IPASRT			; start it up
  2968						 JRST	[FMSGCD	<? Error accessing CSR register>
  2969							 GO	FIOFF
  2970	034002	254 00 0 00 123556 			 RTN]
  2971						 JRST	[FMSGCD	<? Port not stopped>
  2972							 GO	FIOFF
  2973	034003	254 00 0 00 123566 			 RTN]
  2974	034004	334 00 0 00 000000 		 SKIPA				; error - Error bits set in CSR
  2975	034005	263 17 0 00 000000 		RTN				; exit
  2976	034006	037 01 0 00 123571 		FMSGCD	<? START failed - Error bits set in CSR>
  2977	034007	260 17 0 00 033716*		GO	RDCSR			; read CSR register
  2978	034010	255 00 0 00 000000 		JFCL				; ignore error
  2979	034011	260 17 0 00 042605 		GO	CSRPNT			; print CSR register
  2980	034012	037 00 0 00 030242 		PCRL				; end of line
  2981	034013	263 17 0 00 000000 		RTN				; continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 70
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0233

  2982
  2983					;#********************************************************************
  2984					;* DSTOP - Stop the port
  2985					;
  2986					; Arguments set by IPASTP:
  2987					;
  2988					; SNEXT - Set to stopping address.
  2989					; SDATA - Set to contents of CSR register.
  2990					;#********************************************************************
  2991
  2992	034014	200 01 0 00 123605 	DSTOP:	MOVE	1,[FMSGCD (STOP <CR>)]
  2993	034015	260 17 0 00 033753*		GO	CHKARG			; check for argument
  2994	034016	263 17 0 00 000000 		RTN				; error - exit
  2995	034017	260 17 0 00 000000*		GO	IPASTP			; stop it and get final address
  2996						 JRST	[FMSGCD	<? Error accessing CSR register>
  2997							 GO	FIOFF
  2998	034020	254 00 0 00 123556 			 RTN]
  2999						 JRST	[FMSGCD	<? Port not running>
  3000							 GO	FIOFF
  3001	034021	254 00 0 00 123613 			 RTN]
  3002	034022	254 00 0 00 034027 		 JRST	DSTOP1			; error - Error bits set in CSR
  3003	034023	037 00 0 00 123616 		TMSGC	<Port stopped.  Last Adr = >
  3004	034024	200 00 0 00 033775*		MOVE	SNEXT			; print it out
  3005	034025	037 04 0 00 000000 		PNT4
  3006	034026	334 00 0 00 000000 		SKIPA
  3007	034027	037 01 0 00 123624 	DSTOP1:	FMSGCD	<? Stop failed - Error bits set in CSR>
  3008	034030	200 01 0 00 034000*		MOVE	1,SDATA			; get CSR data
  3009	034031	260 17 0 00 042605 		GO	CSRPNT			; print CSR register
  3010	034032	037 00 0 00 030242 		PCRL				; end of line
  3011	034033	263 17 0 00 000000 		RTN				; continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 71
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0234

  3012
  3013					;#********************************************************************
  3014					;* DSSTEP - Single step the port
  3015					;* DTRACE - Single step the port and trace progress
  3016					;
  3017					; Arguments set up for IPASST:
  3018					;
  3019					; SNEXT - This is the address last set up by another single step
  3020					;	  command or by a SETSTR (set up start data) command.
  3021					;	  After each single step the LAR is read.  The contents
  3022					;	  of the LAR are put in SNEXT.
  3023					;
  3024					; SLAST - This is the address last executed.  SNEXT is put in this
  3025					;	  location before each single step
  3026					;
  3027					; SDATA - This is the data last set up by another single step
  3028					;	  command or by a SET CSR (set up start data) command.
  3029					;
  3030					; Both of these routines store single step data in a ring buffer which
  3031					; can be examined with a SPRINT command.  This is useful in debugging
  3032					; a microcode routine and instead of single stepping and tracing, you
  3033					; single step 500 times or until an error occurs, then examine last x
  3034					; locations to see what happened.
  3035					;#********************************************************************
  3036
  3037	034034	210 01 0 00 123646 	DTRACE:	MOVN	1,[FMSGCD (STRACE RepeatCount <CR> or STRACE <CR>)]
  3038	034035	476 00 0 00 134153'		SETOM	DTRFLG			; set trace flag
  3039	034036	254 00 0 00 034041 		JRST	DTRAC0			; continue
  3040
  3041	034037	402 00 0 00 134153'	DSSTEP:	SETZM	DTRFLG#			; clear trace flag
  3042	034040	210 01 0 00 123660 		MOVN	1,[FMSGCD (SSTEP RepeatCount <CR> or SSTEP <CR>)]
  3043
  3044	034041	402 00 0 00 033774*	DTRAC0:	SETZM	ARGUM			; set default argument
  3045	034042	350 00 0 00 034041*		AOS	ARGUM			;   to 1 single step
  3046	034043	260 17 0 00 033612*		GO	.DARG			; get argument
  3047	034044	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3048	034045	255 00 0 00 000000 		 JFCL				; no argument given
  3049	034046	260 17 0 00 033773*		GO	ISTOP			; stop the port
  3050	034047	200 02 0 00 034042*		MOVE	2,ARGUM			; get argument
  3051	034050	400 04 0 00 000000 		SETZ	4,			; clear count of single steps
  3052	034051	332 00 0 00 134153'		SKIPE	DTRFLG			; trace flag set?
  3053	034052	037 00 0 00 123661 		TMSGCD	< RAR   LAR   CSR (final)  SS#>
  3054
  3055					; Single step
  3056
  3057	034053	350 00 0 00 000004 	DSST0:	AOS	4			; increment count
  3058	034054	200 01 0 00 033671 		MOVE	1,PRSFLG		; get preserve EBUF flag
  3059	034055	200 00 0 00 034030*		MOVE	SDATA			; get initial CSR data
  3060	034056	202 00 0 00 134241'		MOVEM	SLDATA#			; save initial CSR data
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 72
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0235

  3061	034057	260 17 0 00 000000*		GO	IPASST			; single step once
  3062						 JRST	[FMSGCD	<? Error accessing CSR register>
  3063							 GO	FIOFF
  3064	034060	254 00 0 00 123556 			 RTN]
  3065						 JRST	[FMSGCD	<? Port not stopped>
  3066							 GO	FIOFF
  3067	034061	254 00 0 00 123566 			 RTN]
  3068						 JRST	[GO	SAVHST
  3069							 TMSGC	<[Error bits set in CSR]> 
  3070							 SKIPE	DTRFLG
  3071							 JRST	DSSTX
  3072							 TMSGC	<[>
  3073							 MOVE	4
  3074							 PNTOCS
  3075							 TMSGD	< ssteps done]>
  3076	034062	254 00 0 00 123703 			 JRST	DSSTX]
  3077	034063	260 17 0 00 035357 		GO	SAVHST			; save data for sstep history
  3078
  3079					; If tracing is being done
  3080
  3081	034064	200 01 0 00 034137 		MOVE	1,SSLOC			; get history location
  3082	034065	332 00 0 00 134153'		SKIPE	DTRFLG			; tracing being done?
  3083	034066	260 17 0 00 035340 		GO	PNTHST			; yes - print it
  3084
  3085					; Altmode and exit checking
  3086
  3087	034067	037 07 0 00 000003 	DSST1:	TTALTM				; altmode key struck?
  3088	034070	334 00 0 00 000000 		SKIPA				; no - proceed
  3089						JRST	[PCRL			; yes - print some final
  3090							 SKIPE	DTRFLG		;    data and exit
  3091							 RTN
  3092							 TMSG	<[>
  3093							 MOVE	4
  3094							 PNTOCS
  3095							 TMSGD	< ssteps done]>
  3096	034071	254 00 0 00 123715 			 JRST	DSSTX]
  3097	034072	367 02 0 00 034053 		SOJG	2,DSST0			; loop till done
  3098
  3099					; Exit
  3100
  3101	034073	037 00 0 00 123725 	DSSTX:	TMSGC	<LAR Last/>		; print LAR data
  3102	034074	200 00 0 00 033776*		MOVE	SLAST			; get last address
  3103	034075	037 04 0 00 000000 		PNT4				; print it
  3104	034076	037 00 0 00 123730 		TMSG	<  Next/>
  3105	034077	200 00 0 00 034024*		MOVE	SNEXT			; get next address
  3106	034100	037 04 0 00 000000 		PNT4				; print it
  3107	034101	037 00 0 00 123732 		TMSG	<  CSR/>		; print CSR data
  3108	034102	200 00 0 00 034055*		MOVE	SDATA			; get it
  3109	034103	037 13 0 00 000000 		PNTHW				; print it
  3110	034104	037 00 0 00 030242 		PCRL				; end of line
  3111	034105	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 73
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0236

  3112
  3113					;#********************************************************************
  3114					;* DSSPNT - Print single step history
  3115					;#********************************************************************
  3116
  3117	034106	201 00 0 00 000024 	DSSPNT:	MOVEI	^D20			; set default number of ssteps
  3118	034107	202 00 0 00 034047*		MOVEM	ARGUM			;   to print to 20
  3119	034110	210 01 0 00 123744 		MOVN	1,[FMSGCD (SPRINT EntryCount or SPRINT <CR>)]
  3120	034111	260 17 0 00 034043*		GO	.DARG			; get argument
  3121	034112	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3122	034113	255 00 0 00 000000 		 JFCL				; no argument given
  3123	034114	200 03 0 00 034107*		MOVE	3,ARGUM			; get argument
  3124	034115	200 01 0 00 034137 		MOVE	1,SSLOC			; get current location
  3125	034116	037 00 0 00 123661 		TMSGCD	< RAR   LAR   CSR (final)  SS#>
  3126	034117	260 17 0 00 035340 	DSSPN0:	GO	PNTHST			; print an item
  3127	034120	037 07 0 00 000003 		TTALTM				; altmode typed?
  3128	034121	334 00 0 00 000000 		SKIPA				; no - continue
  3129	034122	263 17 0 00 000000 		RTN				; yes - exit
  3130	034123	375 00 0 00 000001 		SOSGE	1			; decrement pointer - at start of list?
  3131	034124	201 01 0 00 000177 		MOVEI	1,177			; yes - point to end now
  3132	034125	333 00 0 01 034140 		SKIPLE	SSNUM(1)		; valid entry?
  3133	034126	367 03 0 00 034117 		SOJG	3,DSSPN0		; yes - loop till done
  3134	034127	263 17 0 00 000000 		RTN				; no - return
  3135
  3136
  3137					;#********************************************************************
  3138					;* DSSCLR - Clear single step history data
  3139					;#********************************************************************
  3140
  3141	034130	200 01 0 00 123751 	DSSCLR:	MOVE	1,[FMSGCD (SCLEAR <CR>)]
  3142	034131	260 17 0 00 034015*		GO	CHKARG			; check for argument
  3143	034132	263 17 0 00 000000 		RTN				; error - exit
  3144	034133	402 00 0 00 034137 		SETZM	SSLOC			; clear first word
  3145	034134	200 00 0 00 123752 		MOVE	[SSLOC,,SSLOC+1]	; build BLT pointer
  3146	034135	251 00 0 00 035337 		BLT	SSCSRN+177		; clear it
  3147	034136	263 17 0 00 000000 		RTN				; return
  3148
  3149					; Ring buffer and miscellaneous data
  3150
  3151	034137	000000	000000		SSLOC:	0				; pointer to single step entry
  3152	034140				SSNUM:	BLOCK	200			; latest single step number
  3153	034340				SSADRL:	BLOCK	200			; initial address
  3154	034540				SSADRN:	BLOCK	200			; final address
  3155	034740				SSCSRL:	BLOCK	200			; initial CSR
  3156	035140				SSCSRN:	BLOCK	200			; final CSR
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 74
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0237

  3157
  3158					;#********************************************************************
  3159					;* PNTHST - Print a single step history entry
  3160					;
  3161					; Argument:	AC1 - location to print (offset into tables)
  3162					;#********************************************************************
  3163
  3164	035340	261 17 0 00 000000 	PNTHST:	PUT	0			; save AC0
  3165	035341	200 00 0 01 034340 		MOVE	SSADRL(1)		; print LAR (last) contents
  3166	035342	037 04 0 00 000000 		PNT4
  3167	035343	037 00 0 00 117042 		TMSG	< >
  3168	035344	200 00 0 01 034540 		MOVE	SSADRN(1)		; print LAR (next) contents
  3169	035345	037 04 0 00 000000 		PNT4
  3170	035346	037 00 0 00 117042 		TMSG	< >
  3171	035347	200 00 0 01 035140 		MOVE	SSCSRN(1)		; get CSR (final) data
  3172	035350	037 13 0 00 000000 		PNTHW				; print it
  3173	035351	037 00 0 00 117042 		TMSG	< >
  3174	035352	200 00 0 01 034140 		MOVE	SSNUM(1)		; get sstep number
  3175	035353	037 16 0 00 000003 		PNTOCS				; print it
  3176	035354	037 00 0 00 030242 		PCRL
  3177	035355	262 17 0 00 000000 		GET	0			; restore AC0
  3178	035356	263 17 0 00 000000 		RTN				; return
  3179
  3180
  3181					;#********************************************************************
  3182					;* SAVHST - Save single step history data
  3183					;#********************************************************************
  3184
  3185	035357	261 17 0 00 000000 	SAVHST:	RPUT	(0,1,2)			; save AC's
  3186
  3187	035362	200 02 0 00 034137 		MOVE	2,SSLOC			; get last offset
  3188	035363	200 02 0 02 034140 		MOVE	2,SSNUM(2)		; get last number
  3189	035364	350 01 0 00 034137 		AOS	1,SSLOC			; get/increment offset
  3190	035365	301 01 0 00 000200 		CAIL	1,200			; overflow ring buffer yet?
  3191	035366	403 01 0 00 034137 		SETZB	1,SSLOC			; yes - reinitialize pointer
  3192	035367	350 00 0 00 000002 		AOS	2			; increment ss number
  3193	035370	202 02 0 01 034140 		MOVEM	2,SSNUM(1)		; save it
  3194	035371	200 00 0 00 034074*		MOVE	SLAST			; get initial address
  3195	035372	202 00 0 01 034340 		MOVEM	SSADRL(1)		; save it
  3196	035373	200 00 0 00 034077*		MOVE	SNEXT			; get final address
  3197	035374	202 00 0 01 034540 		MOVEM	SSADRN(1)		; save it
  3198	035375	200 00 0 00 134241'		MOVE	SLDATA			; get initial CSR data
  3199	035376	202 00 0 01 034740 		MOVEM	SSCSRL(1)		; save it
  3200	035377	200 00 0 00 034102*		MOVE	SDATA			; get final CSR data
  3201	035400	202 00 0 01 035140 		MOVEM	SSCSRN(1)		; save it
  3202	035401	262 17 0 00 000002 		RGET	(2,1,0)			; restore AC's
  3203
  3204	035404	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 75
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0238

  3205
  3206					;#********************************************************************
  3207					;* DCONT - Continue the port
  3208					;
  3209					; Arguments set up for IPASRT:
  3210					;
  3211					; SNEXT - Points to next address, from IPASTP or IPASST
  3212					; SDATA - Defaults to current contents of SDATA last set up by IPASTP.
  3213					;#********************************************************************
  3214
  3215	035405	200 01 0 00 123756 	DCONT:	MOVE	1,[FMSGCD (CONT <CR>)]
  3216	035406	260 17 0 00 034131*		GO	CHKARG			; check for argument
  3217	035407	263 17 0 00 000000 		RTN				; error - exit
  3218	035410	260 17 0 00 034001*		GO	IPASRT			; start it up
  3219						 JRST	[FMSGCD	<? Error accessing CSR register>
  3220							 GO	FIOFF
  3221	035411	254 00 0 00 123556 			 RTN]
  3222						 JRST	[FMSGCD	<? Port not stopped>
  3223							 GO	FIOFF
  3224	035412	254 00 0 00 123566 			 RTN]
  3225	035413	334 00 0 00 000000 		 SKIPA				; error - Error bits set in CSR
  3226	035414	263 17 0 00 000000 		RTN				; exit
  3227	035415	037 01 0 00 123757 		FMSGCD	<? CONT failed - Error bits set in CSR>
  3228	035416	200 01 0 00 035377*		MOVE	1,SDATA			; get CSR data
  3229	035417	260 17 0 00 042605 		GO	CSRPNT			; print CSR register
  3230	035420	037 01 0 00 030242 		PCRLF				; end of line
  3231	035421	263 17 0 00 000000 		RTN				; continue
  3232
  3233					;#********************************************************************
  3234					;* DEEBUF - Examine EBUF register
  3235					;#********************************************************************
  3236
  3237	035422	200 01 0 00 123773 	DEEBUF:	MOVE	1,[FMSGCD (EEBUF <CR>)]
  3238	035423	260 17 0 00 035406*		GO	CHKARG			; check for argument
  3239	035424	263 17 0 00 000000 		RTN				; error - exit
  3240	035425	260 17 0 00 034046*	DEBEBU:	GO	ISTOP			; stop the port
  3241	035426	260 17 0 00 000000*		GO	SETEBU			; ensure 'Test EBUF' bit is set
  3242						 JRST	[FMSGCD	<? Error accessing CSR register>
  3243							 GO	FIOFF
  3244	035427	254 00 0 00 123556 			 RTN]
  3245
  3246					; Now read the data
  3247
  3248	035430	260 17 0 00 000000*		GO	RDEBUF			; read EBUF
  3249	035431	037 00 0 00 123774 		TMSGC	<EBUF/ >		; print out the data
  3250	035432	200 00 0 00 000001 		MOVE	1
  3251	035433	037 13 0 00 000000 		PNTHW
  3252	035434	037 00 0 00 030242 		PCRL
  3253	035435	263 17 0 00 000000 		RTN				; continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 76
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0239

  3254
  3255					;#********************************************************************
  3256					;* DDEBUF - Deposit EBUF register
  3257					;* DZEBUF - Zero EBUF register
  3258					;#********************************************************************
  3259
  3260	035436	200 01 0 00 124001 	DZEBUF:	MOVE	1,[FMSGCD (ZEBUF <CR>)]
  3261	035437	260 17 0 00 035423*		GO	CHKARG			; check for argument
  3262	035440	263 17 0 00 000000 		RTN				; error - exit
  3263	035441	402 00 0 00 034114*		SETZM	ARGUM			; clear data
  3264	035442	254 00 0 00 035447 		JRST	DDEBU1			; continue
  3265
  3266	035443	210 01 0 00 124010 	DDEBUF:	MOVN	1,[FMSGCD (DEBUF xxxxxxxxxxxx <CR>)]
  3267	035444	260 17 0 00 033766*		GO	.OARG			; get argument
  3268	035445	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3269						 JRST	[FMSGCD	<? Missing argument>
  3270							 GO	FIOFF
  3271	035446	254 00 0 00 117722 			 RTN]
  3272	035447	260 17 0 00 035425*	DDEBU1:	GO	ISTOP			; stop the port
  3273	035450	260 17 0 00 035426*		GO	SETEBU			; ensure 'Test EBUF' bit is set
  3274						 JRST	[FMSGCD	<? Error accessing CSR register>
  3275							 GO	FIOFF
  3276	035451	254 00 0 00 123556 			 RTN]
  3277	035452	200 01 0 00 035441*		MOVE	1,ARGUM			; get argument
  3278	035453	260 17 0 00 000000*		GO	LDEBUF			; write it
  3279	035454	263 17 0 00 000000 		RTN				; continue
  3280
  3281
  3282					;#********************************************************************
  3283					;* DELAR - Examine LAR register
  3284					;#********************************************************************
  3285
  3286	035455	200 01 0 00 124014 	DELAR:	MOVE	1,[FMSGCD (ELAR <CR>)]
  3287	035456	260 17 0 00 035437*		GO	CHKARG			; check for argument
  3288	035457	263 17 0 00 000000 		RTN				; error - exit
  3289	035460	260 17 0 00 035447*	DEBLAR:	GO	ISTOP			; stop the port
  3290	035461	201 01 0 00 040000 		MOVEI	1,SELLAR		; get 'DIAG Sel LAR' bit
  3291	035462	260 17 0 00 033736*		GO	LDCSR			; write to CSR register
  3292	035463	260 17 0 00 000000*		GO	RDLAR			; read LAR
  3293	035464	037 00 0 00 124015 		TMSGC	<LAR: >			; print out the data
  3294	035465	200 00 0 00 000001 		MOVE	1
  3295	035466	037 16 0 00 000003 		PNTOCS
  3296	035467	037 00 0 00 124017 		TMSG	< (Adr: >
  3297	035470	242 01 0 00 777777 		LSH	1,-1			; don't print out RAR bit
  3298	035471	200 00 0 00 000001 		MOVE	1
  3299	035472	037 16 0 00 000003 		PNTOCS
  3300	035473	037 00 0 00 122545 		TMSGD	<)>
  3301	035474	263 17 0 00 000000 		RTN				; continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 77
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0240

  3302
  3303					;#********************************************************************
  3304					;* DDRAR - Deposit RAR register
  3305					;#********************************************************************
  3306
  3307	035475	210 01 0 00 124025 	DDRAR:	MOVN	1,[FMSGCD (DRAR addr <CR>)]
  3308	035476	260 17 0 00 035444*		GO	.OARG			; get test number
  3309	035477	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3310						 JRST	[FMSGCD	<? Missing argument>
  3311							 GO	FIOFF
  3312	035500	254 00 0 00 117722 			 RTN]
  3313	035501	260 17 0 00 035460*		GO	ISTOP			; stop the port
  3314	035502	400 01 0 00 000000 		SETZ	1,			; ensure we can write the RAR
  3315	035503	260 17 0 00 035462*		GO	LDCSR			;   by clearing CSR register
  3316	035504	200 01 0 00 035452*		MOVE	1,ARGUM			; get argument
  3317	035505	260 17 0 00 000000*		GO	LDRAR			; write it
  3318	035506	263 17 0 00 000000 		RTN				; continue
  3319
  3320
  3321					;#********************************************************************
  3322					;* DZRAR - Zero RAR register
  3323					;#********************************************************************
  3324
  3325	035507	200 01 0 00 124031 	DZRAR:	MOVE	1,[FMSGCD (ZRAR <CR>)]
  3326	035510	260 17 0 00 035456*		GO	CHKARG			; check for argument
  3327	035511	263 17 0 00 000000 		RTN				; error - exit
  3328	035512	260 17 0 00 035501*		GO	ISTOP			; stop the port
  3329	035513	400 01 0 00 000000 		SETZ	1,			; clear data
  3330	035514	260 17 0 00 035503*		GO	LDCSR			; clear CSR first
  3331	035515	260 17 0 00 035505*		GO	LDRAR			; write it
  3332	035516	263 17 0 00 000000 		RTN				; continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 78
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0241

  3333
  3334					;#*********************************************************************
  3335					;* DECRAM - Examine CRAM locations specified by "PARG1" and "PARG2".
  3336					;#*********************************************************************
  3337
  3338	035517	201 00 0 00 000000 	DECRAM:	MOVEI	0			; set the 'EDZL' flag
  3339	035520	202 00 0 00 134152'		MOVEM	DFLAG#			;   to 0 (Examine)
  3340	035521	254 00 0 00 035541 		JRST	DCOMGO			; process arguments
  3341
  3342					;#*********************************************************************
  3343					;* DDCRAM - Change CRAM locations.
  3344					;#*********************************************************************
  3345
  3346	035522	201 00 0 00 000001 	DDCRAM:	MOVEI	1			; set the 'EDZL' flag
  3347	035523	202 00 0 00 134152'		MOVEM	DFLAG			;   to 1 (Deposit)
  3348	035524	254 00 0 00 035541 		JRST	DCOMGO			; process arguments
  3349
  3350					;#*********************************************************************
  3351					;* DBCRAM - Change CRAM locations by field
  3352					;#*********************************************************************
  3353
  3354	035525	201 00 0 00 000002 	DBCRAM:	MOVEI	2			; set the 'EDZL' flag
  3355	035526	202 00 0 00 134152'		MOVEM	DFLAG			;   to 1 (Deposit)
  3356	035527	254 00 0 00 035541 		JRST	DCOMGO			; process arguments
  3357
  3358					;#*********************************************************************
  3359					;* DACRAM - Alter CRAM locations.
  3360					;#*********************************************************************
  3361
  3362	035530	201 00 0 00 000003 	DACRAM:	MOVEI	3			; set the 'EDZL' flag
  3363	035531	202 00 0 00 134152'		MOVEM	DFLAG			;   to 1 (Deposit)
  3364	035532	254 00 0 00 035541 		JRST	DCOMGO			; process arguments
  3365
  3366					;#*********************************************************************
  3367					;* DZCRAM -- Zero CRAM addresses specified.
  3368					;#*********************************************************************
  3369
  3370	035533	201 00 0 00 000004 	DZCRAM:	MOVEI	4			; set the 'EDZL' flag
  3371	035534	202 00 0 00 134152'		MOVEM	DFLAG			;   to 2 (Zero)
  3372	035535	254 00 0 00 035541 		JRST	DCOMGO			; process arguments
  3373
  3374					;#*********************************************************************
  3375					;* DLCRAM -- List CRAM addresses specified.
  3376					;#*********************************************************************
  3377
  3378	035536	201 00 0 00 000005 	DLCRAM:	MOVEI	5			; set the 'EDZL' flag
  3379	035537	202 00 0 00 134152'		MOVEM	DFLAG			;   to 3 (List)
  3380	035540	254 00 0 00 035541 		JRST	DCOMGO			; process arguments
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 79
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0242

  3381
  3382					; Start to process the arguments typed - both should be CRAM
  3383					; addresses in octal.
  3384
  3385	035541	200 00 0 00 035607 	DCOMGO:	MOVE	RTO			; set up default range of CRAM locs
  3386	035542	202 00 0 00 035603 		MOVEM	CRAMTO			;   to be whatever typed before or
  3387	035543	200 00 0 00 035610 		MOVE	RFROM			;   if nothing typed, then 0-0
  3388	035544	202 00 0 00 035602 		MOVEM	CRAMFR
  3389
  3390					; Get first address
  3391
  3392	035545	200 01 0 00 124037 		MOVE	1,[FMSGCD <xCRAM addr,addr (CR)>]
  3393	035546	260 17 0 00 035476*		GO	.OARG			; get first address
  3394	035547	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3395	035550	254 00 0 00 035562 		 JRST	DCOM0			; no arguments given - continue
  3396	035551	200 00 0 00 035504*		MOVE	ARGUM			; get argument
  3397	035552	202 00 0 00 035602 		MOVEM	CRAMFR			; save in 'from' location
  3398	035553	202 00 0 00 035603 		MOVEM	CRAMTO			; save in 'to' location
  3399
  3400					; Get 2nd address
  3401
  3402	035554	210 01 0 00 124037 		MOVN	1,[FMSGCD <xCRAM addr,addr (CR)>]
  3403	035555	260 17 0 00 035546*		GO	.OARG			; get first address
  3404	035556	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3405	035557	254 00 0 00 035562 		 JRST	DCOM0			; no arguments given - continue
  3406	035560	200 00 0 00 035551*		MOVE	ARGUM			; get argument
  3407	035561	202 00 0 00 035603 		MOVEM	CRAMTO			; save in 'to' location
  3408
  3409					; Now range check the arguments
  3410
  3411	035562	331 01 0 00 035602 	DCOM0:	SKIPL	1,CRAMFR		; 1st argument in range?
  3412	035563	303 01 0 00 007777 		CAILE	1,7777		
  3413						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  3414							 SETOM	ALTF
  3415							 GO	FIOFF
  3416	035564	254 00 0 00 124040 			 RTN]
  3417	035565	331 01 0 00 035603 		SKIPL	1,CRAMTO		; 2nd argument in range?
  3418	035566	303 01 0 00 007777 		CAILE	1,7777		
  3419						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  3420							 GO	FIOFF
  3421	035567	254 00 0 00 122327 			 RTN]
  3422	035570	274 01 0 00 035602 		SUB	1,CRAMFR		; see if range ok
  3423						JUMPL	1,[FMSGCD <? Range nonsensical>
  3424							   GO	FIOFF
  3425	035571	321 01 0 00 122563 			   RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 80
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0243

  3426
  3427					;#*********************************************************************
  3428					; Process the command - examine, deposit, or zero
  3429					;#*********************************************************************
  3430
  3431					; Save default arguments
  3432
  3433	035572	200 00 0 00 035602 		MOVE	CRAMFR			; set up the new default range
  3434	035573	202 00 0 00 035610 		MOVEM	RFROM			;   selected, for later EXAM, 
  3435	035574	200 00 0 00 035603 		MOVE	CRAMTO			;   DEPOS, or ZEROs
  3436	035575	202 00 0 00 035607 		MOVEM	RTO
  3437
  3438					; Then ensure the port is stopped
  3439
  3440	035576	260 17 0 00 035512*		GO	ISTOP			; stop the port
  3441
  3442					; Now do it
  3443
  3444	035577	476 00 0 00 134150'	DCOM1:	SETOM	DC1ST#			; init 'first location' flag
  3445	035600	200 01 0 00 134152'		MOVE	1,DFLAG			; get type of command
  3446						JRST	@[DCOMEX		; dispatch to proper routine
  3447							  DCOMDE
  3448							  DCOMDB
  3449							  DCOMAL
  3450							  DCOMZE
  3451	035601	254 00 1 01 124044 			  DCOMLI](1)
  3452
  3453					; Default CRAM locations, CRAM data, and Misc
  3454
  3455	035602	000000	000000		CRAMFR:	0				; range is from CRAMFR to
  3456	035603	000000	000000		CRAMTO:	0				;   CRAMTO
  3457	035604	000000	000000		CADDR:	0				; current address
  3458
  3459	035605	000000	000000		CWORDL:	0				; left 28 bits
  3460	035606	000000	000000		CWORDR:	0				; right 28 bits
  3461
  3462	035607	000000	000000		RTO:	0				; start address (default)
  3463	035610	000000	000000		RFROM:	0				; end address (default)
  3464
  3465	035611	000000	000000		ANEXT:	0				; next address
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 81
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0244

  3466
  3467					;#*********************************************************************
  3468					; Deposit into CRAM locations.
  3469					;#*********************************************************************
  3470
  3471					DCOMDE:	MOVEI	[SETZM	ALTF		; set up altmode transfer address
  3472							 GO	FIOFF		;   to exit this command
  3473	035612	201 00 0 00 117054 			 RTN]
  3474	035613	202 00 0 00 030063 		MOVEM	ALTMGO
  3475	035614	335 00 0 00 134150'		SKIPGE	DC1ST			; first location?
  3476	035615	037 01 0 00 124052 		FMSGC	<Type xxxx,xxxx,xxxx,xxxx,xxxx>
  3477	035616	402 00 0 00 134150'		SETZM	DC1ST			; clear 'first location' flag
  3478	035617	037 01 0 00 030242 		PCRLF
  3479	035620	476 00 0 00 035605 		SETOM	CWORDL			; initialize left 30 bits
  3480	035621	476 00 0 00 035606 		SETOM	CWORDR			; initialize right 30 bits
  3481	035622	200 00 0 00 035602 		MOVE	CRAMFR			; get the address to modify
  3482	035623	202 00 0 00 035604 		MOVEM	CADDR			; save address for writing
  3483	035624	037 04 0 00 000001 		PNT4F				; print it
  3484	035625	037 01 0 00 124061 		FMSG	<::   >
  3485	035626	403 04 0 00 000005 		SETZB	4,5			; clear data input locations
  3486	035627	476 00 0 00 032305*		SETOM	ARGFLG			; ensure that an argument is expected
  3487	035630	200 01 0 00 124072 		MOVE	1,[FMSGCD <xxxx,xxxx,xxxx,xxxx,xxxx (CR)>]
  3488	035631	260 17 0 00 035555*		GO	.OARG			; get first address
  3489	035632	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3490						 JRST	[FMSGCD	<? Missing arguments>
  3491							 GO	FIOFF
  3492	035633	254 00 0 00 124100 			 RTN]
  3493	035634	200 00 0 00 035560*		MOVE	ARGUM			; get argument
  3494	035635	137 00 0 00 124103 		DPB	[POINT 12,4,11]		; save it
  3495	035636	200 01 0 00 124072 		MOVE	1,[FMSGCD <xxxx,xxxx,xxxx,xxxx,xxxx (CR)>]
  3496	035637	260 17 0 00 035631*		GO	.OARG			; get first address
  3497	035640	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3498						 JRST	[FMSGCD	<? Missing arguments>
  3499							 GO	FIOFF
  3500	035641	254 00 0 00 124100 			 RTN]
  3501	035642	200 00 0 00 035634*		MOVE	ARGUM			; get argument
  3502	035643	137 00 0 00 124104 		DPB	[POINT 12,4,23]		; save it
  3503	035644	200 01 0 00 124072 		MOVE	1,[FMSGCD <xxxx,xxxx,xxxx,xxxx,xxxx (CR)>]
  3504	035645	260 17 0 00 035637*		GO	.OARG			; get first address
  3505	035646	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3506						 JRST	[FMSGCD	<? Missing arguments>
  3507							 GO	FIOFF
  3508	035647	254 00 0 00 124100 			 RTN]
  3509	035650	200 00 0 00 035642*		MOVE	ARGUM			; get argument
  3510	035651	137 00 0 00 124105 		DPB	[POINT 12,4,35]		; save it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 82
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0245

  3511	035652	200 01 0 00 124072 		MOVE	1,[FMSGCD <xxxx,xxxx,xxxx,xxxx,xxxx (CR)>]
  3512	035653	260 17 0 00 035645*		GO	.OARG			; get first address
  3513	035654	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3514						 JRST	[FMSGCD	<? Missing arguments>
  3515							 GO	FIOFF
  3516	035655	254 00 0 00 124100 			 RTN]
  3517	035656	200 00 0 00 035650*		MOVE	ARGUM			; get argument
  3518	035657	137 00 0 00 124106 		DPB	[POINT 12,5,11]		; save it
  3519	035660	210 01 0 00 124072 		MOVN	1,[FMSGCD <xxxx,xxxx,xxxx,xxxx,xxxx (CR)>]
  3520	035661	260 17 0 00 035653*		GO	.OARG			; get first address
  3521	035662	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3522						 JRST	[FMSGCD	<? Missing argument>
  3523							 GO	FIOFF
  3524	035663	254 00 0 00 117722 			 RTN]
  3525	035664	200 00 0 00 035656*		MOVE	ARGUM			; get argument
  3526	035665	137 00 0 00 124107 		DPB	[POINT 12,5,23]		; save it
  3527	035666	135 00 0 00 124110 		LDB	[POINT 30,4,29]		; get left 30 bits
  3528	035667	202 00 0 00 035605 		MOVEM	CWORDL			; save them
  3529	035670	246 04 0 00 777772 		LSHC	4,-^D6			; position right 30 bits properly
  3530	035671	135 00 0 00 124111 		LDB	[POINT 30,5,29]		; get right 30 bits
  3531	035672	202 00 0 00 035606 		MOVEM	CWORDR			; save them
  3532	035673	260 17 0 00 036231 		GO	DWCRAM			; go write CRAM location
  3533	035674	402 00 0 00 044330 		SETZM	CNAME			; clear 'CRAM loaded' ucode flag
  3534	035675	350 01 0 00 035602 		AOS	1,CRAMFR		; update the specified address
  3535	035676	202 01 0 00 035611 		MOVEM	1,ANEXT			; save next address
  3536	035677	317 01 0 00 035603 		CAMG	1,CRAMTO		; reach end yet?
  3537	035700	254 00 0 00 035612 		JRST	DCOMDE			; no - loop till done
  3538	035701	263 17 0 00 000000 		RTN				; yes - exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 83
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0246

  3539
  3540					;#*********************************************************************
  3541					; Deposit into CRAM locations (by bit field)
  3542					;#*********************************************************************
  3543
  3544	035702	402 00 0 00 035605 	DCOMDB:	SETZM	CWORDL			; initialize left 28 bits
  3545	035703	402 00 0 00 035606 		SETZM	CWORDR			; initialize right 28 bits
  3546	035704	200 00 0 00 035602 		MOVE	CRAMFR			; get the address to modify
  3547	035705	202 00 0 00 035604 		MOVEM	CADDR			; save address for writing
  3548	035706	254 00 0 00 035712 		JRST	DCOMAG
  3549
  3550	035707	200 00 0 00 035602 	DCOMAL:	MOVE	CRAMFR			; get the address to modify
  3551	035710	202 00 0 00 035604 		MOVEM	CADDR			; save address for writing
  3552	035711	260 17 0 00 036263 		GO	DRCRAM			; read CRAM (init both words)
  3553
  3554					; Set up initial data
  3555
  3556	035712	335 00 0 00 134150'	DCOMAG:	SKIPGE	DC1ST			; first location?
  3557						PNTMSF	[ASCIZ /
  3558	035713	037 01 0 00 124112 	Type  value,value... or ^,CR,^Z,field name/]
  3559	035714	402 00 0 00 134150'		SETZM	DC1ST			; clear 'first location' flag
  3560	035715	037 01 0 00 030242 		PCRLF
  3561						MOVEI	[SETZM	ALTF		; set up altmode transfer address
  3562							 GO	FIOFF		;   to exit this command
  3563							 PCRLF
  3564	035716	201 00 0 00 124123 			 RTN]
  3565	035717	202 00 0 00 030063 		MOVEM	ALTMGO
  3566	035720	200 00 0 00 035602 		MOVE	CRAMFR			; get the address to modify
  3567	035721	037 04 0 00 000001 		PNT4F				; print it
  3568	035722	037 01 0 00 124127 		FMSGD	<::>
  3569	035723	260 17 0 00 032263*		GO	CLRBUF			; clear input buffer
  3570	035724	402 00 0 00 030231 		SETZM	$TTCHR			; clear last character typed
  3571
  3572					; Select an entry from the bit table
  3573
  3574	035725	201 06 0 00 000001 		MOVEI	6,1			; init bit pointer
  3575	035726	275 06 0 00 000002 	DCOMA0:	SUBI	6,2			; decrement entry pointer
  3576	035727	315 06 0 00 124130 		CAMGE	6,[-1]			; backed up too far?
  3577	035730	474 06 0 00 000000 		SETO	6,			; force to start at beginning
  3578	035731	350 00 0 00 000006 	DCOMA1:	AOS	6			; point to next entry
  3579	035732	303 06 0 00 000021 		CAILE	6,^D17			; done with microword?
  3580	035733	254 00 0 00 035775 		JRST	DCOMAX			; yes - exit (write location)
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 84
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0247

  3581	
  3582					; Have an entry - now get input/dispatch data
  3583
  3584	035734	200 00 0 00 030231 		MOVE	$TTCHR			; get last character typed
  3585	035735	302 00 0 00 000054 		CAIE	","			; was it a comma
  3586	035736	306 00 0 00 000040 		CAIN	" "			;   or a blank?
  3587	035737	254 00 0 00 035751 		JRST	DCOMA3			; yes - continue
  3588	035740	332 00 0 00 134161'	DCOMAA:	SKIPE	FINPUT			; file input?
  3589						JRST	[GO	FINCMD		; yes - input sixbit cmd
  3590							 JRST	.+1		; error or EOF
  3591	035741	254 00 0 00 124131 			 JRST	DCOM3A]		; continue
  3592	035742	200 00 0 00 134152'		MOVE	DFLAG			; get dispatch flag
  3593	035743	306 00 0 00 000002 		CAIN	2			; alter?
  3594	035744	254 00 0 00 035750 		JRST	DCOMA2			; no - continue
  3595	035745	260 17 1 06 036031 		GO	@DCOLDB(6)		; yes - get data byte
  3596	035746	037 17 0 00 000003 		PNTOCF
  3597	035747	037 01 0 00 000040 		PSPF
  3598
  3599	035750	256 00 0 06 036007 	DCOMA2:	XCT	DCOMSG(6)		; no - print field name
  3600	035751	037 10 0 00 000003 	DCOMA3:	TTSIXB				; get input
  3601						ALTCHK	[GET	XXW#		; adjust stack properly
  3602							 SKIPN	$TWCNT		; did a timeout occur?
  3603							 JRST	DCOMA3		; yes - keep looking for input
  3604							 MOVE	$TTCHR		; get character typed
  3605							 CAIN	"^"		; backup character?
  3606							 JRST	DCOMA0		; yes - backup
  3607							 CAIN	32		; control-Z?
  3608							 PCRLF			; yes - a final blank line
  3609							 CAIN	32		; control-Z?
  3610							 JRST	DCOMAX		; yes - exit - done
  3611							 CAIN	"?"		; question mark?
  3612							 JRST	[XCT	MWDQUE(6); yes - handle 
  3613								 PCRLF
  3614								 JRST	DCOMAA]
  3615							 FMSGCD	<? Argument error>
  3616							 GO	CLRBUF
  3617							 PCRLF
  3618							 GO	FIOFF
  3619	035752	007 00 0 00 124144 			 JRST	DCOMA2]		; no - error - reask question
  3620					DCOM3A:	JUMPE	[MOVE	$TTCHR		; anything typed?  if a space, keep
  3621							 CAIN	40		;   looking for an argument, if not
  3622							 JRST	DCOMA3		;   exit
  3623	035753	322 00 0 00 124165 			 JRST	DCOMA5]
  3624	035754	202 00 0 00 134234'		MOVEM	SAVFLD#			; save argument
  3625	035755	200 01 0 00 134234'		MOVE	1,SAVFLD		; get into AC1
  3626	035756	260 17 0 00 031067*		GO	CONVSX			; convert to octal
  3627	035757	334 00 0 00 000000 		SKIPA
  3628	035760	254 00 0 00 035770 		JRST	DCOMA4			; ok - insert into data
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 85
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0248

  3629
  3630					; Unrecognizable - check if a field was specified
  3631
  3632	035761	200 01 0 00 134234'		MOVE	1,SAVFLD		; get command into AC1
  3633	035762	201 02 0 00 036075 		MOVEI	2,FLDLIS		; get address of field list
  3634	035763	260 17 0 00 033424*		GO	.COMM			; handle command decoding
  3635						 JRST	[FMSGCD	<? Argument error>
  3636							 GO	CLRBUF
  3637							 PCRLF
  3638							 GO	FIOFF
  3639	035764	254 00 0 00 124160 			 JRST	DCOMA2]		; no - error - reask question
  3640	035765	370 00 0 00 000001 		SOS	1			; normalize to -1..12
  3641	035766	200 06 0 00 000001 		MOVE	6,1			; put into AC6
  3642	035767	254 00 0 00 035731 		JRST	DCOMA1			; go handle the field
  3643
  3644					; Insert field entry
  3645
  3646	035770	200 00 0 00 000001 	DCOMA4:	MOVE	1			; get number
  3647	035771	260 17 1 06 036053 		GO	@DCODPB(6)		; yes - insert it
  3648	035772	200 00 0 00 030231 	DCOMA5:	MOVE	$TTCHR			; get last character typed
  3649	035773	312 00 0 00 000015 		CAME	15			; CRLF?
  3650	035774	254 00 0 00 035731 		JRST	DCOMA1			; no - get next entry
  3651
  3652					; Finally, write the location
  3653
  3654	035775	260 17 0 00 036231 	DCOMAX:	GO	DWCRAM			; go write CRAM location
  3655	035776	402 00 0 00 044330 		SETZM	CNAME			; clear 'CRAM loaded' ucode flag
  3656	035777	350 01 0 00 035602 		AOS	1,CRAMFR		; update the specified address
  3657	036000	202 01 0 00 035611 		MOVEM	1,ANEXT			; save next address
  3658	036001	313 01 0 00 035603 		CAMLE	1,CRAMTO		; reach end yet?
  3659	036002	263 17 0 00 000000 		RTN				; yes - exit
  3660	036003	200 00 0 00 134152'		MOVE	DFLAG			; get dispatch flag
  3661	036004	302 00 0 00 000003 		CAIE	3			; alter?
  3662	036005	254 00 0 00 035702 		JRST	DCOMDB			; no - deposit by bit field
  3663	036006	254 00 0 00 035707 		JRST	DCOMAL			; yes - alter by bit field
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 86
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0249

  3664
  3665					; Input message table
  3666
  3667	036007	037 01 0 00 124171 	DCOMSG:	FMSG	<J - >
  3668	036010	037 01 0 00 124172 		FMSG	<PAR - >
  3669	036011	037 01 0 00 124174 		FMSG	<OENA - >
  3670	036012	037 01 0 00 124176 		FMSG	<MGC - >
  3671	036013	037 01 0 00 124200 		FMSG	<SORC - >
  3672	036014	037 01 0 00 124202 		FMSG	<FUNC - >
  3673	036015	037 01 0 00 124204 		FMSG	<DEST - >
  3674	036016	037 01 0 00 124206 		FMSG	<CENA - >
  3675	036017	037 01 0 00 124210 		FMSG	<RAM - >
  3676	036020	037 01 0 00 124212 		FMSG	<A - >
  3677	036021	037 01 0 00 124213 		FMSG	<B - >
  3678	036022	037 01 0 00 124214 		FMSG	<SK - >
  3679	036023	037 01 0 00 124216 		FMSG	<BUS - >
  3680	036024	037 01 0 00 124220 		FMSG	<CRY - >
  3681	036025	037 01 0 00 124222 		FMSG	<CTL - >
  3682	036026	037 01 0 00 124224 		FMSG	<TIME - >
  3683	036027	037 01 0 00 124226 		FMSG	<SPARE - >
  3684	036030	037 01 0 00 124230 		FMSG	<MARK - >
  3685
  3686					; Microword load byte pointer table
  3687
  3688					DCOLDB:	[LDB	[POINT 12,CWORDL,17]	; J - Bits 6-17
  3689	036031	000000	124233			 RTN]
  3690						[LDB	[POINT 1,CWORDL,18]	; PAR - Bit 18 
  3691	036032	000000	124236			 RTN]
  3692						[LDB	[POINT 1,CWORDL,19]	; OENA - Bit 19
  3693	036033	000000	124241			 RTN]
  3694						[LDB	[POINT 10,CWORDL,29]	; MGC - Bits 20-29
  3695	036034	000000	124244			 RTN]
  3696						[LDB	[POINT 3,CWORDL,32]	; SORC - Bits 30-32
  3697	036035	000000	124247			 RTN]
  3698						[LDB	[POINT 3,CWORDL,35]	; FUNC - Bits 33-35
  3699	036036	000000	124252			 RTN]
  3700						[LDB	[POINT 3,CWORDR,8]	; DEST - Bits 6-8
  3701	036037	000000	124255			 RTN]
  3702						[LDB	[POINT 1,CWORDR,9]	; CENA - Bit 9
  3703	036040	000000	124260			 RTN]
  3704						[LDB	[POINT 1,CWORDR,10]	; RAM - Bit 10
  3705	036041	000000	124263			 RTN]
  3706						[LDB	[POINT 4,CWORDR,14]	; A - Bits 11-14
  3707	036042	000000	124266			 RTN]
  3708						[LDB	[POINT 4,CWORDR,18]	; B - Bits 15-18
  3709	036043	000000	124271			 RTN]
  3710						[LDB	[POINT 5,CWORDR,23]	; SK - Bits 19-23
  3711	036044	000000	124274			 RTN]
  3712						[LDB	[POINT 3,CWORDR,26]	; BUS - Bits 24-26
  3713	036045	000000	124277			 RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 87
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0250

  3714						[LDB	[POINT 1,CWORDR,27]	; CRY - Bits 27
  3715	036046	000000	124302			 RTN]
  3716						[LDB	[POINT 4,CWORDR,31]	; OP - Bits 28-31
  3717	036047	000000	124305			 RTN]
  3718						[LDB	[POINT 1,CWORDR,32]	; TIME - Bit 32
  3719	036050	000000	124310			 RTN]
  3720						[LDB	[POINT 2,CWORDR,34]	; SPARE - Bits 33-34
  3721	036051	000000	124313			 RTN]
  3722						[LDB	[POINT 1,CWORDR,35]	; MARK - Bit 35
  3723	036052	000000	124316			 RTN]
  3724
  3725					; Microword deposit byte pointer table
  3726
  3727					DCODPB:	[DPB	[POINT 12,CWORDL,17]	; J - Bits 6-17
  3728	036053	000000	124320			 RTN]
  3729						[DPB	[POINT 1,CWORDL,18]	; PAR - Bit 18 
  3730	036054	000000	124322			 RTN]
  3731						[DPB	[POINT 1,CWORDL,19]	; OENA - Bit 19
  3732	036055	000000	124324			 RTN]
  3733						[DPB	[POINT 10,CWORDL,29]	; MGC - Bits 20-29
  3734	036056	000000	124326			 RTN]
  3735						[DPB	[POINT 3,CWORDL,32]	; SORC - Bits 30-32
  3736	036057	000000	124330			 RTN]
  3737						[DPB	[POINT 3,CWORDL,35]	; FUNC - Bits 33-35
  3738	036060	000000	124332			 RTN]
  3739						[DPB	[POINT 3,CWORDR,8]	; DEST - Bits 6-8
  3740	036061	000000	124334			 RTN]
  3741						[DPB	[POINT 1,CWORDR,9]	; CENA - Bit 9
  3742	036062	000000	124336			 RTN]
  3743						[DPB	[POINT 1,CWORDR,10]	; RAM - Bit 10
  3744	036063	000000	124340			 RTN]
  3745						[DPB	[POINT 4,CWORDR,14]	; A - Bits 11-14
  3746	036064	000000	124342			 RTN]
  3747						[DPB	[POINT 4,CWORDR,18]	; B - Bits 15-18
  3748	036065	000000	124344			 RTN]
  3749						[DPB	[POINT 5,CWORDR,23]	; SK - Bits 19-23
  3750	036066	000000	124346			 RTN]
  3751						[DPB	[POINT 3,CWORDR,26]	; BUS - Bits 24-26
  3752	036067	000000	124350			 RTN]
  3753						[DPB	[POINT 1,CWORDR,27]	; CRY - Bits 27
  3754	036070	000000	124352			 RTN]
  3755						[DPB	[POINT 4,CWORDR,31]	; OP - Bits 28-31
  3756	036071	000000	124354			 RTN]
  3757						[DPB	[POINT 1,CWORDR,32]	; TIME - Bit 32
  3758	036072	000000	124356			 RTN]
  3759						[DPB	[POINT 2,CWORDR,34]	; SPARE - Bits 33-34
  3760	036073	000000	124360			 RTN]
  3761						[DPB	[POINT 1,CWORDR,35]	; MARK - Bit 35
  3762	036074	000000	124362			 RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 88
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0251

  3763
  3764					; Field command table
  3765
  3766	036075	52 00 00 00 00 00 	FLDLIS:	SIXBIT	/J/
  3767	036076	60 41 62 00 00 00 		SIXBIT	/PAR/
  3768	036077	57 45 56 41 00 00 		SIXBIT	/OENA/
  3769	036100	55 47 43 00 00 00 		SIXBIT	/MGC/
  3770	036101	63 57 62 43 00 00 		SIXBIT	/SORC/
  3771	036102	46 65 56 43 00 00 		SIXBIT	/FUNC/
  3772	036103	44 45 63 64 00 00 		SIXBIT	/DEST/
  3773	036104	43 45 56 41 00 00 		SIXBIT	/CENA/
  3774	036105	62 41 55 00 00 00 		SIXBIT	/RAM/
  3775	036106	41 00 00 00 00 00 		SIXBIT	/A/
  3776	036107	42 00 00 00 00 00 		SIXBIT	/B/
  3777	036110	63 53 00 00 00 00 		SIXBIT	/SK/
  3778	036111	42 65 63 00 00 00 		SIXBIT	/BUS/
  3779	036112	43 62 71 00 00 00 		SIXBIT	/CRY/
  3780	036113	43 64 54 00 00 00 		SIXBIT	/CTL/
  3781	036114	64 51 55 45 00 00 		SIXBIT	/TIME/
  3782	036115	63 60 41 62 45 00 		SIXBIT	/SPARE/
  3783	036116	55 41 62 53 00 00 		SIXBIT	/MARK/
  3784	036117	000000	000000			0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 89
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0252

  3785
  3786					; Help text
  3787
  3788	036120	037 01 0 00 124364 	MWDQUE:	FMSGCD	<Jump field>
  3789	036121	037 01 0 00 124367 		FMSGCD	<Parity bit - Pgm calculates it unless SETPAR is off>
  3790	036122	037 01 0 00 124403 		FMSGCD	<Ouput enable>
  3791	036123	037 01 0 00 124407 		FMSGCD	<Magic # field>
  3792						FMSGD	<
  3793					Source field:
  3794					 0-AQ  2-0Q  4-0A  6-DQ
  3795	036124	037 01 0 00 124413 	 1-AB  3-0B  5-DA  7-D0>
  3796						FMSGD	<
  3797					ALU Function:
  3798					 0-Plus  2-Rmin  4-And   6-Xor
  3799	036125	037 01 0 00 124431 	 1-Smin  3-Or    5-Nand  7-Xnor>
  3800						FMSGD	<
  3801					Destination field:
  3802					 0-QF  2-BA  4-/2BQF  6-*2BQF
  3803	036126	037 01 0 00 124452 	 1-F   3-BF  5-/2BF   7-*2BF>
  3804	036127	037 01 0 00 124473 		FMSGCD	<CC Enable>
  3805	036130	037 01 0 00 124476 		FMSGCD	<RAM Mode>
  3806	036131	037 01 0 00 124501 		FMSGCD	<Port A 0-17>
  3807	036132	037 01 0 00 124505 		FMSGCD	<Port B 0-17>
  3808						FMSGD	<
  3809					Skip field - Select:
  3810					 00/20-CCCbusAvail  10/30-CCEbusRqst
  3811					 01/21-CCGrntCsr    11/31-CCOverflow
  3812					 02/22-CCFeq0	    12/32-CCMbSign
  3813					 03/23-CCCsrChng    13/33-CCMVParChk
  3814					 04/24-CCEbParerr   14/34-CCCbusParErr
  3815					 05/25-CCRcvAttn    15/35-CCPliParErr
  3816					 06/26-CCEndOfFrame 16/36-CCChanErr
  3817					 07/27-CCXmtrAttn   17/37-CCCbLstWd
  3818					
  3819					 20/30-LoadSadReg   23/33-LdLocalMem
  3820					 21/31-SelMbusFld   24/34-SelCnstFld
  3821	036133	037 01 0 00 124511 	 22/32-RdLocalMem>
  3822						FMSGD	<
  3823					Bus Ctl field - Select:
  3824					 0-Nul  2-Mbus  4-Cbus
  3825	036134	037 01 0 00 124636 	 1-Pli  3-Fmtr  5-Ebus>
  3826	036135	037 01 0 00 124656 		FMSGCD	<Carry input>
  3827						FMSGD	<
  3828					2910 Control field:
  3829					 00-JZ    04-PUSH  10-RFCT  14-LDCT
  3830					 01-CJS   05-JSRP  11-RPCT  15-LOOP
  3831					 02-JMAP  06-CJV   12-CRTN  16-CONT
  3832	036136	037 01 0 00 124662 	 03-CJP   07-JRP   13-CJPP  17-TWB>
  3833	036137	037 01 0 00 124725 		FMSGCD	<Time field>
  3834	036140	037 01 0 00 124730 		FMSGCD	<Spare bits>
  3835	036141	037 01 0 00 124733 		FMSGCD	<Mark bit>
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 90
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0253

  3836
  3837					;#*********************************************************************
  3838					; Zero CRAM addresses specified by "PARG1" and "PARG2"
  3839					;#*********************************************************************
  3840
  3841	036142	402 00 0 00 035605 	DCOMZE:	SETZM	CWORDL			; clear CRAM words left and
  3842	036143	402 00 0 00 035606 		SETZM	CWORDR			;   right
  3843	036144	200 00 0 00 035602 		MOVE	CRAMFR			; get the address to modify
  3844	036145	202 00 0 00 035604 		MOVEM	CADDR			; save address for writing
  3845	036146	260 17 0 00 036231 		GO	DWCRAM			; go write CRAM location
  3846	036147	402 00 0 00 044330 		SETZM	CNAME			; clear 'CRAM loaded' ucode flag
  3847	036150	037 07 0 00 000003 		TTALTM				; altmode key struck?
  3848	036151	334 00 0 00 000000 		SKIPA				; no - proceed
  3849	036152	263 17 0 00 000000 		RTN				; yes - exit
  3850	036153	350 01 0 00 035602 		AOS	1,CRAMFR		; update the specified address
  3851	036154	202 01 0 00 035611 		MOVEM	1,ANEXT			; save next address
  3852	036155	317 01 0 00 035603 		CAMG	1,CRAMTO		; reach end yet?
  3853	036156	254 00 0 00 036142 		JRST	DCOMZE			; no - loop till done
  3854	036157	263 17 0 00 000000 		RTN				; yes - exit
  3855
  3856
  3857					;#*********************************************************************
  3858					; Examine CRAM locations
  3859					;#*********************************************************************
  3860
  3861	036160	200 00 0 00 035602 	DCOMEX:	MOVE	CRAMFR			; get the address to modify
  3862	036161	202 00 0 00 035604 		MOVEM	CADDR			; save address
  3863	036162	037 00 0 00 030242 		PCRL
  3864	036163	037 04 0 00 000000 		PNT4				; print it
  3865	036164	037 00 0 00 124736 		TMSG	</ >
  3866	036165	260 17 0 00 036263 		GO	DRCRAM			; read CRAM location
  3867	036166	255 00 0 00 000000 		JFCL				; error return
  3868	036167	200 02 0 00 035605 		MOVE	2,CWORDL		; get left half
  3869	036170	200 03 0 00 035606 		MOVE	3,CWORDR		; get right half
  3870	036171	260 17 0 00 042527 		GO	PNTWD			; print it
  3871	036172	037 07 0 00 000003 		TTALTM				; altmode key struck?
  3872	036173	334 00 0 00 000000 		SKIPA				; no - proceed
  3873						JRST	[SETOM	ALTF		; yes - set altmode typed flag 
  3874							 SETZM	MULFLG		;   and clear 'examine next' flag
  3875	036174	254 00 0 00 124737 			 JRST	DCOMEZ]		;   and exit
  3876	036175	350 01 0 00 035602 		AOS	1,CRAMFR		; update the specified address
  3877	036176	202 01 0 00 035611 		MOVEM	1,ANEXT			; save next address
  3878	036177	317 01 0 00 035603 		CAMG	1,CRAMTO		; reach end yet?
  3879	036200	254 00 0 00 036160 		JRST	DCOMEX			; no - loop till done
  3880	036201	336 00 0 00 134174'	DCOMEZ:	SKIPN	MULFLG			; in 'examine next'?
  3881	036202	037 00 0 00 030242 		PCRL				; no - print a blank line
  3882	036203	263 17 0 00 000000 		RTN				; yes - exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 91
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0254

  3883
  3884					;#*********************************************************************
  3885					; List CRAM locations
  3886					;#*********************************************************************
  3887
  3888					; Print this CRAM entry
  3889
  3890	036204	332 00 0 00 134175'	DCOMLI:	SKIPE	MULINI			; in 'examine next'?
  3891	036205	037 00 0 00 124742 		TMSGC	<ADDR/ JUMP PAR OUT MGC SOR FUN DES CC RAM PA PB SK BUS CRY CTL  TM SP MK>
  3892	036206	200 00 0 00 035602 	DCOML0:	MOVE	CRAMFR			; get the address to list
  3893	036207	202 00 0 00 035604 		MOVEM	CADDR			; save address
  3894	036210	260 17 0 00 036263 		GO	DRCRAM			; read CRAM location
  3895	036211	255 00 0 00 000000 		JFCL				; error return
  3896	036212	037 00 0 00 030242 		PCRL				; start a new line
  3897	036213	001 04 0 00 035604 		PNTOCC	4,CADDR			; print cram address
  3898	036214	037 00 0 00 124736 		TMSG	</ >
  3899	036215	200 02 0 00 035605 		MOVE	2,CWORDL		; get left word
  3900	036216	200 03 0 00 035606 		MOVE	3,CWORDR		; get right word
  3901	036217	260 17 0 00 042433 		GO	PNTCRM			; go print it
  3902	036220	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  3903	036221	254 00 0 00 036226 		JRST	DCOMLX			; yes - return
  3904	036222	350 01 0 00 035602 		AOS	1,CRAMFR		; no - update the specified address
  3905	036223	202 01 0 00 035611 		MOVEM	1,ANEXT			; save next address
  3906	036224	317 01 0 00 035603 		CAMG	1,CRAMTO		; reach end yet?
  3907	036225	254 00 0 00 036206 		JRST	DCOML0			; no - loop till done
  3908	036226	336 00 0 00 134174'	DCOMLX:	SKIPN	MULFLG			; in 'examine next'?
  3909	036227	037 00 0 00 030242 		PCRL				; no - print a blank line
  3910	036230	263 17 0 00 000000 		RTN				; yes - exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 92
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0255

  3911
  3912					;#********************************************************************
  3913					; DWCRAM - Load CRAM word at 'CADDR' with data in 'CWORDL' and 'CWORDR'
  3914					;#********************************************************************
  3915
  3916	036231	261 17 0 00 000000 	DWCRAM:	RPUT	(0,1,2,3)		; save AC's
  3917
  3918	036235	200 01 0 00 035604 		MOVE	1,CADDR			; get actual CRAM load address
  3919	036236	242 01 0 00 000001 		LSH	1,1			; convert to address for RAR
  3920	036237	660 01 0 00 000001 		TRO	1,1			; set bit 12 (for left 30 bits)
  3921	036240	260 17 0 00 035515*		GO	LDRAR			; load RAR with it
  3922	036241	200 02 0 00 035605 		MOVE	2,CWORDL		; get left 30 bits
  3923	036242	200 03 0 00 035606 		MOVE	3,CWORDR		; get right 30 bits
  3924	036243	400 01 0 00 000000 		SETZ	1,			; ignore 'bad parity' bit
  3925	036244	332 00 0 00 033670 		SKIPE	PARFLG			; calculate parity?
  3926	036245	260 17 0 00 042551 		GO	CALPAR			; yes - do so
  3927	036246	200 01 0 00 000002 		MOVE	1,2			; get left 30 bits
  3928	036247	260 17 0 00 000000*		GO	LDCRAM			; load it
  3929
  3930	036250	200 01 0 00 035604 		MOVE	1,CADDR			; get actual CRAM load address
  3931	036251	242 01 0 00 000001 		LSH	1,1			; convert to address for RAR
  3932	036252	620 01 0 00 000001 		TRZ	1,1			; clear bit 12 (for right 30 bits)
  3933	036253	260 17 0 00 036240*		GO	LDRAR			; load address
  3934	036254	200 01 0 00 000003 		MOVE	1,3			; get right 30 bits
  3935	036255	260 17 0 00 036247*		GO	LDCRAM			; load it
  3936	036256	262 17 0 00 000003 		RGET	(3,2,1,0)		; restore AC's
  3937
  3938	036262	263 17 0 00 000000 		RTN
  3939
  3940					;#********************************************************************
  3941					; DRCRAM - Read CRAM word at 'CADDR' into 'CWORDL' and 'CWORDR'
  3942					;#********************************************************************
  3943
  3944	036263	261 17 0 00 000000 	DRCRAM:	RPUT	(0,1)			; save AC's
  3945
  3946	036265	200 01 0 00 035604 		MOVE	1,CADDR			; get actual CRAM address
  3947	036266	242 01 0 00 000001 		LSH	1,1			; convert to address for RAR
  3948	036267	660 01 0 00 000001 		TRO	1,1			; set bit 12 (for left 30 bits)
  3949	036270	260 17 0 00 036253*		GO	LDRAR			; load RAR with it
  3950	036271	260 17 0 00 000000*		GO	RDCRAM			; load it
  3951	036272	202 01 0 00 035605 		MOVEM	1,CWORDL		; save it
  3952
  3953	036273	200 01 0 00 035604 		MOVE	1,CADDR			; get actual CRAM load address
  3954	036274	242 01 0 00 000001 		LSH	1,1			; convert to address for RAR
  3955	036275	620 01 0 00 000001 		TRZ	1,1			; clear bit 12 (for right 30 bits)
  3956	036276	260 17 0 00 036270*		GO	LDRAR			; load address
  3957	036277	260 17 0 00 036271*		GO	RDCRAM			; load it
  3958	036300	202 01 0 00 035606 		MOVEM	1,CWORDR		; save it
  3959	036301	262 17 0 00 000001 		RGET	(1,0)			; restore AC's
  3960
  3961	036303	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 93
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0256

  3962
  3963					;#********************************************************************
  3964					;* DEALU - Examine 2901 registers
  3965					;
  3966					; Arguments:  Reg1,Reg2
  3967					;#********************************************************************
  3968
  3969	036304	200 00 0 00 036606 	DEALU:	MOVE	ALUFR			; set up default of register range
  3970	036305	202 00 0 00 134217'		MOVEM	RALUB#			;   to be whatever was typed before
  3971	036306	200 00 0 00 036607 		MOVE	ALUTO			;   or if nothing typed, then 0-20
  3972	036307	202 00 0 00 134220'		MOVEM	RALUE#
  3973
  3974					; Get arguments
  3975
  3976	036310	200 01 0 00 124770 		MOVE	1,[FMSGCD <E2901 reg1,reg2 (CR) (20=QReg)>]
  3977	036311	260 17 0 00 035661*		GO	.OARG			; get first argument
  3978	036312	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3979	036313	254 00 0 00 036325 		 JRST	DEALU0			; no arguments given - continue
  3980	036314	200 00 0 00 035664*		MOVE	ARGUM			; get argument
  3981	036315	202 00 0 00 134217'		MOVEM	RALUB			; save in 'from' location
  3982	036316	202 00 0 00 134220'		MOVEM	RALUE			; save in 'to' location
  3983
  3984	036317	210 01 0 00 124776 		MOVN	1,[FMSGCD <E2901 reg1,reg2 (CR)>]
  3985	036320	260 17 0 00 036311*		GO	.OARG			; get 2nd argument
  3986	036321	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  3987	036322	254 00 0 00 036325 		 JRST	DEALU0			; no arguments given - continue
  3988	036323	200 00 0 00 036314*		MOVE	ARGUM			; get argument
  3989	036324	202 00 0 00 134220'		MOVEM	RALUE			; save in 'to' location
  3990
  3991					; Now range check the arguments
  3992
  3993	036325	331 01 0 00 134217'	DEALU0:	SKIPL	1,RALUB			; 1st argument in range?
  3994	036326	303 01 0 00 000020 		CAILE	1,20		
  3995						JRST	[FMSGCD	<? Range of 2901 registers is 0-20 (20=QReg)>
  3996							 SETOM	ALTF
  3997							 GO	FIOFF
  3998	036327	254 00 0 00 125011 			 RTN]
  3999	036330	331 01 0 00 134220'		SKIPL	1,RALUE			; 2nd argument in range?
  4000	036331	303 01 0 00 000020 		CAILE	1,20		
  4001						JRST	[FMSGCD	<? Range of 2901 registers is 0-20 (20=QReg)>
  4002							 GO	FIOFF
  4003	036332	254 00 0 00 125015 			 RTN]
  4004	036333	274 01 0 00 134217'		SUB	1,RALUB			; see if range ok
  4005						JUMPL	1,[FMSGCD <? Range nonsensical>
  4006							   GO	FIOFF
  4007	036334	321 01 0 00 122563 			   RTN]
  4008	036335	200 00 0 00 134217'		MOVE	RALUB			; get 'from' argument
  4009	036336	202 00 0 00 036606 		MOVEM	ALUFR			; save it
  4010	036337	200 00 0 00 134220'		MOVE	RALUE			; get 'to' argument
  4011	036340	202 00 0 00 036607 		MOVEM	ALUTO			; save it
  4012	036341	201 00 0 00 000006 		MOVEI	6			; get E2901 flag
  4013	036342	202 00 0 00 134152'		MOVEM	DFLAG			; save it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 94
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0257

  4014
  4015					; Save CRAM location
  4016
  4017	036343	200 01 0 00 125020 	DEBALU:	MOVE	1,[-1,,7750]		; set up AOBJN word
  4018	036344	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  4019
  4020					; Now do each register
  4021
  4022	036345	037 00 0 00 125021 	DEALU1:	TMSGC	<R>			; start a new line
  4023	036346	200 02 0 00 134217'		MOVE	2,RALUB			; get register number
  4024	036347	200 00 0 00 000002 		MOVE	2			; get register number
  4025	036350	137 02 0 00 125022 		DPB	2,[POINT 4,DEALUM+1,14]	; save it in microword
  4026	036351	306 02 0 00 000020 		CAIN	2,20			; Q-Register?
  4027	036352	037 00 0 00 125023 		TMSG	<Q>			; yes - print Q
  4028	036353	302 02 0 00 000020 		CAIE	2,20			; Q-Register?
  4029	036354	037 16 0 00 000003 		PNTOCS				; no - print register number
  4030	036355	037 00 0 00 124736 		TMSG	</ >
  4031	036356	201 00 0 00 000004 		MOVEI	4			; get source field of 4 (0A)
  4032	036357	306 02 0 00 000020 		CAIN	2,20			; Q-Register?
  4033	036360	201 00 0 00 000002 		MOVEI	2			; yes - use source of 2 (0Q)
  4034	036361	137 00 0 00 125024 		DPB	[POINT 3,DEALUM+1,2]	; set up source field
  4035	036362	201 01 0 00 036565 		MOVEI	1,DEALUM		; set up microcode address
  4036	036363	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  4037	036364	255 00 0 00 000000 		JFCL				; ignore error
  4038	036365	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  4039	036366	242 01 0 00 000001 		LSH	1,1			; position correctly
  4040	036367	260 17 0 00 036276*		GO	LDRAR			; load the RAR
  4041	036370	201 01 0 00 220010 		MOVEI	1,SINCYC!MPRUN!TSTEBF	; single step once
  4042	036371	260 17 0 00 035514*		GO	LDCSR
  4043	036372	260 17 0 00 035430*		GO	RDEBUF			; read EBUF contents
  4044	036373	200 00 0 00 000001 		MOVE	1			; get register data
  4045	036374	037 13 0 00 000000 		PNTHW				; print it
  4046	036375	350 00 0 00 000002 		AOS	2			; point to next register
  4047	036376	202 02 0 00 035611 		MOVEM	2,ANEXT			; save next register
  4048	036377	037 07 0 00 000003 		TTALTM				; altmode key struck?
  4049	036400	334 00 0 00 000000 		SKIPA				; no - proceed
  4050						JRST	[SETOM	ALTF		; yes - set altmode typed flag 
  4051							 SETZM	MULFLG		;   and clear 'examine next' flag
  4052	036401	254 00 0 00 125025 			 JRST	DEALUX]		;   and exit
  4053	036402	350 01 0 00 134217'		AOS	1,RALUB			; point to next register
  4054	036403	317 01 0 00 134220'		CAMG	1,RALUE			; done yet?
  4055	036404	254 00 0 00 036345 		JRST	DEALU1			; no - loop till done
  4056
  4057					; Restore CRAM location and exit
  4058
  4059	036405	336 00 0 00 134174'	DEALUX:	SKIPN	MULFLG			; in 'examine next'?
  4060	036406	037 00 0 00 030242 		PCRL				; no - print blank line
  4061	036407	200 01 0 00 125020 		MOVE	1,[-1,,7750]		; set up AOBJN word
  4062	036410	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  4063	036411	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 95
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0258

  4064
  4065					;#********************************************************************
  4066					;* DDALU - Deposit register 
  4067					;
  4068					; Format:  DALU reg,data
  4069					;#********************************************************************
  4070
  4071	036412	200 01 0 00 125035 	DDALU:	MOVE	1,[FMSGCD <DALU reg,data (CR)>]
  4072	036413	260 17 0 00 034111*		GO	.DARG			; get register number
  4073	036414	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4074						 JRST	[FMSGCD	<? Missing argument>
  4075							 GO	FIOFF
  4076	036415	254 00 0 00 117722 			 RTN]
  4077	036416	331 01 0 00 036323*	DDALU0:	SKIPL	1,ARGUM			; argument in range?
  4078	036417	303 01 0 00 000020 		CAILE	1,20		
  4079						JRST	[FMSGCD	<? Range of 2901 registers is 0-20 (20=QReg)>
  4080							 GO	FIOFF
  4081	036420	254 00 0 00 125015 			 RTN]
  4082	036421	202 01 0 00 134217'		MOVEM	1,RALUB			; get 'from' argument
  4083	036422	202 01 0 00 036606 		MOVEM	1,ALUFR			; save it
  4084	036423	202 01 0 00 134220'		MOVEM	1,RALUE			; get 'to' argument
  4085	036424	202 01 0 00 036607 		MOVEM	1,ALUTO			; save it
  4086	036425	200 01 0 00 125035 		MOVE	1,[FMSGCD <DALU reg,data (CR)>]
  4087	036426	260 17 0 00 036320*		GO	.OARG			; get data
  4088	036427	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4089						 JRST	[FMSGCD	<? Missing argument>
  4090							 GO	FIOFF
  4091	036430	254 00 0 00 117722 			 RTN]
  4092	036431	200 00 0 00 036416*		MOVE	ARGUM			; get argument
  4093	036432	202 00 0 00 134165'		MOVEM	LARG2			; save it
  4094	036433	201 00 0 00 000007 		MOVEI	7			; get D2901 flag
  4095	036434	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  4096
  4097					; Save CRAM locations
  4098
  4099	036435	200 01 0 00 125036 		MOVE	1,[-5,,7750]		; set up AOBJN word
  4100	036436	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  4101
  4102					; Load microcode
  4103
  4104	036437	200 02 0 00 134217'		MOVE	2,RALUB			; get location to write
  4105	036440	137 02 0 00 125037 		DPB	2,[POINT 4,DDALUM+7,18]	; set up 2901 register
  4106	036441	201 00 0 00 000002 		MOVEI	2			; get destination field of 2 (BA)
  4107	036442	306 02 0 00 000020 		CAIN	2,20			; Q-Register?
  4108	036443	201 00 0 00 000000 		MOVEI	0			; yes - use destination of 0 (QF)
  4109	036444	137 00 0 00 125040 		DPB	[POINT 3,DDALUM+7,8]	; set up source field
  4110	036445	201 01 0 00 036570 		MOVEI	1,DDALUM		; set up microcode address
  4111	036446	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  4112	036447	255 00 0 00 000000 		JFCL				; ignore error
  4113	036450	350 00 0 00 000002 		AOS	2			; point to next register
  4114	036451	202 02 0 00 035611 		MOVEM	2,ANEXT			; save next register
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 96
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0259

  4115
  4116					; Now do the deposit
  4117
  4118	036452	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  4119	036453	242 01 0 00 000001 		LSH	1,1			; position correctly
  4120	036454	260 17 0 00 036367*		GO	LDRAR			; load the RAR
  4121	036455	201 01 0 00 000010 		MOVEI	1,MPRUN			; set initial data
  4122	036456	260 17 0 00 036371*		GO	LDCSR			; start the port
  4123	036457	200 01 0 00 134165'		MOVE	1,LARG2			; get data to write
  4124	036460	260 17 0 00 000000*		GO	.DATAO			; give to port
  4125	036461	400 01 0 00 000000 		SETZ	1,			; stop the port
  4126	036462	260 17 0 00 036456*		GO	LDCSR
  4127
  4128					; Check if additional arguments
  4129
  4130	036463	336 00 0 00 035627*		SKIPN	ARGFLG			; any more arguments
  4131	036464	254 00 0 00 036470 		JRST	DDALUX			; no - exit
  4132	036465	200 00 0 00 035611 		MOVE	ANEXT			; get register number
  4133	036466	202 00 0 00 036431*		MOVEM	ARGUM			; save it
  4134	036467	254 00 0 00 036416 		JRST	DDALU0			; loop till done
  4135
  4136					; Restore CRAM locations and exit
  4137
  4138	036470	200 01 0 00 125036 	DDALUX:	MOVE	1,[-5,,7750]		; set up AOBJN word
  4139	036471	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  4140	036472	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 97
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0260

  4141
  4142					;#********************************************************************
  4143					;* DZALU - Zero 2901 registers
  4144					;
  4145					; Format:  ZALU reg1,reg2
  4146					;#********************************************************************
  4147
  4148	036473	200 00 0 00 036606 	DZALU:	MOVE	ALUFR			; set up default of register range
  4149	036474	202 00 0 00 134217'		MOVEM	RALUB			;   to be whatever was typed before
  4150	036475	200 00 0 00 036607 		MOVE	ALUTO			;   or if nothing typed, then 0-0
  4151	036476	202 00 0 00 134220'		MOVEM	RALUE
  4152
  4153					; Get arguments
  4154
  4155	036477	200 01 0 00 125046 		MOVE	1,[FMSGCD <ZALU reg1,reg2 (CR)>]
  4156	036500	260 17 0 00 036413*		GO	.DARG			; get first argument
  4157	036501	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4158	036502	254 00 0 00 036514 		 JRST	DZALU0			; no arguments given - continue
  4159	036503	200 00 0 00 036466*		MOVE	ARGUM			; get argument
  4160	036504	202 00 0 00 134217'		MOVEM	RALUB			; save in 'from' location
  4161	036505	202 00 0 00 134220'		MOVEM	RALUE			; save in 'to' location
  4162
  4163	036506	210 01 0 00 125046 		MOVN	1,[FMSGCD <ZALU reg1,reg2 (CR)>]
  4164	036507	260 17 0 00 036500*		GO	.DARG			; get 2nd argument
  4165	036510	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4166	036511	254 00 0 00 036514 		 JRST	DZALU0			; no arguments given - continue
  4167	036512	200 00 0 00 036503*		MOVE	ARGUM			; get argument
  4168	036513	202 00 0 00 134220'		MOVEM	RALUE			; save in 'to' location
  4169
  4170					; Now range check the arguments
  4171
  4172	036514	331 01 0 00 134217'	DZALU0:	SKIPL	1,RALUB			; 1st argument in range?
  4173	036515	303 01 0 00 000020 		CAILE	1,20		
  4174						JRST	[FMSGCD	<? Range of 2901 registers is 0-20 (20=QReg)>
  4175							 GO	FIOFF
  4176	036516	254 00 0 00 125015 			 RTN]
  4177	036517	331 01 0 00 134220'		SKIPL	1,RALUE			; 2nd argument in range?
  4178	036520	303 01 0 00 000020 		CAILE	1,20		
  4179						JRST	[FMSGCD	<? Range of 2901 registers is 0-20 (20=QReg)>
  4180							 GO	FIOFF
  4181	036521	254 00 0 00 125015 			 RTN]
  4182	036522	274 01 0 00 134217'		SUB	1,RALUB			; see if range ok
  4183						JUMPL	1,[FMSGCD <? Range nonsensical>
  4184							   GO	FIOFF
  4185	036523	321 01 0 00 122563 			   RTN]
  4186	036524	200 00 0 00 134217'		MOVE	RALUB			; get 'from' argument
  4187	036525	202 00 0 00 036606 		MOVEM	ALUFR			; save it
  4188	036526	200 00 0 00 134220'		MOVE	RALUE			; get 'to' argument
  4189	036527	202 00 0 00 036607 		MOVEM	ALUTO			; save it
  4190	036530	201 00 0 00 000010 		MOVEI	8			; get Z2901 flag
  4191	036531	202 00 0 00 134152'		MOVEM	DFLAG			; save it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 98
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0261

  4192
  4193					; Save CRAM location
  4194
  4195	036532	200 01 0 00 125020 		MOVE	1,[-1,,7750]		; set up AOBJN word
  4196	036533	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM location
  4197
  4198					; Now do each location
  4199
  4200	036534	200 02 0 00 134217'	DZALU1:	MOVE	2,RALUB			; get location to write
  4201	036535	137 02 0 00 125047 		DPB	2,[POINT 4,DZALUM+1,18]	; set up register number
  4202	036536	201 00 0 00 000002 		MOVEI	2			; get destination field of 2 (BA)
  4203	036537	306 02 0 00 000020 		CAIN	2,20			; Q-Register?
  4204	036540	201 00 0 00 000000 		MOVEI	0			; yes - use destination of 0 (QF)
  4205	036541	137 00 0 00 125050 		DPB	[POINT 3,DZALUM+1,8]	; set up destination field
  4206	036542	201 01 0 00 036603 		MOVEI	1,DZALUM		; set up microcode address
  4207	036543	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  4208	036544	255 00 0 00 000000 		JFCL				; ignore error
  4209	036545	350 00 0 00 000002 		AOS	2			; point to next register
  4210	036546	202 02 0 00 035611 		MOVEM	2,ANEXT			; save next register
  4211	036547	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  4212	036550	242 01 0 00 000001 		LSH	1,1			; position correctly
  4213	036551	260 17 0 00 036454*		GO	LDRAR			; load the RAR
  4214	036552	201 01 0 00 020010 		MOVEI	1,MPRUN!SINCYC		; start it up
  4215	036553	260 17 0 00 036462*		GO	LDCSR
  4216	036554	037 07 0 00 000003 		TTALTM				; altmode key struck?
  4217	036555	334 00 0 00 000000 		SKIPA				; no - proceed
  4218	036556	254 00 0 00 036562 		JRST	DZALUX			; yes - exit
  4219	036557	350 01 0 00 134217'		AOS	1,RALUB			; point to next location
  4220	036560	317 01 0 00 134220'		CAMG	1,RALUE			; done yet?
  4221	036561	254 00 0 00 036534 		JRST	DZALU1			; no - loop till done
  4222
  4223					; Restore CRAM location and exit
  4224
  4225	036562	200 01 0 00 125020 	DZALUX:	MOVE	1,[-1,,7750]		; set up AOBJN word
  4226	036563	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  4227	036564	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 99
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0262

  4228
  4229					; Microcode to examine 2901's
  4230
  4231	036565	775077	502004		DEALUM:	MWORD	<ADDR=7750,JMAP,J=7750,S0A,OR,D=1,OENA,SELE,MGC=4>
  4232	036566	431000	005040
  4233	036567	777777	777777			-1
  4234
  4235					; Microcode to deposit 2901's
  4236
  4237	036570	775077	510000		DDALUM:	MWORD	<ADDR=7750,JMAP,J=7751,D=1>		; 7750
  4238	036571	001000	000040
  4239	036572	775177	530000			MWORD	<CJP,J=7753,D=1,CENA,CCER>		; 7751
  4240	036573	001400	100060
  4241	036574	775277	510000			MWORD	<JMAP,J=7751,D=1>			; 7752
  4242	036575	001000	000040
  4243	036576	775300	000010			MWORD	<CONT,SD0,OR,D=2,SELE,MGC=10>		; 7753
  4244	036577	732000	005340
  4245	036600	775477	540000			MWORD	<JMAP,J=7754,D=1>			; 7754
  4246	036601	001000	000040
  4247	036602	777777	777777			-1
  4248
  4249					; Microcode to zero 2901's
  4250
  4251	036603	775077	500000		DZALUM:	MWORD	<ADDR=7750,JMAP,J=7750,S0A,AND,D=2>
  4252	036604	442000	000040
  4253	036605	777777	777777			-1
  4254
  4255					; Arguments
  4256
  4257	036606	000000	000000		ALUFR:	0				; default range of 
  4258	036607	000000	000020		ALUTO:	20				;   registers
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 100
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0263

  4259
  4260					;#********************************************************************
  4261					;* DELOCS - Examine local storage 
  4262					;
  4263					; Format:  ELOCS adr1,adr2
  4264					;#********************************************************************
  4265
  4266	036610	200 00 0 00 037101 	DELOCS:	MOVE	LOCFR			; set up default of local storage range
  4267	036611	202 00 0 00 134223'		MOVEM	RLOCB#			;   to be whatever was typed before
  4268	036612	200 00 0 00 037102 		MOVE	LOCTO			;   or if nothing typed, then 0-0
  4269	036613	202 00 0 00 134224'		MOVEM	RLOCE#
  4270
  4271					; Get arguments
  4272
  4273	036614	200 01 0 00 125057 		MOVE	1,[FMSGCD <ELOCS addr1,addr2 (CR)>]
  4274	036615	260 17 0 00 036507*		GO	.DARG			; get first address
  4275	036616	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4276	036617	254 00 0 00 036631 		 JRST	DELOC0			; no arguments given - continue
  4277	036620	200 00 0 00 036512*		MOVE	ARGUM			; get argument
  4278	036621	202 00 0 00 134223'		MOVEM	RLOCB			; save in 'from' location
  4279	036622	202 00 0 00 134224'		MOVEM	RLOCE			; save in 'to' location
  4280
  4281	036623	210 01 0 00 125057 		MOVN	1,[FMSGCD <ELOCS addr1,addr2 (CR)>]
  4282	036624	260 17 0 00 036615*		GO	.DARG			; get 2nd address
  4283	036625	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4284	036626	254 00 0 00 036631 		 JRST	DELOC0			; no arguments given - continue
  4285	036627	200 00 0 00 036620*		MOVE	ARGUM			; get argument
  4286	036630	202 00 0 00 134224'		MOVEM	RLOCE			; save in 'to' location
  4287
  4288					; Now range check the arguments
  4289
  4290	036631	331 01 0 00 134223'	DELOC0:	SKIPL	1,RLOCB			; 1st argument in range?
  4291	036632	303 01 0 00 001777 		CAILE	1,1777
  4292						JRST	[FMSGCD	<? Range of local storage locations is 0-1777>
  4293							 SETOM	ALTF
  4294							 GO	FIOFF
  4295	036633	254 00 0 00 125072 			 RTN]
  4296	036634	331 01 0 00 134224'		SKIPL	1,RLOCE			; 2nd argument in range?
  4297	036635	303 01 0 00 001777 		CAILE	1,1777
  4298						JRST	[FMSGCD	<? Range of local storage locations is 0-1777>
  4299							 GO	FIOFF
  4300	036636	254 00 0 00 125076 			 RTN]
  4301	036637	274 01 0 00 134223'		SUB	1,RLOCB			; see if range ok
  4302						JUMPL	1,[FMSGCD <? Range nonsensical>
  4303							   GO	FIOFF
  4304	036640	321 01 0 00 122563 			   RTN]
  4305	036641	200 00 0 00 134223'		MOVE	RLOCB			; get 'from' argument
  4306	036642	202 00 0 00 037101 		MOVEM	LOCFR			; save it
  4307	036643	200 00 0 00 134224'		MOVE	RLOCE			; get 'to' argument
  4308	036644	202 00 0 00 037102 		MOVEM	LOCTO			; save it
  4309	036645	201 00 0 00 000011 		MOVEI	9			; get ELOCS flag
  4310	036646	202 00 0 00 134152'		MOVEM	DFLAG			; save it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 101
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0264

  4311
  4312					; Save CRAM locations
  4313
  4314	036647	200 01 0 00 125101 	DEBELO:	MOVE	1,[-2,,7750]		; set up AOBJN word
  4315	036650	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  4316	036651	200 07 0 00 134223'		MOVE	7,RLOCB			; get initial address
  4317
  4318					; Now do each location
  4319
  4320	036652	200 06 0 00 134223'	DELOC1:	MOVE	6,RLOCB			; get current address
  4321	036653	274 06 0 00 000007 		SUB	6,7			; calculate word # (0..n)
  4322	036654	602 06 0 00 000003 		TRNE	6,3			; multiple of 4?
  4323	036655	037 00 0 00 117042 		TMSG	< >			; no - print a few spaces
  4324	036656	606 06 0 00 000003 		TRNN	6,3			; multiple of 4?
  4325						GO	[TMSGC	<LS>		; yes - start a new line
  4326							 MOVE	RLOCB
  4327							 PNTOCS
  4328							 TMSG	</ >
  4329	036657	260 17 0 00 125103 			 RTN]
  4330	036660	200 00 0 00 134223'		MOVE	RLOCB			;  get local storage address
  4331	036661	137 00 0 00 125110 		DPB	[POINT 10,DELOCM,35]	; save it in microword
  4332	036662	201 01 0 00 037056 		MOVEI	1,DELOCM		; set up microcode address
  4333	036663	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  4334	036664	255 00 0 00 000000 		JFCL				; ignore error
  4335	036665	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  4336	036666	242 01 0 00 000001 		LSH	1,1			; position correctly
  4337	036667	260 17 0 00 036551*		GO	LDRAR			; load the RAR
  4338	036670	201 01 0 00 000010 		MOVEI	1,MPRUN			; start it up
  4339	036671	260 17 0 00 036553*		GO	LDCSR			; write to CSR register
  4340	036672	201 01 0 00 200000 		MOVEI	1,TSTEBF		; set up to read EBUF data
  4341	036673	260 17 0 00 036671*		GO	LDCSR			; write to CSR register
  4342	036674	260 17 0 00 036372*		GO	RDEBUF			; read EBUF contents
  4343	036675	200 00 0 00 000001 		MOVE	1			; get register data
  4344	036676	037 13 0 00 000000 		PNTHW				; print it
  4345	036677	037 07 0 00 000003 		TTALTM				; altmode key struck?
  4346	036700	334 00 0 00 000000 		SKIPA				; no - proceed
  4347						JRST	[SETOM	ALTF		; yes - set altmode typed flag 
  4348							 SETZM	MULFLG		;   and clear 'examine next' flag
  4349	036701	254 00 0 00 125111 			 JRST	DELOCX]		;   and exit
  4350	036702	350 01 0 00 134223'		AOS	1,RLOCB			; point to next location
  4351	036703	202 01 0 00 035611 		MOVEM	1,ANEXT			; save next location
  4352	036704	317 01 0 00 134224'		CAMG	1,RLOCE			; done yet?
  4353	036705	254 00 0 00 036652 		JRST	DELOC1			; no - loop till done
  4354
  4355					; Restore CRAM locations and exit
  4356
  4357	036706	336 00 0 00 134174'	DELOCX:	SKIPN	MULFLG			; in 'examine next'?
  4358	036707	037 00 0 00 030242 		PCRL				; no - print blank line
  4359	036710	200 01 0 00 125101 		MOVE	1,[-2,,7750]		; set up AOBJN word
  4360	036711	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  4361	036712	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 102
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0265

  4362
  4363					;#********************************************************************
  4364					;* DDLOCS - Deposit local storage 
  4365					;
  4366					; Format:  DLOCS adr,data
  4367					;#********************************************************************
  4368
  4369	036713	200 01 0 00 125121 	DDLOCS:	MOVE	1,[FMSGCD <DLOCS addr,data (CR)>]
  4370	036714	260 17 0 00 036624*		GO	.DARG			; get address
  4371	036715	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4372						 JRST	[FMSGCD	<? Missing argument>
  4373							 GO	FIOFF
  4374	036716	254 00 0 00 117722 			 RTN]
  4375	036717	200 00 0 00 036627*	DDLOC0:	MOVE	ARGUM			; get argument
  4376	036720	301 00 0 00 000000 		CAIL	0			; in range 0-1777?
  4377	036721	303 00 0 00 001777 		CAILE	1777
  4378						JRST	[FMSGCD	<? Range of Local Storage addresses is 0-1777>
  4379							 GO	FIOFF
  4380	036722	254 00 0 00 125134 			 RTN]
  4381	036723	202 00 0 00 037101 		MOVEM	LOCFR			; save 'from' argument
  4382	036724	202 00 0 00 037102 		MOVEM	LOCTO			; save 'to' argument
  4383	036725	200 01 0 00 125121 		MOVE	1,[FMSGCD <DLOCS addr,data (CR)>]
  4384	036726	260 17 0 00 036426*		GO	.OARG			; get data
  4385	036727	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4386						 JRST	[FMSGCD	<? Missing argument>
  4387							 GO	FIOFF
  4388	036730	254 00 0 00 117722 			 RTN]
  4389	036731	200 00 0 00 036717*		MOVE	ARGUM			; get argument
  4390	036732	202 00 0 00 134165'		MOVEM	LARG2#			; save it
  4391	036733	201 00 0 00 000012 		MOVEI	^D10			; get DLOCS flag
  4392	036734	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  4393
  4394					; Save CRAM locations
  4395
  4396	036735	200 01 0 00 125036 		MOVE	1,[-5,,7750]		; set up AOBJN word
  4397	036736	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  4398
  4399					; Load microcode
  4400
  4401	036737	200 00 0 00 037101 		MOVE	LOCFR			; get location to write
  4402	036740	137 00 0 00 125137 		DPB	[POINT 10,DDLOCM+8,35]	; set up local storage address
  4403	036741	202 00 0 00 035611 		MOVEM	ANEXT			; save address
  4404	036742	350 00 0 00 035611 		AOS	ANEXT			; set to next address
  4405	036743	201 01 0 00 037063 		MOVEI	1,DDLOCM		; set up microcode address
  4406	036744	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  4407	036745	255 00 0 00 000000 		JFCL				; ignore error
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 103
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0266

  4408
  4409					; Now do the deposit
  4410
  4411	036746	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  4412	036747	242 01 0 00 000001 		LSH	1,1			; position correctly
  4413	036750	260 17 0 00 036667*		GO	LDRAR			; load the register
  4414	036751	201 01 0 00 000010 		MOVEI	1,MPRUN			; no - set initial data
  4415	036752	260 17 0 00 036673*		GO	LDCSR
  4416	036753	200 01 0 00 134165'		MOVE	1,LARG2			; get data to write
  4417	036754	260 17 0 00 036460*		GO	.DATAO			; give to port
  4418	036755	400 01 0 00 000000 		SETZ	1,			; stop the port
  4419	036756	260 17 0 00 036752*		GO	LDCSR
  4420
  4421					; Check if additional arguments
  4422
  4423	036757	336 00 0 00 036463*		SKIPN	ARGFLG			; any more arguments
  4424	036760	254 00 0 00 036764 		JRST	DDLOCX			; no - exit
  4425	036761	200 00 0 00 035611 		MOVE	ANEXT			; get register number
  4426	036762	202 00 0 00 036731*		MOVEM	ARGUM			; save it
  4427	036763	254 00 0 00 036717 		JRST	DDLOC0			; loop till done
  4428
  4429					; Restore CRAM locations and exit
  4430
  4431	036764	200 01 0 00 125036 	DDLOCX:	MOVE	1,[-5,,7750]		; set up AOBJN word
  4432	036765	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  4433	036766	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 104
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0267

  4434
  4435					;#********************************************************************
  4436					;* DZLOCS - Zero local storage 
  4437					;
  4438					; Format:  ZLOCS adr1,adr2
  4439					;#********************************************************************
  4440
  4441	036767	200 00 0 00 037101 	DZLOCS:	MOVE	LOCFR			; set up default of local storage range
  4442	036770	202 00 0 00 134223'		MOVEM	RLOCB			;   to be whatever was typed before
  4443	036771	200 00 0 00 037102 		MOVE	LOCTO			;   or if nothing typed, then 0-0
  4444	036772	202 00 0 00 134224'		MOVEM	RLOCE
  4445
  4446					; Get arguments
  4447
  4448	036773	200 01 0 00 125146 		MOVE	1,[FMSGCD <ZLOCS addr1,addr2 (CR)>]
  4449	036774	260 17 0 00 036714*		GO	.DARG			; get first address
  4450	036775	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4451	036776	254 00 0 00 037010 		 JRST	DZLOC0			; no arguments given - continue
  4452	036777	200 00 0 00 036762*		MOVE	ARGUM			; get argument
  4453	037000	202 00 0 00 134223'		MOVEM	RLOCB			; save in 'from' location
  4454	037001	202 00 0 00 134224'		MOVEM	RLOCE			; save in 'to' location
  4455
  4456	037002	210 01 0 00 125146 		MOVN	1,[FMSGCD <ZLOCS addr1,addr2 (CR)>]
  4457	037003	260 17 0 00 036774*		GO	.DARG			; get 2nd address
  4458	037004	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4459	037005	254 00 0 00 037010 		 JRST	DZLOC0			; no arguments given - continue
  4460	037006	200 00 0 00 036777*		MOVE	ARGUM			; get argument
  4461	037007	202 00 0 00 134224'		MOVEM	RLOCE			; save in 'to' location
  4462
  4463					; Now range check the arguments
  4464
  4465	037010	331 01 0 00 134223'	DZLOC0:	SKIPL	1,RLOCB			; 1st argument in range?
  4466	037011	303 01 0 00 001777 		CAILE	1,1777
  4467						JRST	[FMSGCD	<? Range of local storage locations is 0-1777>
  4468							 GO	FIOFF
  4469	037012	254 00 0 00 125076 			 RTN]
  4470	037013	331 01 0 00 134224'		SKIPL	1,RLOCE			; 2nd argument in range?
  4471	037014	303 01 0 00 001777 		CAILE	1,1777
  4472						JRST	[FMSGCD	<? Range of local storage locations is 0-1777>
  4473							 GO	FIOFF
  4474	037015	254 00 0 00 125076 			 RTN]
  4475	037016	274 01 0 00 134223'		SUB	1,RLOCB			; see if range ok
  4476						JUMPL	1,[FMSGCD <? Range nonsensical>
  4477							   GO	FIOFF
  4478	037017	321 01 0 00 122563 			   RTN]
  4479	037020	200 00 0 00 134223'		MOVE	RLOCB			; get 'from' argument
  4480	037021	202 00 0 00 037101 		MOVEM	LOCFR			; save it
  4481	037022	200 00 0 00 134224'		MOVE	RLOCE			; get 'to' argument
  4482	037023	202 00 0 00 037102 		MOVEM	LOCTO			; save it
  4483	037024	201 00 0 00 000013 		MOVEI	^D11			; get ZLOCS flag
  4484	037025	202 00 0 00 134152'		MOVEM	DFLAG			; save it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 105
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0268

  4485
  4486					; Save CRAM location
  4487
  4488	037026	200 01 0 00 125020 		MOVE	1,[-1,,7750]		; set up AOBJN word
  4489	037027	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  4490
  4491					; Now do each location
  4492
  4493	037030	200 00 0 00 134223'	DZLOC1:	MOVE	RLOCB			; get local storage address
  4494	037031	137 00 0 00 125147 		DPB	[POINT 10,DZLOCM,35]	; set up local storage address
  4495	037032	201 01 0 00 037076 		MOVEI	1,DZLOCM		; set up microcode address
  4496	037033	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  4497	037034	255 00 0 00 000000 		JFCL				; ignore error
  4498	037035	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  4499	037036	242 01 0 00 000001 		LSH	1,1			; position correctly
  4500	037037	260 17 0 00 036750*		GO	LDRAR			; load the RAR
  4501	037040	201 01 0 00 000010 		MOVEI	1,MPRUN			; start it up
  4502	037041	260 17 0 00 036756*		GO	LDCSR
  4503	037042	400 01 0 00 000000 		SETZ	1,			; stop the port
  4504	037043	260 17 0 00 037041*		GO	LDCSR
  4505	037044	037 07 0 00 000003 		TTALTM				; altmode key struck?
  4506	037045	334 00 0 00 000000 		SKIPA				; no - proceed
  4507	037046	254 00 0 00 037053 		JRST	DZLOCX			; yes - exit
  4508	037047	350 01 0 00 134223'		AOS	1,RLOCB			; point to next register
  4509	037050	202 01 0 00 035611 		MOVEM	1,ANEXT			; save next location
  4510	037051	317 01 0 00 134224'		CAMG	1,RLOCE			; done yet?
  4511	037052	254 00 0 00 037030 		JRST	DZLOC1			; no - loop till done
  4512
  4513					; Restore CRAM location and exit
  4514
  4515	037053	200 01 0 00 125020 	DZLOCX:	MOVE	1,[-1,,7750]		; set up AOBJN word
  4516	037054	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  4517	037055	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 106
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0269

  4518
  4519					; Microcode to examine local storage
  4520
  4521	037056	775077	510000		DELOCM:	MWORD	<ADDR=7750,JMAP,J=7751,SD0,OR,D=2,RDLM>
  4522	037057	732000	220040
  4523	037060	775177	512004			MWORD	<JMAP,J=7751,S0A,OR,D=1,OENA,SELE,MGC=4>
  4524	037061	431000	005040
  4525	037062	777777	777777			-1
  4526
  4527					; Microcode to deposit local storage
  4528
  4529	037063	775077	510000		DDLOCM:	MWORD	<ADDR=7750,JMAP,J=7751,D=1>		; 7750
  4530	037064	001000	000040
  4531	037065	775177	530000			MWORD	<CJP,J=7753,D=1,CENA,CCER>		; 7751
  4532	037066	001400	100060
  4533	037067	775277	510000			MWORD	<JMAP,J=7751,D=1>			; 7752
  4534	037070	001000	000040
  4535	037071	775300	000010			MWORD	<CONT,SD0,OR,D=2,SELE,MGC=10>		; 7753
  4536	037072	732000	005340
  4537	037073	775477	542000			MWORD	<JMAP,J=7754,S0A,OR,D=1,OENA,LDLM,MGC=0>; 7754
  4538	037074	431000	230040
  4539	037075	777777	777777			-1
  4540
  4541					; Microcode to zero local storage
  4542
  4543	037076	775077	502000		DZLOCM:	MWORD	<ADDR=7750,JMAP,J=7750,S0A,AND,D=1,LDLM,OENA>
  4544	037077	441000	230040
  4545	037100	777777	777777			-1
  4546
  4547					; Arguments
  4548
  4549	037101	000000	000000		LOCFR:	0				; default range of 
  4550	037102	000000	000000		LOCTO:	0				;   locations
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 107
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0270

  4551
  4552					;#********************************************************************
  4553					;* DMARK - Set mark bit in CRAM locations
  4554					;#********************************************************************
  4555
  4556					; First check for any argument
  4557
  4558	037103	336 00 0 00 036757*	DMARK:	SKIPN	ARGFLG			; argument given?
  4559						JRST	[FMSGCD	<? Missing argument>
  4560							 GO	FIOFF
  4561	037104	254 00 0 00 117722 			 RTN]
  4562
  4563					; Obtain argument
  4564
  4565	037105	200 01 0 00 125156 	DMARK0:	MOVE	1,[FMSGCD <MARK addr,addr,... (CR)>]
  4566	037106	260 17 0 00 036726*		GO	.OARG			; get argument
  4567	037107	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4568	037110	263 17 0 00 000000 		 RTN				; done - no more arguments
  4569	037111	331 01 0 00 037006*		SKIPL	1,ARGUM			; argument out of range?
  4570	037112	303 01 0 00 007777 		CAILE	1,7777			;   (0-7777)
  4571						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  4572							 GO	FIOFF
  4573	037113	254 00 0 00 122327 			 RTN]
  4574
  4575					; Then ensure the port is stopped
  4576
  4577	037114	260 17 0 00 035576*		GO	ISTOP			; stop the port
  4578
  4579					; Now obtain CRAM data and set MARK bit
  4580
  4581	037115	202 01 0 00 035604 		MOVEM	1,CADDR			; set up address to load
  4582	037116	476 00 0 00 035605 		SETOM	CWORDL			; initialize left half
  4583	037117	476 00 0 00 035606 		SETOM	CWORDR			; initialize right half
  4584	037120	260 17 0 00 036263 		GO	DRCRAM			; read the data
  4585	037121	200 02 0 00 035605 		MOVE	2,CWORDL		; get left half
  4586	037122	200 03 0 00 035606 		MOVE	3,CWORDR		; get right half
  4587	037123	660 03 0 00 000001 		TRO	3,1			; set mark bit
  4588	037124	202 03 0 00 035606 		MOVEM	3,CWORDR		; save data
  4589	037125	261 17 0 00 033670 		PUT	PARFLG			; save state of parity flag
  4590	037126	402 00 0 00 033670 		SETZM	PARFLG			; clear parity flag
  4591	037127	260 17 0 00 036231 		GO	DWCRAM			; load CRAM data
  4592	037130	262 17 0 00 033670 		GET	PARFLG			; restore state of parity flag
  4593	037131	254 00 0 00 037105 		JRST	DMARK0			; get next address
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 108
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0271

  4594
  4595					;#********************************************************************
  4596					;* DRMARK - Remove mark bit in CRAM locations
  4597					;#********************************************************************
  4598
  4599					; First check for any argument
  4600
  4601	037132	336 00 0 00 037103*	DRMARK:	SKIPN	ARGFLG			; argument given?
  4602						JRST	[FMSGCD	<? Missing argument>
  4603							 GO	FIOFF
  4604	037133	254 00 0 00 117722 			 RTN]
  4605
  4606					; Obtain argument
  4607
  4608	037134	200 01 0 00 125165 	DRMAR0:	MOVE	1,[FMSGCD <RMARK addr,addr,... (CR)>]
  4609	037135	260 17 0 00 037106*		GO	.OARG			; get argument
  4610	037136	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4611	037137	263 17 0 00 000000 		 RTN				; done - no more arguments
  4612	037140	331 01 0 00 037111*		SKIPL	1,ARGUM			; argument out of range?
  4613	037141	303 01 0 00 007777 		CAILE	1,7777			;   (0-7777)
  4614						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  4615							 GO	FIOFF
  4616	037142	254 00 0 00 122327 			 RTN]
  4617
  4618					; Then ensure the port is stopped
  4619
  4620	037143	260 17 0 00 037114*		GO	ISTOP			; stop the port
  4621
  4622					; Now obtain CRAM data and set MARK bit
  4623
  4624	037144	202 01 0 00 035604 		MOVEM	1,CADDR			; set up address to load
  4625	037145	476 00 0 00 035605 		SETOM	CWORDL			; initialize left half
  4626	037146	476 00 0 00 035606 		SETOM	CWORDR			; initialize right half
  4627	037147	260 17 0 00 036263 		GO	DRCRAM			; read the data
  4628	037150	200 02 0 00 035605 		MOVE	2,CWORDL		; get left half
  4629	037151	200 03 0 00 035606 		MOVE	3,CWORDR		; get right half
  4630	037152	620 03 0 00 000001 		TRZ	3,1			; clear mark bit
  4631	037153	202 03 0 00 035606 		MOVEM	3,CWORDR		; save data
  4632	037154	261 17 0 00 033670 		PUT	PARFLG			; save state of parity flag
  4633	037155	402 00 0 00 033670 		SETZM	PARFLG			; clear parity flag
  4634	037156	260 17 0 00 036231 		GO	DWCRAM			; load CRAM data
  4635	037157	262 17 0 00 033670 		GET	PARFLG			; restore state of parity flag
  4636	037160	254 00 0 00 037134 		JRST	DRMAR0			; get next address
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 109
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0272

  4637
  4638					;#********************************************************************
  4639					;* DCMARK - Clear all mark bits
  4640					;
  4641					; If arguments are given, they are assumed to the the locations between
  4642					; which all mark bits are to be removed.
  4643					;#********************************************************************
  4644
  4645					; Start to process the arguments typed - both should be CRAM
  4646					; addresses in octal.
  4647
  4648	037161	400 05 0 00 000000 	DCMARK:	SETZ	5,			; init range of addresses
  4649	037162	201 06 0 00 007777 		MOVEI	6,7777			;   to 0-7777
  4650
  4651					; Get first address
  4652
  4653	037163	200 01 0 00 125174 		MOVE	1,[FMSGCD <CMARK addr1,addr2 (CR)>]
  4654	037164	260 17 0 00 037135*		GO	.OARG			; get first address
  4655	037165	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4656	037166	254 00 0 00 037200 		 JRST	DCMAR0			; no arguments given - continue
  4657	037167	200 00 0 00 037140*		MOVE	ARGUM			; get argument
  4658	037170	202 00 0 00 000005 		MOVEM	5			; save in 'from' location
  4659	037171	202 00 0 00 000006 		MOVEM	6			; save in 'to' location
  4660
  4661					; Get 2nd address
  4662
  4663	037172	210 01 0 00 125174 		MOVN	1,[FMSGCD <CMARK addr1,addr2 (CR)>]
  4664	037173	260 17 0 00 037164*		GO	.OARG			; get first address
  4665	037174	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4666	037175	254 00 0 00 037200 		 JRST	DCMAR0			; no arguments given - continue
  4667	037176	200 00 0 00 037167*		MOVE	ARGUM			; get argument
  4668	037177	202 00 0 00 000006 		MOVEM	6			; save in 'to' location
  4669
  4670					; Now range check the arguments
  4671
  4672	037200	331 00 0 00 000005 	DCMAR0:	SKIPL	5			; 1st argument in range?
  4673	037201	303 05 0 00 007777 		CAILE	5,7777		
  4674						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  4675							 GO	FIOFF
  4676	037202	254 00 0 00 122327 			 RTN]
  4677	037203	331 01 0 00 000006 		SKIPL	1,6			; 2nd argument in range?
  4678	037204	303 06 0 00 007777 		CAILE	6,7777		
  4679						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  4680							 GO	FIOFF
  4681	037205	254 00 0 00 122327 			 RTN]
  4682	037206	274 01 0 00 000005 		SUB	1,5			; see if range ok
  4683						JUMPL	1,[FMSGCD <? Range nonsensical>
  4684							   GO	FIOFF
  4685	037207	321 01 0 00 122563 			   RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 110
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0273

  4686
  4687					; Then ensure the port is stopped
  4688
  4689	037210	260 17 0 00 037143*		GO	ISTOP			; stop the port
  4690
  4691					; Now obtain CRAM data and load back into CRAM without MARK bit set
  4692
  4693	037211	202 05 0 00 035604 	DCMAR1:	MOVEM	5,CADDR			; set up address to load
  4694	037212	476 00 0 00 035605 		SETOM	CWORDL			; initialize left half
  4695	037213	476 00 0 00 035606 		SETOM	CWORDR			; initialize right half
  4696	037214	260 17 0 00 036263 		GO	DRCRAM			; read the data
  4697	037215	200 02 0 00 035605 		MOVE	2,CWORDL		; get left half
  4698	037216	200 03 0 00 035606 		MOVE	3,CWORDR		; get right half
  4699	037217	626 03 0 00 000001 		TRZN	3,1			; clear mark bit - set?
  4700	037220	254 00 0 00 037226 		JRST	DCMAR2			; no - continue
  4701	037221	202 03 0 00 035606 		MOVEM	3,CWORDR		; save data
  4702	037222	261 17 0 00 033670 		PUT	PARFLG			; save state of parity flag
  4703	037223	402 00 0 00 033670 		SETZM	PARFLG			; clear parity flag
  4704	037224	260 17 0 00 036231 		GO	DWCRAM			; load CRAM data
  4705	037225	262 17 0 00 033670 		GET	PARFLG			; restore state of parity flag
  4706	037226	350 00 0 00 000005 	DCMAR2:	AOS	5			; increment 'from' address
  4707	037227	317 05 0 00 000006 		CAMG	5,6			; exceed 'to' address?
  4708	037230	254 00 0 00 037211 		JRST	DCMAR1			; no - get next address
  4709	037231	263 17 0 00 000000 		RTN				; yes - exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 111
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0274

  4710
  4711					;#********************************************************************
  4712					;* DLMARK - List locations with mark bit set
  4713					;
  4714					; If arguments are given, they are assumed to the the locations between
  4715					; which all mark bits are to be listed.
  4716					;#********************************************************************
  4717
  4718					; Start to process the arguments typed - both should be CRAM
  4719					; addresses in octal.
  4720
  4721	037232	400 05 0 00 000000 	DLMARK:	SETZ	5,			; init range of addresses
  4722	037233	201 06 0 00 007777 		MOVEI	6,7777			;   to 0-7777
  4723
  4724					; Get first address
  4725
  4726	037234	200 01 0 00 125203 		MOVE	1,[FMSGCD <LMARK addr1,addr2 (CR)>]
  4727	037235	260 17 0 00 037173*		GO	.OARG			; get first address
  4728	037236	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4729	037237	254 00 0 00 037251 		 JRST	DLMAR0			; no arguments given - continue
  4730	037240	200 00 0 00 037176*		MOVE	ARGUM			; get argument
  4731	037241	202 00 0 00 000005 		MOVEM	5			; save in 'from' location
  4732	037242	202 00 0 00 000006 		MOVEM	6			; save in 'to' location
  4733
  4734					; Get 2nd address
  4735
  4736	037243	210 01 0 00 125203 		MOVN	1,[FMSGCD <LMARK addr1,addr2 (CR)>]
  4737	037244	260 17 0 00 037235*		GO	.OARG			; get first address
  4738	037245	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4739	037246	254 00 0 00 037251 		 JRST	DLMAR0			; no arguments given - continue
  4740	037247	200 00 0 00 037240*		MOVE	ARGUM			; get argument
  4741	037250	202 00 0 00 000006 		MOVEM	6			; save in 'to' location
  4742
  4743					; Now range check the arguments
  4744
  4745	037251	331 00 0 00 000005 	DLMAR0:	SKIPL	5			; 1st argument in range?
  4746	037252	303 05 0 00 007777 		CAILE	5,7777		
  4747						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  4748							 GO	FIOFF
  4749	037253	254 00 0 00 122327 			 RTN]
  4750	037254	331 01 0 00 000006 		SKIPL	1,6			; 2nd argument in range?
  4751	037255	303 06 0 00 007777 		CAILE	6,7777		
  4752						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  4753							 GO	FIOFF
  4754	037256	254 00 0 00 122327 			 RTN]
  4755	037257	274 01 0 00 000005 		SUB	1,5			; see if range ok
  4756						JUMPL	1,[FMSGCD <? Range nonsensical>
  4757							   GO	FIOFF
  4758	037260	321 01 0 00 122563 			   RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 112
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0275

  4759
  4760					; Then ensure the port is stopped
  4761
  4762	037261	260 17 0 00 037210*		GO	ISTOP			; stop the port
  4763	037262	200 07 0 00 125204 		MOVE	7,[-2]			; initialize mark bit count
  4764	037263	037 00 0 00 125205 		TMSGC	<Mark bit set at:  >
  4765
  4766					; Now obtain CRAM data and check mark bit
  4767
  4768	037264	202 05 0 00 035604 	DLMAR1:	MOVEM	5,CADDR			; set up address to load
  4769	037265	476 00 0 00 035605 		SETOM	CWORDL			; initialize left half
  4770	037266	476 00 0 00 035606 		SETOM	CWORDR			; initialize right half
  4771	037267	260 17 0 00 036263 		GO	DRCRAM			; read the data
  4772	037270	200 03 0 00 035606 		MOVE	3,CWORDR		; get right word
  4773	037271	606 03 0 00 000001 		TRNN	3,1			; mark bit set?
  4774	037272	254 00 0 00 037300 		JRST	DLMAR2			; no - continue
  4775
  4776					; Print location
  4777
  4778	037273	350 00 0 00 000007 		AOS	7			; next 5 characters
  4779	037274	303 07 0 00 000007 		CAILE	7,7			; done with line?
  4780						GO	[SETO	7,		; yes - init counter
  4781							 TMSGC	<                  >
  4782	037275	260 17 0 00 125217 			 RTN]
  4783	037276	001 04 0 00 000005 		PNTOCC	4,5			; print address
  4784	037277	037 00 0 00 000040 		PSP				; print a space
  4785
  4786					; Increment to next location
  4787
  4788	037300	037 07 0 00 000003 	DLMAR2:	TTALTM				; altmode key struck?
  4789	037301	334 00 0 00 000000 		SKIPA				; no - proceed
  4790	037302	254 00 0 00 037306 		JRST	DLMARX			; yes - exit
  4791	037303	350 00 0 00 000005 		AOS	5			; increment 'from' address
  4792	037304	317 05 0 00 000006 		CAMG	5,6			; exceed 'to' address?
  4793	037305	254 00 0 00 037264 		JRST	DLMAR1			; no - get next address
  4794	037306	037 00 0 00 030242 	DLMARX:	PCRL				; yes - print blank line
  4795	037307	263 17 0 00 000000 		RTN				;   and exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 113
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0276

  4796
  4797					;#********************************************************************
  4798					;* DDPLI - Deposit data to PLI
  4799					;
  4800					; Format:  DPLI cntrl,data,repcount
  4801					;#********************************************************************
  4802
  4803					; Get first argument - control bits
  4804
  4805	037310	200 01 0 00 037517 	DDPLI:	MOVE	1,DPLIH			; get help text
  4806	037311	260 17 0 00 037244*		GO	.OARG			; get address
  4807	037312	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4808						 JRST	[FMSGCD	<? Missing argument>
  4809							 GO	FIOFF
  4810	037313	254 00 0 00 117722 			 RTN]
  4811	037314	331 01 0 00 037247*		SKIPL	1,ARGUM			; get argument
  4812	037315	303 01 0 00 000017 		CAILE	1,17			; in range 0-17?
  4813						JRST	[FMSGCD	<? Range of PLI control bits is 0-17>
  4814							 GO	FIOFF
  4815	037316	254 00 0 00 125232 			 RTN]
  4816	037317	202 01 0 00 037514 		MOVEM	1,PLICTL		; save control bits
  4817
  4818					; Get second argument - data
  4819
  4820	037320	200 01 0 00 037517 	DDPLI0:	MOVE	1,DPLIH			; get help text
  4821	037321	260 17 0 00 037311*		GO	.OARG			; get data
  4822	037322	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4823						 JRST	[FMSGCD	<? Missing argument>
  4824							 GO	FIOFF
  4825	037323	254 00 0 00 117722 			 RTN]
  4826	037324	200 00 0 00 037314*		MOVE	ARGUM			; get argument
  4827	037325	202 00 0 00 037515 		MOVEM	PLIDAT			; save it
  4828
  4829					; Get third argument - repeat count
  4830
  4831	037326	210 01 0 00 037517 		MOVN	1,DPLIH			; get help text
  4832	037327	260 17 0 00 037321*		GO	.OARG			; get data
  4833	037330	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4834	037331	402 00 0 00 037324*		 SETZM	ARGUM			; no argument - set to 0
  4835	037332	200 00 0 00 037331*		MOVE	ARGUM			; get argument
  4836	037333	202 00 0 00 037516 		MOVEM	PLIREP			; save it
  4837	037334	201 00 0 00 000014 		MOVEI	^D12			; get DPLI flag
  4838	037335	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  4839
  4840					; Save CRAM locations
  4841
  4842	037336	200 01 0 00 125235 		MOVE	1,[-4,,7750]		; set up AOBJN word
  4843	037337	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 114
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0277

  4844
  4845					; Insert data into appropriate microwords
  4846
  4847	037340	200 00 0 00 037514 		MOVE	PLICTL			; get control bits
  4848	037341	202 00 0 00 035611 		MOVEM	ANEXT			; save location
  4849	037342	137 00 0 00 125236 		DPB	[POINT 6,DDPLM2,31]	; save control bits
  4850	037343	200 00 0 00 037515 		MOVE	PLIDAT			; get PLI data bits
  4851	037344	137 00 0 00 125237 		DPB	[POINT 10,DDPLIM,35]	; save it in microword
  4852
  4853					; Load microcode
  4854
  4855	037345	201 01 0 00 037367 		MOVEI	1,DDPLIM		; set up microcode address
  4856	037346	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  4857	037347	255 00 0 00 000000 		JFCL				; ignore error
  4858
  4859					; Do the deposit
  4860
  4861	037350	201 01 0 00 007750 	DDPLI1:	MOVEI	1,7750			; get start address
  4862	037351	242 01 0 00 000001 		LSH	1,1			; position correctly
  4863	037352	260 17 0 00 037037*		GO	LDRAR			; load the RAR
  4864	037353	201 01 0 00 000010 		MOVEI	1,MPRUN			; set up initial data
  4865	037354	260 17 0 00 037043*		GO	LDCSR			; start the port
  4866	037355	400 01 0 00 000000 		SETZ	1,			; clear AC1
  4867	037356	260 17 0 00 037354*		GO	LDCSR			; stop the port
  4868
  4869					; Check altmode and decrement repeat count
  4870
  4871	037357	037 07 0 00 000003 		TTALTM				; altmode key struck?
  4872	037360	334 00 0 00 000000 		SKIPA				; no - proceed
  4873	037361	254 00 0 00 037364 		JRST	DDPLIX			; yes - exit
  4874	037362	373 00 0 00 037516 		SOSLE	PLIREP			; decrement repeat count - expired?
  4875	037363	254 00 0 00 037350 		JRST	DDPLI1			; no - loop till done
  4876
  4877					; Restore CRAM locations and exit
  4878
  4879	037364	200 01 0 00 125235 	DDPLIX:	MOVE	1,[-^D4,,7750]		; set up AOBJN word
  4880	037365	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  4881	037366	263 17 0 00 000000 		RTN				; return
  4882
  4883					; Microword to use to load PLI data
  4884
  4885	037367	775077	510000		DDPLIM:	MWORD	<ADDR=7750,JMAP,J=7751,SD0,OR,D=2,MGC=0,SKCN>	; 7750
  4886	037370	732000	240040
  4887	037371	775100	002040			MWORD	<CONT,S0A,OR,D=1,OENA,MGC=40,SELM>		; 7751
  4888	037372	431000	002340
  4889	037373	775200	000014		DDPLM2:	MWORD	<CONT,D=1,SELP,MGC=14>				; 7752
  4890	037374	001000	001340
  4891	037375	775377	530000			MWORD	<JMAP,J=7753,D=1>				; 7753
  4892	037376	001000	000040
  4893	037377	777777	777777			-1
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 115
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0278

  4894
  4895					;#********************************************************************
  4896					;* DEPLI - Examine PLI registers
  4897					;
  4898					; Format:  EPLI cntrl,repcount
  4899					;#********************************************************************
  4900
  4901	037400	201 00 0 00 000015 	DEPLI:	MOVEI	^D13			; get EPLI flag
  4902	037401	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  4903	037402	402 00 0 00 037516 		SETZM	PLIREP			; initialize repeat count
  4904	037403	200 00 0 00 037514 		MOVE	PLICTL			; get control bits
  4905	037404	202 00 0 00 037332*		MOVEM	ARGUM			; save in argument location
  4906
  4907					; Get control bits
  4908
  4909	037405	200 01 0 00 037520 		MOVE	1,EPLIH			; get help text
  4910	037406	260 17 0 00 037327*		GO	.OARG			; get link control bits
  4911	037407	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4912	037410	255 00 0 00 000000 		 JFCL				; no arguments given - continue
  4913	037411	331 01 0 00 037404*		SKIPL	1,ARGUM			; get argument
  4914	037412	303 01 0 00 000017 		CAILE	1,17			; in range 0-17?
  4915						JRST	[FMSGCD	<? Range of PLI control bits is 0-17>
  4916							 GO	FIOFF
  4917	037413	254 00 0 00 125232 			 RTN]
  4918	037414	202 01 0 00 037514 		MOVEM	1,PLICTL		; save control bits
  4919
  4920					; Get 2nd argument - repeat count
  4921
  4922	037415	210 01 0 00 037520 		MOVN	1,EPLIH			; get help text
  4923	037416	260 17 0 00 037406*		GO	.OARG			; get data
  4924	037417	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  4925	037420	402 00 0 00 037411*		SETZM	ARGUM			; no argument - set to 0
  4926	037421	200 00 0 00 037420*		MOVE	ARGUM			; get argument
  4927	037422	202 00 0 00 037516 		MOVEM	PLIREP			; save it
  4928	037423	200 00 0 00 037514 		MOVE	PLICTL			; get control bits
  4929	037424	202 00 0 00 035611 		MOVEM	ANEXT			; save location
  4930
  4931					; Save CRAM locations
  4932
  4933	037425	200 01 0 00 125240 	DEPLI0:	MOVE	1,[-7,,7750]		; set up AOBJN word
  4934	037426	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  4935
  4936					; Set up location and load microcode
  4937
  4938	037427	200 00 0 00 037514 		MOVE	PLICTL			; get control bits
  4939	037430	137 00 0 00 125241 		DPB	[POINT 6,DEPLIM+2,31]	; save it in microword
  4940	037431	201 01 0 00 037475 		MOVEI	1,DEPLIM		; set up microcode address
  4941	037432	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  4942	037433	255 00 0 00 000000 		JFCL				; ignore error
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 116
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0279

  4943
  4944					; Print header
  4945
  4946	037434	200 01 0 00 037514 		MOVE	1,PLICTL		; get control bits
  4947						XCT	[TMSGC	<0-RdReg:>	; print it
  4948							 TMSGC	<1-EnaLnk:>
  4949							 TMSGC	<2-WFBLst:>
  4950							 TMSGC	<3-WXmtBf:>
  4951							 TMSGC	<4-RRecBf:>
  4952							 TMSGC	<5-WtAdrs:>
  4953							 TMSGC	<6-XmtAct:>
  4954							 TMSGC	<7-RdRSta:>
  4955							 TMSGC	<10-ClrRBf:>
  4956							 TMSGC	<11-DsaLnk:>
  4957							 TMSGC	<12-WRBfAd:>
  4958							 TMSGC	<13-RdXSta:>
  4959							 TMSGC	<14-RcXmBf:>
  4960							 TMSGC	<15-RUBLst:>
  4961							 TMSGC	<16-RRcAtn:>
  4962	037435	256 00 0 01 125322 			 TMSGC	<17-WtReg:>](1)
  4963	037436	476 00 0 00 134214'		SETOM	PLINUM#			; clear print count
  4964
  4965					; Do the examine and print results
  4966
  4967	037437	201 01 0 00 007750 	DEPLI1:	MOVEI	1,7750			; get start address
  4968	037440	242 01 0 00 000001 		LSH	1,1			; position correctly
  4969	037441	260 17 0 00 037352*		GO	LDRAR			; load the RAR
  4970	037442	201 01 0 00 000010 		MOVEI	1,MPRUN			; start it up
  4971	037443	260 17 0 00 037356*		GO	LDCSR			; write to CSR register
  4972	037444	201 01 0 00 200000 		MOVEI	1,TSTEBF		; set up to read EBUF data
  4973	037445	260 17 0 00 037443*		GO	LDCSR			; write to CSR register
  4974	037446	260 17 0 00 036674*		GO	RDEBUF			; read EBUF contents
  4975	037447	260 17 0 00 000000*		GO	SETLAR			; ensure the LAR can be read
  4976	037450	255 00 0 00 000000 		JFCL				; error - ignore
  4977	037451	350 00 0 00 134214'		AOS	PLINUM			; increment print count
  4978	037452	037 00 0 00 125342 		TMSGC	< >			; start a new line
  4979	037453	200 00 0 00 134214'		MOVE	PLINUM			; get print count
  4980	037454	037 16 0 00 000003 		PNTOCS				; print it
  4981	037455	037 00 0 00 124736 		TMSG	</ >
  4982	037456	135 00 0 00 125343 		LDB	[POINT 8,1,35]		; get PLI data
  4983	037457	037 03 0 00 000000 		PNT3				; print it
  4984	037460	260 17 0 00 035463*		GO	RDLAR			; read LAR
  4985	037461	242 01 0 00 777777 		LSH	1,-1			; right shift 1 bit
  4986	037462	306 01 0 00 007756 		CAIN	1,7756			; parity error occurred?
  4987	037463	037 00 0 00 125344 		TMSG	<(PE on read)>		; yes - print such
  4988	037464	037 07 0 00 000003 		TTALTM				; altmode key struck?
  4989	037465	334 00 0 00 000000 		SKIPA				; no - proceed
  4990	037466	254 00 0 00 037471 		JRST	DEPLIX			; yes - exit
  4991	037467	373 00 0 00 037516 		SOSLE	PLIREP			; decrement count - expired?
  4992	037470	254 00 0 00 037437 		JRST	DEPLI1			; no - loop til done
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 117
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0280

  4993
  4994					; Restore CRAM locations and exit
  4995
  4996	037471	037 00 0 00 030242 	DEPLIX:	PCRL				; print a final CRLF
  4997	037472	200 01 0 00 125240 		MOVE	1,[-7,,7750]		; set up AOBJN word
  4998	037473	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  4999	037474	263 17 0 00 000000 		RTN				; return
  5000
  5001					; Microwords to use to get PLI data
  5002
  5003	037475	775077	510020		DEPLIM:	MWORD	<ADDR=7750,JMAP,J=7751,D=1,SELM,MGC=20>		; 7750
  5004	037476	001000	002040
  5005	037477	775100	000012			MWORD	<CONT,D=1,SELP,MGC=12>				; 7751
  5006	037500	001000	001340
  5007	037501	775200	000300			MWORD	<CONT,SD0,OR,D=2,SELM,MGC=300>			; 7752
  5008	037502	732000	002340
  5009	037503	775300	002004			MWORD	<CONT,S0A,OR,D=1,OENA,SELE,MGC=4>		; 7753
  5010	037504	431000	005340
  5011	037505	775477	560000			MWORD	<CJP,J=7756,D=1,CENA,CCPP>			; 7754
  5012	037506	001400	150060
  5013	037507	775577	550000			MWORD	<JMAP,J=7755,D=1>				; 7755
  5014	037510	001000	000040
  5015	037511	775677	560000			MWORD	<JMAP,J=7756,D=1>				; 7756
  5016	037512	001000	000040
  5017	037513	777777	777777			-1
  5018
  5019					; Arguments
  5020
  5021	037514	000000	000000		PLICTL:	0				; default control bits
  5022	037515	000000	000000		PLIDAT:	0				; PLI data to write
  5023	037516	000000	000000		PLIREP:	0				; repeat count
  5024
  5025					; Help text
  5026
  5027					DPLIH:	FMSGCD <DPLI cntrl,data,repcount (CR) where cntrl is:
  5028					0-RdReg   4-RRecBf  10-ClrRBf  14-RcXmBf
  5029					1-EnaLnk  5-WtAdrs  11-DsaLnk  15-RUBLst
  5030					2-WFBLst  6-XmtAct  12-WRBfAd  16-RRcAtn
  5031	037517	037 01 0 00 125347 	3-WXmtBf  7-RdRSta  13-RdXSta  17-WtReg>
  5032
  5033					EPLIH:	FMSGCD <EPLI cntrl,repcount (CR) where cntrl is:
  5034					0-RdReg   4-RRecBf  10-ClrRBf  14-RcXmBf
  5035					1-EnaLnk  5-WtAdrs  11-DsaLnk  15-RUBLst
  5036					2-WFBLst  6-XmtAct  12-WRBfAd  16-RRcAtn
  5037	037520	037 01 0 00 125423 	3-WXmtBf  7-RdRSta  13-RdXSta  17-WtReg>
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 118
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0281

  5038
  5039					;#********************************************************************
  5040					;* DETBUF - Read transmit buffer
  5041					;#********************************************************************
  5042
  5043	037521	200 01 0 00 125502 	DETBUF:	MOVE	1,[FMSGCD (ETBUFF <CR>)]
  5044	037522	260 17 0 00 035510*		GO	CHKARG			; check for argument
  5045	037523	263 17 0 00 000000 		RTN				; error - exit
  5046
  5047					; Read/print buffer
  5048
  5049	037524	260 17 0 00 037656 		GO	RDBUFT			; read/print it
  5050	037525	263 17 0 00 000000 		RTN				; exit
  5051
  5052
  5053					;#********************************************************************
  5054					;* DERBUF - Read receive buffer
  5055					;#********************************************************************
  5056
  5057	037526	200 01 0 00 125507 	DERBUF:	MOVE	1,[FMSGCD (ERBUFF <CR>)]
  5058	037527	260 17 0 00 037522*		GO	CHKARG			; check for argument
  5059	037530	263 17 0 00 000000 		RTN				; error - exit
  5060
  5061					; Read/print buffer
  5062
  5063	037531	260 17 0 00 037713 		GO	RDBUFR			; read/print it
  5064	037532	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 119
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0282

  5065
  5066					;#********************************************************************
  5067					;* DDUMP - Dump port state
  5068					;#********************************************************************
  5069
  5070	037533	261 17 0 00 000000 	DDUMP:	RPUT	(0,1,2,3,4)		; save AC's
  5071
  5072	037540	476 00 0 00 134250'		SETOM	TSLOAD			; invalidate microcode loaded
  5073
  5074					; Print CSR, EBUF, LAR, 2901 registers, stack
  5075
  5076	037541	037 00 0 00 125510 		TMSGC	<+++++++++++++++ KLNI DUMP +++++++++++++++>
  5077	037542	260 17 0 00 034007*		GO	RDCSR			; read CSR
  5078	037543	255 00 0 00 000000 		JFCL				; error - ignore
  5079	037544	260 17 0 00 042605 		GO	CSRPNT			; print data
  5080	037545	260 17 0 00 035425 		GO	DEBEBU			; print EBUF
  5081	037546	260 17 0 00 035460 		GO	DEBLAR			; print LAR data
  5082	037547	037 00 0 00 125521 		TMSG	<+++++++++++++++ 2901 Registers +++++++++++++++>
  5083	037550	402 00 0 00 134217'		SETZM	RALUB			; set up 'from' location
  5084	037551	201 00 0 00 000020 		MOVEI	20
  5085	037552	202 00 0 00 134220'		MOVEM	RALUE			; set up 'to' location
  5086	037553	260 17 0 00 036343 		GO	DEBALU			; print 2901 registers
  5087	037554	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  5088	037555	254 00 0 00 037643 		JRST	DDUMPX			; yes - exit
  5089	037556	037 00 0 00 125533 		TMSG	<+++++++++++++++ 2910 Stack +++++++++++++++>
  5090	037557	260 17 0 00 040420 		GO	DEBSTK			; print stack contents
  5091
  5092					; Print PCB
  5093
  5094	037560	037 00 0 00 125544 		TMSG	<+++++++++++++++ PCB +++++++++++++++>
  5095	037561	260 17 0 00 070747 		GO	PPCB			; print PCB
  5096	037562	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  5097	037563	254 00 0 00 037643 		JRST	DDUMPX			; yes - exit
  5098
  5099					; Print queues
  5100
  5101	037564	037 00 0 00 125554 		TMSGC	<+++++++++++++++ Queues +++++++++++++++>
  5102	037565	201 13 0 00 000000 		MOVEI	Q,0			; set up queue number
  5103	037566	260 17 0 00 067305 	DDUMP0:	GO	PQUEUE			; print this queue
  5104	037567	037 00 0 00 030242 		PCRL				; final CRLF
  5105	037570	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  5106	037571	254 00 0 00 037643 		JRST	DDUMPX			; yes - exit
  5107	037572	350 00 0 00 000013 		AOS	Q			; point to next queue
  5108	037573	307 13 0 00 000005 		CAIG	Q,5			; done yet?
  5109	037574	254 00 0 00 037566 		JRST	DDUMP0			; no - loop till done
  5110
  5111					; Print local storage
  5112
  5113	037575	037 00 0 00 125565 		TMSG	<+++++++++++++++ Local Storage +++++++++++++++>
  5114	037576	402 00 0 00 134223'		SETZM	RLOCB			; set range of locations
  5115	037577	201 00 0 00 001777 		MOVEI	1777			;   to 0-1777
  5116	037600	202 00 0 00 134224'		MOVEM	RLOCE
  5117	037601	260 17 0 00 036647 		GO	DEBELO			; print local storage
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 120
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0283

  5118	037602	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  5119	037603	254 00 0 00 037643 		JRST	DDUMPX			; yes - exit
  5120
  5121					; Print transmit and receive buffers
  5122
  5123	037604	037 00 0 00 125577 		TMSG	<+++++++++++++++ NIA Transmit Buffer +++++++++++++++>
  5124	037605	260 17 0 00 037656 		GO	RDBUFT
  5125	037606	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  5126	037607	254 00 0 00 037643 		JRST	DDUMPX			; yes - exit
  5127
  5128	037610	037 00 0 00 125612 		TMSG	<+++++++++++++++ NIA Receive Buffers +++++++++++++++>
  5129	037611	260 17 0 00 037713 		GO	RDBUFR
  5130	037612	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  5131	037613	254 00 0 00 037643 		JRST	DDUMPX			; yes - exit
  5132
  5133					; Print logout data (before STORE)
  5134
  5135	037614	037 00 0 00 125625 		TMSGC	<+++++++++++++++ EPT Data +++++++++++++++>
  5136	037615	037 00 0 00 125636 		TMSGC	<Logout data before STOP and STORE:>
  5137	037616	260 17 0 00 037755 		GO	PLOG			; get/print EPT
  5138	037617	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  5139	037620	254 00 0 00 037643 		JRST	DDUMPX			; yes - exit
  5140
  5141					; Print logout data (after STORE)
  5142
  5143	037621	037 00 0 00 125625 		TMSGC	<+++++++++++++++ EPT Data +++++++++++++++>
  5144	037622	037 00 0 00 125646 		TMSGC	<After loading special ucode to do a STOP and STORE:>
  5145	037623	200 01 0 00 125101 		MOVE	1,[-2,,7750]		; set up AOBJN word
  5146	037624	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  5147	037625	201 01 0 00 037651 		MOVEI	1,DDUMPM		; set up microcode address
  5148	037626	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  5149	037627	255 00 0 00 000000 		JFCL				; ignore error
  5150	037630	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  5151	037631	242 01 0 00 000001 		LSH	1,1			; position correctly
  5152	037632	260 17 0 00 037441*		GO	LDRAR			; load the RAR
  5153	037633	201 01 0 00 000010 		MOVEI	1,MPRUN			; start it up
  5154	037634	260 17 0 00 037445*		GO	LDCSR			; write to CSR register
  5155	037635	400 01 0 00 000000 		SETZ	1,			; stop the port
  5156	037636	260 17 0 00 037634*		GO	LDCSR
  5157	037637	200 01 0 00 125101 		MOVE	1,[-2,,7750]		; set up AOBJN word
  5158	037640	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  5159	037641	260 17 0 00 037755 		GO	PLOG			; get/print EPT
  5160	037642	037 00 0 00 125661 		TMSGCD	<+++++++++++++++ End of KLIPA DUMP +++++++++++++++>
  5161	037643	262 17 0 00 000004 	DDUMPX:	RGET	(4,3,2,1,0)		; restore AC's
  5162
  5163	037650	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 121
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0284

  5164
  5165					; Microcode to do a STORE
  5166
  5167	037651	775077	510140		DDUMPM:	MWORD	<ADDR=7750,JMAP,J=7751,SELC,MGC=140>	; 7750
  5168	037652	000000	004040
  5169	037653	775177	510000			MWORD	<JMAP,J=7751>				; 7751
  5170	037654	000000	000040
  5171	037655	777777	777777			-1
  5172
  5173
  5174					;#********************************************************************
  5175					;* RDBUFT - Read transmit buffer (80 bytes only)
  5176					;#********************************************************************
  5177
  5178	037656	261 17 0 00 000000 	RDBUFT:	RPUT	(0,1,2,3)		; save AC's
  5179
  5180	037662	260 17 0 00 037261*		GO	ISTOP			; stop the port
  5181	037663	037 00 0 00 125674 		TMSGC	<Transmit Buffer:  >
  5182	037664	201 01 0 00 000006 		MOVEI	1,6			; get code for 'XMT Action'
  5183	037665	201 02 0 00 000001 		MOVEI	2,1			; get data 'Reset TxBuf Adrs'
  5184	037666	260 17 0 00 040126 		GO	WRTPLI			; write over PLI
  5185	037667	201 01 0 00 000005 		MOVEI	1,5			; get code for 'Wt Adrs'
  5186	037670	201 02 0 00 000020 		MOVEI	2,20			; get data 'Xmt Buffer Rd'
  5187	037671	260 17 0 00 040126 		GO	WRTPLI			; write over PLI
  5188	037672	201 03 0 00 000120 		MOVEI	3,^D80			; print only 80 bytes
  5189	037673	315 03 0 00 033706 		CAMGE	3,DSPRIN		; more than words to print?
  5190	037674	200 03 0 00 033706 		MOVE	3,DSPRIN		; no - get words to print
  5191	037675	260 17 0 00 040054 	RDBUF1:	GO	RDBF			; read buffer data
  5192	037676	200 00 0 00 000001 		MOVE	1			; get into AC0
  5193	037677	037 03 0 00 000000 		PNT3				; print it out
  5194	037700	200 00 0 00 000003 		MOVE	3			; get into AC0
  5195	037701	275 00 0 00 000006 		SUBI	6
  5196	037702	231 00 0 00 000017 		IDIVI	^D15
  5197						JUMPE	1,[TMSGC  <                  >
  5198	037703	322 01 0 00 125701 			   JRST	  .+1]
  5199	037704	367 03 0 00 037675 		SOJG	3,RDBUF1		; loop till done
  5200	037705	037 00 0 00 030242 		PCRL				; final CRLF
  5201	037706	262 17 0 00 000003 		RGET	(3,2,1,0)		; restore AC's
  5202
  5203	037712	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 122
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0285

  5204
  5205					;#********************************************************************
  5206					;* RDBUFR - Read transmit buffers
  5207					;#********************************************************************
  5208
  5209	037713	261 17 0 00 000000 	RDBUFR:	RPUT	(0,1,2,3,4)		; save AC's
  5210
  5211						TMSGC	<('SET PRINT n' to print n bytes)
  5212					Receive  Byte
  5213					Buffer#   0   1   2   3   4   5   6   7   10  11  12  13  14  15  16  17
  5214	037720	037 00 0 00 125703 	-------  --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --->
  5215	037721	474 04 0 00 000000 		SETO	4,			; initialize buffer count
  5216	037722	350 00 0 00 000004 	RDBUF2:	AOS	4			; point to next buffer
  5217	037723	301 04 0 00 000040 		CAIL	4,^D32			; done yet?
  5218	037724	254 00 0 00 037746 		JRST	RDBUFX			; yes - exit
  5219	
  5220					; Print a buffer
  5221
  5222	037725	260 17 0 00 033750*		GO	IPACLR			; do a 'port clear'
  5223	037726	037 00 0 00 125753 		TMSGC	<  #>
  5224	037727	001 02 0 00 000004 		PNTOCC	2,4			; print buffer number
  5225	037730	037 00 0 00 125755 		TMSG	<:   >
  5226	037731	201 01 0 00 000012 		MOVEI	1,12			; get code for 'Write RecBuf Adrs'
  5227	037732	200 02 0 00 000004 		MOVE	2,4			; get buffer address
  5228	037733	242 02 0 00 000001 		LSH	2,1			; left shift properly
  5229	037734	260 17 0 00 040126 		GO	WRTPLI			; write over PLI
  5230	037735	201 03 0 00 000020 		MOVEI	3,^D16			; print only 16 bytes
  5231	037736	315 03 0 00 033706 		CAMGE	3,DSPRIN		; more than words to print?
  5232	037737	200 03 0 00 033706 		MOVE	3,DSPRIN		; no - get words to print
  5233	037740	260 17 0 00 040101 	RDBUF3:	GO	RRDBF			; read receive buffer
  5234	037741	200 00 0 00 000001 		MOVE	1			; get into AC0
  5235	037742	037 03 0 00 000000 		PNT3				; print it out
  5236	037743	367 03 0 00 037740 		SOJG	3,RDBUF3		; loop till done
  5237	037744	037 07 0 00 000003 		TTALTM				; check for altmode typed
  5238	037745	254 00 0 00 037722 		JRST	RDBUF2			; loop on buffer number
  5239
  5240					; Exit
  5241
  5242	037746	037 00 0 00 030242 	RDBUFX:	PCRL
  5243	037747	262 17 0 00 000004 		RGET	(4,3,2,1,0)		; restore AC's
  5244
  5245	037754	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 123
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0286

  5246
  5247					;#********************************************************************
  5248					;* PLOG - Obtain EPT logout data
  5249					;#********************************************************************
  5250
  5251	037755	200 01 0 00 125756 	PLOG:	MOVE	1,[-^D14,,0]		; set up AOBJN word
  5252	037756	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  5253	037757	201 01 0 00 040017 		MOVEI	1,PLOGM			; get microcode address
  5254	037760	260 17 0 00 064353 		GO	MLOADN			; load the microcode
  5255	037761	255 00 0 00 000000 		JFCL
  5256
  5257					; Start it up and give the port the address to read
  5258
  5259	037762	400 01 0 00 000000 		SETZ	1,			; get start address
  5260	037763	260 17 0 00 037632*		GO	LDRAR			; load the register
  5261	037764	201 01 0 00 000010 		MOVEI	1,MPRUN			; set initial data
  5262	037765	260 17 0 00 037636*		GO	LDCSR
  5263	037766	135 01 0 00 120111 		LDB	1,[POINT 3,MBCN,9]	; get channel number
  5264	037767	200 01 0 01 000000*		MOVE	1,ICWA0(1)		; get ICWA for channel
  5265	037770	200 03 0 00 000001 		MOVE	3,1			; get into AC3 also
  5266	037771	336 00 0 00 134255'		SKIPN	UDEBUG			; user mode?
  5267	037772	7 010 24 0 00 000002 		CONI	PAG,2			; no - get page number of EPT
  5268	037773	242 02 0 00 000011 		LSH	2,9			; position correctly
  5269	037774	621 02 0 00 777777 		TLZ	2,777777		; clear left half
  5270	037775	270 01 0 00 000002 		ADD	1,2			; add in EPT offset
  5271	037776	434 01 0 00 125757 		IOR	1,[440000,,0]		; include IOP function
  5272	037777	260 17 0 00 036754*		GO	.DATAO			; do the first DATAO
  5273	040000	201 02 0 00 000004 		MOVEI	2,4			; number of locations to read
  5274	040001	037 00 0 00 125760 	PLOG0:	TMSGC	<EPT+>
  5275	040002	200 00 0 00 000003 		MOVE	3			; get offset
  5276	040003	037 02 0 00 000000 		PNT2				; print it
  5277	040004	260 17 0 00 000000*		GO	.DATAI			; get the data
  5278	040005	200 00 0 00 000001 		MOVE	1			; get into AC0
  5279	040006	037 13 0 00 000000 		PNTHW				; print it
  5280	040007	005 00 0 00 000001 		DELAY	1			; wait 1 millisecond
  5281	040010	350 00 0 00 000003 		AOS	3			; point to next offset
  5282	040011	367 02 0 00 040001 		SOJG	2,PLOG0			; done yet - no - loop till done
  5283	040012	400 01 0 00 000000 		SETZ	1,
  5284	040013	260 17 0 00 037765*		GO	LDCSR			; stop the port
  5285
  5286					; Done
  5287
  5288	040014	200 01 0 00 125756 		MOVE	1,[-^D14,,0]		; set up AOBJN word
  5289	040015	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  5290	040016	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 124
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0287

  5291
  5292					; Microcode
  5293
  5294	040017	000000	010000		PLOGM:	MWORD	<ADDR=0,JMAP,J=1>			; 0
  5295	040020	000000	000040
  5296	040021	000100	030000			MWORD	<CJP,J=3,CENA,CCER>			; 1
  5297	040022	000400	100060
  5298	040023	000200	010000			MWORD	<JMAP,J=1>				; 2
  5299	040024	000000	000040
  5300	040025	000301	000010			MWORD	<LDCT,J=100,SD0,B=16,OR,D=2,SELE,MGC=10>; 3
  5301	040026	732007	005300
  5302
  5303	040027	000400	042004			MWORD	<RPCT,J=4,S0A,A=16,OR,D=1,OENA,SELE,MGC=4>
  5304	040030	431160	005220
  5305	040031	000501	000001			MWORD	<LDCT,J=100,SELE,MGC=1>			; 5 (Ex/Dep int)
  5306	040032	000000	005300
  5307	040033	000600	100000			MWORD	<CJP,J=10,D=1,CENA,CCER>		; 6
  5308	040034	001400	100060
  5309	040035	000700	060000			MWORD	<JMAP,J=6,D=1>				; 7
  5310	040036	001000	000040
  5311	040037	001000	000010			MWORD	<CONT,SD0,B=17,OR,D=2,SELE,MGC=10>	; 10
  5312	040040	732007	405340
  5313	040041	001100	112004			MWORD	<RPCT,J=11,S0A,OR,A=17,D=2,OENA,SELE,MGC=4>
  5314	040042	432170	005220
  5315	040043	001200	140000			MWORD	<CJP,J=14,D=1,CENA,CCER>		; 12
  5316	040044	001400	100060
  5317	040045	001300	120000			MWORD	<JMAP,J=12,D=1>				; 13
  5318	040046	001000	000040
  5319	040047	001401	000020			MWORD	<LDCT,J=100,SELE,MGC=20> 		; 14
  5320	040050	000000	005300
  5321	040051	001500	040000			MWORD	<JMAP,J=4,S0B,PLUS,D=2,B=16,CRY>	; 15
  5322	040052	302007	000440
  5323	040053	777777	777777			-1
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 125
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0288

  5324
  5325					;#********************************************************************
  5326					; RDBF - Read a buffer location (AC1 contains data)
  5327					;#********************************************************************
  5328
  5329	040054	200 01 0 00 125240 	RDBF:	MOVE	1,[-7,,7750]		; set up AOBJN word
  5330	040055	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  5331	040056	201 01 0 00 000000 		MOVEI	1,0			; get link control bits (RDREG)
  5332	040057	137 01 0 00 125241 		DPB	1,[POINT 6,DEPLIM+2,31]	; save it in microword
  5333	040060	201 01 0 00 037475 		MOVEI	1,DEPLIM		; set up microcode address
  5334	040061	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  5335	040062	255 00 0 00 000000 		JFCL				; ignore error
  5336	040063	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  5337	040064	242 01 0 00 000001 		LSH	1,1			; position correctly
  5338	040065	260 17 0 00 037763*		GO	LDRAR			; load the RAR
  5339	040066	201 01 0 00 000010 		MOVEI	1,MPRUN			; start it up
  5340	040067	260 17 0 00 040013*		GO	LDCSR			; write to CSR register
  5341	040070	201 01 0 00 200000 		MOVEI	1,TSTEBF		; set up to read EBUF data
  5342	040071	260 17 0 00 040067*		GO	LDCSR			; write to CSR register
  5343	040072	260 17 0 00 037446*		GO	RDEBUF			; read EBUF contents
  5344	040073	405 01 0 00 000377 		ANDI	1,377			; get rid of misc bits
  5345	040074	261 17 0 00 000001 		PUT	1			; save data
  5346	040075	200 01 0 00 125240 		MOVE	1,[-7,,7750]		; set up AOBJN word
  5347	040076	260 17 0 00 042752 		GO	RESCRM			; save the CRAM locations
  5348	040077	262 17 0 00 000001 		GET	1			; restore data
  5349	040100	263 17 0 00 000000 		RTN				; return
  5350
  5351					;#********************************************************************
  5352					; RRDBF - Read a receive buffer location (AC1 contains data)
  5353					;#********************************************************************
  5354
  5355	040101	200 01 0 00 125240 	RRDBF:	MOVE	1,[-7,,7750]		; set up AOBJN word
  5356	040102	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  5357	040103	201 01 0 00 000004 		MOVEI	1,4			; get link control bits (RDBUFF)
  5358	040104	137 01 0 00 125241 		DPB	1,[POINT 6,DEPLIM+2,31]	; save it in microword
  5359	040105	201 01 0 00 037475 		MOVEI	1,DEPLIM		; set up microcode address
  5360	040106	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  5361	040107	255 00 0 00 000000 		JFCL				; ignore error
  5362	040110	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  5363	040111	242 01 0 00 000001 		LSH	1,1			; position correctly
  5364	040112	260 17 0 00 040065*		GO	LDRAR			; load the RAR
  5365	040113	201 01 0 00 000010 		MOVEI	1,MPRUN			; start it up
  5366	040114	260 17 0 00 040071*		GO	LDCSR			; write to CSR register
  5367	040115	201 01 0 00 200000 		MOVEI	1,TSTEBF		; set up to read EBUF data
  5368	040116	260 17 0 00 040114*		GO	LDCSR			; write to CSR register
  5369	040117	260 17 0 00 040072*		GO	RDEBUF			; read EBUF contents
  5370	040120	405 01 0 00 000377 		ANDI	1,377			; get rid of misc bits
  5371	040121	261 17 0 00 000001 		PUT	1			; save data
  5372	040122	200 01 0 00 125240 		MOVE	1,[-7,,7750]		; set up AOBJN word
  5373	040123	260 17 0 00 042752 		GO	RESCRM			; save the CRAM locations
  5374	040124	262 17 0 00 000001 		GET	1			; restore data
  5375	040125	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 126
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0289

  5376
  5377					;#********************************************************************
  5378					; WRTPLI - Deposit PLI (AC1,2 contain Control/Data bits)
  5379					;#********************************************************************
  5380
  5381	040126	261 17 0 00 000000 	WRTPLI:	RPUT	(0,1,2)			; save AC's
  5382
  5383	040131	200 01 0 00 125235 		MOVE	1,[-4,,7750]		; set up AOBJN word
  5384	040132	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  5385	040133	200 00 0 17 777777 		MOVE	-1(P)			; get link control bits
  5386	040134	137 00 0 00 125236 		DPB	[POINT 6,DDPLM2,31]	; save link control bits
  5387	040135	200 00 0 17 000000 		MOVE	(P)			; get PLI data bits
  5388	040136	137 00 0 00 125237 		DPB	[POINT 10,DDPLIM,35]	; save it in microword
  5389	040137	201 01 0 00 037367 		MOVEI	1,DDPLIM		; set up microcode address
  5390	040140	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  5391	040141	255 00 0 00 000000 		JFCL				; ignore error
  5392	040142	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  5393	040143	242 01 0 00 000001 		LSH	1,1			; position correctly
  5394	040144	260 17 0 00 040112*		GO	LDRAR			; load the RAR
  5395	040145	201 01 0 00 000010 		MOVEI	1,MPRUN			; set up initial data
  5396	040146	260 17 0 00 040116*		GO	LDCSR			; start the port
  5397	040147	400 01 0 00 000000 		SETZ	1,			; clear AC1
  5398	040150	260 17 0 00 040146*		GO	LDCSR			; stop the port
  5399	040151	200 01 0 00 125235 		MOVE	1,[-4,,7750]		; set up AOBJN word
  5400	040152	260 17 0 00 042752 		GO	RESCRM			; restore the CRAM locations
  5401	040153	262 17 0 00 000002 		RGET	(2,1,0)			; restore AC's
  5402
  5403	040156	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 127
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0290

  5404
  5405					;#********************************************************************
  5406					;* DENEXT - Examine next
  5407					;#********************************************************************
  5408
  5409	040157	402 00 0 00 037421*	DENEXT:	SETZM	ARGUM			; default to repeat count
  5410	040160	350 00 0 00 040157*		AOS	ARGUM			;   of 1
  5411	040161	200 01 0 00 125772 		MOVE	1,[FMSGCD (ENEXT repcount <CR> or ENEXT <CR>)]
  5412	040162	260 17 0 00 037003*		GO	.DARG			; get repeat count
  5413	040163	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5414	040164	255 00 0 00 000000 		 JFCL				; no argument given
  5415	040165	200 00 0 00 040160*		MOVE	ARGUM			; get argument
  5416
  5417					; Do the examine
  5418
  5419	040166	476 00 0 00 134174'	DENE0:	SETOM	MULFLG			; set 'multiple examine' flag
  5420	040167	200 00 0 00 040165*		MOVE	ARGUM			; get argument
  5421	040170	307 00 0 00 000001 		CAIG	1			; only one more repetition?
  5422	040171	402 00 0 00 134174'		SETZM	MULFLG			; yes - clear 'multiple examine' flag
  5423	040172	200 01 0 00 134152'		MOVE	1,DFLAG			; get last operation done
  5424	040173	554 00 0 01 040204 		HLRZ	DETAB(1)		; get new value of DFLAG
  5425	040174	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  5426	040175	550 02 0 01 040204 		HRRZ	2,DETAB(1)		; get dispatch address
  5427	040176	260 17 0 02 000000 		GO	(2)			; dispatch
  5428	040177	336 00 0 00 134143'		SKIPN	ALTF			; altmode typed?
  5429	040200	377 00 0 00 040167*		SOSG	ARGUM			; repeat count exhausted?
  5430	040201	263 17 0 00 000000 		RTN				; yes - exit
  5431	040202	402 00 0 00 134175'		SETZM	MULINI			; clear 'initial examine' flag
  5432	040203	254 00 0 00 040166 		JRST	DENE0			; no - loop till done
  5433
  5434					; Dispatch table
  5435
  5436	040204	000000	040222		DETAB:	0,,DENEX0			; ECRAM
  5437	040205	000000	040222			0,,DENEX0			; DCRAM
  5438	040206	000000	040222			0,,DENEX0			; BCRAM
  5439	040207	000000	040222			0,,DENEX0			; ACRAM
  5440	040210	000000	040222			0,,DENEX0			; ZCRAM
  5441	040211	000005	040222			5,,DENEX0			; LCRAM
  5442	040212	000006	040226			6,,DENEX1			; E2901
  5443	040213	000006	040226			6,,DENEX1			; D2901
  5444	040214	000006	040226			6,,DENEX1			; Z2901
  5445	040215	000011	040232			9,,DENEX2			; ELOCS
  5446	040216	000011	040232			9,,DENEX2			; DLOCS
  5447	040217	000011	040232			9,,DENEX2			; ZLOCS
  5448	040220	000015	040236			^D13,,DENEX3			; DPLI
  5449	040221	000015	040236			^D13,,DENEX3			; EPLI
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 128
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0291

  5450
  5451					; To handle CRAM examine ...
  5452
  5453	040222	200 00 0 00 035611 	DENEX0:	MOVE	ANEXT			; get address
  5454	040223	202 00 0 00 035603 		MOVEM	CRAMTO			; set up 'to' and 'from'
  5455	040224	202 00 0 00 035602 		MOVEM	CRAMFR			;   addresses
  5456	040225	254 00 0 00 035562 		PJRST	DCOM0			; go handle
  5457
  5458					; To handle 2901 registers
  5459
  5460	040226	200 00 0 00 035611 	DENEX1:	MOVE	ANEXT			; get register number
  5461	040227	202 00 0 00 134217'		MOVEM	RALUB			; save in 'from' location
  5462	040230	202 00 0 00 134220'		MOVEM	RALUE			; save in 'to' location
  5463	040231	254 00 0 00 036325 		PJRST	DEALU0			; go handle
  5464
  5465					; To handle local storage
  5466
  5467	040232	200 00 0 00 035611 	DENEX2:	MOVE	ANEXT			; get address
  5468	040233	202 00 0 00 134223'		MOVEM	RLOCB			; save in 'from' location
  5469	040234	202 00 0 00 134224'		MOVEM	RLOCE			; save in 'to' location
  5470	040235	254 00 0 00 036631 		PJRST	DELOC0			; go handle
  5471
  5472					; To handle PLI registers
  5473
  5474	040236	200 00 0 00 035611 	DENEX3:	MOVE	ANEXT			; get register number
  5475	040237	202 00 0 00 037516 		MOVEM	PLIREP			; save in argument location
  5476	040240	254 00 0 00 037425 		PJRST	DEPLI0			; go handle
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 129
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0292

  5477
  5478					;#********************************************************************
  5479					;* DDNEXT - Deposit next
  5480					;#********************************************************************
  5481
  5482	040241	200 01 0 00 134152'	DDNEXT:	MOVE	1,DFLAG			; get last operation done
  5483	040242	554 00 0 01 040246 		HLRZ	DDTAB(1)		; get new value of DFLAG
  5484	040243	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  5485	040244	550 02 0 01 040246 		HRRZ	2,DDTAB(1)		; get dispatch address
  5486	040245	254 00 0 02 000000 		JRST	(2)			; dispatch
  5487
  5488					; Dispatch table
  5489
  5490	040246	000001	040267		DDTAB:	1,,DDNEX0			; ECRAM
  5491	040247	000001	040267			1,,DDNEX0			; DCRAM
  5492	040250	000002	040267			2,,DDNEX0			; BCRAM
  5493	040251	000003	040267			3,,DDNEX0			; ACRAM
  5494	040252	000003	040267			3,,DDNEX0			; ZCRAM
  5495	040253	000003	040267			3,,DDNEX0			; LCRAM
  5496	040254	000007	040276			7,,DDNEX1			; E2901
  5497	040255	000007	040276			7,,DDNEX1			; D2901
  5498	040256	000007	040276			7,,DDNEX1			; Z2901
  5499	040257	000012	040303			^D10,,DDNEX2			; ELOCS
  5500	040260	000012	040303			^D10,,DDNEX2			; DLOCS
  5501	040261	000012	040303			^D10,,DDNEX2			; ZLOCS
  5502	040262	000014	040310			^D12,,DDNEX3			; DPLI
  5503	040263	000014	040310			^D12,,DDNEX3			; EPLI
  5504	040264	000016	040313			^D14,,DDNEX4			; DEPPTT
  5505	040265	000017	040316			^D15,,DDNEX5			; DEPMUL
  5506	040266	000020	040321			^D16,,DDNEX6			; DEPPAK
  5507	
  5508					; To handle CRAM deposit ...
  5509
  5510	040267	200 01 0 00 125776 	DDNEX0:	MOVE	1,[FMSGCD (DNEXT <CR>)]
  5511	040270	260 17 0 00 037527*		GO	CHKARG			; check for argument
  5512	040271	263 17 0 00 000000 		RTN				; error - exit
  5513	040272	200 00 0 00 035611 		MOVE	ANEXT			; get address
  5514	040273	202 00 0 00 035603 		MOVEM	CRAMTO			; set up 'to' and 'from'
  5515	040274	202 00 0 00 035602 		MOVEM	CRAMFR			;   addresses
  5516	040275	254 00 0 00 035562 		PJRST	DCOM0			; go handle
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 130
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0293

  5517
  5518					; To handle 2901 registers
  5519
  5520	040276	200 00 0 00 035611 	DDNEX1:	MOVE	ANEXT			; get register number
  5521	040277	202 00 0 00 134217'		MOVEM	RALUB			; save in 'from' location
  5522	040300	202 00 0 00 134220'		MOVEM	RALUE			; save in 'to' location
  5523	040301	202 00 0 00 040200*		MOVEM	ARGUM			; save it
  5524	040302	254 00 0 00 036416 		PJRST	DDALU0			; go handle
  5525
  5526					; To handle local storage
  5527
  5528	040303	200 00 0 00 035611 	DDNEX2:	MOVE	ANEXT			; get address
  5529	040304	202 00 0 00 134223'		MOVEM	RLOCB			; save in 'from' location
  5530	040305	202 00 0 00 134224'		MOVEM	RLOCE			; save in 'to' location
  5531	040306	202 00 0 00 040301*		MOVEM	ARGUM			; save it
  5532	040307	254 00 0 00 036717 		PJRST	DDLOC0			; go handle
  5533
  5534					; To handle PLI registers
  5535
  5536	040310	200 00 0 00 035611 	DDNEX3:	MOVE	ANEXT			; get register number
  5537	040311	202 00 0 00 040306*		MOVEM	ARGUM			; save in argument location
  5538	040312	254 00 0 00 037320 		PJRST	DDPLI0			; go handle
  5539
  5540					; To handle DEPPTT
  5541
  5542	040313	200 00 0 00 035611 	DDNEX4:	MOVE	ANEXT			; get location
  5543	040314	202 00 0 00 040311*		MOVEM	ARGUM			; save in argument location
  5544	040315	254 00 0 00 040330 		PJRST	DDPPT0			; go handle
  5545
  5546					; To handle DEPMUL
  5547
  5548	040316	200 00 0 00 035611 	DDNEX5:	MOVE	ANEXT			; get location
  5549	040317	202 00 0 00 040314*		MOVEM	ARGUM			; save in argument location
  5550	040320	254 00 0 00 040353 		PJRST	DDPMU0			; go handle
  5551
  5552					; To handle DEPPAK
  5553
  5554	040321	200 00 0 00 035611 	DDNEX6:	MOVE	ANEXT			; get location
  5555	040322	202 00 0 00 040317*		MOVEM	ARGUM			; save in argument location
  5556	040323	254 00 0 00 040376 		PJRST	DDPPA0			; go handle
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 131
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0294

  5557
  5558					;#********************************************************************
  5559					;* DDPPTT - Deposit into PTT table
  5560					;
  5561					; Format:  DEPPTT adr,data
  5562					;#********************************************************************
  5563
  5564	040324	200 01 0 00 126005 	DDPPTT:	MOVE	1,[FMSGCD <DEPPTT offset,data (CR)>]
  5565	040325	260 17 0 00 040162*		GO	.DARG			; get address
  5566	040326	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5567						 JRST	[FMSGCD	<? Missing argument>
  5568							 GO	FIOFF
  5569	040327	254 00 0 00 117722 			 RTN]
  5570	040330	200 02 0 00 040322*	DDPPT0:	MOVE	2,ARGUM			; get argument
  5571	040331	301 02 0 00 000000 		CAIL	2,0			; in range 0-47?
  5572	040332	303 02 0 00 000047 		CAILE	2,47
  5573						JRST	[FMSGCD	<? Range of PTT locations is 0-47>
  5574							 GO	FIOFF
  5575	040333	254 00 0 00 126016 			 RTN]
  5576	040334	210 01 0 00 126005 		MOVN	1,[FMSGCD <DEPPTT offset,data (CR)>]
  5577	040335	260 17 0 00 037416*		GO	.OARG			; get data
  5578	040336	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5579						 JRST	[FMSGCD	<? Missing argument>
  5580							 GO	FIOFF
  5581	040337	254 00 0 00 117722 			 RTN]
  5582
  5583					; Do the deposit
  5584
  5585	040340	200 00 0 00 040330*		MOVE	ARGUM			; get argument
  5586	040341	202 00 0 02 105000 		MOVEM	PTABLE(2)		; save the data
  5587	040342	202 02 0 00 035611 		MOVEM	2,ANEXT			; save location
  5588	040343	350 00 0 00 035611 		AOS	ANEXT			; point to next location
  5589	040344	201 00 0 00 000016 		MOVEI	^D14			; get DEPMUL flag
  5590	040345	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  5591	040346	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 132
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0295

  5592
  5593					;#********************************************************************
  5594					;* DDPMUL - Deposit into Multicast table
  5595					;
  5596					; Format:  DEPMUL adr,data
  5597					;#********************************************************************
  5598
  5599	040347	200 01 0 00 126027 	DDPMUL:	MOVE	1,[FMSGCD <DEPMUL offset,data (CR)>]
  5600	040350	260 17 0 00 040325*		GO	.DARG			; get address
  5601	040351	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5602						 JRST	[FMSGCD	<? Missing argument>
  5603							 GO	FIOFF
  5604	040352	254 00 0 00 117722 			 RTN]
  5605	040353	200 02 0 00 040340*	DDPMU0:	MOVE	2,ARGUM			; get argument
  5606	040354	301 02 0 00 000000 		CAIL	2,0			; in range 0-17?
  5607	040355	303 02 0 00 000017 		CAILE	2,17
  5608						JRST	[FMSGCD	<? Range of Multi-cast locations is 0-17>
  5609							 GO	FIOFF
  5610	040356	254 00 0 00 126041 			 RTN]
  5611	040357	210 01 0 00 126027 		MOVN	1,[FMSGCD <DEPMUL offset,data (CR)>]
  5612	040360	260 17 0 00 040335*		GO	.OARG			; get data
  5613	040361	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5614						 JRST	[FMSGCD	<? Missing argument>
  5615							 GO	FIOFF
  5616	040362	254 00 0 00 117722 			 RTN]
  5617
  5618					; Do the deposit
  5619
  5620	040363	200 00 0 00 040353*		MOVE	ARGUM			; get argument
  5621	040364	202 00 0 02 115320 		MOVEM	MTABLE(2)		; save the data
  5622	040365	202 02 0 00 035611 		MOVEM	2,ANEXT			; save location
  5623	040366	350 00 0 00 035611 		AOS	ANEXT			; point to next location
  5624	040367	201 00 0 00 000017 		MOVEI	^D15			; get DEPMUL flag
  5625	040370	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  5626	040371	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 133
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0296

  5627
  5628					;#********************************************************************
  5629					;* DDPPAK - Deposit into packet
  5630					;
  5631					; Format:  DEPPAK adr,data
  5632					;#********************************************************************
  5633
  5634	040372	200 01 0 00 126052 	DDPPAK:	MOVE	1,[FMSGCD <DEPPAK offset,data (CR)>]
  5635	040373	260 17 0 00 040350*		GO	.DARG			; get address
  5636	040374	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5637						 JRST	[FMSGCD	<? Missing argument>
  5638							 GO	FIOFF
  5639	040375	254 00 0 00 117722 			 RTN]
  5640	040376	200 02 0 00 040363*	DDPPA0:	MOVE	2,ARGUM			; get argument
  5641	040377	301 02 0 00 000000 		CAIL	2,0			; in range 0-99.?
  5642	040400	303 02 0 00 000143 		CAILE	2,^D99
  5643						JRST	[FMSGCD	<? Range of PACKET locations is 0-99.>
  5644							 GO	FIOFF
  5645	040401	254 00 0 00 126064 			 RTN]
  5646	040402	210 01 0 00 126052 		MOVN	1,[FMSGCD <DEPPAK offset,data (CR)>]
  5647	040403	260 17 0 00 040360*		GO	.OARG			; get data
  5648	040404	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5649						 JRST	[FMSGCD	<? Missing argument>
  5650							 GO	FIOFF
  5651	040405	254 00 0 00 117722 			 RTN]
  5652
  5653					; Do the deposit
  5654
  5655	040406	200 00 0 00 040376*		MOVE	ARGUM			; get argument
  5656	040407	202 00 0 02 072114 		MOVEM	PACKET(2)		; save the data
  5657	040410	202 02 0 00 035611 		MOVEM	2,ANEXT			; save location
  5658	040411	350 00 0 00 035611 		AOS	ANEXT			; point to next location
  5659	040412	201 00 0 00 000020 		MOVEI	^D16			; get DEPPAK flag
  5660	040413	202 00 0 00 134152'		MOVEM	DFLAG			; save it
  5661	040414	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 134
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0297

  5662
  5663					;#********************************************************************
  5664					;* DESTAK - examine 2910 stack
  5665					;#********************************************************************
  5666
  5667	040415	200 01 0 00 126073 	DESTAK:	MOVE	1,[FMSGCD (ESTACK <CR>)]
  5668	040416	260 17 0 00 040270*		GO	CHKARG			; check for argument
  5669	040417	263 17 0 00 000000 		RTN				; error - exit
  5670	040420	200 01 0 00 125020 	DEBSTK:	MOVE	1,[-1,,7750]		; set up AOBJN word
  5671	040421	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  5672	040422	201 01 0 00 040452 		MOVEI	1,DESTKM		; set up microcode address
  5673	040423	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  5674	040424	255 00 0 00 000000 		JFCL				; ignore error
  5675
  5676					; Do the task
  5677
  5678	040425	260 17 0 00 037662*		GO	ISTOP			; stop the port
  5679	040426	037 00 0 00 126074 		TMSGC	<2910 Stack:>
  5680	040427	037 00 0 00 126077 		TMSGC	< Location   Contents (addr)>
  5681	040430	474 04 0 00 000000 		SETO	4,			; initialize location pointer
  5682	040431	350 00 0 00 000004 	DESTA0:	AOS	4			; point to next location
  5683	040432	303 04 0 00 000004 		CAILE	4,4			; done yet?
  5684	040433	254 00 0 00 040446 		JRST	DESTAX			; yes - exit
  5685	040434	402 00 0 00 035416*		SETZM	SDATA			; get initial CSR data
  5686	040435	201 00 0 00 007750 		MOVEI	7750			; set up next address
  5687	040436	202 00 0 00 035373*		MOVEM	SNEXT			;   for IPASST
  5688	040437	260 17 0 00 034057*		GO	IPASST			; single step once
  5689						 JRST	[FMSGCD	<? Error accessing CSR register>
  5690							 GO	FIOFF
  5691	040440	254 00 0 00 126105 			 JRST	DESTAY]
  5692						 JRST	[FMSGCD	<? Port not stopped>
  5693							 GO	FIOFF
  5694	040441	254 00 0 00 126110 			 JRST	DESTAY]
  5695	040442	255 00 0 00 000000 		 JFCL				; error bits set in CSR
  5696						XCT	[TMSGC	<   Top  >
  5697							 TMSGC	<    -1  >
  5698							 TMSGC	<    -2  >
  5699							 TMSGC	<    -3  >
  5700	040443	256 00 0 04 126132 			 TMSGC	<    -4  >](4)
  5701	040444	001 12 0 00 040436*		PNTOCC	12,SNEXT		; print address
  5702	040445	254 00 0 00 040431 		JRST	DESTA0			; loop till done
  5703
  5704					; Restore CRAM location/exit
  5705
  5706	040446	037 00 0 00 030242 	DESTAX:	PCRL
  5707	040447	200 01 0 00 125020 	DESTAY:	MOVE	1,[-1,,7750]		; set up AOBJN word
  5708	040450	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  5709	040451	263 17 0 00 000000 		RTN				; return
  5710
  5711					; Microcode
  5712
  5713	040452	775000	000000		DESTKM:	MWORD	<ADDR=7750,CRTN,D=1>	; 7750
  5714	040453	001000	000240
  5715	040454	777777	777777			-1
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 135
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0298

  5716
  5717					;#********************************************************************
  5718					;* DBREAK - Set breakpoint
  5719					;
  5720					; A breakpoint is set by reading the particular CRAM location  and
  5721					; rewriting it with bad parity.  Nothing can be done at the break-
  5722					; point except read the CSR register.
  5723					;#********************************************************************
  5724
  5725					; First check for any argument
  5726
  5727	040455	336 00 0 00 037132*	DBREAK:	SKIPN	ARGFLG			; argument given?
  5728						JRST	[FMSGCD	<? Missing argument>
  5729							 GO	FIOFF
  5730	040456	254 00 0 00 117722 			 RTN]
  5731
  5732					; Obtain argument
  5733
  5734	040457	200 01 0 00 126145 	DBREA0:	MOVE	1,[FMSGCD <BREAK addr,addr,... (CR)>]
  5735	040460	260 17 0 00 040403*		GO	.OARG			; get argument
  5736	040461	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5737	040462	263 17 0 00 000000 		 RTN				; done - no more arguments
  5738	040463	331 01 0 00 040406*		SKIPL	1,ARGUM			; argument out of range?
  5739	040464	303 01 0 00 007777 		CAILE	1,7777			;   (0-7777)
  5740						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  5741							 GO	FIOFF
  5742	040465	254 00 0 00 122327 			 RTN]
  5743
  5744					; Then ensure the port is stopped
  5745
  5746	040466	260 17 0 00 040425*		GO	ISTOP			; stop the port
  5747
  5748					; Now obtain CRAM data and give it bad parity
  5749
  5750	040467	202 01 0 00 035604 		MOVEM	1,CADDR			; set up address to load
  5751	040470	476 00 0 00 035605 		SETOM	CWORDL			; initialize left half
  5752	040471	476 00 0 00 035606 		SETOM	CWORDR			; initialize right half
  5753	040472	260 17 0 00 036263 		GO	DRCRAM			; read the data
  5754	040473	261 17 0 00 000001 		PUT	1			; save AC1
  5755	040474	474 01 0 00 000000 		SETO	1,			; set 'force bad parity' flag
  5756	040475	200 02 0 00 035605 		MOVE	2,CWORDL		; get left half
  5757	040476	200 03 0 00 035606 		MOVE	3,CWORDR		; get right half
  5758	040477	260 17 0 00 042551 		GO	CALPAR			; insert parity
  5759	040500	202 02 0 00 035605 		MOVEM	2,CWORDL		; save left half
  5760	040501	202 03 0 00 035606 		MOVEM	3,CWORDR		; save right half
  5761	040502	262 17 0 00 000001 		GET	1			; restore AC1
  5762	040503	261 17 0 00 033670 		PUT	PARFLG			; save 'calculate parity' flag
  5763	040504	402 00 0 00 033670 		SETZM	PARFLG			; clear 'calculate parity' flag
  5764	040505	260 17 0 00 036231 		GO	DWCRAM			; load CRAM data (now with bad parity)
  5765	040506	262 17 0 00 033670 		GET	PARFLG			; restore 'calculate parity' flag
  5766	040507	254 00 0 00 040457 		JRST	DBREA0			; get next address
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 136
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0299

  5767
  5768					;#********************************************************************
  5769					;* DRBRK - Remove breakpoint
  5770					;#********************************************************************
  5771
  5772					; First check for any argument
  5773
  5774	040510	336 00 0 00 040455*	DRBRK:	SKIPN	ARGFLG			; argument given?
  5775						JRST	[FMSGCD	<? Missing argument>
  5776							 GO	FIOFF
  5777	040511	254 00 0 00 117722 			 RTN]
  5778
  5779					; Obtain argument
  5780
  5781	040512	200 01 0 00 126154 	DRBR0:	MOVE	1,[FMSGCD <RBREAK addr,addr,... (CR)>]
  5782	040513	260 17 0 00 040460*		GO	.OARG			; get argument
  5783	040514	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5784	040515	263 17 0 00 000000 		 RTN				; done - no more arguments
  5785	040516	331 01 0 00 040463*		SKIPL	1,ARGUM			; argument out of range?
  5786	040517	303 01 0 00 007777 		CAILE	1,7777			;   (0-7777)
  5787						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  5788							 GO	FIOFF
  5789	040520	254 00 0 00 122327 			 RTN]
  5790
  5791					; Then ensure the port is stopped
  5792
  5793	040521	260 17 0 00 040466*		GO	ISTOP			; stop the port
  5794
  5795					; Now obtain CRAM data and load back into CRAM with good parity
  5796
  5797	040522	202 01 0 00 035604 		MOVEM	1,CADDR			; set up address to load
  5798	040523	476 00 0 00 035605 		SETOM	CWORDL			; initialize left half
  5799	040524	476 00 0 00 035606 		SETOM	CWORDR			; initialize right half
  5800	040525	260 17 0 00 036263 		GO	DRCRAM			; read the data
  5801	040526	261 17 0 00 033670 		PUT	PARFLG			; save 'calculate parity' flag
  5802	040527	476 00 0 00 033670 		SETOM	PARFLG			; set 'calculate parity' flag
  5803	040530	260 17 0 00 036231 		GO	DWCRAM			; load CRAM data (now with good parity)
  5804	040531	262 17 0 00 033670 		GET	PARFLG			; restore 'calculate parity' flag
  5805	040532	254 00 0 00 040512 		JRST	DRBR0			; get next address
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 137
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0300

  5806
  5807					;#********************************************************************
  5808					;* DCBRK - Clear all breakpoints 
  5809					;
  5810					; If arguments are given, they are assumed to the the locations between
  5811					; which all breakpoints are to be removed.
  5812					;#********************************************************************
  5813
  5814					; Start to process the arguments typed - both should be CRAM
  5815					; addresses in octal.
  5816
  5817	040533	400 05 0 00 000000 	DCBRK:	SETZ	5,			; init range of addresses
  5818	040534	201 06 0 00 007777 		MOVEI	6,7777			;   to 0-7777
  5819
  5820					; Get first address
  5821
  5822	040535	200 01 0 00 126163 		MOVE	1,[FMSGCD <CBREAK addr1,addr2 (CR)>]
  5823	040536	260 17 0 00 040513*		GO	.OARG			; get first address
  5824	040537	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5825	040540	254 00 0 00 040552 		 JRST	DCBR0			; no arguments given - continue
  5826	040541	200 00 0 00 040516*		MOVE	ARGUM			; get argument
  5827	040542	202 00 0 00 000005 		MOVEM	5			; save in 'from' location
  5828	040543	202 00 0 00 000006 		MOVEM	6			; save in 'to' location
  5829
  5830					; Get 2nd address
  5831
  5832	040544	210 01 0 00 126163 		MOVN	1,[FMSGCD <CBREAK addr1,addr2 (CR)>]
  5833	040545	260 17 0 00 040536*		GO	.OARG			; get first address
  5834	040546	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5835	040547	254 00 0 00 040552 		 JRST	DCBR0			; no arguments given - continue
  5836	040550	200 00 0 00 040541*		MOVE	ARGUM			; get argument
  5837	040551	202 00 0 00 000006 		MOVEM	6			; save in 'to' location
  5838
  5839					; Now range check the arguments
  5840
  5841	040552	331 00 0 00 000005 	DCBR0:	SKIPL	5			; 1st argument in range?
  5842	040553	303 05 0 00 007777 		CAILE	5,7777
  5843						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  5844							 GO	FIOFF
  5845	040554	254 00 0 00 122327 			 RTN]
  5846	040555	331 01 0 00 000006 		SKIPL	1,6			; 2nd argument in range?
  5847	040556	303 06 0 00 007777 		CAILE	6,7777
  5848						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  5849							 GO	FIOFF
  5850	040557	254 00 0 00 122327 			 RTN]
  5851	040560	274 01 0 00 000005 		SUB	1,5			; see if range ok
  5852						JUMPL	1,[FMSGCD <? Range nonsensical>
  5853							   GO	FIOFF
  5854	040561	321 01 0 00 122563 			   RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 138
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0301

  5855
  5856					; Then ensure the port is stopped
  5857
  5858	040562	260 17 0 00 040521*		GO	ISTOP			; stop the port
  5859
  5860					; Now obtain CRAM data and load back into CRAM with good parity
  5861
  5862	040563	202 05 0 00 035604 	DCBR1:	MOVEM	5,CADDR			; set up address to load
  5863	040564	476 00 0 00 035605 		SETOM	CWORDL			; initialize left half
  5864	040565	476 00 0 00 035606 		SETOM	CWORDR			; initialize right half
  5865	040566	260 17 0 00 036263 		GO	DRCRAM			; read the data
  5866	040567	261 17 0 00 033670 		PUT	PARFLG			; save 'calculate parity' flag
  5867	040570	476 00 0 00 033670 		SETOM	PARFLG			; set 'calculate parity' flag
  5868	040571	260 17 0 00 036231 		GO	DWCRAM			; load CRAM data (now with good parity)
  5869	040572	262 17 0 00 033670 		GET	PARFLG			; restore 'calculate parity' flag
  5870	040573	350 00 0 00 000005 		AOS	5			; increment 'from' address
  5871	040574	317 05 0 00 000006 		CAMG	5,6			; exceed 'to' address?
  5872	040575	254 00 0 00 040563 		JRST	DCBR1			; no - get next address
  5873	040576	263 17 0 00 000000 		RTN				; yes - exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 139
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0302

  5874
  5875					;#********************************************************************
  5876					;* DLBRK - List breakpoints
  5877					;
  5878					; If arguments are given, they are assumed to be the locations between
  5879					; which all breakpoints are to be listed.
  5880					;#********************************************************************
  5881
  5882					; Start to process the arguments typed - both should be CRAM
  5883					; addresses in octal.
  5884
  5885	040577	400 05 0 00 000000 	DLBRK:	SETZ	5,			; init range of addresses
  5886	040600	201 06 0 00 007777 		MOVEI	6,7777			;   to 0-7777
  5887
  5888					; Get first address
  5889
  5890	040601	200 01 0 00 126172 		MOVE	1,[FMSGCD <LBREAK addr1,addr2 (CR)>]
  5891	040602	260 17 0 00 040545*		GO	.OARG			; get first address
  5892	040603	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5893	040604	254 00 0 00 040616 		 JRST	DLBR0			; no arguments given - continue
  5894	040605	200 00 0 00 040550*		MOVE	ARGUM			; get argument
  5895	040606	202 00 0 00 000005 		MOVEM	5			; save in 'from' location
  5896	040607	202 00 0 00 000006 		MOVEM	6			; save in 'to' location
  5897
  5898					; Get 2nd address
  5899
  5900	040610	210 01 0 00 126172 		MOVN	1,[FMSGCD <LBREAK addr1,addr2 (CR)>]
  5901	040611	260 17 0 00 040602*		GO	.OARG			; get first address
  5902	040612	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5903	040613	254 00 0 00 040616 		 JRST	DLBR0			; no arguments given - continue
  5904	040614	200 00 0 00 040605*		MOVE	ARGUM			; get argument
  5905	040615	202 00 0 00 000006 		MOVEM	6			; save in 'to' location
  5906
  5907					; Now range check the arguments
  5908
  5909	040616	331 00 0 00 000005 	DLBR0:	SKIPL	5			; 1st argument in range?
  5910	040617	303 05 0 00 007777 		CAILE	5,7777
  5911						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  5912							 GO	FIOFF
  5913	040620	254 00 0 00 122327 			 RTN]
  5914	040621	331 01 0 00 000006 		SKIPL	1,6			; 2nd argument in range?
  5915	040622	303 06 0 00 007777 		CAILE	6,7777
  5916						JRST	[FMSGCD	<? Range of CRAM locations is 0000-7777>
  5917							 GO	FIOFF
  5918	040623	254 00 0 00 122327 			 RTN]
  5919	040624	274 01 0 00 000005 		SUB	1,5			; see if range ok
  5920						JUMPL	1,[FMSGCD <? Range nonsensical>
  5921							   GO	FIOFF
  5922	040625	321 01 0 00 122563 			   RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 140
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0303

  5923
  5924					; Then ensure the port is stopped
  5925
  5926	040626	260 17 0 00 040562*		GO	ISTOP			; stop the port
  5927	040627	200 07 0 00 125204 		MOVE	7,[-2]			; initialize breakpoint count
  5928	040630	037 00 0 00 126173 		TMSGC	<Breakpoints:  >
  5929
  5930					; Now obtain CRAM data and load back into CRAM with good parity
  5931
  5932	040631	202 05 0 00 035604 	DLBR1:	MOVEM	5,CADDR			; set up address to load
  5933	040632	476 00 0 00 035605 		SETOM	CWORDL			; initialize left half
  5934	040633	476 00 0 00 035606 		SETOM	CWORDR			; initialize right half
  5935	040634	260 17 0 00 036263 		GO	DRCRAM			; read the data
  5936	040635	400 01 0 00 000000 		SETZ	1,			; clear 'bad' parity flag
  5937	040636	200 02 0 00 035605 		MOVE	2,CWORDL		; get left word
  5938	040637	200 03 0 00 035606 		MOVE	3,CWORDR		; get right word
  5939	040640	260 17 0 00 042551 		GO	CALPAR			; calculate parity
  5940	040641	316 02 0 00 035605 		CAMN	2,CWORDL		; same as before?
  5941	040642	254 00 0 00 040650 		JRST	DLBR2			; yes - good parity
  5942
  5943					; Print location
  5944
  5945	040643	350 00 0 00 000007 		AOS	7			; next 5 characters
  5946	040644	303 07 0 00 000007 		CAILE	7,7			; done with line?
  5947						GO	[SETO	7,		; yes - init counter
  5948							 TMSGC	<              >
  5949	040645	260 17 0 00 126203 			 RTN]
  5950	040646	001 04 0 00 000005 		PNTOCC	4,5			; print address
  5951	040647	037 00 0 00 000040 		PSP				; print a space
  5952
  5953					; Increment to next location
  5954
  5955	040650	037 07 0 00 000003 	DLBR2:	TTALTM				; altmode key struck?
  5956	040651	334 00 0 00 000000 		SKIPA				; no - proceed
  5957	040652	254 00 0 00 040656 		JRST	DLBRX			; yes - exit
  5958	040653	350 00 0 00 000005 		AOS	5			; increment 'from' address
  5959	040654	317 05 0 00 000006 		CAMG	5,6			; exceed 'to' address?
  5960	040655	254 00 0 00 040631 		JRST	DLBR1			; no - get next address
  5961	040656	037 00 0 00 030242 	DLBRX:	PCRL				; yes - print blank line
  5962	040657	263 17 0 00 000000 		RTN				;   and exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 141
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0304

  5963
  5964					;#********************************************************************
  5965					;* DLOAD - Load microcode into CRAM from a test.
  5966					;#********************************************************************
  5967
  5968	040660	210 01 0 00 126212 	DLOAD:	MOVN	1,[FMSGCD (LOAD n <CR>)]
  5969	040661	260 17 0 00 040611*		GO	.OARG			; get argument
  5970	040662	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  5971						 JRST	[FMSGCD	<? Missing argument>
  5972							 GO	FIOFF
  5973	040663	254 00 0 00 117722 			 RTN]
  5974	040664	333 01 0 00 040614*		SKIPLE	1,ARGUM			; get argument - out of range
  5975	040665	303 01 0 00 000027 		CAILE	1,MAXTST		;   1-MAXTST?
  5976						JRST	[FMSGC	<? Test number out of range 1 - >
  5977							 MOVEI	MAXTST
  5978							 PNTOCF
  5979							 PCRLF
  5980							 GO	FIOFF
  5981	040666	254 00 0 00 126222 			 RTN]
  5982	040667	337 01 0 01 032070 		SKIPG	1,TSTMIC(1)		; get test microcode address
  5983						JRST	[FMSGCD <? Test specified does not have microcode>
  5984							 GO	FIOFF
  5985	040670	254 00 0 00 126241 			 RTN]
  5986	040671	260 17 0 00 040626*		GO	ISTOP			; stop the port
  5987	040672	260 17 0 00 064355 		GO	MLOADY			; load it
  5988	040673	255 00 0 00 000000 		 JFCL				; failed
  5989	040674	037 00 0 00 126244 		TMSGC	<[Number of CRAM locations loaded/verified = >
  5990	040675	200 00 0 00 134173'		MOVE	MLNUM			; get number of words loaded/verified
  5991	040676	037 15 0 00 000000 		PNTDEC	
  5992	040677	037 00 0 00 126256 		TMSGD	<.]>
  5993	040700	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 142
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0305

  5994
  5995					;#********************************************************************
  5996					;* DLIST - List microcode from test
  5997					;#********************************************************************
  5998
  5999	040701	210 01 0 00 126263 	DLIST:	MOVN	1,[FMSGCD (LIST n <CR>)]
  6000	040702	260 17 0 00 040661*		GO	.OARG			; get argument
  6001	040703	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  6002						 JRST	[FMSGCD	<? Missing argument>
  6003							 GO	FIOFF
  6004	040704	254 00 0 00 117722 			 RTN]
  6005	040705	333 01 0 00 040664*		SKIPLE	1,ARGUM			; get argument - out of range
  6006	040706	303 01 0 00 000027 		CAILE	1,MAXTST		;   1-MAXTST?
  6007						JRST	[FMSGC	<? Test number out of range 1 - >
  6008							 MOVEI	MAXTST
  6009							 PNTOCF
  6010							 PCRLF
  6011							 GO	FIOFF
  6012	040707	254 00 0 00 126222 			 RTN]
  6013	040710	337 01 0 01 032070 		SKIPG	1,TSTMIC(1)		; get test microcode address
  6014						JRST	[FMSGCD <? Test specified does not have microcode>
  6015							 GO	FIOFF
  6016	040711	254 00 0 00 126241 			 RTN]
  6017	040712	260 17 0 00 064625 		GO	MLIST			; list it
  6018	040713	263 17 0 00 000000 		RTN				; continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 143
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0306

  6019
  6020					;#********************************************************************
  6021					;* DFLOAD - Load microcode from file into CRAM
  6022					;#********************************************************************
  6023
  6024	040714	200 01 0 00 126267 	DFLOAD:	MOVE	1,[FMSGCD (FLOAD <CR>)]
  6025	040715	260 17 0 00 040416*		GO	CHKARG			; check for argument
  6026	040716	263 17 0 00 000000 		RTN				; error - exit
  6027	040717	476 00 0 00 044331 		SETOM	FFLAG			; set operator output flag
  6028	040720	260 17 0 00 044010 		GO	FLOADB			; load file into ucode buffer
  6029	040721	263 17 0 00 000000 		RTN				; error - exit
  6030
  6031					; Ensure the port is stopped
  6032
  6033	040722	260 17 0 00 040671*		GO	ISTOP			; stop the port
  6034	040723	400 01 0 00 000000 		SETZ	1,			; clear AC1
  6035	040724	260 17 0 00 040150*		GO	LDCSR			; clear CSR
  6036
  6037					; Check to see if it is already loaded
  6038
  6039	040725	200 00 0 00 044326 		MOVE	UNAME			; get microcode name desired
  6040	040726	316 00 0 00 044330 		CAMN	CNAME			; same as what is loaded?
  6041						GO	[TMSGC	<[>		; yes - print message
  6042							 MOVE	UNAME
  6043							 PNTSIX
  6044							 PNTCI	"."
  6045							 MOVE	UNAME+1
  6046							 PNTSIX
  6047							 TMSGD	< already loaded]>
  6048	040727	260 17 0 00 126274 			 RTN]
  6049
  6050					; Load microcode
  6051
  6052	040730	476 00 0 00 044330 		SETOM	CNAME			; ensure the microcode gets loaded
  6053	040731	260 17 0 00 044074 		GO	FLOADC			; load buffer into CRAM
  6054	040732	263 17 0 00 000000 		RTN				; error - return
  6055	040733	255 00 0 00 000000 		JFCL				; already loaded - return
  6056
  6057					; Verify microcode
  6058
  6059	040734	260 17 0 00 044152 		GO	FVERFC			; verify CRAM against buffer
  6060	040735	260 17 0 00 044231 		GO	FUERR			; print any errors
  6061	040736	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 144
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0307

  6062
  6063					;#********************************************************************
  6064					;* DFVERF - Verify microcode from file versus CRAM
  6065					;#********************************************************************
  6066
  6067	040737	200 01 0 00 126310 	DFVERF:	MOVE	1,[FMSGCD (FVERFY <CR>)]
  6068	040740	260 17 0 00 040715*		GO	CHKARG			; check for argument
  6069	040741	263 17 0 00 000000 		RTN				; error - exit
  6070	040742	476 00 0 00 044331 		SETOM	FFLAG			; set operator output flag
  6071	040743	260 17 0 00 044010 		GO	FLOADB			; load file into ucode buffer
  6072	040744	263 17 0 00 000000 		RTN				; error - exit
  6073
  6074					; Ensure the port is stopped
  6075
  6076	040745	260 17 0 00 040722*		GO	ISTOP			; stop the port
  6077	040746	400 01 0 00 000000 		SETZ	1,			; clear AC1
  6078	040747	260 17 0 00 040724*		GO	LDCSR			; clear CSR
  6079
  6080					; Now do the verify
  6081
  6082	040750	260 17 0 00 044152 	DFVER0:	GO	FVERFC			; verify CRAM against buffer
  6083	040751	260 17 0 00 044231 		GO	FUERR			; print any errors
  6084	040752	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 145
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0308

  6085
  6086					;#********************************************************************
  6087					;* DFLIST - List microcode in file
  6088					;#********************************************************************
  6089
  6090	040753	200 01 0 00 126314 	DFLIST:	MOVE	1,[FMSGCD (FLIST <CR>)]
  6091	040754	260 17 0 00 040740*		GO	CHKARG			; check for argument
  6092	040755	263 17 0 00 000000 		RTN				; error - exit
  6093	040756	476 00 0 00 044331 		SETOM	FFLAG			; set operator output flag
  6094	040757	260 17 0 00 044010 		GO	FLOADB			; load file into ucode buffer
  6095	040760	263 17 0 00 000000 		RTN				; error - exit
  6096	040761	037 00 0 00 124742 		TMSGC	<ADDR/ JUMP PAR OUT MGC SOR FUN DES CC RAM PA PB SK BUS CRY CTL  TM SP MK>
  6097	040762	200 03 0 00 044332 		MOVE	3,ULEN			; get length of ucode
  6098	040763	201 04 0 00 044331 		MOVEI	4,UCODE-2		; get address of ucode buffer
  6099	040764	361 03 0 00 041006 	DFLIS0:	SOJL	3,DFLISX		; done yet? yes - exit
  6100	040765	271 04 0 00 000002 		ADDI	4,2			; point to next microword entry
  6101	040766	120 01 0 04 000000 		DMOVE	1,(4)			; get microword entry
  6102	040767	135 00 0 00 126315 		LDB	[POINT 12,1,11]		; get CRAM address
  6103	040770	202 00 0 00 035604 		MOVEM	CADDR			; save it
  6104	040771	246 01 0 00 000006 		LSHC	1,6			; position correctly for 30 bits
  6105	040772	135 03 0 00 126316 		LDB	3,[POINT 30,2,29]	; get right 30 bits
  6106	040773	135 02 0 00 126317 		LDB	2,[POINT 30,1,35]	; get left 30 bits
  6107	040774	622 03 0 00 000002 		TRZE	3,2			; bit 59 set?
  6108	040775	660 03 0 00 000001 		TRO	3,1			; yes - set rightmost bit
  6109	040776	037 00 0 00 030242 		PCRL				; start a new line
  6110	040777	001 04 0 00 035604 		PNTOCC	4,CADDR			; print CRAM load address
  6111	041000	037 00 0 00 124736 		TMSG	</ >
  6112	041001	260 17 0 00 042433 		GO	PNTCRM			; print it
  6113	041002	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  6114	041003	254 00 0 00 041006 		JRST	DFLISX			; yes - exit
  6115	041004	037 07 0 00 000003 		TTALTM				; altmode key struck?
  6116	041005	254 00 0 00 040764 		JRST	DFLIS0			; no - loop till done
  6117
  6118	041006	037 00 0 00 030242 	DFLISX:	PCRL				; final CRLF
  6119	041007	263 17 0 00 000000 		RTN				; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 146
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0309

  6120
  6121					;#********************************************************************
  6122					;* DFEXAM - Examine microcode in file
  6123					;#********************************************************************
  6124
  6125	041010	200 01 0 00 126323 	DFEXAM:	MOVE	1,[FMSGCD (FEXAM <CR>)]
  6126	041011	260 17 0 00 040754*		GO	CHKARG			; check for argument
  6127	041012	263 17 0 00 000000 		RTN				; error - exit
  6128	041013	476 00 0 00 044331 		SETOM	FFLAG			; set operator output flag
  6129	041014	260 17 0 00 044010 		GO	FLOADB			; load file into ucode buffer
  6130	041015	263 17 0 00 000000 		RTN				; error - exit
  6131	041016	200 03 0 00 044332 		MOVE	3,ULEN			; get length of ucode
  6132	041017	201 04 0 00 044331 		MOVEI	4,UCODE-2		; get address of ucode buffer
  6133	041020	361 03 0 00 041043 	DFEXA0:	SOJL	3,DFEXAX		; done yet? yes - exit
  6134	041021	271 04 0 00 000002 		ADDI	4,2			; point to next microword entry
  6135	041022	120 01 0 04 000000 		DMOVE	1,(4)			; get microword entry
  6136	041023	135 00 0 00 126315 		LDB	[POINT 12,1,11]		; get CRAM address
  6137	041024	202 00 0 00 035604 		MOVEM	CADDR			; save it
  6138	041025	246 01 0 00 000006 		LSHC	1,6			; position correctly for 30 bits
  6139	041026	135 03 0 00 126316 		LDB	3,[POINT 30,2,29]	; get right 30 bits
  6140	041027	135 02 0 00 126317 		LDB	2,[POINT 30,1,35]	; get left 30 bits
  6141	041030	622 03 0 00 000002 		TRZE	3,2			; bit 59 set?
  6142	041031	660 03 0 00 000001 		TRO	3,1			; yes - set rightmost bit
  6143	041032	037 00 0 00 030242 		PCRL				; start a new line
  6144	041033	200 00 0 00 035604 		MOVE	CADDR			; get CRAM load address
  6145	041034	037 04 0 00 000000 		PNT4				; print it
  6146	041035	037 00 0 00 124736 		TMSG	</ >
  6147	041036	260 17 0 00 042527 		GO	PNTWD			; print it
  6148	041037	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  6149	041040	254 00 0 00 041043 		JRST	DFEXAX			; yes - exit
  6150	041041	037 07 0 00 000003 		TTALTM				; altmode key struck?
  6151	041042	254 00 0 00 041020 		JRST	DFEXA0			; no - loop till done
  6152
  6153	041043	037 00 0 00 030242 	DFEXAX:	PCRL				; final CRLF
  6154	041044	263 17 0 00 000000 		RTN				; exit
  6155
  6156
  6157					;#********************************************************************
  6158					;* DTRANS - Translate CSR bits to English
  6159					;#********************************************************************
  6160
  6161	041045	210 01 0 00 126331 	DTRANS:	MOVN	1,[FMSGCD (TRANSL data <CR>)]
  6162	041046	260 17 0 00 040702*		GO	.OARG			; get argument
  6163	041047	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  6164						 JRST	[FMSGCD	<? Missing argument>
  6165							 GO	FIOFF
  6166	041050	254 00 0 00 117722 			 RTN]
  6167	041051	200 01 0 00 040705*		MOVE	1,ARGUM			; get argument
  6168	041052	260 17 0 00 042605 		GO	CSRPNT			; print CSR data in English
  6169	041053	037 00 0 00 030242 		PCRL				; end of line
  6170	041054	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 147
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0310

  6171
  6172					;#********************************************************************
  6173					;* DCCODE - Print condition codes
  6174					;#********************************************************************
  6175
  6176	041055	200 01 0 00 126335 	DCCODE:	MOVE	1,[FMSGCD (CCODE <CR>)]
  6177	041056	260 17 0 00 041011*		GO	CHKARG			; check for argument
  6178	041057	263 17 0 00 000000 		RTN				; error - exit
  6179
  6180					; Save CRAM locations
  6181
  6182	041060	200 01 0 00 125235 		MOVE	1,[-4,,7750]		; set up AOBJN word
  6183	041061	260 17 0 00 042730 		GO	SAVCRM			; save the CRAM locations
  6184
  6185					; Loop on condition code
  6186
  6187	041062	474 07 0 00 000000 		SETO	7,			; initialize pointer
  6188	041063	350 00 0 00 000007 	DCCOD1:	AOS	7			; point to next condition code
  6189	041064	303 07 0 00 000017 		CAILE	7,17			; done yet?
  6190	041065	254 00 0 00 041107 		JRST	DCCOD2			; yes - go print results
  6191	041066	137 07 0 00 126336 		DPB	7,[POINT 4,CCMIC+3,23]	; no - set up microcode
  6192	041067	201 01 0 00 041173 		MOVEI	1,CCMIC			; set up microcode address
  6193	041070	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  6194	041071	255 00 0 00 000000 		JFCL				; ignore error
  6195	041072	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  6196	041073	242 01 0 00 000001 		LSH	1,1			; position correctly
  6197	041074	260 17 0 00 040144*		GO	LDRAR			; load the RAR
  6198	041075	201 01 0 00 000010 		MOVEI	1,MPRUN			; start it up
  6199	041076	260 17 0 00 040747*		GO	LDCSR			; write to CSR register
  6200	041077	201 01 0 00 040000 		MOVEI	1,SELLAR		; set up to read LAR
  6201	041100	260 17 0 00 041076*		GO	LDCSR			; stop the port
  6202	041101	260 17 0 00 037460*		GO	RDLAR			; read stopping address
  6203	041102	242 01 0 00 777777 		LSH	1,-1			; position correctly
  6204	041103	402 00 0 07 041153 		SETZM	CCTAB3(7)		; initialize result
  6205	041104	306 01 0 00 007753 		CAIN	1,7753			; was the cc set?
  6206	041105	476 00 0 07 041153 		SETOM	CCTAB3(7)		; yes - indicate such
  6207	041106	254 00 0 00 041063 		JRST	DCCOD1			; loop till done
  6208
  6209					; Print the results
  6210
  6211	041107	037 00 0 00 126337 	DCCOD2:	TMSGC	<CC On:  >
  6212	041110	474 07 0 00 000000 		SETO	7,			; initialize pointer
  6213	041111	350 00 0 00 000007 	DCCOD3:	AOS	7			; point to next entry
  6214	041112	303 07 0 00 000017 		CAILE	7,17			; done yet?
  6215	041113	254 00 0 00 041117 		JRST	DCCOD4			; yes - continue
  6216	041114	332 00 0 07 041153 		SKIPE	CCTAB3(7)		; no - cc on?
  6217	041115	256 00 0 07 041133 		XCT	CCTAB1(7)		; yes - print text
  6218	041116	254 00 0 00 041111 		JRST	DCCOD3
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 148
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0311

  6219
  6220	041117	037 00 0 00 126342 	DCCOD4:	TMSGC	<CC Off: >
  6221	041120	474 07 0 00 000000 		SETO	7,			; initialize pointer
  6222	041121	350 00 0 00 000007 	DCCOD5:	AOS	7			; point to next entry
  6223	041122	303 07 0 00 000017 		CAILE	7,17			; done yet?
  6224	041123	254 00 0 00 041127 		JRST	DCCOD6			; yes - continue
  6225	041124	336 00 0 07 041153 		SKIPN	CCTAB3(7)		; no - cc on?
  6226	041125	256 00 0 07 041133 		XCT	CCTAB1(7)		; yes - print text
  6227	041126	254 00 0 00 041121 		JRST	DCCOD5
  6228	041127	037 00 0 00 030242 	DCCOD6:	PCRL
  6229
  6230					; Restore CRAM locations and exit
  6231
  6232	041130	200 01 0 00 125235 		MOVE	1,[-4,,7750]		; set up AOBJN word
  6233	041131	260 17 0 00 042752 		GO	RESCRM			; restore CRAM data
  6234	041132	263 17 0 00 000000 		RTN				; return
  6235
  6236					; Tables
  6237
  6238	041133	037 00 0 00 126345 	CCTAB1:	TMSG	< CBAV>			; 0 - CCCBUSAVAIL
  6239	041134	037 00 0 00 126347 		TMSG	< GCSR>			; 1 - CCGRNTCSR
  6240	041135	037 00 0 00 126351 		TMSG	< FEQ0>			; 2 - CCFEQ0
  6241	041136	037 00 0 00 126353 		TMSG	< CSRC>			; 3 - CCCSRCHNG
  6242	041137	037 00 0 00 126355 		TMSG	< EBPE>			; 4 - CCEBPARERR
  6243	041140	037 00 0 00 126357 		TMSG	< RATN>			; 5 - CCRCVATTN
  6244	041141	037 00 0 00 126361 		TMSG	< EOFF>			; 6 - CCENDOFFRAME
  6245	041142	037 00 0 00 126363 		TMSG	< XATN>			; 7 - CCXMTRATTN
  6246	041143	037 00 0 00 126365 		TMSG	< ERQS>			; 10 - CCEBUSRQST
  6247	041144	037 00 0 00 126367 		TMSG	< IACT>			; 11 - CCINTRACTIVE
  6248	041145	037 00 0 00 126371 		TMSG	< MSGN>			; 12 - CCMBSIGN
  6249	041146	037 00 0 00 126373 		TMSG	< MVRP>			; 13 - CCMVRPARCHK
  6250	041147	037 00 0 00 126375 		TMSG	< CBPE>			; 14 - CCCBUSPARERR
  6251	041150	037 00 0 00 126377 		TMSG	< PLPE>			; 15 - CCPLIPARERR
  6252	041151	037 00 0 00 126401 		TMSG	< CHER>			; 16 - CCCHANERR
  6253	041152	037 00 0 00 126403 		TMSG	< CBLW>			; 17 - CCCBLSTWD
  6254
  6255	041153				CCTAB3:	BLOCK	^D16			; results
  6256
  6257					; Microcode
  6258
  6259	041173	775077	510000		CCMIC:	MWORD	<ADDR=7750,JMAP,J=7751,D=1> 	; 7750
  6260	041174	001000	000040
  6261	041175	775177	530000			MWORD	<CJP,J=7753,D=1,CENA>		; 7751
  6262	041176	001400	000060
  6263	041177	775277	520000			MWORD	<JMAP,J=7752,D=1>		; 7752
  6264	041200	001000	000040
  6265	041201	775377	530000			MWORD	<JMAP,J=7753,D=1>		; 7753
  6266	041202	001000	000040
  6267	041203	777777	777777			-1
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 149
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0312

  6268
  6269					;#********************************************************************
  6270					;* DFILLN - Fill CRAM with special data (J=PC+1,OPCode)
  6271					;#********************************************************************
  6272
  6273	041204	210 01 0 00 126415 	DFILLN:	MOVN	1,[FMSGCD <FILLNX number (2910 Op code 0-17)>]
  6274	041205	260 17 0 00 041046*		GO	.OARG			; get argument
  6275	041206	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  6276						 JRST	[FMSGCD	<? Missing argument>
  6277							 GO	FIOFF
  6278	041207	254 00 0 00 117722 			 RTN]
  6279	041210	260 17 0 00 040745*		GO	ISTOP			; stop the port
  6280	041211	200 01 0 00 041051*		MOVE	1,ARGUM			; get argument
  6281	041212	400 02 0 00 000000 		SETZ	2,			; initialize address
  6282	041213	402 00 0 00 035605 		SETZM	CWORDL			; initialize left half
  6283	041214	402 00 0 00 035606 		SETZM	CWORDR			; initialize right half
  6284	041215	202 02 0 00 035604 	DFILN0:	MOVEM	2,CADDR			; set up address
  6285	041216	350 00 0 00 000002 		AOS	2			; point to next address
  6286	041217	303 02 0 00 007777 		CAILE	2,7777			; at end yet?
  6287	041220	400 02 0 00 000000 		SETZ	2,			; yes - set back to zero
  6288	041221	137 02 0 00 124232 		DPB	2,[POINT 12,CWORDL,17]	; insert J field
  6289	041222	137 01 0 00 124304 		DPB	1,[POINT 4,CWORDR,31]	; insert CTL field
  6290	041223	260 17 0 00 036231 		GO	DWCRAM			; load it
  6291	041224	402 00 0 00 044330 		SETZM	CNAME			; clear 'CRAM loaded' ucode flag
  6292	041225	326 02 0 00 041215 		JUMPN	2,DFILN0		; loop till done
  6293	041226	037 00 0 00 126416 		TMSGCD	<[Number of CRAM locations loaded = 4096.]>
  6294	041227	263 17 0 00 000000 		RTN				; return
  6295
  6296
  6297					;#********************************************************************
  6298					;* DFILLP - Fill CRAM with special data (J=PC,OPCode)
  6299					;#********************************************************************
  6300
  6301	041230	210 01 0 00 126440 	DFILLP:	MOVN	1,[FMSGCD <FILLPC number (2910 Op code 0-17)>]
  6302	041231	260 17 0 00 041205*		GO	.OARG			; get argument
  6303	041232	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  6304						 JRST	[FMSGCD	<? Missing argument>
  6305							 GO	FIOFF
  6306	041233	254 00 0 00 117722 			 RTN]
  6307	041234	260 17 0 00 041210*		GO	ISTOP			; stop the port
  6308	041235	200 01 0 00 041211*		MOVE	1,ARGUM			; get argument
  6309	041236	476 00 0 00 035604 		SETOM	CADDR			; initialize address
  6310	041237	402 00 0 00 035605 		SETZM	CWORDL			; initialize left half
  6311	041240	402 00 0 00 035606 		SETZM	CWORDR			; initialize right half
  6312	041241	350 02 0 00 035604 	DFILP0:	AOS	2,CADDR			; set up address
  6313	041242	137 02 0 00 124232 		DPB	2,[POINT 12,CWORDL,17]	; insert J field
  6314	041243	137 01 0 00 124304 		DPB	1,[POINT 4,CWORDR,31]	; insert CTL field
  6315	041244	260 17 0 00 036231 		GO	DWCRAM			; load it
  6316	041245	402 00 0 00 044330 		SETZM	CNAME			; clear 'CRAM loaded' ucode flag
  6317	041246	307 02 0 00 007777 		CAIG	2,7777			; done yet?
  6318	041247	254 00 0 00 041241 		JRST	DFILP0			; no - loop till done
  6319	041250	037 00 0 00 126416 		TMSGCD	<[Number of CRAM locations loaded = 4096.]>
  6320	041251	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 150
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0313

  6321
  6322					;#********************************************************************
  6323					;* DCWPNT - Print CCW list
  6324					;#********************************************************************
  6325
  6326	041252	200 01 0 00 126445 	DCWPNT:	MOVE	1,[FMSGCD (CCWPNT <CR>)]
  6327	041253	260 17 0 00 041056*		GO	CHKARG			; check for argument
  6328	041254	263 17 0 00 000000 		RTN				; error - exit
  6329	041255	260 17 0 00 000000*		GO	CCWPNT			; print CCW list
  6330	041256	037 00 0 00 030242 		PCRL
  6331	041257	263 17 0 00 000000 		RTN				; return
  6332
  6333
  6334					;#********************************************************************
  6335					;* DLGPNT - Print logout data
  6336					;#********************************************************************
  6337
  6338	041260	200 01 0 00 126452 	DLGPNT:	MOVE	1,[FMSGCD (LOGPNT <CR>)]
  6339	041261	260 17 0 00 041253*		GO	CHKARG			; check for argument
  6340	041262	263 17 0 00 000000 		RTN				; error - exit
  6341	041263	260 17 0 00 000000*		GO	GETLOG			; get logout data to a buffer area
  6342	041264	260 17 0 00 000000*		GO	LOGPNT			; print channel logout data
  6343	041265	263 17 0 00 000000 		RTN				; return
  6344
  6345
  6346					;#********************************************************************
  6347					;* DSWIT - Switch complement commands
  6348					;#********************************************************************
  6349
  6350	041266	200 01 0 00 117772 	DSWIT:	MOVE	1,[FMSGCD (Switch Name <CR>)]
  6351	041267	260 17 0 00 041261*		GO	CHKARG			; check for argument
  6352	041270	263 17 0 00 000000 		RTN				; error - exit
  6353	041271	261 17 0 00 000001 		PUT	1			; save AC1
  6354	041272	200 01 0 00 031521*		MOVE	1,.CGOT			; get dispatch number
  6355	041273	275 01 0 00 000125 		SUBI	1,SWSTP			; normalize to 0..
  6356	041274	260 17 0 00 031523*		GO	SWCOM			; complement switch
  6357	041275	262 17 0 00 000001 		GET	1			; restore AC1
  6358	041276	263 17 0 00 000000 		RTN				; continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 151
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0314

  6359
  6360					;#********************************************************************
  6361					;* IPRINT - Print interrupt history
  6362					;#********************************************************************
  6363
  6364	041277	200 01 0 00 126457 	DIPRIN:	MOVE	1,[FMSGCD (IPRINT <CR>)]
  6365	041300	260 17 0 00 041267*		GO	CHKARG			; check for argument
  6366	041301	263 17 0 00 000000 		RTN				; error - exit
  6367	041302	261 17 0 00 000000 	IPRINT:	RPUT	(0,1,2)			; save AC's
  6368
  6369	041305	335 01 0 00 000000*	IPRIN0:	SKIPGE	1,INTNUM		; any interrupt yet?
  6370	041306	254 00 0 00 041312 		JRST	IPRINX
  6371	041307	260 17 0 00 041316 		GO	IPRINI			; yes - print the data
  6372	041310	037 07 0 00 000003 		TTALTM				; check for altmode typed
  6373	041311	254 00 0 00 041305 		JRST	IPRIN0			; no - keep looping
  6374	041312	262 17 0 00 000002 	IPRINX:	RGET	(2,1,0)			; yes - restore AC's
  6375
  6376	041315	263 17 0 00 000000 		RTN				; exit
  6377
  6378					; Print interrupt data
  6379
  6380	041316	370 01 0 00 041305*	IPRINI:	SOS	1,INTNUM		; point to previous interrupt
  6381	041317	303 01 0 00 000023 		CAILE	1,^D19			; overflow interrupt?
  6382	041320	201 01 0 00 000023 		MOVEI	1,^D19			; yes - limit to 20 interrupts
  6383	041321	202 01 0 00 041316*		MOVEM	1,INTNUM		; save number left
  6384	041322	037 00 0 00 126460 		TMSGC	<=====>
  6385	041323	550 02 0 01 000000*		HRRZ	2,INTTYP(1)		; get type
  6386						XCT	[TMSGC	<Vectored (PC = >	
  6387							 TMSGC	<NV Chn 1 (PC = >
  6388							 TMSGC	<NV Chn 2 (PC = >
  6389							 TMSGC	<NV Chn 3 (PC = >
  6390							 TMSGC	<NV Chn 4 (PC = >
  6391							 TMSGC	<NV Chn 5 (PC = >
  6392							 TMSGC	<NV Chn 6 (PC = >
  6393	041324	256 00 0 02 126522 			 TMSGC	<NV Chn 7 (PC = >](2)
  6394	041325	550 00 0 01 000000*		HRRZ	INTPC(1)		; get interrupt PC
  6395	041326	037 16 0 00 000003 		PNTOCS				; print it
  6396	041327	037 00 0 00 126532 		TMSG	<) at >
  6397	041330	200 00 0 01 000000*		MOVE	INTTIM(1)		; get milliseconds
  6398	041331	037 15 0 00 000000 		PNTDEC
  6399	041332	037 00 0 00 126534 		TMSG	<.ms + >
  6400	041333	200 00 0 01 000000*		MOVE	INTUSE(1)		; get microseconds
  6401	041334	037 15 0 00 000000 		PNTDEC
  6402	041335	037 00 0 00 126536 		TMSG	<.us>
  6403	041336	037 00 0 00 126537 		TMSGC	<CONI PI = >
  6404	041337	200 00 0 01 000000*		MOVE	INTCON(1)		; get CONI PI data
  6405	041340	037 13 0 00 000000 		PNTHW				; print it
  6406	041341	037 00 0 00 126542 		TMSG	<  CONI APR = >
  6407	041342	200 00 0 01 000000*		MOVE	INTAPR(1)		; get APR data
  6408	041343	037 13 0 00 000000 		PNTHW				; print it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 152
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0315

  6409	041344	037 00 0 00 126545 		TMSG	<  CSR = >
  6410	041345	200 00 0 01 000000*		MOVE	INTCSR(1)		; get CSR data
  6411	041346	037 13 0 00 000000 		PNTHW				; print it
  6412	041347	037 00 0 00 030242 		PCRL
  6413	041350	335 00 0 01 041323*		SKIPGE	INTTYP(1)
  6414	041351	037 00 0 00 126547 		TMSGCD	< ##### (Interrupts flushed) #####>
  6415	041352	263 17 0 00 000000 		RTN	
  6416
  6417
  6418					;#********************************************************************
  6419					;* IINIT - Initialize interrupt system
  6420					;#********************************************************************
  6421
  6422	041353	200 01 0 00 126562 	DIINIT:	MOVE	1,[FMSGCD (IINIT <CR>)]
  6423	041354	260 17 0 00 041300*		GO	CHKARG			; check for argument
  6424	041355	263 17 0 00 000000 		RTN				; error - exit
  6425	041356	260 17 0 00 031034*		GO	INITPI			; init PI system
  6426	041357	260 17 0 00 031345*		GO	SETVEC			; set up vector addresses
  6427	041360	263 17 0 00 000000 		RTN				; return
  6428
  6429
  6430					;#********************************************************************
  6431					;* DPINIT - Initialize PCB and queues
  6432					;#********************************************************************
  6433
  6434	041361	200 01 0 00 126566 	DPINIT:	MOVE	1,[FMSGCD (PINIT <CR>)]
  6435	041362	260 17 0 00 041354*		GO	CHKARG			; check for argument
  6436	041363	263 17 0 00 000000 		RTN				; error - exit
  6437	041364	260 17 0 00 064711 		GO	TPCB			; initialize the PCB
  6438	041365	263 17 0 00 000000 		RTN				; return
  6439
  6440
  6441					;#********************************************************************
  6442					;* DSIDLE - Start port and wait for IDLE loop
  6443					;#********************************************************************
  6444
  6445	041366	200 01 0 00 126572 	DSIDLE:	MOVE	1,[FMSGCD (SIDLE <CR>)]
  6446	041367	260 17 0 00 041362*		GO	CHKARG			; check for argument
  6447	041370	263 17 0 00 000000 		RTN				; error - exit
  6448	041371	260 17 0 00 065646 		GO	TIDLE			; start up port and wait for IDLE
  6449	041372	037 01 0 00 126573 		FMSGCD	<? Never got to idle loop>
  6450	041373	260 17 0 00 042264 		GO	SETENA			; set enable ...
  6451						GO	[SKIPN	UDEBUG
  6452							 FMSGCD	<? Couldn't enable port>
  6453	041374	260 17 0 00 126607 			 RTN]
  6454	041375	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 153
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0316

  6455
  6456					;#********************************************************************
  6457					;* DBPACK - Build packet
  6458					;#********************************************************************
  6459
  6460	041376	210 01 0 00 126612 	DBPACK:	MOVN	1,[GO	DBPACP]		; get help text
  6461	041377	260 17 0 00 040373*		GO	.DARG			; get argument
  6462	041400	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  6463						 JRST	[FMSGCD	<? Missing argument - Opcode>
  6464							 GO	FIOFF
  6465	041401	254 00 0 00 126622 			 RTN]
  6466	041402	200 11 0 00 041235*		MOVE	OP,ARGUM		; get opcode
  6467	041403	260 17 0 00 070207 		GO	DECOPC			; decode the op code
  6468	041404	334 00 0 00 000000 		SKIPA				; error - print error
  6469	041405	332 00 0 00 000002 		SKIPE	2			; correct type?
  6470						JRST	[FMSGCD	<? Opcode illegal> ; no - print error
  6471							 GO	FIOFF
  6472	041406	254 00 0 00 126632 			 RTN]
  6473
  6474					; Set up arguments
  6475
  6476	041407	200 00 0 00 033676 		MOVE	RSPFLG			; get response flag
  6477	041410	202 00 0 00 065713 		MOVEM	TRSFLG			; save it
  6478	041411	200 00 0 00 033700 		MOVE	BSDFLG			; get BSD flag
  6479	041412	202 00 0 00 065712 		MOVEM	TBSDFL			; save it
  6480	041413	200 00 0 00 033677 		MOVE	FORSEL			; get format select flag
  6481	041414	202 00 0 00 065711 		MOVEM	TFMFLG			; save it
  6482	041415	200 00 0 00 033701 		MOVE	PADFLG			; get pad flag
  6483	041416	202 00 0 00 065714 		MOVEM	TPDFLG			; save it
  6484	041417	120 00 0 00 033702 		DMOVE	DADDR			; get destination address
  6485	041420	124 00 0 00 065715 		DMOVEM	TDEST			; save it
  6486	041421	200 00 0 00 033672 		MOVE	DSBYTE			; get byte count
  6487	041422	202 00 0 00 065720 		MOVEM	TBYTE			; save it
  6488	041423	402 00 0 00 065721 		SETZM	TWORD			; clear word count
  6489	041424	200 00 0 00 033673 		MOVE	DSPAT			; get data pattern
  6490	041425	202 00 0 00 065722 		MOVEM	TPAT			; save it
  6491	041426	200 00 0 00 033712 		MOVE	PTTVAL			; get PTT value
  6492	041427	202 00 0 00 065717 		MOVEM	TPTTVL			; save it
  6493	041430	260 17 0 00 065733 		GO	BPACK			; build the packet
  6494	041431	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 154
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0317

  6495
  6496					; Print help text
  6497
  6498	041432	037 01 0 00 126635 	DBPACP:	FMSGCD <BPACK opcode (CR), where opcode:>
  6499	041433	474 11 0 00 000000 		SETO	OP,			; initialize op code
  6500	041434	474 03 0 00 000000 		SETO	3,			; print count
  6501	041435	350 00 0 00 000011 	DBPAC0:	AOS	OP			; point to next one
  6502	041436	303 11 0 00 000377 		CAILE	OP,377			; done yet?
  6503						JRST	[PCRLF
  6504	041437	254 00 0 00 124125 			 RTN]
  6505	041440	260 17 0 00 070207 		GO	DECOPC			; decode op code
  6506	041441	254 00 0 00 041435 		JRST	DBPAC0			; error - keep looping
  6507	041442	332 00 0 00 000002 		SKIPE	2			; incorrect type?
  6508	041443	254 00 0 00 041435 		JRST	DBPAC0			; yes - keep looping
  6509	041444	350 00 0 00 000003 		AOS	3			; increment print count
  6510	041445	301 03 0 00 000006 		CAIL	3,6			; more than 6 on this line?
  6511						GO	[SETZ	3,		; yes - reinit everything
  6512							 PCRLF
  6513	041446	260 17 0 00 126645 			 RTN]
  6514	041447	037 00 0 00 117042 		TMSG	< >
  6515	041450	001 03 0 00 000011 		PNTOCC	3,OP			; print op code
  6516						XCT	[FMSG	<-SNDDG  >	; print in English
  6517							 FMSG	<-LDMCAT >
  6518							 FMSG	<-LDPTT  >
  6519							 FMSG	<-RCCNT  >
  6520							 FMSG	<-WRPLI  >
  6521							 FMSG	<-RDPLI  >
  6522							 FMSG	<-RDNSA  >
  6523							 FMSG	<-WRNSA  >
  6524	041451	256 00 0 01 126672 			 FMSG	<-DGRCV  >](1)
  6525	041452	254 00 0 00 041435 		JRST	DBPAC0			; loop till done
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 155
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0318

  6526
  6527					;#********************************************************************
  6528					;* DIQUEU - Insert a packet on a command queue
  6529					;#********************************************************************
  6530
  6531	041453	200 01 0 00 126707 	DIQUEU:	MOVE	1,[FMSGCD (IQUEUE <CR>)]
  6532	041454	260 17 0 00 041367*		GO	CHKARG			; check for argument
  6533	041455	263 17 0 00 000000 		RTN				; error/altmode/question - exit
  6534
  6535					; Check if a packet exists
  6536
  6537	041456	336 00 0 00 072117 		SKIPN	PACKET+3		; packet has been built?
  6538						JRST	[FMSGCD	<? Packet not built yet>
  6539							 GO	FIOFF
  6540	041457	254 00 0 00 126716 			 RTN]
  6541
  6542					; Insert onto the specified command queue
  6543
  6544	041460	260 17 0 00 066703 		GO	INSQUE			; insert into queue
  6545						JRST	[FMSGCD	<? PTT value illegal>
  6546							 GO	FIOFF
  6547	041461	254 00 0 00 126726 			 RTN]
  6548						JRST	[FMSGCD	<? No free queue entries available or interlock failed>
  6549							 GO	FIOFF
  6550	041462	254 00 0 00 126745 			 RTN]
  6551	041463	263 17 0 00 000000 		RTN				; return
  6552
  6553
  6554					;#********************************************************************
  6555					;* DPPCB - Print PCB
  6556					;#********************************************************************
  6557
  6558	041464	200 01 0 00 126753 	DPPCB:	MOVE	1,[FMSGCD (PPCB <CR>)]
  6559	041465	260 17 0 00 041454*		GO	CHKARG			; check for argument
  6560	041466	263 17 0 00 000000 		RTN				; error - exit
  6561	041467	260 17 0 00 070747 		GO	PPCB			; print PCB data
  6562	041470	037 00 0 00 030242 		PCRL
  6563	041471	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 156
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0319

  6564
  6565					;#********************************************************************
  6566					;* DPQUEU - Print specified queue
  6567					;#********************************************************************
  6568
  6569					DPQUEU:	MOVE	1,[FMSGCD <PQUEUE n1,n2 (CR) where n is:
  6570					0-CmdQ  2-UnkQ   4-Ptt
  6571	041472	200 01 0 00 126775 	1-RspQ  3-PttFq  5-Mcast>]
  6572	041473	260 17 0 00 041377*		GO	.DARG			; get argument
  6573	041474	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  6574						 JRST	[FMSGCD	<? Missing argument>
  6575							 GO	FIOFF
  6576	041475	254 00 0 00 117722 			 RTN]
  6577	041476	331 01 0 00 041402*		SKIPL	1,ARGUM			; get argument, in range
  6578	041477	303 01 0 00 000005 		CAILE	1,5			;   0-5?
  6579						JRST	[FMSGCD	<? Queue number out of range 0-5>
  6580							 GO	FIOFF
  6581	041500	254 00 0 00 127006 			 RTN]
  6582	041501	202 01 0 00 134215'		MOVEM	1,QARG1#		; save queue number
  6583	041502	202 01 0 00 134216'		MOVEM	1,QARG2#		; save queue number
  6584
  6585						MOVN	1,[FMSGCD <PQUEUE n1,n2 (CR) where n is:
  6586					0-CmdQ  2-UnkQ   4-Ptt
  6587	041503	210 01 0 00 126775 	1-RspQ  3-PttFq  5-Mcast>]
  6588	041504	260 17 0 00 041473*		GO	.DARG			; get argument
  6589	041505	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  6590	041506	254 00 0 00 041515 		JRST	DPQUE0
  6591	041507	331 01 0 00 041476*		SKIPL	1,ARGUM			; get argument, in range
  6592	041510	303 01 0 00 000005 		CAILE	1,5			;   0-5?
  6593						JRST	[FMSGCD	<? Queue number out of range 0-5>
  6594							 GO	FIOFF
  6595	041511	254 00 0 00 127006 			 RTN]
  6596	041512	202 01 0 00 134216'		MOVEM	1,QARG2#		; save queue number
  6597	041513	315 01 0 00 134215'		CAMGE	1,QARG1			; see if range ok?
  6598						JRST	[FMSGCD <? Range nonsensical>
  6599							 GO	FIOFF
  6600	041514	254 00 0 00 122563 			 RTN]
  6601
  6602	041515	200 13 0 00 134215'	DPQUE0:	MOVE	Q,QARG1			; get queue number
  6603	041516	260 17 0 00 067305 		GO	PQUEUE			; print this queue
  6604	041517	037 00 0 00 030242 		PCRL				; final CRLF
  6605	041520	332 00 0 00 134143'		SKIPE	ALTF			; altmode typed?
  6606	041521	263 17 0 00 000000 		RTN				; yes - exit
  6607	041522	037 07 0 00 000003 		TTALTM				; altmode key struck?
  6608	041523	334 00 0 00 000000 		SKIPA				; no - loop till done
  6609	041524	263 17 0 00 000000 		RTN				; yes - exit
  6610	041525	350 13 0 00 134215'		AOS	Q,QARG1			; point to next queue
  6611	041526	317 13 0 00 134216'		CAMG	Q,QARG2			; done yet?
  6612	041527	254 00 0 00 041515 		JRST	DPQUE0			; no - loop till done
  6613	041530	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 157
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0320

  6614
  6615					;#********************************************************************
  6616					;* DWATCH - Watch port and print events and loop back packets
  6617					;#********************************************************************
  6618
  6619	041531	402 00 0 00 041507*	DWATCH:	SETZM	ARGUM			; default to echo
  6620	041532	350 00 0 00 041531*		AOS	ARGUM			;  ...
  6621	041533	210 01 0 00 127024 		MOVN	1,[FMSGCD <WATCH (echo) or WATCH 0 (no echo) or 1 (echo) (CR)>]
  6622	041534	260 17 0 00 041231*		GO	.OARG			; get argument
  6623	041535	263 17 0 00 000000 		 RTN				; error/altmode/question - exit
  6624	041536	255 00 0 00 000000 		 JFCL				; no argument typed - continue
  6625	041537	261 17 0 00 000002 		RPUT	(2,3)			; save AC's
  6626
  6627	041541	200 00 0 00 127025 		MOVE	[PACKET,,SAVPKT]	; get BLT pointer
  6628	041542	251 00 0 00 074437 		BLT	SAVPKT+^D399		; save PACKET data
  6629	041543	260 17 0 00 065646 		GO	TIDLE			; ensure in idle loop
  6630						JRST	[SKIPE	UDEBUG
  6631							 JRST	.+1
  6632							 FMSGCD	<? Couldn't start port>
  6633							 RGET	(3,2)
  6634	041544	254 00 0 00 127034 			 RTN]
  6635	041545	260 17 0 00 042264 		GO	SETENA			; ensure the port is enabled
  6636						JRST	[SKIPE	UDEBUG
  6637							 JRST	.+1
  6638							 FMSGCD	<? Couldn't enable port>
  6639							 RGET	(3,2)
  6640	041546	254 00 0 00 127042 			 RTN]
  6641
  6642					; Initialize everything
  6643
  6644	041547	402 00 0 00 134201'		SETZM	NCHAR#			; clear last character typed
  6645	041550	402 00 0 00 134207'		SETZM	NPACKS#			; clear number of packets sent
  6646	041551	402 00 0 00 134206'		SETZM	NPACKR#			; clear number of packets received
  6647	041552	402 00 0 00 134204'		SETZM	NPACKO#			; clear number of other packets rcvd
  6648	041553	402 00 0 00 134203'		SETZM	NPACKL#			; clear number of packets looped
  6649	041554	402 00 0 00 134205'		SETZM	NPACKQ#			; clear number of rsp requested rcvd
  6650	041555	402 00 0 00 134170'		SETZM	LOOFLG#			; clear loopback flag
  6651	041556	476 00 0 00 134163'		SETOM	IGNFLG#			; set ignore other packets flag
  6652	041557	402 00 0 00 134242'		SETZM	SNDFLG#			; clear send packet flag
  6653	041560	402 00 0 00 134243'		SETZM	SNDTIM#			; init time to send next packet
  6654	041561	400 03 0 00 000000 		SETZ	3,			; set up to read time
  6655	041562	260 17 0 00 032034*		GO	RUNTME			; get runtime so far
  6656	041563	200 00 0 00 031637*		MOVE	CURTIM			; get current time
  6657	041564	270 00 0 00 033707 		ADD	DSSUM			; point to next interval
  6658	041565	202 00 0 00 134246'		MOVEM	STIME#			; save statistics time
  6659	041566	402 00 0 00 134225'		SETZM	RQAFLG#			; clear response queue available flag
  6660
  6661					; Help message
  6662
  6663	041567	037 00 0 00 127050 	DWATCQ:	TMSGC	<[Type:  S-SndPk   O-SndPks  L-Loopback  0-EchoOff  1-EchoOn>
  6664	041570	037 00 0 00 127065 		TMSGC	<        2-PntCSR  3-PntPCB  4-PntStats  5-IgnorePk $-Exit>
  6665	041571	037 00 0 00 127101 		TMSGCD	<        ?-ThisText]>
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 158
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0321

  6666
  6667					; Start of idle loop
  6668
  6669	041572	334 00 0 00 000000 	DWATC0:	SKIPA				; JFCL this to do sanity checking
  6670	041573	260 17 0 00 042150 		GO	SANCHK			; do a sanity check of the free queues
  6671	041574	037 07 0 00 000003 		TTALTM				; altmode typed?
  6672	041575	334 00 0 00 000000 		SKIPA				; no - keep checking CSR, etc.
  6673	041576	254 00 0 00 042142 		JRST	DWATCX			; yes - exit
  6674	041577	332 00 0 00 134143'		SKIPE	ALTF			; altmode flagged?
  6675	041600	254 00 0 00 042142 		JRST	DWATCX			; yes - exit
  6676	041601	336 00 0 00 134201'		SKIPN	NCHAR			; prior character saved?
  6677	041602	202 00 0 00 134201'		MOVEM	NCHAR			; no - save this one
  6678
  6679					; Verify the port is still running
  6680
  6681	041603	260 17 0 00 037542*		GO	RDCSR			; read CSR
  6682	041604	400 01 0 00 000000 		SETZ	1,			; error
  6683	041605	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
  6684	041606	602 01 0 00 000010 		TRNE	1,MPRUN			; no - still running?
  6685	041607	334 00 0 00 000000 		SKIPA				; yes - continue
  6686					 	JRST	[TMSGCD	<[Port is no longer running]>
  6687	041610	254 00 0 00 127115 			 JRST	DWATCY]
  6688
  6689					; Check on summary interval time
  6690
  6691	041611	400 03 0 00 000000 		SETZ	3,			; set up to read time
  6692	041612	260 17 0 00 041562*		GO	RUNTME			; get runtime so far
  6693	041613	200 00 0 00 041563*		MOVE	CURTIM			; get current time
  6694	041614	315 00 0 00 134246'		CAMGE	STIME			; time to print statistics?
  6695	041615	254 00 0 00 041667 		JRST	DWATC1			; no - continue
  6696	041616	037 00 0 00 127117 		TMSGC	<*** Statistics >
  6697	041617	332 00 0 00 134156'		SKIPE	EDEBUG			; expanded data switch set?
  6698						GO	[TMSG	<Port->		; yes - print what port
  6699							 LDB	[POINT 3,MBCN,9];   this is
  6700							 PNT2
  6701							 PSP
  6702	041620	260 17 0 00 120112 			 RTN]
  6703	041621	200 03 0 00 117045 		MOVE	3,[JFCL]		; set up to print time
  6704	041622	260 17 0 00 041612*		GO	RUNTME			; print elapsed time
  6705	041623	037 00 0 00 127123 		TMSG	< ***>
  6706
  6707	041624	336 00 0 00 134207'		SKIPN	NPACKS			; anything yet?
  6708	041625	254 00 0 00 041632 		JRST	.+5			; no - continue
  6709	041626	037 00 0 00 127124 		TMSGC	< Packets sent:   >
  6710	041627	200 00 0 00 134207'		MOVE	NPACKS			; get packets sent
  6711	041630	037 15 0 00 000000 		PNTDEC				; print it
  6712	041631	037 00 0 00 122466 		TMSG	<.>
  6713
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 159
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0322

  6714	041632	336 00 0 00 134206'		SKIPN	NPACKR			; anything yet?
  6715	041633	254 00 0 00 041640 		JRST	.+5			; no - continue
  6716	041634	037 00 0 00 127130 		TMSGC	< Packets rcvd:   >
  6717	041635	200 00 0 00 134206'		MOVE	NPACKR			; get packets received
  6718	041636	037 15 0 00 000000 		PNTDEC				; print it
  6719	041637	037 00 0 00 127134 		TMSG	<. (from self)>
  6720
  6721	041640	336 00 0 00 134205'		SKIPN	NPACKQ			; anything yet?
  6722	041641	254 00 0 00 041646 		JRST	.+5			; no - continue
  6723	041642	037 00 0 00 127137 		TMSGC	< RspRqsted rcvd: >
  6724	041643	200 00 0 00 134205'		MOVE	NPACKQ			; get response requested received
  6725	041644	037 15 0 00 000000 		PNTDEC				; print it
  6726	041645	037 00 0 00 122466 		TMSG	<.>
  6727
  6728	041646	336 00 0 00 134203'		SKIPN	NPACKL			; anything yet?
  6729	041647	254 00 0 00 041654 		JRST	.+5			; no - continue
  6730	041650	037 00 0 00 127143 		TMSGC	< Packets looped: >
  6731	041651	200 00 0 00 134203'		MOVE	NPACKL			; get packets sent
  6732	041652	037 15 0 00 000000 		PNTDEC				; print it
  6733	041653	037 00 0 00 122466 		TMSG	<.>
  6734
  6735	041654	336 00 0 00 134204'		SKIPN	NPACKO			; anything yet?
  6736	041655	254 00 0 00 041662 		JRST	.+5			; no - continue
  6737	041656	037 00 0 00 127130 		TMSGC	< Packets rcvd:   >
  6738	041657	200 00 0 00 134204'		MOVE	NPACKO			; get packets received
  6739	041660	037 15 0 00 000000 		PNTDEC				; print it
  6740	041661	037 00 0 00 127147 		TMSG	<. (from other nodes)>
  6741
  6742	041662	037 00 0 00 030242 		PCRL
  6743	041663	200 00 0 00 041613*		MOVE	CURTIM			; get current time
  6744	041664	270 00 0 00 033707 		ADD	DSSUM			; add interval time
  6745	041665	202 00 0 00 134246'		MOVEM	STIME			; set up next statistics time
  6746	041666	254 00 0 00 041750 		JRST	DWATC2			; check for character typed
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 160
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0323

  6747
  6748					; Check on response queue entries
  6749
  6750	041667	260 17 0 00 067151 	DWATC1:	GO	CHKRQV			; check response queue available
  6751	041670	260 17 0 00 067100 		GO	CHKRSP			; check for RspQ entry
  6752						JRST	[SETZM	RQAFLG		; no entry found - continue
  6753							 MOVE	1,PCB+5		; get response queue FLINK
  6754							 GO	CONVIR		; convert to virtual
  6755							 CAIE	1,PCB+5		; queue really empty?
  6756							 SETOM	RQAFLG		; no - set rsp queue avail flag
  6757	041671	254 00 0 00 127154 			 JRST	DWATC2]
  6758	041672	135 11 0 00 127162 		LDB	OP,[POINT 8,RSPONS+3,23]; get op code
  6759	041673	302 11 0 00 000001 		CAIE	OP,DGSNT		; datagram sent (response)
  6760	041674	306 11 0 00 000005 		CAIN	OP,DGRCV		;   or received?
  6761	041675	334 00 0 00 000000 		SKIPA				; yes - continue
  6762	041676	254 00 0 00 041703 		JRST	.+5			; no - continue
  6763	041677	120 00 0 00 033704 		DMOVE	SADDR			; get correct address
  6764	041700	316 00 0 00 073007 		CAMN	RSPONS+7		; first word correct?
  6765	041701	312 01 0 00 073010 		CAME	1,RSPONS+10		; yes - 2nd word correct?
  6766						JRST	[CAIE	OP,DGRCV	; no - from another node or a
  6767							 JRST	[AOS	NPACKQ	;   response requested of a frame
  6768								 SKIPN	IGNFLG	;   sent to another node
  6769								 JRST	.+2
  6770								 JRST	DWATC2]
  6771							 AOS	NPACKO
  6772							 SKIPN	ARGUM
  6773							 JRST	DWATLP
  6774							 SKIPN	IGNFLG
  6775							 GO	PNTRSP
  6776	041702	254 00 0 00 127167 			 JRST	DWATLP]
  6777	041703	302 11 0 00 000005 		CAIE	OP,DGRCV		; response requested?
  6778	041704	350 00 0 00 134205'		AOS	NPACKQ			; yes - increment rsp rqsted count
  6779	041705	306 11 0 00 000005 		CAIN	OP,DGRCV		; response requested?
  6780	041706	350 00 0 00 134206'		AOS	NPACKR			; no - increment receive count
  6781	041707	332 00 0 00 041532*		SKIPE	ARGUM			; echo on?
  6782	041710	260 17 0 00 042227 		GO	PNTRSP			; yes - print it
  6783	041711	254 00 0 00 041750 		JRST	DWATC2			; continue
  6784
  6785					; Got a response - check if we should loop it back
  6786
  6787	041712	336 00 0 00 134170'	DWATLP:	SKIPN	LOOFLG			; loopback flag set?
  6788	041713	254 00 0 00 041750 		JRST	DWATC2			; no - continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 161
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0324

  6789
  6790					; Loopback - convert to an outgoing datagram to put onto cmd queue
  6791
  6792	041714	402 00 0 00 072114 		SETZM	PACKET			; initialize packet data
  6793	041715	200 00 0 00 127177 		MOVE	[PACKET,,PACKET+1]	; get BLT pointer
  6794	041716	251 00 0 00 072733 		BLT	PACKET+^D399		; zero it
  6795	041717	201 00 0 00 000001 		MOVEI	1			; set flags to response=yes
  6796	041720	137 00 0 00 127200 		DPB	[POINT 8,PACKET+3,15]	; save flags
  6797	041721	201 11 0 00 000001 		MOVEI	OP,SNDDG		; get op code for SNDDG
  6798	041722	137 11 0 00 127201 		DPB	OP,[POINT 8,PACKET+3,23]; save it
  6799	041723	200 00 0 00 073011 		MOVE	RSPONS+11		; get PTT value
  6800	041724	202 00 0 00 072121 		MOVEM	PACKET+5		; save it
  6801	041725	200 00 0 00 073004 		MOVE	RSPONS+4		; get text length
  6802	041726	275 00 0 00 000004 		SUBI	4			; subtract off the CRC
  6803	041727	202 00 0 00 072120 		MOVEM	PACKET+4		; save it
  6804	041730	201 00 0 00 105071 		MOVEI	PTTFQ+1			; get address of FLINK of free queue
  6805	041731	202 00 0 00 072122 		MOVEM	PACKET+6		; save it
  6806	041732	120 00 0 00 073007 		DMOVE	RSPONS+7		; get source address
  6807	041733	124 00 0 00 072123 		DMOVEM	PACKET+7		; set up destination address
  6808	041734	200 00 0 00 127202 		MOVE	[RSPONS+13,,PACKET+11]	; build BLT pointer
  6809	041735	251 00 0 00 072732 		BLT	PACKET+^D398		; copy the data
  6810
  6811					; Loopback - insert on queue
  6812
  6813	041736	260 17 0 00 066703 		GO	INSQUE			; insert into queue
  6814						JRST	[TMSGCD	<? PTT value illegal>
  6815	041737	254 00 0 00 127203 			 JRST	DWATC2]
  6816						JRST	[TMSGCD	<? No free queue entries available or interlock failed>
  6817	041740	254 00 0 00 127205 			 JRST	DWATC2]
  6818	041741	350 00 0 00 134203'		AOS	NPACKL			; increment packet looped count
  6819	041742	337 00 0 00 066650 		SKIPG	NUMENT			; was the queue empty?
  6820						GO	[GO	RDCSR		; yes - set 'CMDQAV'
  6821							 TMSGCD	<? Read CSR failed>
  6822							 TRO	1,400
  6823							 GO	LDCSR
  6824	041743	260 17 0 00 127214 			 RTN]
  6825	041744	336 00 0 00 134163'		SKIPN	IGNFLG			; ignore looped packets?
  6826	041745	336 00 0 00 041707*		SKIPN	ARGUM			;   or echo off?
  6827	041746	334 00 0 00 000000 		SKIPA				; yes - continue
  6828						GO	[TMSGC	<***** >	; no - print data
  6829							 GO	PTIME
  6830							 TMSG	<** Packet (>
  6831							 GO	OPCPNT
  6832							 TMSGD	<) Inserted on CmdQ **>
  6833	041747	260 17 0 00 127233 			 RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 162
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0325

  6834
  6835					; Finally, check to see if a special character was typed - S,O,L,0,1,2,3,4,5,?
  6836
  6837	041750	332 00 0 00 041745*	DWATC2:	SKIPE	ARGUM			; echo on?
  6838	041751	260 17 0 00 032264*		GO	.INPNT			; yes - print any interrupt fielded
  6839	041752	200 00 0 00 134201'		MOVE	NCHAR			; get last character typed
  6840	041753	402 00 0 00 134201'		SETZM	NCHAR			; clear last character typed
  6841	041754	302 00 0 00 000123 		CAIE	123			; was it an 'S'?
  6842	041755	306 00 0 00 000163 		CAIN	163			;   or 's'?
  6843	041756	254 00 0 00 042050 		JRST	DWATC7			; yes - insert another packet
  6844	041757	302 00 0 00 000117 		CAIE	117			; was it an 'O'?
  6845	041760	306 00 0 00 000157 		CAIN	157			;   or 'o'?
  6846	041761	254 00 0 00 042120 		JRST	DWATC8			; yes - complement send flag
  6847	041762	302 00 0 00 000114 		CAIE	114			; was it an 'L'?
  6848	041763	306 00 0 00 000154 		CAIN	154			;   or 'l'?
  6849	041764	254 00 0 00 042126 		JRST	DWATC9			; yes - insert another packet
  6850	041765	306 00 0 00 000060 		CAIN	60			; was it a '0'?
  6851	041766	402 00 0 00 041750*		SETZM	ARGUM			; yes - set echo off
  6852	041767	306 00 0 00 000061 		CAIN	61			; was it a '1'?
  6853	041770	476 00 0 00 041766*		SETOM	ARGUM			; yes - set echo on
  6854	041771	306 00 0 00 000060 		CAIN	60			; was it a '0'?
  6855	041772	037 00 0 00 127241 		TMSGCD	<[Echo off]>
  6856	041773	306 00 0 00 000061 		CAIN	61			; was it a '1'?
  6857	041774	037 00 0 00 127244 		TMSGCD	<[Echo on]>
  6858	041775	306 00 0 00 000062 		CAIN	62			; was it a '2'?
  6859	041776	254 00 0 00 042017 		JRST	DWATC3			; yes - print CSR
  6860	041777	306 00 0 00 000063 		CAIN	63			; was it a '3'?
  6861	042000	254 00 0 00 042027 		JRST	DWATC4			; yes - print PCB data
  6862	042001	306 00 0 00 000064 		CAIN	64			; was it a '4'?
  6863	042002	254 00 0 00 042043 		JRST	DWATC6			; yes - print statistics
  6864	042003	306 00 0 00 000065 		CAIN	65			; was it a '5'?
  6865	042004	254 00 0 00 042134 		JRST	DWATCA			; yes - complement ignore packets flag
  6866	042005	306 00 0 00 000077 		CAIN	77			; was it a '?'?
  6867	042006	254 00 0 00 041567 		JRST	DWATCQ			; yes - print some help
  6868
  6869					; Check to see if we should send a packet
  6870
  6871	042007	336 00 0 00 134242'		SKIPN	SNDFLG			; sending packets?
  6872	042010	254 00 0 00 041572 		JRST	DWATC0			; no - continue
  6873	042011	200 00 0 00 000000*		MOVE	DEBTIM			; get current time (milliseconds)
  6874	042012	315 00 0 00 134243'		CAMGE	SNDTIM			; time to send another packet?
  6875	042013	254 00 0 00 041572 		JRST	DWATC0			; no - continue
  6876	042014	270 00 0 00 033710 		ADD	DSINT			; set up next send time
  6877	042015	202 00 0 00 134243'		MOVEM	SNDTIM			; save it
  6878	042016	254 00 0 00 042050 		JRST	DWATC7			; go send the packet
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 163
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0326

  6879
  6880					; An '2' was typed, print CSR register
  6881
  6882	042017	260 17 0 00 041603*	DWATC3:	GO	RDCSR			; read CSR register
  6883	042020	037 00 0 00 127207 		TMSGCD	<? Read CSR failed> 	; error - failed
  6884	042021	037 00 0 00 127221 		TMSGC	<***** >
  6885	042022	260 17 0 00 000000*		GO	PTIME			; print time
  6886	042023	037 00 0 00 127247 		TMSG	< ***** CSR>
  6887	042024	260 17 0 00 042605 		GO	CSRPNT			; print CSR data in English
  6888	042025	037 00 0 00 030242 		PCRL				; end of line
  6889	042026	254 00 0 00 041572 		JRST	DWATC0			; keep looping
  6890
  6891					; An '3' was typed, print PCB data
  6892
  6893	042027	260 17 0 00 042032 	DWATC4:	GO	DWATC5			; go print it
  6894	042030	037 00 0 00 030242 		PCRL				; end of line
  6895	042031	254 00 0 00 041572 		JRST	DWATC0			; keep looping
  6896
  6897	042032	261 17 0 00 000000 	DWATC5:	RPUT	(0,1,2,3,4)		; save AC's
  6898
  6899	042037	037 00 0 00 127221 		TMSGC	<***** >
  6900	042040	260 17 0 00 042022*		GO	PTIME			; print time
  6901	042041	037 00 0 00 127252 		TMSG	< ***** PCB>
  6902	042042	254 00 0 00 071023 		PJRST	PPCBD			; print the PCB data
  6903
  6904					; An '4' was typed, print statistics
  6905
  6906	042043	400 03 0 00 000000 	DWATC6:	SETZ	3,			; set up to read time
  6907	042044	260 17 0 00 041622*		GO	RUNTME			; get runtime so far
  6908	042045	200 00 0 00 041663*		MOVE	CURTIM			; get current time
  6909	042046	202 00 0 00 134246'		MOVEM	STIME			; set time to print statistics
  6910	042047	254 00 0 00 041572 		JRST	DWATC0			; continue
  6911
  6912					; An 'S' was typed, insert a packet
  6913
  6914	042050	332 00 0 00 041770*	DWATC7:	SKIPE	ARGUM			; echo on?
  6915	042051	037 00 0 00 030242 		PCRL				; yes
  6916	042052	200 00 0 00 127255 		MOVE	[SAVPKT,,PACKET]	; get BLT pointer
  6917	042053	251 00 0 00 072733 		BLT	PACKET+^D399		; copy saved packet data
  6918	042054	336 00 0 00 072117 		SKIPN	PACKET+3		; any packet data here?
  6919						JRST	[TMSGCD	<? No prior packet - nothing put on queue>
  6920	042055	254 00 0 00 127267 			 JRST	DWATC0]
  6921	042056	260 17 0 00 067164 		GO	PTCHKP			; check for a matching PTT value?
  6922	042057	201 13 0 00 000003 		MOVEI	Q,3			; no - set to PTT free queue anyway
  6923	042060	260 17 0 00 066516 		GO	CHKINT			; check interlock word
  6924						JRST	[TMSGCD	<? Interlock failed>
  6925	042061	254 00 0 00 127276 			 JRST	DWATC0]
  6926						XCT	[SETOM PCB+10		; reset interlock 
  6927	042062	256 00 0 13 127276 			 SETOM PTTFQ]-2(Q) 	;  ...
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 164
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0327

  6928	042063	200 00 0 00 066650 		MOVE	NUMENT			; number of entries on free queue
  6929	042064	305 00 0 00 000010 		CAIGE	8			; less than or equal to 8?
  6930	042065	254 00 0 00 041572 		JRST	DWATC0			; yes - don't insert an entry
  6931	042066	260 17 0 00 066703 		GO	INSQUE			; insert into queue
  6932						JRST	[TMSGCD	<? PTT value illegal>
  6933	042067	254 00 0 00 127302 			 JRST	DWATC0]
  6934						JRST	[TMSGCD	<? No free queue entries available or interlock failed>
  6935	042070	254 00 0 00 127304 			 JRST	DWATC0]
  6936	042071	336 00 0 00 066650 		SKIPN	NUMENT			; any entries on the cmd queue already?
  6937						GO	[GO	RDCSR		; no - set command queue available
  6938							 JFCL			;    bit in CSR register
  6939							 TRO	1,CMDQAV
  6940							 GO	LDCSR
  6941	042072	260 17 0 00 127306 			 RTN]
  6942	042073	350 00 0 00 134207'		AOS	NPACKS			; increment sent count
  6943	042074	332 00 0 00 042050*		SKIPE	ARGUM			; echo on?
  6944						GO	[TMSGC	<***** >	; yes - print message
  6945							 GO	PTIME
  6946							 TMSG	<** Packet (>
  6947							 LDB	OP,[POINT 8,PACKET+3,23]
  6948							 GO	OPCPNT
  6949							 TMSGD	<) Inserted on CmdQ **>
  6950	042075	260 17 0 00 127313 			 RTN]
  6951
  6952					; Debug mode - put command queue entry on the response queue
  6953
  6954	042076	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
  6955	042077	254 00 0 00 041572 		JRST	DWATC0			; no - continue
  6956	042100	201 13 0 00 000000 		MOVEI	Q,0			; point to cmd queue
  6957	042101	260 17 0 00 066516 		GO	CHKINT			; check interlock word
  6958						JRST	[TMSGCD	<? Interlock failed for cmd queue>
  6959	042102	254 00 0 00 127332 			 JRST	DWATC0]
  6960	042103	336 00 0 00 066650 		SKIPN	NUMENT			; queue empty?
  6961						JRST	[SETOM	PCB		; yes - reset the interlock
  6962	042104	254 00 0 00 127334 			 JRST	DWATC0]
  6963	042105	260 17 0 00 066766 		GO	GETQUE			; remove command from command queue
  6964	042106	255 00 0 00 000000 		JFCL				; failed - ignore
  6965	042107	202 01 0 00 134202'		MOVEM	1,NEWENT		; save entry address
  6966	042110	476 00 0 00 072000 		SETOM	PCB			; reset interlock
  6967	042111	201 13 0 00 000001 		MOVEI	Q,1			; point to response queue
  6968	042112	260 17 0 00 066516 		GO	CHKINT			; check interlock word
  6969						JRST	[TMSGCD	<? Interlock failed for rsp queue>
  6970	042113	254 00 0 00 127346 			 JRST	DWATC0]
  6971	042114	200 01 0 00 134202'		MOVE	1,NEWENT		; get entry address
  6972	042115	260 17 0 00 067022 		GO	PUTQUE			; insert command on command queue
  6973	042116	476 00 0 00 072004 		SETOM	PCB+4			; reset interlock
  6974	042117	254 00 0 00 041572 		JRST	DWATC0			; keep looping
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 165
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0328

  6975
  6976					; An 'O' was typed, complement send packet flag
  6977
  6978	042120	402 00 0 00 134243'	DWATC8:	SETZM	SNDTIM			; clear send time
  6979	042121	462 00 0 00 134242'		SETCMM	SNDFLG			; complement send flag
  6980	042122	332 00 0 00 134242'		SKIPE	SNDFLG			; set?
  6981						JRST	[TMSGC	<*** Will send packets at a >
  6982							 MOVE	DSINT			; get interval time
  6983							 PNTDEC				; print it out
  6984							 TMSGD	<. millisecond interval ***>
  6985	042123	254 00 0 00 127364 			 JRST	DWATC0]
  6986	042124	037 00 0 00 127371 		TMSGCD	<*** Will not send packets ***>
  6987	042125	254 00 0 00 041572 		JRST	DWATC0			; keep looping
  6988
  6989					; An 'L' was typed, complement loopback flag
  6990
  6991	042126	462 00 0 00 134170'	DWATC9:	SETCMM	LOOFLG			; complement loopback flag
  6992	042127	332 00 0 00 134170'		SKIPE	LOOFLG			; set?
  6993	042130	037 00 0 00 127400 		TMSGCD	<*** Will loop received datagrams ***>
  6994	042131	336 00 0 00 134170'		SKIPN	LOOFLG			; set?
  6995	042132	037 00 0 00 127411 		TMSGCD	<*** Will not loop received datagrams ***>
  6996	042133	254 00 0 00 041572 		JRST	DWATC0			; keep looping
  6997
  6998					; An '5' was typed, complement ignore other packets flag
  6999
  7000	042134	462 00 0 00 134163'	DWATCA:	SETCMM	IGNFLG			; complement loopback flag
  7001	042135	332 00 0 00 134163'		SKIPE	IGNFLG			; set?
  7002	042136	037 00 0 00 127422 		TMSGCD	<*** Will ignore datagrams from other nodes ***>
  7003	042137	336 00 0 00 134163'		SKIPN	IGNFLG			; set?
  7004	042140	037 00 0 00 127435 		TMSGCD	<*** Will not ignore datagrams from other nodes ***>
  7005	042141	254 00 0 00 041572 		JRST	DWATC0			; keep looping
  7006
  7007					; Exit
  7008	
  7009	042142	037 00 0 00 030242 	DWATCX:	PCRL
  7010	042143	260 17 0 00 042324 		GO	SETDSA			; disable the port
  7011	042144	260 17 0 00 041234*		GO	ISTOP			; stop the port
  7012	042145	262 17 0 00 000003 	DWATCY:	RGET	(3,2)			; restore AC's
  7013
  7014	042147	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 166
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0329

  7015
  7016					;#********************************************************************
  7017					;* SANCHK - Sanity check of the free queue
  7018					;#********************************************************************
  7019
  7020	042150	261 17 0 00 000000 	SANCHK:	RPUT	(0,1,2,3,Q)		; save AC's
  7021
  7022	042155	201 13 0 00 000003 		MOVEI	Q,3			; point to free queue
  7023	042156	260 17 0 00 066516 		GO	CHKINT			; check interlock word
  7024						JRST	[TMSGCD	<? Interlock failed for free queue (SANCHK)>
  7025	042157	254 00 0 00 127462 			 JRST	SANCHX]
  7026	042160	336 03 0 00 066650 		SKIPN	3,NUMENT		; any entries?
  7027	042161	254 00 0 00 042173 		JRST	SANCHX			; no - exit
  7028	042162	200 01 0 03 066562 	SANCH0:	MOVE	1,LENTRY-1(3)		; get entry address
  7029	042163	200 01 0 01 000012 		MOVE	1,12(1)			; get data pointer
  7030	042164	260 17 0 00 042207 		GO	CONVRR			; convert to virtual
  7031	042165	254 00 0 00 042202 		JRST	SANCHE			; error - exit
  7032	042166	200 02 0 03 066562 		MOVE	2,LENTRY-1(3)		; get entry address
  7033	042167	201 02 0 02 000013 		MOVEI	2,13(2)			; get data pointer
  7034	042170	312 01 0 00 000002 		CAME	1,2			; correct?
  7035	042171	254 00 0 00 042202 		JRST	SANCHE			; error - exit
  7036	042172	367 03 0 00 042162 		SOJG	3,SANCH0		; yes - loop till done
  7037	042173	476 00 0 00 105070 	SANCHX:	SETOM	PTTFQ			; reset interlock
  7038	042174	262 17 0 00 000013 		RGET	(Q,3,2,1,0)		; restore AC's
  7039
  7040	042201	263 17 0 00 000000 		RTN
  7041	042202	037 00 0 00 127464 	SANCHE:	TMSGCD	<? Free queue entry data pointer incorrect>
  7042	042203	260 17 0 00 042144*		GO	ISTOP			; stop the port
  7043	042204	200 17 0 00 134233'		MOVE	P,SAVEP			; restore stack pointer
  7044	042205	261 17 0 00 127476 		PUT	[DISP0]			; set up stack
  7045	042206	254 00 0 00 030007 		JRST	SRTDDT			; go to DDT
  7046
  7047					;#********************************************************************
  7048					;* CONVRR - Convert physical address to virtual
  7049					;
  7050					; Return:  +1 - Invalid		+2 - Valid
  7051					;#********************************************************************
  7052
  7053	042207	350 00 0 17 000000 	CONVRR:	AOS	(P)			; set up return +2
  7054	042210	261 17 0 00 000000 		RPUT	(0,2)			; save AC's
  7055
  7056	042212	621 01 0 00 777700 		TLZ	1,777700		; clear all but address bits
  7057	042213	474 02 0 00 000000 		SETO	2,			; initialize address pointer
  7058	042214	350 00 0 00 000002 	CONVR0:	AOS	2			; point to next address
  7059	042215	335 00 0 02 065470 		SKIPGE	ADRPHY(2)		; end of list?
  7060	042216	254 00 0 00 042222 		JRST	CONVRE			; yes - error - go handle
  7061	042217	312 01 0 02 065470 		CAME	1,ADRPHY(2)		; address match?
  7062	042220	254 00 0 00 042214 		JRST	CONVR0			; no - loop till done
  7063	042221	334 00 0 00 000000 		SKIPA				; ok - continue
  7064	042222	370 00 0 17 777776 	CONVRE:	SOS	-2(P)			; set up return +1
  7065	042223	200 01 0 02 065312 	CONVRX:	MOVE	1,ADRVIR(2)		; yes - get virtual address
  7066	042224	262 17 0 00 000002 		RGET	(2,0)			; restore AC's
  7067
  7068	042226	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 167
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0330

  7069
  7070					;#********************************************************************
  7071					;* PNTRSP - Print a response queue entry
  7072					;
  7073					; Given:  RSPONS - Packet from the Response Queue
  7074					;#********************************************************************
  7075
  7076					; First, check to see if we can print it or if it is being ignored
  7077
  7078	042227	261 17 0 00 000000 	PNTRSP:	RPUT	(0,1,2,Q)		; save AC's
  7079
  7080
  7081					; Print out the packet
  7082
  7083	042233	037 00 0 00 127221 	PNTRS0:	TMSGC	<***** >
  7084	042234	260 17 0 00 042040*		GO	PTIME			; print time
  7085	042235	037 00 0 00 127477 		TMSG	< ***** RspQ Entry Received (>
  7086	042236	135 11 0 00 127162 		LDB	OP,[POINT 8,RSPONS+3,23]; get op code
  7087	042237	260 17 0 00 070134 		GO	OPCPNT			; print op code
  7088	042240	037 00 0 00 127505 		TMSG	<)>
  7089	042241	201 12 0 00 073000 		MOVEI	PK,RSPONS		; get address of packet
  7090	042242	201 13 0 00 000001 		MOVEI	Q,1			; indicate response queue
  7091	042243	261 17 0 00 127506 		RPUT	([PNTRS1],0,1)		; save return address and AC's
  7092
  7093	042246	402 00 0 00 134146'		SETZM	CMDPAK			; clear command packet flag
  7094	042247	476 00 0 00 134226'		SETOM	RSPPAK			; set response packet flag
  7095	042250	254 00 0 00 067452 		JRST	PPAKCC			; go print it out
  7096	042251	037 00 0 00 030242 	PNTRS1:	PCRL
  7097
  7098					; Exit
  7099
  7100	042252	350 00 0 17 777775 	PNTRS2:	AOS	-3(P)			; set up proper return
  7101	042253	262 17 0 00 000013 	PNTRSX:	RGET	(Q,2,1,0)		; restore AC's
  7102
  7103	042257	263 17 0 00 000000 		RTN				; return
  7104
  7105
  7106					;#********************************************************************
  7107					;* DCONF - Determine and print NI configuration
  7108					;#********************************************************************
  7109
  7110	042260	200 01 0 00 117370 	DCONF:	MOVE	1,[FMSGCD (CONFIG <CR>)]
  7111	042261	260 17 0 00 041465*		GO	CHKARG			; check for argument
  7112	042262	260 17 0 00 043073 		GO	CONPNT			; print results
  7113	042263	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 168
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0331

  7114
  7115					;#********************************************************************
  7116					;* SETENA - Ensure the port is in the enabled state
  7117					;
  7118					; Return:  +1 - Failed
  7119					;	   +2 - Succeeded
  7120					;#********************************************************************
  7121
  7122	042264	261 17 0 00 000000 	SETENA:	RPUT	(0,1,2)			; save AC's
  7123
  7124
  7125					; First set DISABLE bit and wait for DISABLE COMPLETE
  7126
  7127	042267	201 01 0 00 000050 		MOVEI	1,PDSABL!MPRUN		; get DISABLE bit
  7128	042270	336 00 0 00 030037 		SKIPN	USER			; user mode?
  7129	042271	660 01 0 00 000004 		TRO	1,4			; no - set PIA bits
  7130	042272	260 17 0 00 041100*		GO	LDCSR			; write to CSR
  7131	042273	201 02 0 00 000144 		MOVEI	2,^D100			; check up to 100 times
  7132	042274	260 17 0 00 042017*	SETEN0:	GO	RDCSR			; read CSR
  7133	042275	254 00 0 00 042320 		JRST	SETENE			; error - exit
  7134	042276	603 01 0 00 000040 		TLNE	1,(DCOMP)		; DISABLE COMPLETE set?
  7135	042277	254 00 0 00 042303 		JRST	SETEN1			; yes - continue
  7136	042300	005 00 0 00 000005 		DELAY	5			; wait 5 milliseconds
  7137	042301	367 02 0 00 042274 		SOJG	2,SETEN0		; no - loop till done
  7138	042302	254 00 0 00 042320 		JRST	SETENE			; no - error - exit
  7139
  7140					; Now set ENABLE bit and wait for ENABLE COMPLETE
  7141
  7142	042303	201 01 0 00 000030 	SETEN1:	MOVEI	1,PENABL!MPRUN		; get ENABLE bit
  7143	042304	336 00 0 00 030037 		SKIPN	USER			; user mode?
  7144	042305	660 01 0 00 000004 		TRO	1,4			; no - set PIA bits
  7145	042306	260 17 0 00 042272*		GO	LDCSR			; write to CSR
  7146	042307	201 02 0 00 000144 		MOVEI	2,^D100			; check up to 100 times
  7147	042310	260 17 0 00 042274*	SETEN2:	GO	RDCSR			; read CSR
  7148	042311	254 00 0 00 042320 		JRST	SETENE			; error - exit
  7149	042312	603 01 0 00 000020 		TLNE	1,(ECOMP)		; ENABLE COMPLETE set?
  7150	042313	254 00 0 00 042317 		JRST	SETEN3			; yes - continue
  7151	042314	005 00 0 00 000005 		DELAY	5			; wait 5 milliseconds
  7152	042315	367 02 0 00 042310 		SOJG	2,SETEN2		; no - loop till done
  7153	042316	334 00 0 00 000000 		SKIPA				; failed - exit
  7154
  7155					; Exit
  7156
  7157	042317	350 00 0 17 777775 	SETEN3:	AOS	-3(P)			; set up proper return
  7158	042320	262 17 0 00 000002 	SETENE:	RGET	(2,1,0)			; restore AC's
  7159
  7160	042323	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 169
DFNIA1	MAC	18-Feb-84 20:30		Port Debugger                                                                      SEQ 0332

  7161
  7162					;#********************************************************************
  7163					;* SETDSA - Disable the port
  7164					;#********************************************************************
  7165
  7166	042324	261 17 0 00 000001 	SETDSA:	RPUT	(1,2)			; save AC's
  7167
  7168	042326	260 17 0 00 042310*		GO	RDCSR			; read CSR
  7169	042327	400 01 0 00 000000 		SETZ	1,			; error
  7170	042330	606 01 0 00 000010 		TRNN	1,MPRUN			; port actually running?
  7171	042331	254 00 0 00 042345 		JRST	SETDSX			; no - exit
  7172	042332	201 01 0 00 000050 		MOVEI	1,PDSABL!MPRUN		; get DISABLE bit
  7173	042333	336 00 0 00 030037 		SKIPN	USER			; user mode?
  7174	042334	660 01 0 00 000004 		TRO	1,4			; no - set PIA bits
  7175	042335	260 17 0 00 042306*		GO	LDCSR			; write to CSR
  7176	042336	201 02 0 00 000144 		MOVEI	2,^D100			; check up to 100 times
  7177	042337	260 17 0 00 042326*	SETDS0:	GO	RDCSR			; read CSR
  7178	042340	254 00 0 00 042345 		JRST	SETDSX			; error - exit
  7179	042341	603 01 0 00 000040 		TLNE	1,(DCOMP)		; DISABLE COMPLETE set?
  7180	042342	254 00 0 00 042345 		JRST	SETDSX			; yes - exit
  7181	042343	005 00 0 00 000005 		DELAY	5			; wait 5 milliseconds
  7182	042344	367 02 0 00 042337 		SOJG	2,SETDS0		; no - loop till done
  7183	042345	262 17 0 00 000002 	SETDSX:	RGET	(2,1)			; restore AC's
  7184
  7185	042347	263 17 0 00 000000 		RTN				; return
  7186
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 170
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0333

  7187						SUBTTL	Program Utility Routines
  7188
  7189					;#*********************************************************************
  7190					;* TRACE - Program Trace Routine
  7191					;
  7192					; This routine traces test execution if the TRACE switch is set.  This
  7193					; routine sets up TSTSUB, ERFLG, ERRPC for error reporting during  the
  7194					; test, and ERRNUM for interrupt handling.
  7195					;#********************************************************************
  7196
  7197	042350	261 17 0 00 000000 	TRACE:	RPUT	(0,1)			; save AC's
  7198
  7199	042352	202 00 0 00 115606 		MOVEM	TSTOFF			; save relocatable offset
  7200	042353	200 01 0 00 115576 		MOVE	1,TSTNUM		; get test number
  7201	042354	200 01 0 01 032037 		MOVE	1,TSTTAB(1)		; get test flags
  7202	042355	260 17 0 00 032246*		GO	SWITT			; get switches
  7203	042356	606 00 0 00 400000 		TRNN	TRACET			; want to trace?
  7204	042357	254 00 0 00 042366 		JRST	TREX			; no
  7205	042360	037 00 0 00 127507 		TMSG	<* Test >
  7206	042361	200 00 0 00 115576 		MOVE	TSTNUM			; get test number
  7207	042362	037 16 0 00 000003 		PNTOCS				; print it
  7208	042363	603 01 0 00 000100 		TLNE	1,(TDENA)		; disabled?
  7209	042364	037 00 0 00 127511 		TMSG	< (Disabled)>		; yes - print such
  7210	042365	037 00 0 00 030242 		PCRL
  7211	042366	402 00 0 00 000015 	TREX:	SETZM	ERFLG			; clear the error detected flag
  7212	042367	402 00 0 00 030052 		SETZM	ERRPC			; clear the error PC
  7213	042370	402 00 0 00 115577 		SETZM	TSTSUB			; clear subtest number
  7214	042371	402 00 0 00 000000*		SETZM	SCOOFF			; clear error offset
  7215	042372	476 00 0 00 041321*		SETOM	INTNUM			; initialize interrupt number
  7216	042373	402 00 0 00 040444*		SETZM	SNEXT			; initialize next address
  7217	042374	402 00 0 00 040434*		SETZM	SDATA			; initialize CSR data
  7218	042375	603 01 0 00 000100 		TLNE	1,(TDENA)		; test disabled?
  7219	042376	254 00 0 00 042402 		JRST	TREXX			; yes - exit test
  7220	042377	262 17 0 00 000001 		RGET	(1,0)			; no - restore AC's
  7221
  7222	042401	263 17 0 00 000000 		RTN				; exit normally
  7223
  7224	042402	262 17 0 00 000001 	TREXX:	RGET	(1,0,XXX)		; restore AC's
  7225
  7226	042405	263 17 0 00 000000 		RTN				; exit test
  7227
  7228
  7229					;#********************************************************************
  7230					;* TSTEND - Do end of test processing
  7231					;#********************************************************************
  7232
  7233	042406	200 01 0 00 115576 	TSTEND:	MOVE	1,TSTNUM		; get test number
  7234	042407	202 15 0 01 032151 		MOVEM	ERFLG,TSTRES(1)		; save results
  7235	042410	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 171
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0334

  7236
  7237					;#********************************************************************
  7238					;* TSTPNT - Print test name/number
  7239					;#********************************************************************
  7240
  7241	042411	261 17 0 00 000000 	TSTPNT:	RPUT	(0,1)			; save AC's
  7242
  7243	042413	037 00 0 00 117745 		TMSG	<TST>
  7244	042414	200 00 0 00 115576 		MOVE	TSTNUM			; get test number
  7245	042415	037 16 0 00 000003 		PNTOCS				; print it
  7246	042416	200 00 0 00 115577 		MOVE	TSTSUB			; get subtest number
  7247	042417	322 00 0 00 042422 		JUMPE	TSTPN0			; zero?  yes - continue
  7248	042420	037 00 0 00 117115 		TMSG	<->			; no - print it
  7249	042421	037 16 0 00 000003 		PNTOCS
  7250	042422	260 17 0 00 042355*	TSTPN0:	GO	SWITT			; get switches
  7251	042423	603 00 0 00 000200 		TLNE	TXTINH			; text inhibit set?
  7252	042424	254 00 0 00 042430 		JRST	TSTPNX			; yes - exit
  7253	042425	037 00 0 00 122534 		TMSG	< - >
  7254	042426	200 01 0 00 115576 		MOVE	1,TSTNUM		; get test number
  7255	042427	256 00 0 01 032120 		XCT	TSTNAM(1)		; print test description
  7256	042430	262 17 0 00 000001 	TSTPNX:	RGET	(1,0)			; restore AC's
  7257
  7258	042432	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 172
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0335

  7259
  7260					;#********************************************************************
  7261					;* PNTCRM - Print CRAM word
  7262					;
  7263					; Arguments:	AC2 - Left 30 bits
  7264					;		AC3 - Right 30 bits
  7265					;#********************************************************************
  7266
  7267	042433	261 17 0 00 000000 	PNTCRM:	RPUT	(0,1)			; save AC's
  7268
  7269	042435	135 00 0 00 127514 		LDB	[POINT 12,2,17]		; get MWJMPFLD
  7270	042436	001 04 0 00 000000 		PNTOCC	4,0			; print it
  7271	042437	037 00 0 00 127515 		TMSG	<  >
  7272	042440	135 00 0 00 127516 		LDB	[POINT 1,2,18]		; get MWPAR
  7273	042441	037 01 0 00 000000 		PNT1				; print it
  7274	042442	037 00 0 00 127515 		TMSG	<  >
  7275	042443	135 00 0 00 127517 		LDB	[POINT 1,2,19]		; get MWOUTPUTENA
  7276	042444	037 01 0 00 000000 		PNT1				; print it
  7277	042445	135 00 0 00 127520 		LDB	[POINT 10,2,29]		; get MWMGCFLD
  7278	042446	001 04 0 00 000000 		PNTOCC	4,0			; print it
  7279	042447	037 00 0 00 127515 		TMSG	<  >
  7280	042450	135 00 0 00 127521 		LDB	[POINT 3,2,32]		; get MWSORCEFLD
  7281	042451	037 01 0 00 000000 		PNT1				; print it
  7282	042452	037 00 0 00 127515 		TMSG	<  >
  7283	042453	135 00 0 00 127522 		LDB	[POINT 3,2,35]		; get MWFUNCTFLD
  7284	042454	037 01 0 00 000000 		PNT1				; print it
  7285	042455	037 00 0 00 127515 		TMSG	<  >
  7286	042456	135 00 0 00 127523 		LDB	[POINT 3,3,8]		; get MWDESTFLD
  7287	042457	037 01 0 00 000000 		PNT1				; print it
  7288	042460	037 00 0 00 127515 		TMSG	<  >
  7289	042461	135 00 0 00 127524 		LDB	[POINT 1,3,9]		; get MWCCENA
  7290	042462	037 01 0 00 000000 		PNT1				; print it
  7291	042463	037 00 0 00 000040 		PSP
  7292	042464	135 00 0 00 127525 		LDB	[POINT 1,3,10]		; get MWRAMODE
  7293	042465	037 01 0 00 000000 		PNT1				; print it
  7294	042466	037 00 0 00 000040 		PSP
  7295	042467	135 00 0 00 127526 		LDB	[POINT 4,3,14]		; get MWPORTAFLD
  7296	042470	001 02 0 00 000000 		PNTOCC	2,0			; print it
  7297	042471	037 00 0 00 000040 		PSP
  7298	042472	135 00 0 00 127527 		LDB	[POINT 4,3,18]		; get MWPORTBFLD
  7299	042473	001 02 0 00 000000 		PNTOCC	2,0			; print it
  7300	042474	037 00 0 00 000040 		PSP
  7301	042475	135 00 0 00 127530 		LDB	[POINT 5,3,23]		; get MWSKIPFLD
  7302	042476	001 02 0 00 000000 		PNTOCC	2,0			; print it
  7303	042477	037 00 0 00 127515 		TMSG	<  >
  7304	042500	135 00 0 00 127531 		LDB	[POINT 3,3,26]		; get MWBUSCTLFLD
  7305	042501	037 01 0 00 000000 		PNT1				; print it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 173
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0336

  7306	042502	037 00 0 00 127515 		TMSG	<  >
  7307	042503	135 00 0 00 127532 		LDB	[POINT 1,3,27]		; get MWCARRY
  7308	042504	037 01 0 00 000000 		PNT1				; print it
  7309	042505	037 00 0 00 000040 		PSP
  7310	042506	135 01 0 00 127533 		LDB	1,[POINT 4,3,31]	; get MWCTRLFLD
  7311						XCT	[TMSG	<JZ  >		; print in English
  7312							 TMSG	<CJS >
  7313							 TMSG	<JMAP>
  7314							 TMSG	<CJP >
  7315							 TMSG	<PUSH>
  7316							 TMSG	<JSRP>
  7317							 TMSG	<CJV >
  7318							 TMSG	<JRP >
  7319							 TMSG	<RFCT>
  7320							 TMSG	<RPCT>
  7321							 TMSG	<CRTN>
  7322							 TMSG	<CJPP>
  7323							 TMSG	<LDCT>
  7324							 TMSG	<LOOP>
  7325							 TMSG	<CONT>
  7326	042507	256 00 0 01 127554 			 TMSG	<TWB >](1)
  7327	042510	037 00 0 00 127515 		TMSG	<  >
  7328	042511	135 00 0 00 127574 		LDB	[POINT 1,3,32]		; get MWTIMEFLD
  7329	042512	037 01 0 00 000000 		PNT1				; print it
  7330	042513	037 00 0 00 000040 		PSP
  7331	042514	135 00 0 00 127575 		LDB	[POINT 2,3,34]		; get MWSPARE00-01
  7332	042515	037 01 0 00 000000 		PNT1				; print it
  7333	042516	037 00 0 00 000040 		PSP
  7334	042517	135 00 0 00 127576 		LDB	[POINT 1,3,35]		; get MWMARKBIT
  7335	042520	037 01 0 00 000000 		PNT1				; print it
  7336	042521	037 07 0 00 000003 		TTALTM				; altmode typed?
  7337	042522	334 00 0 00 000000 		SKIPA				; no - continue
  7338						GO	[SETOM	ALTF		; yes - set 'altmode typed' flag
  7339							 SETZM	MULFLG		;   and clear 'examine next' flag
  7340	042523	260 17 0 00 127577 			 RTN]
  7341	042524	262 17 0 00 000001 		RGET	(1,0)			; restore AC's
  7342
  7343	042526	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 174
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0337

  7344
  7345					;#********************************************************************
  7346					;* PNTWD - Print a CRAM word (xxxx xxxx xxxx xxxx xxxx)
  7347					;
  7348					; Argument:	AC2 - Left half
  7349					;		AC3 - Right half
  7350					;#********************************************************************
  7351
  7352	042527	261 17 0 00 000000 	PNTWD:	RPUT	(0,1)			; save AC's
  7353
  7354	042531	135 00 0 00 127514 		LDB	[POINT 12,2,17]		; get 1st 4 digits
  7355	042532	037 04 0 00 000000 		PNT4				; print them
  7356	042533	135 00 0 00 127602 		LDB	[POINT 12,2,29]		; get 2nd 4 digits
  7357	042534	037 04 0 00 000000 		PNT4				; print them
  7358	042535	135 01 0 00 127603 		LDB	1,[POINT 6,2,35]	; get next 6 bits
  7359	042536	135 00 0 00 127604 		LDB	[POINT 6,3,11]		; get next 6 bits
  7360	042537	242 01 0 00 000006 		LSH	1,6			; position correctly
  7361	042540	434 00 0 00 000001 		IOR	1			; build 12 bits (3rd 4 digits)
  7362	042541	037 04 0 00 000000 		PNT4				; print them
  7363	042542	135 00 0 00 127605 		LDB	[POINT 12,3,23]		; get 1st 4 digits
  7364	042543	037 04 0 00 000000 		PNT4				; print them
  7365	042544	135 00 0 00 127606 		LDB	[POINT 12,3,35]		; get last 4 digits
  7366	042545	037 04 0 00 000000 		PNT4				; print them
  7367	042546	262 17 0 00 000001 		RGET	(1,0)			; restore AC's
  7368
  7369	042550	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 175
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0338

  7370
  7371					;#********************************************************************
  7372					;* CALPAR - Calculate parity for a CRAM location
  7373					;
  7374					; Arguments:	AC1 - Contains 2nd word of microword as  put  together
  7375					;		      by the microword macro MWORD.  This is only used
  7376					;		      to look at bit 35 which is a flag specifying bad
  7377					;		      parity.
  7378					;		AC2 - Bits 0-29 (Right justified)
  7379					;		AC3 - Bits 30-59 (Right justified)
  7380					;
  7381					; Function:	Calculate good parity and insert into Bit 12  of  the
  7382					;		microword which is Bit 18 in AC2. Then if 'force bad
  7383					;		parity' flag is set, complement this bit.
  7384					;
  7385					; Return:	+1 always.  AC's are unmodified, except bit 18 of AC2.
  7386					;#********************************************************************
  7387
  7388	042551	261 17 0 00 000004 	CALPAR:	RPUT	(4,5,6,7)		; save AC's
  7389
  7390	042555	402 00 0 00 134145'		SETZM	CALMAR#			; clear MARK bit location
  7391	042556	602 03 0 00 000001 		TRNE	3,1			; MARK bit set?
  7392	042557	476 00 0 00 134145'		SETOM	CALMAR			; yes - note the fact
  7393	042560	620 03 0 00 000001 		TRZ	3,1			; ensure MARK bit is zero
  7394	042561	400 04 0 00 000000 		SETZ	4,			; clear count of number of 1's
  7395	042562	200 05 0 00 000002 		MOVE	5,2			; get left half
  7396	042563	210 06 0 00 000005 		MOVN	6,5			; calculate number of 1's
  7397	042564	632 05 0 00 000006 		TDZE	5,6			;  ...
  7398	042565	344 04 0 00 042563 		AOJA	4,.-2			;  ...
  7399	042566	200 05 0 00 000003 		MOVE	5,3			; get right half
  7400	042567	210 06 0 00 000005 		MOVN	6,5			; calculate number of 1's
  7401	042570	632 05 0 00 000006 		TDZE	5,6			;  ...
  7402	042571	344 04 0 00 042567 		AOJA	4,.-2			;  ...
  7403
  7404					; Now, the parity is even if bit 35 of AC4 is zero, and odd if bit 35 set
  7405
  7406	042572	606 04 0 00 000001 		TRNN	4,1			; bit 35 set?
  7407	042573	431 02 0 00 400000 		XORI	2,400000		; no - complement bit 18
  7408
  7409					; Also, handle force parity flag
  7410
  7411	042574	602 01 0 00 000001 		TRNE	1,1			; 'force bad parity' flag set?
  7412	042575	431 02 0 00 400000 		XORI	2,400000		; yes - complement bit 18
  7413
  7414					; Done - exit
  7415
  7416	042576	332 00 0 00 134145'		SKIPE	CALMAR			; MARK bit set initially?
  7417	042577	660 03 0 00 000001 		TRO	3,1			; yes - set it now
  7418	042600	262 17 0 00 000007 		RGET	(7,6,5,4)		; restore AC's
  7419
  7420	042604	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 176
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0339

  7421
  7422					;#********************************************************************
  7423					;* CSRPNT - Print CSR register as 'CSR: xxxxxx,,xxxxxx' followed by
  7424					;*          English translation.
  7425					;#********************************************************************
  7426
  7427	042605	261 17 0 00 000000 	CSRPNT:	RPUT	(0,1,2,3)		; save AC's
  7428
  7429	042611	037 00 0 00 127607 		TMSGC	<CSR: >			; print out the data
  7430	042612	200 00 0 00 000001 		MOVE	1
  7431	042613	037 13 0 00 000000 		PNTHW
  7432	042614	260 17 0 00 042422*		GO	SWITT			; get switches
  7433	042615	603 00 0 00 000200 		TLNE	TXTINH			; TXTINH set?
  7434	042616	254 00 0 00 042622 		JRST	CSRPNX			; yes - exit
  7435	042617	201 02 0 00 000023 		MOVEI	2,^D19			; character count so far
  7436	042620	201 03 0 00 000023 		MOVEI	3,^D19			; continuation line column number
  7437	042621	260 17 0 00 042627 		GO	CSRENG			; go print in English
  7438	042622	262 17 0 00 000003 	CSRPNX:	RGET	(3,2,1,0)		; restore AC's
  7439
  7440	042626	263 17 0 00 000000 		RTN				; return
  7441
  7442
  7443					;#********************************************************************
  7444					;* CSRENG - Print CSR data in English
  7445					;
  7446					; AC1 - Contains data to print
  7447					; AC2 - Contains character count on line so far
  7448					; AC3 - Contains column to start continuation lines
  7449					;#********************************************************************
  7450
  7451	042627	261 17 0 00 000000 	CSRENG:	RPUT	(0,1,4,5,6)		; save AC's
  7452
  7453	042634	202 01 0 00 134147'		MOVEM	1,CSRENS#		; save CSR data
  7454	042635	200 04 0 00 000001 		MOVE	4,1			; get data into AC1
  7455	042636	400 05 0 00 000000 		SETZ	5,			; clear bit index
  7456	042637	404 04 0 00 127611 		AND	4,[777770,,777770]	; clear port ID and PI bits
  7457	042640	434 04 0 00 127612 		IOR	4,[000004,,000004]	; set bits so both are printed
  7458	042641	322 04 0 00 042660 	CSREN0:	JUMPE	4,CSRENX		; zero? yes - exit
  7459	042642	607 04 0 00 400000 		TLNN	4,400000		; no - bit set?
  7460	042643	254 00 0 00 042656 		JRST	CSREN2			; no - continue
  7461	042644	271 02 0 00 000007 		ADDI	2,7			; increment character count
  7462	042645	305 02 0 00 000110 		CAIGE	2,^D72			; over 72 characters?
  7463	042646	254 00 0 00 042655 		JRST	CSREN1			; no - go print
  7464	042647	037 00 0 00 030242 		PCRL				; yes - print CRLF, then
  7465	042650	200 01 0 00 000003 		MOVE	1,3			;   print spaces to start
  7466	042651	037 00 0 00 117042 		TMSG	< >			;   in proper column, and
  7467	042652	367 01 0 00 042651 		SOJG	1,.-1			;   adjust character count
  7468	042653	200 02 0 00 000003 		MOVE	2,3			;   properly
  7469	042654	271 02 0 00 000007 		ADDI	2,7			; increment character count
  7470	042655	256 00 0 05 042666 	CSREN1:	XCT	CSRENB(5)		; yes - print it
  7471	042656	242 04 0 00 000001 	CSREN2:	LSH	4,1			; left shift one bit
  7472	042657	345 05 0 00 042641 		AOJGE	5,CSREN0		; increment and keep looping
  7473	042660	262 17 0 00 000006 	CSRENX:	RGET	(6,5,4,1,0)		; restore AC's
  7474
  7475	042665	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 177
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0340

  7476
  7477					;#********************************************************************
  7478					;* CSRENB - CSR bits
  7479					;#********************************************************************
  7480
  7481	042666	037 00 0 00 127613 	CSRENB:	TMSG	<PortP >		; 00
  7482	042667	037 00 0 00 127615 		TMSG	<CsrRqs >		; 01
  7483	042670	037 00 0 00 127617 		TMSG	<CsrChn >		; 02
  7484	042671	037 00 0 00 127621 		TMSG	<Dinit >		; 03
  7485	042672	037 00 0 00 127623 		TMSG	<PI00Rq >		; 04
  7486	042673	037 00 0 00 127625 		TMSG	<RqInt >		; 05
  7487	042674	037 00 0 00 127627 		TMSG	<CramPE >		; 06
  7488	042675	037 00 0 00 127631 		TMSG	<MBErr >		; 07
  7489	042676	037 00 0 00 127633 		TMSG	<Unused >		; 08
  7490	042677	037 00 0 00 127633 		TMSG	<Unused >		; 09
  7491	042700	037 00 0 00 127633 		TMSG	<Unused >		; 10
  7492	042701	037 00 0 00 127635 		TMSG	<Idle >			; 11
  7493	042702	037 00 0 00 127637 		TMSG	<Dcomp >		; 12
  7494	042703	037 00 0 00 127641 		TMSG	<Ecomp >		; 13
  7495	042704	037 00 0 00 127633 		TMSG	<Unused >		; 14
  7496						GO	[TMSG	<ID=>		; 15
  7497							 LDB	[POINT 3,CSRENS,17]
  7498							 PNT1
  7499	042705	260 17 0 00 127645 			 RTN]
  7500	042706	255 00 0 00 000000 		JFCL				; 16
  7501	042707	255 00 0 00 000000 		JFCL				; 17
  7502	042710	037 00 0 00 127651 		TMSG	<PClr >			; 18
  7503	042711	037 00 0 00 127653 		TMSG	<TEbuf >		; 19
  7504	042712	037 00 0 00 127655 		TMSG	<GenEPE >		; 20
  7505	042713	037 00 0 00 127657 		TMSG	<SelLAR >		; 21
  7506	042714	037 00 0 00 127661 		TMSG	<SinCyc >		; 22
  7507	042715	037 00 0 00 127663 		TMSG	<Spare1 >		; 23
  7508	042716	037 00 0 00 127665 		TMSG	<EbusPE >		; 24
  7509	042717	037 00 0 00 127667 		TMSG	<FQErr >		; 25
  7510	042720	037 00 0 00 127671 		TMSG	<MVErr >		; 26
  7511	042721	037 00 0 00 127673 		TMSG	<CmdQAV >		; 27
  7512	042722	037 00 0 00 127675 		TMSG	<ResQAV >		; 28
  7513	042723	037 00 0 00 127677 		TMSG	<Spare2 >		; 29
  7514	042724	037 00 0 00 127701 		TMSG	<Disabl >		; 30
  7515	042725	037 00 0 00 127703 		TMSG	<Enable >		; 31
  7516	042726	037 00 0 00 127705 		TMSG	<MPRun >		; 32
  7517						GO	[LDB	[POINT 3,CSRENS,35]
  7518							 SKIPN
  7519							 RTN
  7520							 TMSG	<Pia=>		; 33-35
  7521							 PNT1
  7522	042727	260 17 0 00 127711 			 RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 178
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0341

  7523
  7524					;#********************************************************************
  7525					;* SAVCRM - Save specified CRAM locations in a buffer
  7526					;#********************************************************************
  7527
  7528	042730	261 17 0 00 000000 	SAVCRM:	RPUT	(0,1,2,3)		; save AC's
  7529
  7530	042734	260 17 0 00 042203*		GO	ISTOP			; stop the port
  7531	042735	201 02 0 00 042777 		MOVEI	2,SAVCRL		; get address of storage area
  7532	042736	200 03 0 00 000001 		MOVE	3,1			; get AOBJN word
  7533	042737	552 03 0 00 035604 	SAVCR0:	HRRZM	3,CADDR			; set up CRAM address
  7534	042740	260 17 0 00 036263 		GO	DRCRAM			; read CRAM location
  7535	042741	120 00 0 00 035605 		DMOVE	CWORDL			; get location
  7536	042742	124 00 0 02 000000 		DMOVEM	(2)			; save it
  7537	042743	271 02 0 00 000002 		ADDI	2,2			; point to next location
  7538	042744	253 03 0 00 042737 		AOBJN	3,SAVCR0		; loop till done
  7539	042745	262 17 0 00 000003 		RGET	(3,2,1,0)		; restore AC's
  7540
  7541	042751	263 17 0 00 000000 		RTN				; return
  7542
  7543
  7544					;#********************************************************************
  7545					;* RESCRM - Restore CRAM locations
  7546					;#********************************************************************
  7547
  7548	042752	261 17 0 00 000000 	RESCRM:	RPUT	(0,1,2,3)		; save AC's
  7549
  7550	042756	260 17 0 00 042734*		GO	ISTOP			; stop the port
  7551	042757	261 17 0 00 033670 		PUT	PARFLG			; save parity flag
  7552	042760	402 00 0 00 033670 		SETZM	PARFLG			; don't calculate parity
  7553	042761	201 02 0 00 042777 		MOVEI	2,SAVCRL		; get address of storage area
  7554	042762	200 03 0 00 000001 		MOVE	3,1			; get AOBJN word
  7555	042763	552 03 0 00 035604 	RESCR0:	HRRZM	3,CADDR			; set up CRAM address
  7556	042764	120 00 0 02 000000 		DMOVE	(2)			; save it
  7557	042765	124 00 0 00 035605 		DMOVEM	CWORDL			; get location
  7558	042766	260 17 0 00 036231 		GO	DWCRAM			; read CRAM location
  7559	042767	271 02 0 00 000002 		ADDI	2,2			; point to next location
  7560	042770	253 03 0 00 042763 		AOBJN	3,RESCR0		; loop till done
  7561	042771	262 17 0 00 033670 		GET	PARFLG			; restore parity flag
  7562	042772	262 17 0 00 000003 		RGET	(3,2,1,0)		; restore AC's
  7563
  7564	042776	263 17 0 00 000000 		RTN				; return
  7565
  7566					; CRAM storage area
  7567
  7568	042777				SAVCRL:	BLOCK	^D60
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 179
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0342

  7569
  7570					;#********************************************************************
  7571					;* CONPNT - Print configuration data
  7572					;#********************************************************************
  7573
  7574	043073	261 17 0 00 000000 	CONPNT:	RPUT	(0,1,2,3)		; save AC's
  7575
  7576	043077	260 17 0 00 065672 		GO	RDADDR			; read our address
  7577						TMSGD	<
  7578					***** NI Configuration *****
  7579					   Physical Address
  7580					Bt1 Bt2 Bt3 Bt4 Bt5 Bt6
  7581	043100	037 00 0 00 127717 	----------------------->
  7582
  7583					; Print this node address first
  7584
  7585	043101	120 01 0 00 033704 		DMOVE	1,SADDR			; get address
  7586	043102	260 17 0 00 070261 		GO	PADDR			; print it
  7587	043103	037 00 0 00 127744 		TMSGD	<  (Self)>
  7588
  7589					; Now print accumulated data
  7590
  7591	043104	201 03 0 00 043147 		MOVEI	3,CONTBL-2		; initialize address of table
  7592	043105	271 03 0 00 000002 	CONPN0:	ADDI	3,2			; point to next address
  7593	043106	120 00 0 03 000000 		DMOVE	(3)			; get address
  7594	043107	620 00 0 00 000017 		TRZ	17			; get rid of MBZ bits
  7595	043110	404 01 0 00 127747 		AND	1,[3,,777740]		; get rid of MBZ bits
  7596	043111	434 00 0 00 000001 		IOR	1			; include second word
  7597	043112	322 00 0 00 043117 		JUMPE	CONPNX			; zero? yes - exit
  7598
  7599					; Print entry
  7600
  7601	043113	120 01 0 03 000000 		DMOVE	1,(3)			; get address
  7602	043114	260 17 0 00 070261 		GO	PADDR			; print it
  7603	043115	037 00 0 00 030242 		PCRL
  7604	043116	254 00 0 00 043105 		JRST	CONPN0			; loop till done
  7605
  7606					; Exit
  7607
  7608	043117	262 17 0 00 000003 	CONPNX:	RGET	(3,2,1,0)		; restore AC's
  7609
  7610	043123	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 180
DFNIA1	MAC	18-Feb-84 20:30		Program Utility Routines                                                           SEQ 0343

  7611
  7612					;#********************************************************************
  7613					;* SAVCON - Accumulate configuration data
  7614					;#********************************************************************
  7615
  7616					; Check if self
  7617
  7618	043124	120 00 0 00 073007 	SAVCON:	DMOVE	RSPONS+7		; get source address
  7619	043125	620 00 0 00 000017 		TRZ	17			; get rid of MBZ bits
  7620	043126	404 01 0 00 127747 		AND	1,[3,,777740]		; get rid of MBZ bits
  7621	043127	316 00 0 00 033704 		CAMN	SADDR			; sent by self?
  7622	043130	312 01 0 00 033705 		CAME	1,SADDR+1	
  7623	043131	334 00 0 00 000000 		SKIPA				; no - continue
  7624	043132	263 17 0 00 000000 		RTN				; yes - exit
  7625
  7626					; Look for free spot or match
  7627
  7628	043133	400 03 0 00 000000 		SETZ	3,			; clear table pointer
  7629	043134	316 00 0 03 043151 	SAVCO1:	CAMN	CONTBL(3)		; check for match of bytes 1-4
  7630	043135	312 01 0 03 043152 		CAME	1,CONTBL+1(3)		;   and of bytes 5-6
  7631	043136	334 00 0 00 000000 		SKIPA				; no - continue
  7632	043137	263 17 0 00 000000 		RTN				; yes - go build entry
  7633	043140	200 02 0 03 043151 		MOVE	2,CONTBL(3)		; get first word
  7634	043141	270 02 0 03 043152 		ADD	2,CONTBL+1(3)		; add in 2nd word
  7635	043142	322 02 0 00 043147 		JUMPE	2,SAVCO2		; free spot? yes - go build entry
  7636	043143	271 03 0 00 000002 		ADDI	3,2			; increment table pointer
  7637	043144	307 03 0 00 000306 		CAIG	3,^D198			; table full?
  7638	043145	254 00 0 00 043134 		JRST	SAVCO1			; no - keep looking for a match
  7639	043146	263 17 0 00 000000 		RTN				; yes - exit
  7640
  7641					; Save in table
  7642
  7643	043147	124 00 0 03 043151 	SAVCO2:	DMOVEM	CONTBL(3)		; save it
  7644	043150	263 17 0 00 000000 		RTN				; exit
  7645
  7646					; Configuration table (source address)
  7647
  7648	043151				CONTBL:	BLOCK	^D100*2			; up to 100 nodes
  7649
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 181
DFNIA1	MAC	18-Feb-84 20:30		Statistics Routines                                                                SEQ 0344

  7650						SUBTTL	Statistics Routines
  7651
  7652					;#********************************************************************
  7653					;* SUPDAT - Update statistics for datagrams sent
  7654					;
  7655					; Given:  PACKET - Contains the packet data sent
  7656					;#********************************************************************
  7657
  7658	043461	261 17 0 00 000000 	SUPDAT:	RPUT	(0,1,2,3,OP)		; save AC's
  7659
  7660	043466	135 11 0 00 127201 		LDB	OP,[POINT 8,PACKET+3,23]; get op code
  7661	043467	201 02 0 00 000002 		MOVEI	2,2			; initialize to 'other packet'
  7662	043470	306 11 0 00 000001 		CAIN	OP,DGSNT		; datagram?
  7663						GO	[SETZ	2,		; yes - set to 'other datagram'
  7664							 DMOVE	PACKET+7	;   and to 'self-directed dgm'
  7665							 CAMN	SADDR		;   if destination address is
  7666							 CAME	1,SADDR+1	;   self
  7667							 AOS	2
  7668	043471	260 17 0 00 127750 			 RTN]
  7669
  7670					; Increment packets sent
  7671
  7672	043472	221 02 0 00 000003 	SUPDA0:	IMULI	2,3			; calculate address of statistics
  7673	043473	271 02 0 00 043665 		ADDI	2,STASNT		;   ...
  7674	043474	350 00 0 02 000000 		AOS	.SPSNT(2)		; increment number of packets sent
  7675	043475	200 03 0 00 000002 		MOVE	3,2			; get into AC3
  7676	043476	400 00 0 00 000000 		SETZ				; clear byte count
  7677	043477	260 17 0 00 070207 		GO	DECOPC			; decode op code
  7678	043500	334 00 0 00 000000 		SKIPA				; error - exit
  7679						XCT	[GO	[LDB	[POINT 20,PACKET+4,35] 	; 0-SNDDG
  7680								 ADDI	^D14
  7681								 RTN]
  7682							 JFCL					; 1-LDMCAT
  7683							 JFCL					; 2-LDPTT
  7684							 JFCL					; 3-RCCNT
  7685							 JFCL					; 4-WRPLI
  7686							 JFCL					; 5-RDPLI
  7687							 JFCL					; 6-RDNSA
  7688							 JFCL					; 7-WRNSA
  7689							 GO	[LDB	[POINT 20,PACKET+4,35] 	; 10-DGRCV
  7690								 ADDI	^D14
  7691	043501	256 00 0 01 127762 				 RTN]](1)
  7692	043502	272 00 0 03 000001 		ADDM	.SBSNT(3)		; add in byte count
  7693	043503	262 17 0 00 000011 		RGET	(OP,3,2,1,0)		; restore AC's
  7694
  7695	043510	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 182
DFNIA1	MAC	18-Feb-84 20:30		Statistics Routines                                                                SEQ 0345

  7696
  7697					;#********************************************************************
  7698					;* RUPDAT - Update statistics for datagrams received
  7699					;
  7700					; Given:  RSPONS - Contains the packet data received
  7701					;#********************************************************************
  7702
  7703	043511	261 17 0 00 000000 	RUPDAT:	RPUT	(0,1,2,3,OP)		; save AC's
  7704
  7705
  7706					; First determine what category
  7707
  7708	043516	135 11 0 00 127162 		LDB	OP,[POINT 8,RSPONS+3,23]; get op code
  7709	043517	201 02 0 00 000002 		MOVEI	2,2			; initialize to 'other packet'
  7710	043520	302 11 0 00 000005 		CAIE	OP,DGRCV		; datagram received or a
  7711	043521	306 11 0 00 000001 		CAIN	OP,DGSNT		;   response?
  7712						GO	[SETZ	2,		; yes - set to 'other datagram'
  7713							 DMOVE	RSPONS+7	;   and to 'self-directed dgm'
  7714							 CAMN	SADDR		;   if destination address is
  7715							 CAME	1,SADDR+1	;   self
  7716							 AOS	2
  7717	043522	260 17 0 00 127773 			 RTN]
  7718
  7719					; Then determine which type it is - response requested, or packet received
  7720
  7721	043523	306 11 0 00 000005 		CAIN	OP,DGRCV		; packet received?
  7722	043524	254 00 0 00 043542 		JRST	RUPDA2			; yes - go handle
  7723	043525	200 03 0 00 073003 		MOVE	3,RSPONS+3		; get status word
  7724	043526	603 03 0 00 000004 		TLNE	3,4			; error bit set?
  7725	043527	254 00 0 00 043535 		JRST	RUPDA1			; yes - go handle
  7726
  7727					; By dint of 'Rsp Requested'
  7728
  7729	043530	200 03 0 00 000002 		MOVE	3,2			; get offset
  7730	043531	221 03 0 00 000003 		IMULI	3,3			; calculate address of statistics
  7731	043532	271 03 0 00 043676 		ADDI	3,STARCV		;   ...
  7732	043533	350 00 0 03 000000 		AOS	.RPRCV(3)		; increment receive packet count
  7733	043534	254 00 0 00 043563 		JRST	RUPDAX			; go increment byte count
  7734
  7735					; By dint of 'Error in transmission'
  7736	
  7737	043535	200 03 0 00 000002 	RUPDA1:	MOVE	3,2			; get offset
  7738	043536	221 03 0 00 000003 		IMULI	3,3			; calculate address of statistics
  7739	043537	271 03 0 00 043665 		ADDI	3,STASNT		;   ...
  7740	043540	350 00 0 03 000002 		AOS	.STERR(3)		; increment transmit error count
  7741	043541	254 00 0 00 043563 		JRST	RUPDAX			; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 183
DFNIA1	MAC	18-Feb-84 20:30		Statistics Routines                                                                SEQ 0346

  7742
  7743					; This is a packet received from another port or from self (if destination
  7744					; port specified self).
  7745
  7746	043542	200 03 0 00 000002 	RUPDA2:	MOVE	3,2			; get offset
  7747	043543	221 03 0 00 000003 		IMULI	3,3			; calculate address of statistics
  7748	043544	271 03 0 00 043676 		ADDI	3,STARCV		;   ...
  7749	043545	350 00 0 03 000000 		AOS	.RPRCV(3)		; increment packet received count
  7750	043546	200 02 0 00 073003 		MOVE	2,RSPONS+3		; get status word
  7751	043547	135 02 0 00 130001 		LDB	2,[POINT 6,2,7]		; get status byte
  7752	043550	606 02 0 00 000001 		TRNN	2,1			; error word?
  7753	043551	254 00 0 00 043555 		JRST	RUPDA3			; no - continue
  7754	043552	350 00 0 03 000002 		AOS	.RRERR(3)		; yes - increment receive error count
  7755	043553	306 02 0 00 000020 		CAIN	2,20			; CRC error?
  7756	043554	350 00 0 03 000003 		AOS	.RRCRC(3)		; yes - increment CRC error count
  7757
  7758					; Calculate bytes received
  7759
  7760	043555	135 11 0 00 127162 	RUPDA3:	LDB	OP,[POINT 8,RSPONS+3,23]; get op code
  7761	043556	260 17 0 00 070207 		GO	DECOPC			; decode opcode
  7762	043557	334 00 0 00 000000 		SKIPA
  7763						XCT	[GO	[LDB	[POINT 20,RSPONS+4,35] 	; 0-SNDDG
  7764								 ADDI	^D14
  7765								 RTN]
  7766							 JFCL					; 1-LDMCAT
  7767							 JFCL					; 2-LDPTT
  7768							 JFCL					; 3-RCCNT
  7769							 JFCL					; 4-WRPLI
  7770							 JFCL					; 5-RDPLI
  7771							 JFCL					; 6-RDNSA
  7772							 JFCL					; 7-WRNSA
  7773							 GO	[LDB	[POINT 20,RSPONS+4,35] 	; 10-DGRCV
  7774								 ADDI	^D14
  7775	043560	256 00 0 01 130006 				 RTN]](1)
  7776	043561	272 00 0 03 000001 		ADDM	.RBRCV(3)		; add in byte count
  7777	043562	260 17 0 00 043124 		GO	SAVCON			; handle configuration data
  7778
  7779					; Done - exit
  7780
  7781	043563	262 17 0 00 000011 	RUPDAX:	RGET	(OP,3,2,1,0)		; restore AC's
  7782
  7783	043570	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 184
DFNIA1	MAC	18-Feb-84 20:30		Statistics Routines                                                                SEQ 0347

  7784
  7785					;#********************************************************************
  7786					;* SREPOR - Report statistics
  7787					;#********************************************************************
  7788
  7789	043571	261 17 0 00 000000 	SREPOR:	RPUT	(0,1,2,3,4,5)		; save AC's
  7790
  7791
  7792					; Packets Sent statistics
  7793
  7794	043577	037 00 0 00 130017 		TMSGC	<*** STATISTICS - Packets Sent (>
  7795	043600	260 17 0 00 042234*		GO	PTIME
  7796						TMSG	<) ***
  7797					 (All numbers decimal)
  7798					                      Packets     Bytes     Transmit
  7799					   Type                Sent       Sent       Errors
  7800	043601	037 00 0 00 130026 	   ----                ----       ----       ------>
  7801	043602	474 05 0 00 000000 		SETO	5,			; initialize pointer to line number
  7802	043603	350 00 0 00 000005 	SREPO0:	AOS	5			; point to next line
  7803	043604	301 05 0 00 000003 		CAIL	5,3			; done yet?
  7804	043605	254 00 0 00 043621 		JRST	SREPO1			; yes - exit
  7805	043606	200 04 0 00 000005 		MOVE	4,5			; calculate beginning address
  7806	043607	221 04 0 00 000003 		IMULI	4,3			;   of statistics
  7807	043610	271 04 0 00 043665 		ADDI	4,STASNT		;   ...
  7808
  7809					; Print it
  7810
  7811						XCT	[TMSGC	<Self-Directed DGMs>
  7812							 TMSGC	<Other DGMs        >
  7813	043611	256 00 0 05 130113 			 TMSGC	<Other Packets     >](5)
  7814	043612	200 00 0 04 000000 		MOVE	.SPSNT(4)		; get packets sent
  7815	043613	003 12 0 00 000000 		PNTDCC	^D10,0			; print it
  7816	043614	200 00 0 04 000001 		MOVE	.SBSNT(4)		; get bytes sent
  7817	043615	003 15 0 00 000000 		PNTDCC	^D13,0			; print it
  7818	043616	200 00 0 04 000002 		MOVE	.STERR(4)		; get transmit errors
  7819	043617	003 12 0 00 000000 		PNTDCC	^D10,0			; print it
  7820	043620	254 00 0 00 043603 		JRST	SREPO0			; loop till done
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 185
DFNIA1	MAC	18-Feb-84 20:30		Statistics Routines                                                                SEQ 0348

  7821
  7822					; Packets Received statistics
  7823
  7824	043621	037 00 0 00 030242 	SREPO1:	PCRL
  7825	043622	037 00 0 00 130116 		TMSGC	<*** STATISTICS - Packets Received (>
  7826	043623	260 17 0 00 043600*		GO	PTIME
  7827						TMSG	<) ***
  7828					 (All numbers decimal)                              Unexpected  Expected
  7829					                      Packets     Bytes       Rcvd      CRC       CRC
  7830					   Type                Rcvd       Rcvd       Errors    Errors    Errors
  7831	043624	037 00 0 00 130126 	   ----                ----       ----       ------    ------    ------>
  7832	043625	474 05 0 00 000000 		SETO	5,			; initialize pointer to line number
  7833	043626	350 00 0 00 000005 	SREPO2:	AOS	5			; point to next line
  7834	043627	301 05 0 00 000003 		CAIL	5,3			; done yet?
  7835	043630	254 00 0 00 043651 		JRST	SREPOX			; yes - exit
  7836	043631	200 04 0 00 000005 		MOVE	4,5			; calculate beginning address
  7837	043632	221 04 0 00 000005 		IMULI	4,5			;   of statistics
  7838	043633	271 04 0 00 043676 		ADDI	4,STARCV		;   ...
  7839
  7840					; Print it
  7841
  7842						XCT	[TMSGC	<Self-Directed DGMs>
  7843							 TMSGC	<Other DGMs        >
  7844	043634	256 00 0 05 130113 			 TMSGC	<Other Packets     >](5)
  7845	043635	200 00 0 04 000000 		MOVE	.RPRCV(4)		; get packets received
  7846	043636	003 12 0 00 000000 		PNTDCC	^D10,0			; print it
  7847	043637	200 00 0 04 000001 		MOVE	.RBRCV(4)		; get bytes received
  7848	043640	003 15 0 00 000000 		PNTDCC	^D13,0			; print it
  7849	043641	200 00 0 04 000002 		MOVE	.RRERR(4)		; get receive errors
  7850	043642	003 12 0 00 000000 		PNTDCC	^D10,0			; print it
  7851	043643	200 00 0 04 000003 		MOVE	.RRCRC(4)		; get CRC errors total
  7852	043644	274 00 0 04 000004 		SUB	.RREXP(4)		; calculate unexpected errors
  7853	043645	003 12 0 00 000000 		PNTDCC	^D10,0			; print it
  7854	043646	200 00 0 04 000004 		MOVE	.RREXP(4)		; get CRC expected errors
  7855	043647	003 12 0 00 000000 		PNTDCC	^D10,0			; print it
  7856	043650	254 00 0 00 043626 		JRST	SREPO2			; loop till done
  7857
  7858					; Exit
  7859
  7860	043651	037 00 0 00 030242 	SREPOX:	PCRL
  7861	043652	262 17 0 00 000005 		RGET	(5,4,3,2,1,0)		; restore AC's
  7862
  7863	043660	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 186
DFNIA1	MAC	18-Feb-84 20:30		Statistics Routines                                                                SEQ 0349

  7864
  7865					;#********************************************************************
  7866					;* SZERO - Clear statistics
  7867					;#********************************************************************
  7868
  7869	043661	402 00 0 00 043665 	SZERO:	SETZM	STATB			; clear first word
  7870	043662	200 00 0 00 130222 		MOVE	[STATB,,STATB+1]	; build a BLT pointer
  7871	043663	251 00 0 00 043714 		BLT	STATE			; clear them all
  7872	043664	263 17 0 00 000000 		RTN				; return
  7873
  7874
  7875					;#********************************************************************
  7876					;* Statistics data areas
  7877					;#********************************************************************
  7878
  7879					; Offset definitions for packets sent
  7880
  7881			000000		.SPSNT==0				; # packets sent
  7882			000001		.SBSNT==1				; # bytes sent
  7883			000002		.STERR==2				; # transmit errors
  7884
  7885					; Offset definitions for packets received
  7886
  7887			000000		.RPRCV==0				; # packets received
  7888			000001		.RBRCV==1				; # bytes received
  7889			000002		.RRERR==2				; # receive errors
  7890			000003		.RRCRC==3				; # CRC errors
  7891			000004		.RREXP==4				; # expected CRC errors
  7892
  7893					; Statistics
  7894
  7895	043665				STATB:
  7896	043665				STASNT:	BLOCK	3			; self-directed datagrams
  7897	043670					BLOCK	3			; other datagrams
  7898	043673					BLOCK	3			; other packets
  7899
  7900	043676				STARCV:	BLOCK	5			; self-directed datagrams
  7901	043703					BLOCK	5			; other datagrams
  7902	043710					BLOCK	5			; other packets
  7903
  7904			043714		STATE==.-1
  7905
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 187
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0350

  7906						SUBTTL	Microcode Handling Routines
  7907
  7908					;#********************************************************************
  7909					; These routines load/verify operational microcode and test microcode.
  7910					;
  7911					; Operational microcode:
  7912					;
  7913					;   TFLOAD - Load operational microcode for a test
  7914					;   FLOADB - Load operational microcode into buffer
  7915					;   FLOADC - Load microcode buffer contents into the port
  7916					;   FVERFC - Verify port microcode against buffer contents
  7917					;   FUERR -  Print verify error data
  7918					;
  7919					; Test microcode:
  7920					;
  7921					;   MLOADN - Load microcode and verify it (do not print errors)
  7922					;   MLOADY - Load microcode and verify it (print errors)
  7923					;   MVPNT - Print verify error data
  7924					;   MLIST - List microcode of a test
  7925					;   TLOAD - Load microcode/verify it for a test
  7926					;#********************************************************************
  7927
  7928					;#********************************************************************
  7929					;* TFLOAD - Load operational microcode for a test
  7930					;
  7931					; Returns:	+1 Error occurred (Error message or routine in AC0)
  7932					;		+2 Succeeded
  7933					;#********************************************************************
  7934
  7935	043715	402 00 0 00 044331 	TFLOAD:	SETZM	FFLAG			; clear operator output flag
  7936	043716	260 17 0 00 044010 		GO	FLOADB			; load file into ucode buffer
  7937						JRST	[MOVE	[TFLER1,,TFLER2]; error - exit
  7938	043717	254 00 0 00 130224 			 RTN]
  7939	043720	200 00 0 00 134250'		MOVE	TSLOAD			; get microcode loaded flag
  7940	043721	306 00 0 00 000777 		CAIN	777			; operational microcode?
  7941	043722	254 00 0 00 043741 		JRST	TFLOAX			; yes - return - already loaded
  7942	043723	261 17 0 00 000001 		PUT	1			; save AC1
  7943	043724	260 17 0 00 042756*		GO	ISTOP			; stop the port
  7944	043725	400 01 0 00 000000 		SETZ	1,			; clear AC1
  7945	043726	260 17 0 00 042335*		GO	LDCSR			; clear CSR
  7946	043727	262 17 0 00 000001 		GET	1			; restore AC1
  7947	043730	332 00 0 00 134166'		SKIPE	LDEBUG			; ucode load debug switch set?
  7948	043731	254 00 0 00 043741 		JRST	TFLOAX			; yes - don't load ucode
  7949	043732	201 00 0 00 000777 		MOVEI	777			; set microcode loaded flag to
  7950	043733	202 00 0 00 134250'		MOVEM	TSLOAD			;   indicate operational ucode
  7951	043734	260 17 0 00 044074 		GO	FLOADC			; load buffer into CRAM
  7952	043735	254 00 0 00 043743 		JRST	TFLOAE			; error - exit
  7953	043736	254 00 0 00 043741 		JRST	TFLOAX			; already loaded - exit
  7954	043737	260 17 0 00 044152 		GO	FVERFC			; verify CRAM against buffer
  7955	043740	254 00 0 00 043743 		JRST	TFLOAE			; error - report
  7956	043741	350 00 0 17 000000 	TFLOAX:	AOS	(P)			; no - set up proper return
  7957	043742	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 188
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0351

  7958
  7959					; Error loading operational microcode
  7960
  7961	043743	200 00 0 00 130226 	TFLOAE:	MOVE	[TFLER3,,TFLER4]
  7962	043744	474 15 0 00 000000 		SETO	ERFLG,			; set error flag
  7963	043745	332 00 0 00 134172'		SKIPE	MDEBUG			; error message debug switch set?
  7964	043746	350 00 0 17 000000 		AOS	(P)			; yes - skip this error
  7965	043747	263 17 0 00 000000 		RTN				; exit
  7966
  7967					; Error message routines
  7968
  7969	043750	037 01 0 00 130227 	TFLER1:	FMSG	<Can't access ">
  7970	043751	200 00 0 00 044324 		MOVE	FNAME
  7971	043752	037 01 0 00 000002 		PNTSXF
  7972	043753	037 01 0 00 000056 		PNTCIF	"."
  7973	043754	200 00 0 00 044325 		MOVE	FNAME+1
  7974	043755	037 01 0 00 000002 	 	PNTSXF
  7975	043756	037 01 0 00 130232 		FMSG	<" on selected load device>
  7976	043757	263 17 0 00 000000 		RTN
  7977
  7978	043760	037 00 0 00 130227 	TFLER2:	TMSG	<Can't access ">
  7979	043761	200 00 0 00 044324 		MOVE	FNAME
  7980	043762	037 00 0 00 000002 		PNTSIX
  7981	043763	037 00 0 00 000056 		PNTCI	"."
  7982	043764	200 00 0 00 044325 		MOVE	FNAME+1
  7983	043765	037 00 0 00 000002 	 	PNTSIX
  7984	043766	037 00 0 00 130232 		TMSG	<" on selected load device>
  7985	043767	263 17 0 00 000000 		RTN
  7986
  7987	043770	037 01 0 00 130240 	TFLER3:	FMSG	<Verify error loading ">
  7988	043771	200 00 0 00 044324 		MOVE	FNAME
  7989	043772	037 01 0 00 000002 		PNTSXF
  7990	043773	037 01 0 00 000056 		PNTCIF	"."
  7991	043774	200 00 0 00 044325 		MOVE	FNAME+1
  7992	043775	037 01 0 00 000002 	 	PNTSXF
  7993	043776	037 01 0 00 130245 		FMSG	<" into CRAM>
  7994	043777	263 17 0 00 000000 		RTN
  7995
  7996	044000	037 00 0 00 130240 	TFLER4:	TMSG	<Verify error loading ">
  7997	044001	200 00 0 00 044324 		MOVE	FNAME
  7998	044002	037 00 0 00 000002 		PNTSIX
  7999	044003	037 00 0 00 000056 		PNTCI	"."
  8000	044004	200 00 0 00 044325 		MOVE	FNAME+1
  8001	044005	037 00 0 00 000002 	 	PNTSIX
  8002	044006	037 00 0 00 130245 		TMSG	<" into CRAM>
  8003	044007	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 189
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0352

  8004
  8005					;#********************************************************************
  8006					;* FLOADB - Load operational microcode into buffer
  8007					;
  8008					; Data areas:	UCODE - 4096 word buffer of opr ucode
  8009					;		ULEN - number of uword used
  8010					;		UNAME - name of ucode loaded
  8011					;
  8012					;		FNAME - name of ucode desired
  8013					;		FFLAG - output flag 0 - no operator output
  8014					;				   -1 - operator output is printed
  8015					;
  8016					; Return:  +1 - Error occurred
  8017					;	   +2 - Load succeeded
  8018					;	   ULEN,UCODE,UNAME updated
  8019					;#********************************************************************
  8020
  8021	044010	261 17 0 00 000000 	FLOADB:	RPUT	(0,1,2,3,4)		; save AC's
  8022
  8023	044015	200 00 0 00 044326 		MOVE	UNAME			; get microcode loaded name
  8024	044016	312 00 0 00 044324 		CAME	FNAME			; same as desired?
  8025	044017	254 00 0 00 044024 		JRST	FLODB0			; no - must reload ucode
  8026	044020	200 00 0 00 044327 		MOVE	UNAME+1			; get microcode loaded extension
  8027	044021	316 00 0 00 044325 		CAMN	FNAME+1			; same as desired?
  8028	044022	254 00 0 00 044065 		JRST	FLODBX			; yes - already loaded
  8029	044023	402 00 0 00 044330 		SETZM	CNAME			; no - clear 'CRAM loaded' name
  8030
  8031					; Must load microcode into buffer
  8032
  8033	044024	201 00 0 00 044324 	FLODB0:	MOVEI	FNAME			; point to file name buffer
  8034	044025	037 05 0 00 000004 		FSELECT				; init the file
  8035						JRST	[SKIPN	FFLAG		; error - print error message
  8036							 JRST	FLODBE		;   if operator output is
  8037							 FMSGC	<? Can't access ">; desired, then exit
  8038							 MOVE	FNAME
  8039							 PNTSXF
  8040							 PNTCIF	"."
  8041							 MOVE	FNAME+1
  8042							 PNTSXF
  8043							 FMSGD	<" on selected load device.>
  8044	044026	254 00 0 00 130250 			 JRST	FLODBE]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 190
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0353

  8045	044027	332 00 0 00 044331 		SKIPE	FFLAG			  ; print operator output?
  8046						GO	[TMSGC	<[Reading file: > ; yes - print this
  8047							 MOVE	FNAME
  8048							 PNTSIX
  8049							 PNTCI	"."
  8050							 MOVE	FNAME+1
  8051							 PNTSIX				
  8052							 TMSGD	<]>
  8053	044030	260 17 0 00 130266 			 RTN]
  8054	044031	402 00 0 00 044326 		SETZM	UNAME			; invalidate current contents
  8055	044032	402 00 0 00 134256'		SETZM	UVERSN#			; invalidate current version number
  8056	044033	201 04 0 00 044333 		MOVEI	4,UCODE			; get buffer address
  8057	044034	260 17 0 00 000000*	FLODB1:	GO	FGETW			; get microcode entry
  8058	044035	254 00 0 00 044052 		 JRST	FLODB2			; error/EOF occurred
  8059	044036	403 01 0 00 000002 		SETZB	1,2			; clear AC's
  8060	044037	200 00 0 00 035604 		MOVE	CADDR			; get address
  8061	044040	137 00 0 00 126315 		DPB	[POINT 12,1,11]		; save in word 1
  8062	044041	135 00 0 00 130276 		LDB	[POINT 24,CWORDL,29]	; get left 24 bits (0-23)
  8063	044042	137 00 0 00 130277 		DPB	[POINT 24,1,35]		; save in word 1
  8064	044043	135 00 0 00 130300 		LDB	[POINT 6,CWORDL,35]	; get left 24 bits (24-27)
  8065	044044	137 00 0 00 130301 		DPB	[POINT 6,2,5]		; save in word 2
  8066	044045	135 00 0 00 130302 		LDB	[POINT 30,CWORDR,35]	; get right 28 bits (0-27)
  8067	044046	137 00 0 00 130303 		DPB	[POINT 30,2,35]		; save in word 2
  8068	044047	124 01 0 04 000000 		DMOVEM	1,(4)			; save data
  8069	044050	271 04 0 00 000002 		ADDI	4,2			; point to next location
  8070	044051	254 00 0 00 044034 		JRST	FLODB1			; no - loop til done
  8071
  8072					; Done loading ucode into buffer
  8073
  8074	044052	120 00 0 00 044324 	FLODB2:	DMOVE	FNAME			; get name of microcode loaded
  8075	044053	124 00 0 00 044326 		DMOVEM	UNAME			; save in actual name loaded
  8076	044054	275 04 0 00 044333 		SUBI	4,UCODE			; calculate length of ucode
  8077	044055	242 04 0 00 777777 		LSH	4,-1			; divide by 2
  8078	044056	202 04 0 00 044332 		MOVEM	4,ULEN			; save it
  8079	044057	332 00 0 00 044331 		SKIPE	FFLAG			; operator output desired?
  8080						GO	[TMSGC	<[>		; yes - print message
  8081							 MOVE	4
  8082							 PNTDEC
  8083							 TMSGD	<. microwords loaded]>
  8084	044060	260 17 0 00 130311 			 RTN]
  8085	044061	200 00 0 00 134250'		MOVE	TSLOAD			; get microcode loaded flag
  8086	044062	306 00 0 00 000777 		CAIN	777			; operational microcode?
  8087	044063	476 00 0 00 134250'		SETOM	TSLOAD			; yes - reset loaded flag
  8088	044064	260 17 0 00 044300 		GO	ZCOUNT			; zero counters
  8089
  8090					; Exit
  8091
  8092	044065	350 00 0 17 777773 	FLODBX:	AOS	-5(P)			; set up good return
  8093	044066	262 17 0 00 000004 	FLODBE:	RGET	(4,3,2,1,0)		; restore AC's
  8094
  8095	044073	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 191
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0354

  8096
  8097					;#********************************************************************
  8098					;* FLOADC - Load microcode buffer contents into the port
  8099					;
  8100					; Return:  +1 - Error
  8101					;	   +2 - Already loaded
  8102					;	   +3 - Ok
  8103					;#********************************************************************
  8104
  8105	044074	261 17 0 00 000000 	FLOADC:	RPUT	(0,1,2,3,4)		; save AC's
  8106
  8107	044101	336 00 0 00 044326 		SKIPN	UNAME			; any microcode loaded?
  8108						JRST	[SKIPE	FFLAG		; no - return
  8109							 TMSGCD	<? No microcode loaded yet>
  8110							 SOS	-5(P)
  8111							 SOS	-5(P)
  8112	044102	254 00 0 00 130324 			 JRST	FLODCX]
  8113	044103	200 00 0 00 044326 		MOVE	UNAME			; get microcode name desired
  8114	044104	316 00 0 00 044330 		CAMN	CNAME			; same as what is loaded?
  8115						JRST	[SKIPN	FFLAG		; no - return
  8116							 JRST	FLODCX
  8117							 TMSGC	<[>
  8118							 MOVE	UNAME		;   message
  8119							 PNTSIX
  8120							 PNTCI	"."
  8121							 MOVE	UNAME+1
  8122							 PNTSIX
  8123							 TMSGD	< already loaded]>
  8124							 SOS	-5(P)
  8125	044105	254 00 0 00 130331 			 JRST	FLODCX]
  8126	044106	332 00 0 00 044331 		SKIPE	FFLAG			; operator output desired?
  8127						GO	[TMSGC	<[Loading >	; yes - print loading ucode
  8128							 MOVE	UNAME		;   message
  8129							 PNTSIX
  8130							 PNTCI	"."
  8131							 MOVE	UNAME+1
  8132							 PNTSIX
  8133							 TMSGD	< into CRAM]>
  8134	044107	260 17 0 00 130352 			 RTN]
  8135
  8136					; Go load the microcode
  8137
  8138	044110	200 03 0 00 044332 		MOVE	3,ULEN			; get length of ucode
  8139	044111	201 04 0 00 044333 		MOVEI	4,UCODE			; get address of ucode buffer
  8140	044112	261 17 0 00 033670 		PUT	PARFLG			; save auto parity flag
  8141	044113	402 00 0 00 033670 		SETZM	PARFLG			; clear auto parity flag
  8142	044114	120 01 0 04 000000 	FLODC0:	DMOVE	1,(4)			; get microword entry
  8143	044115	135 00 0 00 126315 		LDB	[POINT 12,1,11]		; get CRAM address
  8144	044116	202 00 0 00 035604 		MOVEM	CADDR			; save it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 192
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0355

  8145	044117	246 01 0 00 000006 		LSHC	1,6			; position correctly for 30 bits
  8146	044120	135 00 0 00 126317 		LDB	[POINT 30,1,35]		; get left 30 bits
  8147	044121	202 00 0 00 035605 		MOVEM	CWORDL			; save it
  8148	044122	135 00 0 00 126316 		LDB	[POINT 30,2,29]		; get right 30 bits
  8149	044123	622 00 0 00 000002 		TRZE	2			; bit 59 set?
  8150	044124	660 00 0 00 000001 		TRO	1			; yes - set rightmost bit
  8151	044125	202 00 0 00 035606 		MOVEM	CWORDR			; save it
  8152	044126	260 17 0 00 036231 		GO	DWCRAM			; write CRAM word
  8153	044127	271 04 0 00 000002 		ADDI	4,2			; point to next entry
  8154	044130	367 03 0 00 044114 		SOJG	3,FLODC0		; loop till done
  8155	044131	262 17 0 00 033670 		GET	PARFLG			; restore auto parity flag
  8156	044132	200 00 0 00 044326 		MOVE	UNAME			; get name of ucode loaded
  8157	044133	202 00 0 00 044330 		MOVEM	CNAME			; save name of ucode loaded
  8158
  8159					; Also load a NOP into location 56
  8160
  8161	044134	201 01 0 00 044147 		MOVEI	1,FLONOP		; set up microcode address
  8162	044135	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  8163	044136	255 00 0 00 000000 		JFCL				; ignore error
  8164
  8165					; Exit
  8166
  8167	044137	262 17 0 00 000004 	FLODCX:	RGET	(4,3,2,1,0)		; restore AC's
  8168
  8169	044144	350 00 0 17 000000 		AOS	(P)			; set up proper return
  8170	044145	350 00 0 17 000000 		AOS	(P)			; set up proper return
  8171	044146	263 17 0 00 000000 		RTN				; return
  8172
  8173					; NOP for location 56
  8174
  8175	044147	005600	000000		FLONOP:	MWORD	<ADDR=56,CONT>
  8176	044150	000000	000340
  8177	044151	777777	777777			-1
  8178
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 193
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0356

  8179
  8180					;#********************************************************************
  8181					;* FVERFC - Verify port microcode against buffer contents
  8182					;
  8183					; Data areas:	UCODE - 4096 word buffer of opr ucode
  8184					;		ULEN - number of uword used
  8185					;		UNAME - name of ucode loaded
  8186					;		UVERR - verify error count
  8187					;		ECODE - up to 3 verify errors
  8188					;
  8189					;		FFLAG - output flag 0 - no operator output
  8190					;				   -1 - operator output is printed
  8191					;
  8192					; Return:  +1 - Verify error
  8193					;	   +2 - Verify succeeded
  8194					;	   UVERR,ECODE updated
  8195					;#********************************************************************
  8196
  8197	044152	261 17 0 00 000000 	FVERFC:	RPUT	(0,1,2,3,4)		; save AC's
  8198
  8199	044157	336 00 0 00 044326 		SKIPN	UNAME			; any microcode loaded?
  8200						JRST	[SKIPE	FFLAG		; no - return
  8201							 TMSGCD	<? No microcode loaded into buffer yet>
  8202	044160	254 00 0 00 130373 			 JRST	FVERFE]
  8203	044161	200 03 0 00 044332 		MOVE	3,ULEN			; get length of ucode
  8204	044162	201 04 0 00 044333 		MOVEI	4,UCODE			; get address of ucode buffer
  8205	044163	402 00 0 00 064333 		SETZM	UVERR			; clear verify error count
  8206	044164	120 01 0 04 000000 	FVERF0:	DMOVE	1,(4)			; get microword entry
  8207	044165	135 00 0 00 126315 		LDB	[POINT 12,1,11]		; get CRAM address
  8208	044166	306 00 0 00 000056 		CAIN	56			; special location 56?
  8209	044167	254 00 0 00 044207 		JRST	FVERF1			; yes - don't check this one
  8210	044170	202 00 0 00 035604 		MOVEM	CADDR			; save it
  8211	044171	246 01 0 00 000006 		LSHC	1,6			; position correctly for 30 bits
  8212	044172	135 00 0 00 126317 		LDB	[POINT 30,1,35]		; get left 30 bits
  8213	044173	202 00 0 00 134154'		MOVEM	DWORDL#			; save it
  8214	044174	135 00 0 00 126316 		LDB	[POINT 30,2,29]		; get right 30 bits
  8215	044175	622 00 0 00 000002 		TRZE	2			; bit 59 set?
  8216	044176	660 00 0 00 000001 		TRO	1			; yes - set rightmost bit
  8217	044177	202 00 0 00 134155'		MOVEM	DWORDR#			; save it
  8218	044200	260 17 0 00 036263 		GO	DRCRAM			; read CRAM word
  8219	044201	200 00 0 00 035605 		MOVE	CWORDL			; get left word
  8220	044202	312 00 0 00 134154'		CAME	DWORDL			; correct?
  8221						JRST	[AOS	2,UVERR		; no - handle error
  8222							 CAILE	2,3		; too many errors so far?
  8223							 JRST	FVERF1		; yes - don't save this one
  8224							 IMULI	2,5		; no - multiply by 5
  8225							 MOVEI	2,ECODE-5(2)	; get address to save bad data
  8226							 MOVE	CADDR		; get CRAM address
  8227							 MOVEM	(2)		; save it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 194
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0357

  8228  8229							 DMOVE	DWORDL		; get correct
  8230							 DMOVEM	1(2)		; save it
  8231							 DMOVE	CWORDL		; get correct
  8232							 DMOVEM	3(2)		; save it
  8233	044203	254 00 0 00 130376 			 JRST	FVERF1]
  8234	044204	200 00 0 00 035606 		MOVE	CWORDR			; get right word
  8235	044205	312 00 0 00 134155'		CAME	DWORDR			; correct?
  8236						JRST	[AOS	2,UVERR		; no - handle error
  8237							 CAILE	2,3		; too many errors so far?
  8238							 JRST	FVERF1		; yes - don't save this one
  8239							 IMULI	2,5		; no - multiply by 5
  8240							 MOVEI	2,ECODE-5(2)	; get address to save bad data
  8241							 MOVE	CADDR		; get CRAM address
  8242							 MOVEM	(2)		; save it
  8243							 DMOVE	DWORDL		; get correct
  8244							 DMOVEM	1(2)		; save it
  8245							 DMOVE	CWORDL		; get correct
  8246							 DMOVEM	3(2)		; save it
  8247	044206	254 00 0 00 130376 			 JRST	FVERF1]
  8248	044207	271 04 0 00 000002 	FVERF1:	ADDI	4,2			; point to next entry
  8249	044210	367 03 0 00 044164 		SOJG	3,FVERF0		; loop till done
  8250	044211	201 00 0 00 000137 		MOVEI	137			; read location 137 which contains
  8251	044212	202 00 0 00 035604 		MOVEM	CADDR			;   microcode version in MGC field
  8252	044213	260 17 0 00 036263 		GO	DRCRAM			;   bits 14-23
  8253	044214	135 00 0 00 124243 		LDB	[POINT 10,CWORDL,29] 	; get version number
  8254	044215	202 00 0 00 134256'		MOVEM	UVERSN			; save it
  8255	044216	332 00 0 00 064333 		SKIPE	UVERR			; any verify errors?
  8256	044217	254 00 0 00 044223 		JRST	FVERFE			; yes - take error exit
  8257	044220	332 00 0 00 044331 		SKIPE	FFLAG			; operator output desired?
  8258						GO	[TMSGC	<[>		; yes - print message
  8259							 MOVE	ULEN
  8260							 PNTDEC
  8261							 TMSGD	<. CRAM locations loaded/verified]>
  8262							 TMSGC	<[Ucode version >
  8263							 MOVE	UVERSN		; get version number
  8264							 PNTOCS			; print it
  8265							 TMSGD	<]>
  8266	044221	260 17 0 00 130426 			 RTN]
  8267	044222	350 00 0 17 777773 		AOS	-5(P)			; set up good return
  8268	044223	262 17 0 00 000004 	FVERFE:	RGET	(4,3,2,1,0)		; restore AC's
  8269
  8270	044230	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 195
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0358

  8271
  8272					;#********************************************************************
  8273					;* FUERR -  Print verify error data
  8274					;
  8275					; Data printed:  UVERR - number of verify errors
  8276					;		 ECODE - correct/actual data for each error (up to 3)
  8277					;#********************************************************************
  8278
  8279	044231	336 00 0 00 064333 	FUERR:	SKIPN	UVERR			; any verify errors?
  8280	044232	263 17 0 00 000000 		RTN				; no - return
  8281	044233	261 17 0 00 000000 		RPUT	(0,1,2,3,4)		; save some AC's
  8282
  8283	044240	037 00 0 00 030242 		PCRL				; start a new line
  8284	044241	200 00 0 00 044332 		MOVE	ULEN
  8285	044242	037 15 0 00 000000 		PNTDEC
  8286	044243	037 00 0 00 130437 		TMSG	<. CRAM locations loaded - >
  8287	044244	200 00 0 00 064333 		MOVE	UVERR			; get number of errors
  8288	044245	037 15 0 00 000000 		PNTDEC				; print it
  8289	044246	037 00 0 00 130445 		TMSG	<. verify errors:>
  8290	044247	037 00 0 00 130451 		TMSGC	< Addr           Correct                  Actual>
  8291	044250	201 01 0 00 064334 		MOVEI	1,ECODE			; get address of correct/actual data
  8292	044251	200 04 0 00 064333 		MOVE	4,UVERR			; get number of verify errors
  8293	044252	303 04 0 00 000003 		CAILE	4,3			; more than 3 errors?
  8294	044253	201 04 0 00 000003 		MOVEI	4,3			; yes - limit to 3
  8295	044254	200 00 0 01 000000 	FUERR0:	MOVE	(1)			; get CRAM address
  8296	044255	037 00 0 00 125342 		TMSGC	< >
  8297	044256	037 04 0 00 000000 		PNT4				; print it
  8298	044257	037 00 0 00 127515 		TMSG	<  >
  8299	044260	120 02 0 01 000001 		DMOVE	2,1(1)			; get left/right halves of correct
  8300	044261	260 17 0 00 042527 		GO	PNTWD			; print it
  8301	044262	037 00 0 00 127515 		TMSG	<  >
  8302	044263	120 02 0 01 000003 		DMOVE	2,3(1)			; get left/right halves of actual
  8303	044264	260 17 0 00 042527 		GO	PNTWD			; print it
  8304	044265	271 01 0 00 000005 		ADDI	1,5			; point to next entry
  8305	044266	367 04 0 00 044254 		SOJG	4,FUERR0		; loop till done
  8306	044267	303 04 0 00 000003 		CAILE	4,3			; more than printed?
  8307	044270	037 00 0 00 130463 		TMSGC	< ...>			; yes - indicate more
  8308	044271	037 00 0 00 030242 		PCRL
  8309	044272	262 17 0 00 000004 		RGET	(4,3,2,1,0)		; restore AC's
  8310
  8311	044277	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 196
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0359

  8312
  8313					;#********************************************************************
  8314					;* ZCOUNT - Zero counters data (local storage locations 1400-1777)
  8315					;#********************************************************************
  8316
  8317	044300	261 17 0 00 000001 	ZCOUNT:	RPUT	(1,4)			; save AC's
  8318
  8319	044302	201 04 0 00 001400 		MOVEI	4,1400			; get initial address
  8320	044303	137 04 0 00 125147 	ZCOUN0:	DPB	4,[POINT 10,DZLOCM,35]	; set up local storage address
  8321	044304	201 01 0 00 037076 		MOVEI	1,DZLOCM		; set up microcode address
  8322	044305	260 17 0 00 064353 		GO	MLOADN			; load/verify it
  8323	044306	255 00 0 00 000000 		JFCL				; ignore error
  8324	044307	201 01 0 00 007750 		MOVEI	1,7750			; get start address
  8325	044310	242 01 0 00 000001 		LSH	1,1			; position correctly
  8326	044311	260 17 0 00 041074*		GO	LDRAR			; load the RAR
  8327	044312	201 01 0 00 000010 		MOVEI	1,MPRUN			; start it up
  8328	044313	260 17 0 00 043726*		GO	LDCSR
  8329	044314	400 01 0 00 000000 		SETZ	1,			; stop the port
  8330	044315	260 17 0 00 044313*		GO	LDCSR
  8331	044316	350 00 0 00 000004 		AOS	4			; point to next address
  8332	044317	305 04 0 00 002000 		CAIGE	4,2000			; done yet?
  8333	044320	254 00 0 00 044303 		JRST	ZCOUN0			; no - loop till done
  8334	044321	262 17 0 00 000004 		RGET	(4,1)			; restore AC's
  8335
  8336	044323	263 17 0 00 000000 		RTN				; return
  8337
  8338
  8339					;#********************************************************************
  8340					; Ucode data areas
  8341					;#********************************************************************
  8342
  8343					; Microcode file name
  8344
  8345	044324	56 51 22 20 00 00 	FNAME:	SIXBIT	/NI20/			; operational microcode
  8346	044325	65 54 44 00 00 00 		SIXBIT	/ULD/			;   file name
  8347
  8348	044326	000000	000000		UNAME:	0				; name of actual microcode
  8349	044327	000000	000000			0				;   loaded into buffer
  8350	044330	000000	000000		CNAME:	0				; name of actual ucode loaded into CRAM
  8351
  8352	044331	000000	000000		FFLAG:	0				; operator output flag (0-N,-1-Y)
  8353
  8354					; Microcode
  8355
  8356	044332	000000	000000		ULEN:	0				; length of microcode
  8357
  8358	044333				UCODE:	BLOCK	^D8192			; microcode data area
  8359
  8360					; Verify error data
  8361
  8362	064333	000000	000000		UVERR:	0				; number of ucode verify errors
  8363	064334				ECODE:	BLOCK	3*5			; verify error ucode data area
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 197
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0360

  8364
  8365					;#********************************************************************
  8366					;* MLOADN - Load microcode and verify it (do not print errors)
  8367					;* MLOADY - Load microcode and verify it (print errors)
  8368					;
  8369					; Arguments:	AC1 - Contains address where microcode starts
  8370					;
  8371					; Returns:	MLNUM - Number of words loaded/verified
  8372					;		+1 - Error occurred loading/verifying microcode
  8373					;		+2 - Ok
  8374					;
  8375					; Microcode format:  The microcode is given in  2  word  segments
  8376					;	(specifying address and 60 CRAM bits).  The ucode is in a
  8377					;	table beginning at the address given in AC1.  The end  of
  8378					;	this table is indicated by a word containing -1.
  8379					;
  8380					;	Microwords from another microcode list may be inserted by
  8381					;	placing a two word entry within  the table:  -2  followed
  8382					;	by the address of the new list.
  8383					;
  8384					;  Word 1:  Bits 00-11 - Microword load address (0000-7777)
  8385					;		 12-35 - Bits 0-23 of microword to load
  8386					;  Word 2:  Bits 00-34 - Bits 24-57,59 of microword to load
  8387					;	         35 ---- Force Bad Parity flag
  8388					;#********************************************************************
  8389
  8390	064353	402 00 0 00 134200'	MLOADN:	SETZM	MVREP#			; clear print flag
  8391	064354	334 00 0 00 000000 		SKIPA				; continue
  8392	064355	476 00 0 00 134200'	MLOADY:	SETOM	MVREP			; set print flag
  8393	064356	402 00 0 00 134176'		SETZM	MVFLAG#			; clear verify flag
  8394	064357	260 17 0 00 064366 		GO	MVCOM			; load microcode
  8395	064360	255 00 0 00 000000 		JFCL				; error - ignore
  8396	064361	476 00 0 00 134176'		SETOM	MVFLAG			; set verify flag
  8397	064362	260 17 0 00 064366 		GO	MVCOM			; verify microcode
  8398	064363	263 17 0 00 000000 		RTN				; error - return
  8399	064364	350 00 0 17 000000 		AOS	(P)			; set up proper return
  8400	064365	263 17 0 00 000000 		RTN				; return
  8401
  8402	064366	476 00 0 00 134177'	MVCOM:	SETOM	MVNUM#			; init number of verify errors
  8403	064367	402 00 0 00 134173'		SETZM	MLNUM#			; init number of words loaded
  8404	064370	323 01 0 00 117037 		JUMPLE	1,[RTN]			; exit if no microcode table specified
  8405	064371	261 17 0 00 000000 		RPUT	(0,1,2,3,4)		; save some AC's
  8406
  8407	064376	200 04 0 00 000001 		MOVE	4,1			; get address of table in AC4
  8408	064377	200 01 0 00 130465 		MOVE	1,[MWBADR,,MWBADR+1]	; build a BLT pointer
  8409	064400	476 00 0 00 064517 		SETOM	MWBADR			; initialize first word
  8410	064401	251 01 0 00 064535 		BLT	1,MWBRAC+2		; initialize the rest
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 198
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0361

  8411
  8412					; First stop the port and ensure 'DIAG TEST EBUF' is not set
  8413
  8414	064402	260 17 0 00 043724*		GO	ISTOP			; stop the port
  8415	064403	260 17 0 00 000000*		GO	CLREBU			; ensure cleared
  8416	064404	255 00 0 00 000000 		 JFCL				; ignore error
  8417
  8418					; Load microwords
  8419
  8420	064405	200 02 0 04 000000 	MLOAD0:	MOVE	2,(4)			; get first word
  8421	064406	316 02 0 00 124130 		CAMN	2,[-1]			; end of list?
  8422	064407	254 00 0 00 064505 		JRST	MLOADX			; yes - exit
  8423	064410	402 00 0 00 044330 		SETZM	CNAME			; clear 'CRAM loaded' ucode flag
  8424	064411	200 03 0 04 000001 		MOVE	3,1(4)			; get second word
  8425	064412	312 02 0 00 125204 		CAME	2,[-2]			; subtable entry?
  8426	064413	254 00 0 00 064427 		JRST	MLOAD1			; no - go load word
  8427
  8428					; Subtable entry
  8429
  8430	064414	271 04 0 00 000002 		ADDI	4,2			; point to next table entry
  8431	064415	261 17 0 00 130466 		PUT	[MLOADR]		; set up return address
  8432	064416	261 17 0 00 000000 		RPUT	(0,1,2,3,4)		; save AC's
  8433
  8434	064423	200 04 0 00 000003 		MOVE	4,3			; get table address
  8435	064424	254 00 0 00 064405 		JRST	MLOAD0			; reentrant call to load
  8436	064425	255 00 0 00 000000 	MLOADR:	JFCL				; error - ignore
  8437	064426	254 00 0 00 064405 		JRST	MLOAD0			; continue
  8438
  8439					; Load bits 0-27
  8440
  8441	064427	135 01 0 00 130467 	MLOAD1:	LDB	1,[POINT 12,2,11]	; get actual CRAM load address
  8442	064430	202 01 0 00 035604 		MOVEM	1,CADDR			; save address
  8443	064431	242 01 0 00 000001 		LSH	1,1			; convert to address for RAR
  8444	064432	660 01 0 00 000001 		TRO	1,1			; set bit 12 (for left 28 bits)
  8445	064433	202 01 0 00 134240'		MOVEM	1,SAVRAR#		; save address loaded
  8446	064434	260 17 0 00 044311*		GO	LDRAR			; load RAR with it
  8447
  8448	064435	200 01 0 00 000003 		MOVE	1,3			; get word 2 (has 'bad parity' flag)
  8449	064436	621 02 0 00 777700 		TLZ	2,777700		; now AC2 has CRAM bits 0-23 
  8450	064437	246 02 0 00 000006 		LSHC	2,6			; now get bits 0-30 in AC2 (left half)
  8451	064440	242 03 0 00 777772 		LSH	3,-6			; right justify AC3 (right half)
  8452	064441	622 03 0 00 000002 		TRZE	3,2			; bit 59 set?
  8453	064442	660 03 0 00 000001 		TRO	3,1			; yes - set rightmost bit
  8454	064443	260 17 0 00 042551 		GO	CALPAR			; calculate parity
  8455	064444	200 01 0 00 000002 		MOVE	1,2			; get left 30 bits
  8456	064445	336 00 0 00 134176'		SKIPN	MVFLAG			; load?
  8457	064446	260 17 0 00 036255*		GO	LDCRAM			; yes - load it
  8458	064447	332 00 0 00 134176'		SKIPE	MVFLAG			; verify?
  8459						GO	[GO	RDCRAM		; yes - read CRAM
  8460							 MOVEM	1,CWORDL	; save it
  8461	064450	260 17 0 00 130470 			 RTN]
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 199
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0362

  8462
  8463					; Load bits 30-59
  8464
  8465	064451	200 01 0 00 134240'		MOVE	1,SAVRAR		; get RAR address (for left 30 bits)
  8466	064452	620 01 0 00 000001 		TRZ	1,1			; clear bit 12 (for right 30 bits)
  8467	064453	260 17 0 00 064434*		GO	LDRAR			; load address
  8468	064454	200 01 0 00 000003 		MOVE	1,3			; get right 30 bits
  8469	064455	336 00 0 00 134176'		SKIPN	MVFLAG			; load?
  8470	064456	260 17 0 00 064446*		GO	LDCRAM			; yes - load it
  8471	064457	336 00 0 00 134176'		SKIPN	MVFLAG			; load?
  8472	064460	254 00 0 00 064502 		JRST	MLOAD2			; yes - next location
  8473	064461	260 17 0 00 036277*		GO	RDCRAM			; yes - read CRAM
  8474	064462	202 01 0 00 035606 		MOVEM	1,CWORDR		; save it
  8475	064463	316 02 0 00 035605 		CAMN	2,CWORDL		; valid data?
  8476	064464	312 03 0 00 035606 		CAME	3,CWORDR
  8477	064465	334 00 0 00 000000 		SKIPA				; no - continue
  8478	064466	254 00 0 00 064502 		JRST	MLOAD2			; yes - next location
  8479	064467	350 01 0 00 134177'		AOS	1,MVNUM			; get error count
  8480	064470	303 01 0 00 000002 		CAILE	1,2			; more than 3 errors?
  8481	064471	254 00 0 00 064502 		JRST	MLOAD2			; yes - next location
  8482	064472	200 00 0 00 035604 		MOVE	CADDR			; get address
  8483	064473	202 00 0 01 064517 		MOVEM	MWBADR(1)		; save it
  8484	064474	202 02 0 01 064522 		MOVEM	2,MWBLCO(1)		; save left 30 bits (correct)
  8485	064475	202 03 0 01 064530 		MOVEM	3,MWBRCO(1)		; save right 30 bits (correct)
  8486	064476	200 02 0 00 035605 		MOVE	2,CWORDL		; get left 30 bits
  8487	064477	202 02 0 01 064525 		MOVEM	2,MWBLAC(1)		; save it (actual)
  8488	064500	200 02 0 00 035606 		MOVE	2,CWORDR		; get right 30 bits
  8489	064501	202 03 0 01 064533 		MOVEM	3,MWBRAC(1)		; save it (actual)
  8490
  8491					; Point to next microword
  8492
  8493	064502	350 00 0 00 134173'	MLOAD2:	AOS	MLNUM			; increment word count
  8494	064503	271 04 0 00 000002 		ADDI	4,2			; increment by 2
  8495	064504	254 00 0 00 064405 		JRST	MLOAD0			; loop till done
  8496
  8497					; Done - return count of words loaded
  8498
  8499	064505	337 00 0 00 134177'	MLOADX:	SKIPG	MVNUM			; any verify errors?
  8500	064506	350 00 0 17 777773 		AOS	-5(P)			; no - set up RTN+2
  8501	064507	332 00 0 00 134200'		SKIPE	MVREP			; report errors?
  8502	064510	260 17 0 00 064536 		GO	MVPNT			; yes - print errors
  8503	064511	262 17 0 00 000004 		RGET	(4,3,2,1,0)		; restore AC's
  8504
  8505	064516	263 17 0 00 000000 		RTN				; return
  8506
  8507	064517				MWBADR:	BLOCK	3			; CRAM addresses
  8508	064522				MWBLCO:	BLOCK	3			; left correct
  8509	064525				MWBLAC:	BLOCK	3			; left actual
  8510	064530				MWBRCO:	BLOCK	3			; right correct
  8511	064533				MWBRAC:	BLOCK	3			; right actual
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 200
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0363

  8512
  8513					;#********************************************************************
  8514					;* MVPNT - Print verify error data
  8515					;#********************************************************************
  8516
  8517	064536	335 00 0 00 134177'	MVPNT:	SKIPGE	MVNUM			; any errors to report?
  8518	064537	263 17 0 00 000000 		RTN				; no - return
  8519	064540	261 17 0 00 000000 		RPUT	(0,1,2,3,4,5,6)		; save some AC's
  8520
  8521	064547	350 01 0 00 134177'		AOS	1,MVNUM			; get correct error count 1..n
  8522	064550	200 00 0 00 000001 		MOVE	1
  8523	064551	037 00 0 00 130473 		TMSGC	<? >
  8524	064552	037 15 0 00 000000 		PNTDEC				; print it
  8525	064553	037 00 0 00 130474 		TMSG	<. CRAM verify errors:>
  8526	064554	037 00 0 00 130501 		TMSGC	<Addr    --- Correct ---       --- Actual ---      -- Discrepancy -->
  8527	064555	400 04 0 00 000000 		SETZ	4,			; pointer to error data
  8528	064556	200 00 0 04 064517 	MVPNT1:	MOVE	MWBADR(4)		; get address
  8529	064557	037 00 0 00 030242 		PCRL
  8530	064560	037 04 0 00 000000 		PNT4				; print it
  8531	064561	037 00 0 00 117042 		TMSG	< >
  8532	064562	200 02 0 04 064522 		MOVE	2,MWBLCO(4)		; get left half
  8533	064563	200 03 0 04 064530 		MOVE	3,MWBRCO(4)		; get right half
  8534	064564	260 17 0 00 064615 		GO	MVPNTW			; print it
  8535	064565	037 00 0 00 117042 		TMSG	< >
  8536	064566	200 02 0 04 064525 		MOVE	2,MWBLAC(4)		; get left half
  8537	064567	200 03 0 04 064533 		MOVE	3,MWBRAC(4)		; get right half
  8538	064570	260 17 0 00 064615 		GO	MVPNTW			; print it
  8539	064571	037 00 0 00 117042 		TMSG	< >
  8540	064572	200 02 0 04 064522 		MOVE	2,MWBLCO(4)		; get left half
  8541	064573	430 02 0 04 064525 		XOR	2,MWBLAC(4)		; xor actual data
  8542	064574	200 03 0 04 064530 		MOVE	3,MWBRCO(4)		; get right half
  8543	064575	430 03 0 04 064533 		XOR	3,MWBRAC(4)		; xor actual data
  8544	064576	260 17 0 00 064615 		GO	MVPNTW			; print it
  8545	064577	377 00 0 00 000001 		SOSG	1			; decrement error count - done?
  8546	064600	254 00 0 00 064605 		JRST	MVPNTX			; yes - exit
  8547	064601	350 00 0 00 000004 		AOS	4			; point to next word
  8548	064602	305 04 0 00 000003 		CAIGE	4,3			; 3 printed already?
  8549	064603	254 00 0 00 064556 		JRST	MVPNT1			; no - loop till done
  8550	064604	037 00 0 00 130463 		TMSGC	< ...>
  8551	064605	262 17 0 00 000006 	MVPNTX:	RGET	(6,5,4,3,2,1,0)		; yes - restore AC's
  8552
  8553	064614	263 17 0 00 000000 		RTN				; return
  8554
  8555	064615	242 03 0 00 000006 	MVPNTW:	LSH	3,^D6			; left justify the data
  8556	064616	246 02 0 00 000006 		LSHC	2,^D6			; left justify both words
  8557	064617	200 05 0 00 130517 		MOVE	5,[POINT 3,2]		; initial byte pointer
  8558	064620	201 06 0 00 000024 		MOVEI	6,^D20			; number of bytes to print
  8559	064621	134 00 0 00 000005 		ILDB	5			; get byte
  8560	064622	037 16 0 00 000003 		PNTOCS				; print it
  8561	064623	365 06 0 00 064621 		SOJGE	6,.-2			; loop till done
  8562	064624	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 201
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0364

  8563
  8564					;#********************************************************************
  8565					;* MLIST - List microcode of a test
  8566					;#********************************************************************
  8567
  8568	064625	261 17 0 00 000000 	MLIST:	RPUT	(0,1,2,3,4)		; save some AC's
  8569
  8570	064632	037 00 0 00 124742 		TMSGC	<ADDR/ JUMP PAR OUT MGC SOR FUN DES CC RAM PA PB SK BUS CRY CTL  TM SP MK>
  8571	064633	200 04 0 00 000001 		MOVE	4,1			; get address of table in AC4
  8572	064634	200 02 0 04 000000 	MLIST0:	MOVE	2,(4)			; get first word
  8573	064635	316 02 0 00 124130 		CAMN	2,[-1]			; end of list?
  8574	064636	254 00 0 00 064657 		JRST	MLISTX			; yes - exit
  8575	064637	200 03 0 04 000001 		MOVE	3,1(4)			; get second word
  8576
  8577					; Print this CRAM entry
  8578
  8579	064640	037 00 0 00 030242 		PCRL				; start a new line
  8580	064641	135 00 0 00 130467 		LDB	[POINT 12,2,11]		; get cram load address
  8581	064642	001 04 0 00 000000 		PNTOCC	4,0			; print it
  8582	064643	037 00 0 00 124736 		TMSG	</ >
  8583	064644	200 01 0 00 000003 		MOVE	1,3			; get word 2 (it has 'bad parity' flag)
  8584	064645	135 02 0 00 130520 		LDB	2,[POINT 24,2,35]	; get CRAM bits 0-23
  8585	064646	246 02 0 00 000006 		LSHC	2,6			; now get bits 0-30 in AC2 (left half)
  8586	064647	242 03 0 00 777772 		LSH	3,-6			; right justify AC3 (right half)
  8587	064650	622 03 0 00 000002 		TRZE	3,2			; bit 59 set?
  8588	064651	660 03 0 00 000001 		TRO	3,1			; yes - set rightmost bit
  8589	064652	260 17 0 00 042551 		GO	CALPAR			; calculate parity
  8590	064653	260 17 0 00 042433 		GO	PNTCRM			; print it
  8591
  8592					; Point to next microword / Exit if Altmode typed / Exit when done
  8593
  8594	064654	271 04 0 00 000002 		ADDI	4,2			; increment by 2
  8595	064655	336 00 0 00 134143'		SKIPN	ALTF			; altmode typed?
  8596	064656	254 00 0 00 064634 		JRST	MLIST0			; no - loop till done
  8597	064657	037 00 0 00 030242 	MLISTX:	PCRL
  8598	064660	262 17 0 00 000004 		RGET	(4,3,2,1,0)		; restore AC's
  8599
  8600	064665	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 202
DFNIA1	MAC	18-Feb-84 20:30		Microcode Handling Routines                                                        SEQ 0365

  8601
  8602					;#********************************************************************
  8603					;* TLOAD - Load microcode/verify it for a test
  8604					;
  8605					; Arguments:	AC1 - Contains address where microcode starts
  8606					;
  8607					; Function:	Issue a port clear to the port to ensure it is stopped.
  8608					;		Then call MLOADN to load the microcode, then call MVERFY
  8609					;		to verify it.  Abort on any error.
  8610					;
  8611					; Returns:	+1 - Error occurred loading/verifying microcode
  8612					;		+2 - Ok
  8613					;#********************************************************************
  8614
  8615	064666	332 00 0 00 134166'	TLOAD:	SKIPE	LDEBUG			; ucode load debug switch set?
  8616	064667	254 00 0 00 064676 		JRST	TLOADX			; yes - don't load ucode
  8617	064670	316 01 0 00 134250'		CAMN	1,TSLOAD		; already loaded?
  8618	064671	254 00 0 00 064676 		JRST	TLOADX			; yes - don't load ucode
  8619
  8620	064672	260 17 0 00 037725*		GO	IPACLR			; do a 'port clear'
  8621	064673	260 17 0 00 064353 		GO	MLOADN			; load it
  8622	064674	254 00 0 00 064700 		 JRST	TLOADE			; failed
  8623	064675	202 01 0 00 134250'		MOVEM	1,TSLOAD		; save microcode address
  8624	064676	350 00 0 17 000000 	TLOADX:	AOS	(P)			; set up RTN +2
  8625	064677	263 17 0 00 000000 		RTN				; exit
  8626
  8627	064700	474 15 0 00 000000 	TLOADE:	SETO	ERFLG,			; set error flag
  8628	064701	027 00 0 00 064707 		SCOPER	TLERR			; print error message
  8629	064702	255 00 0 00 000000 		JFCL				; don't allow test looping
  8630	064703	255 00 0 00 000000 		JFCL				; ignore altmode
  8631	064704	332 00 0 00 134172'		SKIPE	MDEBUG			; error message debug switch set?
  8632	064705	350 00 0 17 000000 		AOS	(P)			; yes - skip this error
  8633	064706	263 17 0 00 000000 		RTN				; exit
  8634
  8635	064707	160000	130521		TLERR:	MSG!TXALL![ASCIZ /Error loading test microcode - test aborted./]
  8636	064710	270000	064536			LAST!CALL!TXALL!MVPNT		; print verify errors
  8637
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 203
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0366

  8638						SUBTTL	NI Initialization Routines
  8639
  8640					;#********************************************************************
  8641					;* TPCB - Set up initial PCB
  8642					;#********************************************************************
  8643
  8644	064711	261 17 0 00 000000 	TPCB:	RPUT	(0,1,2,3,4)		; save AC's
  8645
  8646	064716	260 17 0 00 064402*		GO	ISTOP			; stop the port
  8647
  8648					; Handle the first 25 locations
  8649
  8650	064717	200 00 0 00 130532 	TPCB0:	MOVE	[IPCB,,PCB]		; build a BLT pointer
  8651	064720	251 00 0 00 072030 		BLT	PCB+^D24		; transfer the data
  8652	064721	332 00 0 00 030037 		SKIPE	USER			; user mode?
  8653	064722	402 00 0 00 072025 		SETZM	PCB+^D21		; yes - clear PI word
  8654
  8655					; Set up unknown protocol type free queue
  8656
  8657	064723	402 00 0 00 075000 		SETZM	UNKBEG			; clear first word
  8658	064724	200 00 0 00 130533 		MOVE	[UNKBEG,,UNKBEG+1]	; build a BLT pointer
  8659	064725	251 00 0 00 104617 		BLT	UNKEND			; clear the buffer
  8660	064726	120 00 0 00 130534 		DMOVE	[EXP QUNKF1,PCB+11]	; get correct addresses
  8661	064727	124 00 0 00 075000 		DMOVEM	QUNKF0			; save them
  8662	064730	120 00 0 00 130536 		DMOVE	[EXP QUNKF2,QUNKF0]	; get correct addresses
  8663	064731	124 00 0 00 076000 		DMOVEM	QUNKF1			; save them
  8664	064732	120 00 0 00 130540 		DMOVE	[EXP QUNKF3,QUNKF1]	; get correct addresses
  8665	064733	124 00 0 00 077000 		DMOVEM	QUNKF2			; save them
  8666	064734	120 00 0 00 130542 		DMOVE	[EXP QUNKF4,QUNKF2]	; get correct addresses
  8667	064735	124 00 0 00 100000 		DMOVEM	QUNKF3			; save them
  8668	064736	120 00 0 00 130544 		DMOVE	[EXP QUNKF5,QUNKF3]	; get correct addresses
  8669	064737	124 00 0 00 101000 		DMOVEM	QUNKF4			; save them
  8670	064740	120 00 0 00 130546 		DMOVE	[EXP QUNKF6,QUNKF4]	; get correct addresses
  8671	064741	124 00 0 00 102000 		DMOVEM	QUNKF5			; save them
  8672	064742	120 00 0 00 130550 		DMOVE	[EXP QUNKF7,QUNKF5]	; get correct addresses
  8673	064743	124 00 0 00 103000 		DMOVEM	QUNKF6			; save them
  8674	064744	120 00 0 00 130552 		DMOVE	[EXP PCB+11,QUNKF6]	; get correct addresses
  8675	064745	124 00 0 00 104000 		DMOVEM	QUNKF7			; save them
  8676
  8677					; Set up the PTT queue
  8678
  8679	064746	402 00 0 00 105070 		SETZM	PTTBEG			; clear first word
  8680	064747	200 00 0 00 130554 		MOVE	[PTTBEG,,PTTBEG+1]	; build a BLT pointer
  8681	064750	251 00 0 00 115307 		BLT	PTTEND			; clear the buffer
  8682	064751	476 00 0 00 105070 		SETOM	PTTFQ			; initialize interlock word
  8683	064752	400 01 0 00 000000 		SETZ	1,			; initial offset into PTT table
  8684	064753	400 02 0 00 000000 		SETZ	2,			; initial offset into initial table
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 204
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0367

  8685
  8686	064754	200 03 0 02 071110 	TPCB1:	MOVE	3,IPTAB(2)		; get PTT value
  8687	064755	242 03 0 00 000004 		LSH	3,4			; position properly
  8688	064756	661 03 0 00 400000 		TLO	3,400000		; set enable bit
  8689	064757	202 03 0 01 105000 		MOVEM	3,PTABLE(1)		; save PTT word
  8690	064760	201 03 0 00 105071 		MOVEI	3,PTTFQ+1		; get queue header address
  8691	064761	202 03 0 01 105001 		MOVEM	3,PTABLE+1(1)		; save it
  8692	064762	271 01 0 00 000003 		ADDI	1,3			; point to next location
  8693	064763	350 00 0 00 000002 		AOS	2			; set up next PTT value
  8694	064764	307 02 0 00 000017 		CAIG	2,17			; done yet?
  8695	064765	254 00 0 00 064754 		JRST	TPCB1			; no - loop till done
  8696
  8697	064766	120 00 0 00 130555 		DMOVE	[EXP PTTF0,PTTF17]	; get correct addresses
  8698	064767	124 00 0 00 105071 		DMOVEM	PTTFQ+1			; save them
  8699	064770	201 00 0 00 000275 		MOVEI	^D200-13		; get entry length
  8700	064771	202 00 0 00 105073 		MOVEM	PTTFQ+3			; save it
  8701
  8702	064772	120 00 0 00 130557 		DMOVE	[EXP PTTF1,PTTFQ+1]	; get correct addresses
  8703	064773	124 00 0 00 105074 		DMOVEM	PTTF0			; save them
  8704	064774	120 00 0 00 130561 		DMOVE	[EXP PTTF2,PTTF0]	; get correct addresses
  8705	064775	124 00 0 00 106000 		DMOVEM	PTTF1			; save them
  8706	064776	120 00 0 00 130563 		DMOVE	[EXP PTTF3,PTTF1]	; get correct addresses
  8707	064777	124 00 0 00 106310 		DMOVEM	PTTF2			; save them
  8708	065000	120 00 0 00 130565 		DMOVE	[EXP PTTF4,PTTF2]	; get correct addresses
  8709	065001	124 00 0 00 107000 		DMOVEM	PTTF3			; save them
  8710	065002	120 00 0 00 130567 		DMOVE	[EXP PTTF5,PTTF3]	; get correct addresses
  8711	065003	124 00 0 00 107310 		DMOVEM	PTTF4			; save them
  8712	065004	120 00 0 00 130571 		DMOVE	[EXP PTTF6,PTTF4]	; get correct addresses
  8713	065005	124 00 0 00 110000 		DMOVEM	PTTF5			; save them
  8714	065006	120 00 0 00 130573 		DMOVE	[EXP PTTF7,PTTF5]	; get correct addresses
  8715	065007	124 00 0 00 110310 		DMOVEM	PTTF6			; save them
  8716	065010	120 00 0 00 130575 		DMOVE	[EXP PTTF10,PTTF6]	; get correct addresses
  8717	065011	124 00 0 00 111000 		DMOVEM	PTTF7			; save them
  8718	065012	120 00 0 00 130577 		DMOVE	[EXP PTTF11,PTTF7]	; get correct addresses
  8719	065013	124 00 0 00 111310 		DMOVEM	PTTF10			; save them
  8720	065014	120 00 0 00 130601 		DMOVE	[EXP PTTF12,PTTF10]	; get correct addresses
  8721	065015	124 00 0 00 112000 		DMOVEM	PTTF11			; save them
  8722	065016	120 00 0 00 130603 		DMOVE	[EXP PTTF13,PTTF11]	; get correct addresses
  8723	065017	124 00 0 00 112310 		DMOVEM	PTTF12			; save them
  8724	065020	120 00 0 00 130605 		DMOVE	[EXP PTTF14,PTTF12]	; get correct addresses
  8725	065021	124 00 0 00 113000 		DMOVEM	PTTF13			; save them
  8726	065022	120 00 0 00 130607 		DMOVE	[EXP PTTF15,PTTF13]	; get correct addresses
  8727	065023	124 00 0 00 113310 		DMOVEM	PTTF14			; save them
  8728	065024	120 00 0 00 130611 		DMOVE	[EXP PTTF16,PTTF14]	; get correct addresses
  8729	065025	124 00 0 00 114000 		DMOVEM	PTTF15			; save them
  8730	065026	120 00 0 00 130613 		DMOVE	[EXP PTTF17,PTTF15]	; get correct addresses
  8731	065027	124 00 0 00 114310 		DMOVEM	PTTF16			; save them
  8732	065030	120 00 0 00 130615 		DMOVE	[EXP PTTFQ+1,PTTF16]	; get correct addresses
  8733	065031	124 00 0 00 115000 		DMOVEM	PTTF17			; save them
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 205
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0368

  8734
  8735					; Insert data pointer address in each free queue entry
  8736
  8737	065032	201 00 0 00 075013 		MOVEI	QUNKF0+13		; get data pointer address
  8738	065033	202 00 0 00 075012 		MOVEM	QUNKF0+12		; save it
  8739	065034	201 00 0 00 076013 		MOVEI	QUNKF1+13		; get data pointer address
  8740	065035	202 00 0 00 076012 		MOVEM	QUNKF1+12		; save it
  8741	065036	201 00 0 00 077013 		MOVEI	QUNKF2+13		; get data pointer address
  8742	065037	202 00 0 00 077012 		MOVEM	QUNKF2+12		; save it
  8743	065040	201 00 0 00 100013 		MOVEI	QUNKF3+13		; get data pointer address
  8744	065041	202 00 0 00 100012 		MOVEM	QUNKF3+12		; save it
  8745	065042	201 00 0 00 101013 		MOVEI	QUNKF4+13		; get data pointer address
  8746	065043	202 00 0 00 101012 		MOVEM	QUNKF4+12		; save it
  8747	065044	201 00 0 00 102013 		MOVEI	QUNKF5+13		; get data pointer address
  8748	065045	202 00 0 00 102012 		MOVEM	QUNKF5+12		; save it
  8749	065046	201 00 0 00 103013 		MOVEI	QUNKF6+13		; get data pointer address
  8750	065047	202 00 0 00 103012 		MOVEM	QUNKF6+12		; save it
  8751	065050	201 00 0 00 104013 		MOVEI	QUNKF7+13		; get data pointer address
  8752	065051	202 00 0 00 104012 		MOVEM	QUNKF7+12		; save it
  8753
  8754	065052	201 00 0 00 105107 		MOVEI	PTTF0+13		; get data pointer address
  8755	065053	202 00 0 00 105106 		MOVEM	PTTF0+12		; save it
  8756	065054	201 00 0 00 106013 		MOVEI	PTTF1+13		; get data pointer address
  8757	065055	202 00 0 00 106012 		MOVEM	PTTF1+12		; save it
  8758	065056	201 00 0 00 106323 		MOVEI	PTTF2+13		; get data pointer address
  8759	065057	202 00 0 00 106322 		MOVEM	PTTF2+12		; save it
  8760	065060	201 00 0 00 107013 		MOVEI	PTTF3+13		; get data pointer address
  8761	065061	202 00 0 00 107012 		MOVEM	PTTF3+12		; save it
  8762	065062	201 00 0 00 107323 		MOVEI	PTTF4+13		; get data pointer address
  8763	065063	202 00 0 00 107322 		MOVEM	PTTF4+12		; save it
  8764	065064	201 00 0 00 110013 		MOVEI	PTTF5+13		; get data pointer address
  8765	065065	202 00 0 00 110012 		MOVEM	PTTF5+12		; save it
  8766	065066	201 00 0 00 110323 		MOVEI	PTTF6+13		; get data pointer address
  8767	065067	202 00 0 00 110322 		MOVEM	PTTF6+12		; save it
  8768	065070	201 00 0 00 111013 		MOVEI	PTTF7+13		; get data pointer address
  8769	065071	202 00 0 00 111012 		MOVEM	PTTF7+12		; save it
  8770	065072	201 00 0 00 111323 		MOVEI	PTTF10+13		; get data pointer address
  8771	065073	202 00 0 00 111322 		MOVEM	PTTF10+12		; save it
  8772	065074	201 00 0 00 112013 		MOVEI	PTTF11+13		; get data pointer address
  8773	065075	202 00 0 00 112012 		MOVEM	PTTF11+12		; save it
  8774	065076	201 00 0 00 112323 		MOVEI	PTTF12+13		; get data pointer address
  8775	065077	202 00 0 00 112322 		MOVEM	PTTF12+12		; save it
  8776	065100	201 00 0 00 113013 		MOVEI	PTTF13+13		; get data pointer address
  8777	065101	202 00 0 00 113012 		MOVEM	PTTF13+12		; save it
  8778	065102	201 00 0 00 113323 		MOVEI	PTTF14+13		; get data pointer address
  8779	065103	202 00 0 00 113322 		MOVEM	PTTF14+12		; save it
  8780	065104	201 00 0 00 114013 		MOVEI	PTTF15+13		; get data pointer address
  8781	065105	202 00 0 00 114012 		MOVEM	PTTF15+12		; save it
  8782	065106	201 00 0 00 114323 		MOVEI	PTTF16+13		; get data pointer address
  8783	065107	202 00 0 00 114322 		MOVEM	PTTF16+12		; save it
  8784	065110	201 00 0 00 115013 		MOVEI	PTTF17+13		; get data pointer address
  8785	065111	202 00 0 00 115012 		MOVEM	PTTF17+12		; save it
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 206
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0369

  8786
  8787					; Next convert all of the virtual addresses to physical
  8788
  8789	065112	474 03 0 00 000000 	TPCB2:	SETO	3,			; initialize pointer to list
  8790	065113	350 00 0 00 000003 	TPCB3:	AOS	3			; point to next address
  8791	065114	335 01 0 03 065312 		SKIPGE	1,ADRVIR(3)		; done yet?
  8792	065115	254 00 0 00 065123 		JRST	TPCB4			; yes - continue
  8793	065116	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
  8794	065117	257 01 0 01 000000 		MAP	1,(1)			; no - map to physical
  8795	065120	621 01 0 00 777000 		TLZ	1,777000		; get rid of extraneous bits
  8796	065121	202 01 0 03 065470 		MOVEM	1,ADRPHY(3)		; save physical address
  8797	065122	254 00 0 00 065113 		JRST	TPCB3			; loop till done
  8798
  8799					; Finally, ensure that each address in all of the queues is indeed
  8800					; a physical address
  8801
  8802	065123	474 03 0 00 000000 	TPCB4:	SETO	3,			; initialize address pointer
  8803	065124	350 00 0 00 000003 	TPCB5:	AOS	3			; point to next address
  8804	065125	335 02 0 03 065145 		SKIPGE	2,ADRQUE(3)		; get location of address - zero?
  8805	065126	254 00 0 00 065135 		JRST	TPCB6			; yes - exit
  8806	065127	200 01 0 02 000000 		MOVE	1,(2)			; get address in that location
  8807	065130	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
  8808	065131	257 01 0 01 000000 		MAP	1,(1)			; no - map to physical
  8809	065132	621 01 0 00 777000 		TLZ	1,777000		; get rid of extraneous bits
  8810	065133	202 01 0 02 000000 		MOVEM	1,(2)			; save physical address
  8811	065134	254 00 0 00 065124 		JRST	TPCB5			; loop till done
  8812
  8813					; Set up multicast table
  8814
  8815	065135	200 00 0 00 130617 	TPCB6:	MOVE	[IMTAB,,MTABLE]		; get BLT pointer
  8816	065136	251 00 0 00 115357 		BLT	MTABLE+37		; copy the data
  8817
  8818					; Done - exit
  8819
  8820	065137	262 17 0 00 000004 		RGET	(4,3,2,1,0)		; restore AC's
  8821
  8822	065144	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 207
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0370

  8823
  8824					; Table of locations, the contents of which contain virtual
  8825					; addresses, which must be translated to physical
  8826
  8827	065145	000000	072001		ADRQUE:	EXP	PCB+1,PCB+2,PCB+5,PCB+6,PCB+11,PCB+12,PCB+15,PCB+16,PCB+24
  8828	065146	000000	072002
  8829	065147	000000	072005
  8830	065150	000000	072006
  8831	065151	000000	072011
  8832	065152	000000	072012
  8833	065153	000000	072015
  8834	065154	000000	072016
  8835	065155	000000	072024
  8836	065156	000000	072030			EXP	PCB+30
  8837	065157	000000	075000			EXP	QUNKF0,QUNKF0+1,QUNKF1,QUNKF1+1,QUNKF2,QUNKF2+1,QUNKF3,QUNKF3+1
  8838	065160	000000	075001
  8839	065161	000000	076000
  8840	065162	000000	076001
  8841	065163	000000	077000
  8842	065164	000000	077001
  8843	065165	000000	100000
  8844	065166	000000	100001
  8845	065167	000000	101000			EXP	QUNKF4,QUNKF4+1,QUNKF5,QUNKF5+1,QUNKF6,QUNKF6+1,QUNKF7,QUNKF7+1
  8846	065170	000000	101001
  8847	065171	000000	102000
  8848	065172	000000	102001
  8849	065173	000000	103000
  8850	065174	000000	103001
  8851	065175	000000	104000
  8852	065176	000000	104001
  8853	065177	000000	105001			EXP	PTABLE+1,PTABLE+4,PTABLE+7,PTABLE+12,PTABLE+15,PTABLE+20
  8854	065200	000000	105004
  8855	065201	000000	105007
  8856	065202	000000	105012
  8857	065203	000000	105015
  8858	065204	000000	105020
  8859	065205	000000	105023			EXP	PTABLE+23,PTABLE+26,PTABLE+31,PTABLE+34,PTABLE+37,PTABLE+42
  8860	065206	000000	105026
  8861	065207	000000	105031
  8862	065210	000000	105034
  8863	065211	000000	105037
  8864	065212	000000	105042
  8865	065213	000000	105045			EXP	PTABLE+45,PTABLE+50,PTABLE+53,PTABLE+56
  8866	065214	000000	105050
  8867	065215	000000	105053
  8868	065216	000000	105056
  8869	065217	000000	105071			EXP	PTTFQ+1,PTTFQ+2
  8870	065220	000000	105072
  8871	065221	000000	105074			EXP	PTTF0,PTTF0+1,PTTF1,PTTF1+1,PTTF2,PTTF2+1,PTTF3,PTTF3+1
  8872	065222	000000	105075
  8873	065223	000000	106000
  8874	065224	000000	106001
  8875	065225	000000	106310
  8876	065226	000000	106311
  8877	065227	000000	107000
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 207-1
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0371

  8878	065230	000000	107001
  8879	065231	000000	107310			EXP	PTTF4,PTTF4+1,PTTF5,PTTF5+1,PTTF6,PTTF6+1,PTTF7,PTTF7+1
  8880	065232	000000	107311
  8881	065233	000000	110000
  8882	065234	000000	110001
  8883	065235	000000	110310
  8884	065236	000000	110311
  8885	065237	000000	111000
  8886	065240	000000	111001
  8887	065241	000000	111310			EXP	PTTF10,PTTF10+1,PTTF11,PTTF11+1,PTTF12,PTTF12+1,PTTF13,PTTF13+1
  8888	065242	000000	111311
  8889	065243	000000	112000
  8890	065244	000000	112001
  8891	065245	000000	112310
  8892	065246	000000	112311
  8893	065247	000000	113000
  8894	065250	000000	113001
  8895	065251	000000	113310			EXP	PTTF14,PTTF14+1,PTTF15,PTTF15+1,PTTF16,PTTF16+1,PTTF17,PTTF17+1
  8896	065252	000000	113311
  8897	065253	000000	114000
  8898	065254	000000	114001
  8899	065255	000000	114310
  8900	065256	000000	114311
  8901	065257	000000	115000
  8902	065260	000000	115001
  8903	065261	000000	075012			EXP	QUNKF0+12,QUNKF1+12,QUNKF2+12,QUNKF3+12,QUNKF4+12,QUNKF5+12
  8904	065262	000000	076012
  8905	065263	000000	077012
  8906	065264	000000	100012
  8907	065265	000000	101012
  8908	065266	000000	102012
  8909	065267	000000	103012			EXP	QUNKF6+12,QUNKF7+12
  8910	065270	000000	104012
  8911	065271	000000	105106			EXP	PTTF0+12,PTTF1+12,PTTF2+12,PTTF3+12,PTTF4+12,PTTF5+12
  8912	065272	000000	106012
  8913	065273	000000	106322
  8914	065274	000000	107012
  8915	065275	000000	107322
  8916	065276	000000	110012
  8917	065277	000000	110322			EXP	PTTF6+12,PTTF7+12,PTTF10+12,PTTF11+12,PTTF12+12
  8918	065300	000000	111012
  8919	065301	000000	111322
  8920	065302	000000	112012
  8921	065303	000000	112322
  8922	065304	000000	113012			EXP	PTTF13+12,PTTF14+12,PTTF15+12,PTTF16+12,PTTF17+12
  8923	065305	000000	113322
  8924	065306	000000	114012
  8925	065307	000000	114322
  8926	065310	000000	115012
  8927	065311	777777	777777			-1
  8928
  8929					; Table of virtual addresses
  8930
  8931	065312	000000	072001		ADRVIR:	EXP	PCB+1,PCB+5,PCB+11,PTABLE,MTABLE,PCB,PACKET+14,PACKET+20
  8932	065313	000000	072005
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 207-2
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0372

  8933	065314	000000	072011
  8934	065315	000000	105000
  8935	065316	000000	115320
  8936	065317	000000	072000
  8937	065320	000000	072130
  8938	065321	000000	072134
  8939	065322	000000	075000			EXP	QUNKF0,QUNKF1,QUNKF2,QUNKF3,QUNKF4,QUNKF5,QUNKF6,QUNKF7
  8940	065323	000000	076000
  8941	065324	000000	077000
  8942	065325	000000	100000
  8943	065326	000000	101000
  8944	065327	000000	102000
  8945	065330	000000	103000
  8946	065331	000000	104000
  8947	065332	000000	105074			EXP	PTTF0,PTTF1,PTTF2,PTTF3,PTTF4,PTTF5,PTTF6,PTTF7,PTTFQ,PTTFQ+1
  8948	065333	000000	106000
  8949	065334	000000	106310
  8950	065335	000000	107000
  8951	065336	000000	107310
  8952	065337	000000	110000
  8953	065340	000000	110310
  8954	065341	000000	111000
  8955	065342	000000	105070
  8956	065343	000000	105071
  8957	065344	000000	111310			EXP	PTTF10,PTTF11,PTTF12,PTTF13,PTTF14,PTTF15,PTTF16,PTTF17,0
  8958	065345	000000	112000
  8959	065346	000000	112310
  8960	065347	000000	113000
  8961	065350	000000	113310
  8962	065351	000000	114000
  8963	065352	000000	114310
  8964	065353	000000	115000
  8965	065354	000000	000000
  8966
  8967	065355	000000	075013			EXP	QUNKF0+13,QUNKF1+13,QUNKF2+13,QUNKF3+13,QUNKF4+13,QUNKF5+13
  8968	065356	000000	076013
  8969	065357	000000	077013
  8970	065360	000000	100013
  8971	065361	000000	101013
  8972	065362	000000	102013
  8973	065363	000000	103013			EXP	QUNKF6+13,QUNKF7+13,PTTF0+13,PTTF1+13,PTTF2+13,PTTF3+13
  8974	065364	000000	104013
  8975	065365	000000	105107
  8976	065366	000000	106013
  8977	065367	000000	106323
  8978	065370	000000	107013
  8979	065371	000000	107323			EXP	PTTF4+13,PTTF5+13,PTTF6+13,PTTF7+13,PTTF10+13,PTTF11+13
  8980	065372	000000	110013
  8981	065373	000000	110323
  8982	065374	000000	111013
  8983	065375	000000	111323
  8984	065376	000000	112013
  8985	065377	000000	112323			EXP	PTTF12+13,PTTF13+13,PTTF14+13,PTTF15+13,PTTF16+13,PTTF17+13
  8986	065400	000000	113013
  8987	065401	000000	113323
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 207-3
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0373

  8988	065402	000000	114013
  8989	065403	000000	114323
  8990	065404	000000	115013
  8991
  8992	065405	000000	075014			EXP	QUNKF0+14,QUNKF1+14,QUNKF2+14,QUNKF3+14,QUNKF4+14,QUNKF5+14
  8993	065406	000000	076014
  8994	065407	000000	077014
  8995	065410	000000	100014
  8996	065411	000000	101014
  8997	065412	000000	102014
  8998	065413	000000	103014			EXP	QUNKF6+14,QUNKF7+14,PTTF0+14,PTTF1+14,PTTF2+14,PTTF3+14
  8999	065414	000000	104014
  9000	065415	000000	105110
  9001	065416	000000	106014
  9002	065417	000000	106324
  9003	065420	000000	107014
  9004	065421	000000	107324			EXP	PTTF4+14,PTTF5+14,PTTF6+14,PTTF7+14,PTTF10+14,PTTF11+14
  9005	065422	000000	110014
  9006	065423	000000	110324
  9007	065424	000000	111014
  9008	065425	000000	111324
  9009	065426	000000	112014
  9010	065427	000000	112324			EXP	PTTF12+14,PTTF13+14,PTTF14+14,PTTF15+14,PTTF16+14,PTTF17+14
  9011	065430	000000	113014
  9012	065431	000000	113324
  9013	065432	000000	114014
  9014	065433	000000	114324
  9015	065434	000000	115014
  9016
  9017	065435	000000	075020			EXP	QUNKF0+20,QUNKF1+20,QUNKF2+20,QUNKF3+20,QUNKF4+20,QUNKF5+20
  9018	065436	000000	076020
  9019	065437	000000	077020
  9020	065440	000000	100020
  9021	065441	000000	101020
  9022	065442	000000	102020
  9023	065443	000000	103020			EXP	QUNKF6+20,QUNKF7+20,PTTF0+20,PTTF1+20,PTTF2+20,PTTF3+20
  9024	065444	000000	104020
  9025	065445	000000	105114
  9026	065446	000000	106020
  9027	065447	000000	106330
  9028	065450	000000	107020
  9029	065451	000000	107330			EXP	PTTF4+20,PTTF5+20,PTTF6+20,PTTF7+20,PTTF10+20,PTTF11+20
  9030	065452	000000	110020
  9031	065453	000000	110330
  9032	065454	000000	111020
  9033	065455	000000	111330
  9034	065456	000000	112020
  9035	065457	000000	112330			EXP	PTTF12+20,PTTF13+20,PTTF14+20,PTTF15+20,PTTF16+20,PTTF17+20
  9036	065460	000000	113020
  9037	065461	000000	113330
  9038	065462	000000	114020
  9039	065463	000000	114330
  9040	065464	000000	115020
  9041	065465	000000	072030			EXP	PCB+30,PCB+31
  9042	065466	000000	072031
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 207-4
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0374

  9043	065467	777777	777777			-1
  9044
  9045					; Table of physical addresses
  9046
  9047	065470	000000	072001		ADRPHY:	EXP	PCB+1,PCB+5,PCB+11,PTABLE,MTABLE,PCB,PACKET+14,PACKET+20
  9048	065471	000000	072005
  9049	065472	000000	072011
  9050	065473	000000	105000
  9051	065474	000000	115320
  9052	065475	000000	072000
  9053	065476	000000	072130
  9054	065477	000000	072134
  9055	065500	000000	075000			EXP	QUNKF0,QUNKF1,QUNKF2,QUNKF3,QUNKF4,QUNKF5,QUNKF6,QUNKF7
  9056	065501	000000	076000
  9057	065502	000000	077000
  9058	065503	000000	100000
  9059	065504	000000	101000
  9060	065505	000000	102000
  9061	065506	000000	103000
  9062	065507	000000	104000
  9063	065510	000000	105074			EXP	PTTF0,PTTF1,PTTF2,PTTF3,PTTF4,PTTF5,PTTF6,PTTF7,PTTFQ,PTTFQ+1
  9064	065511	000000	106000
  9065	065512	000000	106310
  9066	065513	000000	107000
  9067	065514	000000	107310
  9068	065515	000000	110000
  9069	065516	000000	110310
  9070	065517	000000	111000
  9071	065520	000000	105070
  9072	065521	000000	105071
  9073	065522	000000	111310			EXP	PTTF10,PTTF11,PTTF12,PTTF13,PTTF14,PTTF15,PTTF16,PTTF17,0
  9074	065523	000000	112000
  9075	065524	000000	112310
  9076	065525	000000	113000
  9077	065526	000000	113310
  9078	065527	000000	114000
  9079	065530	000000	114310
  9080	065531	000000	115000
  9081	065532	000000	000000
  9082
  9083	065533	000000	075013			EXP	QUNKF0+13,QUNKF1+13,QUNKF2+13,QUNKF3+13,QUNKF4+13,QUNKF5+13
  9084	065534	000000	076013
  9085	065535	000000	077013
  9086	065536	000000	100013
  9087	065537	000000	101013
  9088	065540	000000	102013
  9089	065541	000000	103013			EXP	QUNKF6+13,QUNKF7+13,PTTF0+13,PTTF1+13,PTTF2+13,PTTF3+13
  9090	065542	000000	104013
  9091	065543	000000	105107
  9092	065544	000000	106013
  9093	065545	000000	106323
  9094	065546	000000	107013
  9095	065547	000000	107323			EXP	PTTF4+13,PTTF5+13,PTTF6+13,PTTF7+13,PTTF10+13,PTTF11+13
  9096	065550	000000	110013
  9097	065551	000000	110323
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 207-5
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0375

  9098	065552	000000	111013
  9099	065553	000000	111323
  9100	065554	000000	112013
  9101	065555	000000	112323			EXP	PTTF12+13,PTTF13+13,PTTF14+13,PTTF15+13,PTTF16+13,PTTF17+13
  9102	065556	000000	113013
  9103	065557	000000	113323
  9104	065560	000000	114013
  9105	065561	000000	114323
  9106	065562	000000	115013
  9107
  9108	065563	000000	075014			EXP	QUNKF0+14,QUNKF1+14,QUNKF2+14,QUNKF3+14,QUNKF4+14,QUNKF5+14
  9109	065564	000000	076014
  9110	065565	000000	077014
  9111	065566	000000	100014
  9112	065567	000000	101014
  9113	065570	000000	102014
  9114	065571	000000	103014			EXP	QUNKF6+14,QUNKF7+14,PTTF0+14,PTTF1+14,PTTF2+14,PTTF3+14
  9115	065572	000000	104014
  9116	065573	000000	105110
  9117	065574	000000	106014
  9118	065575	000000	106324
  9119	065576	000000	107014
  9120	065577	000000	107324			EXP	PTTF4+14,PTTF5+14,PTTF6+14,PTTF7+14,PTTF10+14,PTTF11+14
  9121	065600	000000	110014
  9122	065601	000000	110324
  9123	065602	000000	111014
  9124	065603	000000	111324
  9125	065604	000000	112014
  9126	065605	000000	112324			EXP	PTTF12+14,PTTF13+14,PTTF14+14,PTTF15+14,PTTF16+14,PTTF17+14
  9127	065606	000000	113014
  9128	065607	000000	113324
  9129	065610	000000	114014
  9130	065611	000000	114324
  9131	065612	000000	115014
  9132
  9133	065613	000000	075020			EXP	QUNKF0+20,QUNKF1+20,QUNKF2+20,QUNKF3+20,QUNKF4+20,QUNKF5+20
  9134	065614	000000	076020
  9135	065615	000000	077020
  9136	065616	000000	100020
  9137	065617	000000	101020
  9138	065620	000000	102020
  9139	065621	000000	103020			EXP	QUNKF6+20,QUNKF7+20,PTTF0+20,PTTF1+20,PTTF2+20,PTTF3+20
  9140	065622	000000	104020
  9141	065623	000000	105114
  9142	065624	000000	106020
  9143	065625	000000	106330
  9144	065626	000000	107020
  9145	065627	000000	107330			EXP	PTTF4+20,PTTF5+20,PTTF6+20,PTTF7+20,PTTF10+20,PTTF11+20
  9146	065630	000000	110020
  9147	065631	000000	110330
  9148	065632	000000	111020
  9149	065633	000000	111330
  9150	065634	000000	112020
  9151	065635	000000	112330			EXP	PTTF12+20,PTTF13+20,PTTF14+20,PTTF15+20,PTTF16+20,PTTF17+20
  9152	065636	000000	113020
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 207-6
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0376

  9153	065637	000000	113330
  9154	065640	000000	114020
  9155	065641	000000	114330
  9156	065642	000000	115020
  9157	065643	000000	072030			EXP	PCB+30,PCB+31
  9158	065644	000000	072031
  9159	065645	777777	777777			-1
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 208
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0377

  9160
  9161					;#********************************************************************
  9162					;* TIDLE - Start the port and wait for IDLE bit to set in CSR
  9163					;
  9164					; Return:  +1 - Error - never reached idle loop
  9165					;	   +2 - Succeeded
  9166					;#********************************************************************
  9167
  9168	065646	261 17 0 00 000000 	TIDLE:	RPUT	(0,1,2)			; save AC's
  9169
  9170	065651	260 17 0 00 064672*		GO	IPACLR			; clear port
  9171
  9172					; Set up initial CCW list
  9173
  9174	065652	260 17 0 00 033772*		GO	CHINIT			; initialize software
  9175
  9176					; Start it up
  9177
  9178	065653	400 01 0 00 000000 		SETZ	1,			; clear data
  9179	065654	260 17 0 00 064453*		GO	LDRAR			; clear RAR contents
  9180	065655	201 01 0 00 000010 		MOVEI	1,MPRUN			; get 'MPRun' bit
  9181	065656	336 00 0 00 030037 		SKIPN	USER			; user mode?
  9182	065657	660 01 0 00 000004 		TRO	1,4			; no - set PIA bits
  9183	065660	260 17 0 00 044315*		GO	LDCSR			; start up the port
  9184	065661	005 00 0 00 000144 		DELAY	^D100			; wait of 100 milliseconds
  9185	065662	260 17 0 00 042337*		GO	RDCSR			; read CSR register
  9186	065663	254 00 0 00 065666 		JRST	TIDLEE			; error - exit
  9187	065664	602 01 0 00 000010 		TRNE	1,MPRUN			; still running?
  9188	065665	350 00 0 17 777775 		AOS	-3(P)			; yes - set up proper return
  9189	065666	262 17 0 00 000002 	TIDLEE:	RGET	(2,1,0)			; restore AC's
  9190
  9191	065671	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 209
DFNIA1	MAC	18-Feb-84 20:30		NI Initialization Routines                                                         SEQ 0378

  9192
  9193					;#********************************************************************
  9194					;* RDADDR - Read NI physical address register (ROM)
  9195					;#********************************************************************
  9196
  9197	065672	261 17 0 00 000000 	RDADDR:	RPUT	(0,1,2)			; save AC's
  9198
  9199	065675	201 02 0 00 000007 		MOVEI	2,7			; initialize address
  9200
  9201	065676	201 01 0 00 000005 	RDADD0:	MOVEI	1,5			; set up to write address
  9202	065677	350 00 0 00 000002 		AOS	2			; point to next address
  9203	065700	260 17 0 00 040126 		GO	WRTPLI			; set up to read physical addr register
  9204	065701	260 17 0 00 040054 		GO	RDBF			; read byte
  9205						XCT	[DPB	1,[POINT 8,SADDR,31]
  9206							 DPB	1,[POINT 8,SADDR,23]
  9207							 DPB	1,[POINT 8,SADDR,15]
  9208							 DPB	1,[POINT 8,SADDR,7]
  9209							 DPB	1,[POINT 8,SADDR+1,31]
  9210	065702	256 00 0 02 130610 			 DPB	1,[POINT 8,SADDR+1,23]]-10(2)
  9211	065703	305 02 0 00 000015 		CAIGE	2,15			; done yet?
  9212	065704	254 00 0 00 065676 		JRST	RDADD0			; no - loop till done
  9213
  9214	065705	262 17 0 00 000002 		RGET	(2,1,0)			; restore AC's
  9215
  9216	065710	263 17 0 00 000000 		RTN				; return
  9217
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 210
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0379

  9218						SUBTTL	Packet Handling Routines
  9219
  9220					;#********************************************************************
  9221					; Routines for building packets, etc:
  9222					;
  9223					; BPACK - Build a packet
  9224					;   ITEXT - get text length + text
  9225					;   ICRC - get text len + text + CRC
  9226					;   IREGW - Set up to write a register
  9227					;   IREGR - Set up to read a register
  9228					;
  9229					; RWAIT - Wait for a response (by CSR bit 'RspQAvail' bit being set.
  9230					; INSQUE - Insert a packet into a queue
  9231					; CHKRSP - Check if a response queue entry
  9232					;   CHKINT - Check/set up interlock for queue
  9233					;   CONVIR - Convert physical address to virtual
  9234					;   GETQUE - Remove a queue entry from the beginning of a queue
  9235					;   PUTQUE - Insert a queue entry on the end of a queue
  9236					;   SHUTRQ - Turn off RESQAV bit in CSR register
  9237					;
  9238					; Arguments:	OP - Contains the op code
  9239					;		TFMFLG - Format flag (0-COMPAT,1-HIDEN)
  9240					;		TBSDFL - BSD style datagram flag (0-no,1-yes)
  9241					;		TRSFLG - Response packet is requested flag (0-no,1-yes)
  9242					;		TPDFLG - Pad flag (0-no,1-yes)
  9243					;		TDEST - Destination address
  9244					;		TBYTE -  Length of text portion (in bytes)
  9245					;		TPAT -   Data pattern
  9246					;		TREGN -  Register number (to read or write)
  9247					;		TREGD -  Register data (read or written)
  9248					;#********************************************************************
  9249
  9250	065711	000000	000000		TFMFLG:	0			; format flag (0-COMPAT,1-HIDEN)
  9251	065712	000000	000000		TBSDFL:	0			; BSD style flag (0-no,1-yes)
  9252	065713	000000	000000		TRSFLG:	0			; response packet requested flag (0-no,1-yes)
  9253	065714	000000	000000		TPDFLG:	0			; pad flag
  9254
  9255	065715	000000	000000		TDEST:	0			; destination address
  9256	065716	000000	000000			0
  9257
  9258	065717	000000	000000		TPTTVL:	0			; PTT value
  9259
  9260	065720	000000	000000		TBYTE:	0			; length of text portion (in bytes)
  9261	065721	000000	000000		TWORD:	0			; calculated text length (in words)
  9262	065722	000000	000000		TPAT:	0			; data pattern
  9263	065723	000000	000000		TREGN:	0			; register number (to read or write)
  9264	065724	000000	000000		TREGD:	0			; register data (read or written)
  9265
  9266	065725	000000	000000		TAMC:	0			; AMC bit
  9267	065726	000000	000000		TH4000:	0			; H4000 mode
  9268	065727	000000	000000		TPRMSC:	0			; PRMSC bit
  9269	065730	000000	000000		TRETRY:	0			; retry count
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 211
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0380

  9270
  9271					;#********************************************************************
  9272					;* BPACK - Build a packet
  9273					;#********************************************************************
  9274
  9275	065731	476 00 0 00 134164'	BPACKN:	SETOM	INHCRC#			; set 'inhibit CRC calc' flag
  9276	065732	334 00 0 00 000000 		SKIPA				; continue
  9277	065733	402 00 0 00 134164'	BPACK:	SETZM	INHCRC			; clear 'inhibit CRC calc' flag
  9278	065734	261 17 0 00 000000 		RPUT	(0,1,2,3,4)		; save AC's
  9279
  9280
  9281					; Initialize packet to 0's
  9282
  9283	065741	402 00 0 00 072114 		SETZM	PACKET			; clear first word
  9284	065742	200 00 0 00 127177 		MOVE	[PACKET,,PACKET+1]	; build BLT pointer
  9285	065743	251 00 0 00 072733 		BLT	PACKET+^D399		; clear the packet buffer
  9286
  9287					; Insert flags
  9288
  9289	065744	400 02 0 00 000000 		SETZ	2,			; initialize flags
  9290	065745	332 00 0 00 065713 		SKIPE	TRSFLG			; always generate response?
  9291	065746	660 02 0 00 000001 		TRO	2,1			; yes - set response flag
  9292	065747	302 11 0 00 000001 		CAIE	OP,DGSNT		; datagram?
  9293	065750	254 00 0 00 065763 		JRST	BPACK0			; no - continue
  9294	065751	336 00 0 00 134164'		SKIPN	INHCRC			; inhibit CRC?
  9295	065752	660 02 0 00 000100 		TRO	2,100			; no - set 'CRC included' flag
  9296	065753	332 00 0 00 065712 		SKIPE	TBSDFL			; BSD style datagram?
  9297	065754	336 00 0 00 065711 		SKIPN	TFMFLG			; yes - HIDEN format?
  9298	065755	334 00 0 00 000000 		SKIPA				; no - continue
  9299	065756	660 02 0 00 000200 		TRO	2,200			; yes - set HIDEN flag
  9300	065757	332 00 0 00 065712 		SKIPE	TBSDFL			; BSD style datagram?
  9301	065760	660 02 0 00 000010 		TRO	2,10			; yes - set the flag
  9302	065761	332 00 0 00 065714 		SKIPE	TPDFLG			; pad flag set?
  9303	065762	660 02 0 00 000040 		TRO	2,40			; yes - set PAD bit
  9304	065763	137 02 0 00 127200 	BPACK0:	DPB	2,[POINT 8,PACKET+3,15]	; store in packet
  9305
  9306					; Insert OP code
  9307
  9308	065764	260 17 0 00 070207 		GO	DECOPC			; decode op code
  9309						JRST	[TMSGC	<? Illegal op code specified - >
  9310							 MOVE	OP
  9311							 PNTOCS
  9312	065765	254 00 0 00 130635 			 JRST	BPACKX]
  9313	065766	137 11 0 00 127201 		DPB	OP,[POINT 8,PACKET+3,23]; insert op code
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 212
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0381

  9314
  9315					; Build rest of packet
  9316
  9317						XCT	[GO	BPAK1		; 1-SNDDG
  9318							 JFCL			; 2-LDMCAT
  9319							 JFCL			; 3-LDPTT
  9320							 GO	BPAK4		; 4-RCCNT
  9321							 GO	BPAK6		; 6-WRPLI
  9322							 GO	BPAK7		; 7-RDPLI
  9323							 JFCL			; 10-RDNSA
  9324							 GO	BPAK11		; 11-WRNSA
  9325	065767	256 00 0 01 130641 			 JFCL](1)
  9326
  9327					; Exit
  9328
  9329	065770	262 17 0 00 000004 	BPACKX:	RGET	(4,3,2,1,0)		; restore AC's
  9330
  9331	065775	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 213
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0382

  9332
  9333					;#********************************************************************
  9334					;* BPAK1 - Build packet for DGSNT command
  9335					;#********************************************************************
  9336
  9337	065776	402 00 0 00 000000*	BPAK1:	SETZM	CRCSAV			; clear saved CRC data
  9338	065777	476 00 0 00 000000*		SETOM	CRCOFF			; init CRC table offset
  9339	066000	200 00 0 00 065717 		MOVE	TPTTVL			; get PTT value
  9340	066001	137 00 0 00 130652 		DPB	[POINT 16,PACKET+5,31]	; insert in packet
  9341	066002	201 00 0 00 105071 		MOVEI	PTTFQ+1			; get header address
  9342	066003	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
  9343	066004	257 00 0 00 105071 		MAP	PTTFQ+1			; no - map to physical
  9344	066005	621 00 0 00 777000 		TLZ	777000			; get rid of extraneous bits
  9345	066006	202 00 0 00 072122 		MOVEM	PACKET+6		; insert in packet
  9346	066007	120 00 0 00 065715 		DMOVE	TDEST			; get destination address
  9347	066010	124 00 0 00 072123 		DMOVEM	PACKET+7		; save it
  9348	066011	332 00 0 00 065712 		SKIPE	TBSDFL			; BSD style datagram?
  9349	066012	254 00 0 00 066024 		JRST	BPAK1A			; yes - go handle
  9350
  9351					; Non BSD style format
  9352
  9353	066013	201 01 0 00 072125 		MOVEI	1,PACKET+11		; address of text
  9354	066014	260 17 0 00 066211 		GO	ITEXT			; insert text
  9355	066015	200 00 0 00 065720 		MOVE	TBYTE			; get byte count
  9356	066016	336 00 0 00 134164'		SKIPN	INHCRC			; inhibit CRC?
  9357	066017	271 00 0 00 000004 		ADDI	4			; no - add 4 more bytes for CRC
  9358	066020	202 00 0 00 072120 		MOVEM	PACKET+4		; save it
  9359	066021	201 01 0 00 072125 		MOVEI	1,PACKET+11		; address of text
  9360	066022	260 17 0 00 066250 		GO	ICRC			; calculate CRC
  9361	066023	263 17 0 00 000000 		RTN				; return
  9362
  9363					; BSD style format
  9364
  9365	066024	201 00 0 00 072130 	BPAK1A:	MOVEI	PACKET+14		; get base address
  9366	066025	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
  9367	066026	257 00 0 00 072130 		MAP	PACKET+14		; no - map to physical
  9368	066027	621 00 0 00 777000 		TLZ	777000			; get rid of extraneous bits
  9369	066030	202 00 0 00 072125 		MOVEM	PACKET+11		; save it
  9370	066031	201 00 0 00 072134 		MOVEI	PACKET+20		; get segment base address
  9371	066032	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
  9372	066033	257 00 0 00 072134 		MAP	PACKET+20		; no - map to physical
  9373	066034	621 00 0 00 777000 		TLZ	777000			; get rid of extraneous bits
  9374	066035	202 00 0 00 072130 		MOVEM	PACKET+14		; save it
  9375	066036	332 01 0 00 065711 		SKIPE	1,TFMFLG		; get format flag
  9376	066037	201 01 0 00 000001 		MOVEI	1,1			; get HIDEN bits
  9377	066040	137 01 0 00 130653 		DPB	1,[POINT 1,PACKET+14,6]	; save packing mode bit
  9378	066041	201 01 0 00 072134 		MOVEI	1,PACKET+20		; address of text
  9379	066042	260 17 0 00 066211 		GO	ITEXT			; insert text
  9380	066043	200 00 0 00 065720 		MOVE	TBYTE			; get byte count
  9381	066044	336 00 0 00 134164'		SKIPN	INHCRC			; inhibit CRC?
  9382	066045	271 00 0 00 000004 		ADDI	4			; no - add 4 more bytes for CRC
  9383	066046	202 00 0 00 072132 		MOVEM	PACKET+16		; save it
  9384	066047	202 00 0 00 072120 		MOVEM	PACKET+4		; save it
  9385	066050	201 01 0 00 072134 		MOVEI	1,PACKET+20		; address of text
  9386	066051	260 17 0 00 066250 		GO	ICRC			; calculate CRC
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 213-1
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0383

  9387	066052	263 17 0 00 000000 		RTN				; return
  9388
  9389
  9390					;#********************************************************************
  9391					;* BPAK4 - Build packet for RCCNT command
  9392					;#********************************************************************
  9393
  9394	066053	332 00 0 00 115611 	BPAK4:	SKIPE	PMODE			; normal test?
  9395	066054	263 17 0 00 000000 		RTN				; yes - exit
  9396	066055	476 00 0 00 040510*		SETOM	ARGFLG			; initialize to accept arguments
  9397	066056	260 17 0 00 035723*		GO	CLRBUF			; clear input buffer
  9398	066057	400 01 0 00 000000 		SETZ	1,			; clear AC1
  9399	066060	200 00 0 00 130660 		MOVE	[FMSGC	<Clear counters?>]
  9400	066061	260 17 0 00 000000*		GO	TTYYES			; ask question
  9401	066062	334 00 0 00 000000 		SKIPA				; no - continue
  9402	066063	200 01 0 00 130661 		MOVE	1,[1B14]		; yes - get a 1 for clear counters
  9403	066064	436 01 0 00 072117 		IORM	1,PACKET+3		; save data
  9404	066065	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 214
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0384

  9405
  9406					;#********************************************************************
  9407					;* BPAK6 - Build packet for WRPLI command
  9408					;#********************************************************************
  9409
  9410	066066	332 00 0 00 115611 	BPAK6:	SKIPE	PMODE			; normal test?
  9411	066067	254 00 0 00 066107 		JRST	BPAK6B			; yes - continue
  9412	066070	476 00 0 00 066055*	BPAK6A:	SETOM	ARGFLG			; initialize to accept arguments
  9413	066071	260 17 0 00 066056*		GO	CLRBUF			; clear input buffer
  9414	066072	037 01 0 00 130662 		FMSGC	<Register number,data? >
  9415						MOVE	1,[FMSGCD <Register n,data, where n:
  9416					1-RcXmBf   5-RRcAtn  11-WXmtBf
  9417					2-WFBLst   6-EnaLnk  12-WtReg
  9418					3-WRBfAd   7-DsaLnk  13-ClrRBf
  9419	066073	200 01 0 00 130725 	4-XmtAct  10-WtAdrs>]
  9420	066074	260 17 0 00 041534*		GO	.OARG			; get argument
  9421						JRST	[GO	FIOFF		; error - shut off file input
  9422	066075	254 00 0 00 130726 			 JRST	BPAK6A]		;   and exit
  9423						JRST	[GO	FIOFF		; missing argument - shut off file
  9424	066076	254 00 0 00 117055 			 RTN]			;   input and exit
  9425	066077	200 00 0 00 042074*		MOVE	ARGUM			; get argument
  9426	066100	202 00 0 00 065723 		MOVEM	TREGN			; save it
  9427						MOVN	1,[FMSGCD <Register n,data, where n:
  9428					1-RcXmBf   5-RRcAtn  11-WXmtBf
  9429					2-WFBLst   6-EnaLnk  12-WtReg
  9430					3-WRBfAd   7-DsaLnk  13-ClrRBf
  9431	066101	210 01 0 00 130725 	4-XmtAct  10-WtAdrs>]
  9432	066102	260 17 0 00 066074*		GO	.OARG			; get argument
  9433						JRST	[GO	FIOFF		; error - shut off file input
  9434	066103	254 00 0 00 130726 			 JRST	BPAK6A]		;   and exit
  9435						JRST	[GO	FIOFF		; missing argument - shut off file
  9436	066104	254 00 0 00 117055 			 RTN]			;   input and exit
  9437	066105	200 00 0 00 066077*		MOVE	ARGUM			; get argument
  9438	066106	202 00 0 00 065724 		MOVEM	TREGD			; save it
  9439	066107	402 00 0 00 072120 	BPAK6B:	SETZM	PACKET+4		; clear word
  9440	066110	200 00 0 00 065723 		MOVE	TREGN			; get register number
  9441	066111	137 00 0 00 130730 		DPB	[POINT 4,PACKET+4,23]	; store in packet
  9442	066112	200 00 0 00 065724 		MOVE	TREGD			; get register data
  9443	066113	137 00 0 00 130731 		DPB	[POINT 8,PACKET+4,35]	; store in packet
  9444	066114	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 215
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0385

  9445
  9446					;#********************************************************************
  9447					;* BPAK7 - Build packet for RDPLI command
  9448					;#********************************************************************
  9449
  9450	066115	332 00 0 00 115611 	BPAK7:	SKIPE	PMODE			; normal test?
  9451	066116	254 00 0 00 066130 		JRST	BPAK7B			; yes - continue
  9452	066117	476 00 0 00 066070*	BPAK7A:	SETOM	ARGFLG			; initialize to accept arguments
  9453	066120	260 17 0 00 066071*		GO	CLRBUF			; clear input buffer
  9454	066121	037 01 0 00 130732 		FMSGC	<Register number? >
  9455						MOVN	1,[FMSGCD <Register number n, where n:
  9456					1-RdReg   4-RdXSta
  9457					2-RRecBf  5-RdRSta
  9458	066122	210 01 0 00 130757 	3-RUBLst>]
  9459	066123	260 17 0 00 066102*		GO	.OARG			; get argument
  9460						JRST	[GO	FIOFF		; error - shut off file input
  9461	066124	254 00 0 00 130760 			 JRST	BPAK7A]		;   and exit
  9462						JRST	[GO	FIOFF		; missing argument - shut off file
  9463	066125	254 00 0 00 117055 			 RTN]			;   input and exit
  9464	066126	200 00 0 00 066105*		MOVE	ARGUM			; get argument
  9465	066127	202 00 0 00 065723 		MOVEM	TREGN			; save it
  9466	066130	200 00 0 00 065723 	BPAK7B:	MOVE	TREGN			; get register number
  9467	066131	402 00 0 00 072120 		SETZM	PACKET+4		; clear word
  9468	066132	137 00 0 00 130730 		DPB	[POINT 4,PACKET+4,23]	; store in packet
  9469	066133	263 17 0 00 000000 		RTN				; return
  9470
  9471
  9472					;#********************************************************************
  9473					;* BPAK11 - Build packet for WRNSA command
  9474					;#********************************************************************
  9475
  9476	066134	332 00 0 00 115611 	BPAK11:	SKIPE	PMODE			; normal test?
  9477	066135	254 00 0 00 066173 		JRST	BPK11B			; yes - continue
  9478	066136	476 00 0 00 066117*	BPK11A:	SETOM	ARGFLG			; initialize to accept arguments
  9479	066137	402 00 0 00 065725 		SETZM	TAMC
  9480	066140	402 00 0 00 065726 		SETZM	TH4000
  9481	066141	402 00 0 00 065727 		SETZM	TPRMSC
  9482	066142	402 00 0 00 065730 		SETZM	TRETRY
  9483	066143	260 17 0 00 066120*		GO	CLRBUF			; clear input buffer
  9484	066144	037 01 0 00 130762 		FMSGC	<AMC,H4000 Mode,PRMSC Mode,#retries? >
  9485
  9486	066145	200 01 0 00 131005 		MOVE	1,[FMSGCD <AMC,H4000 Mode,PRMSC Mode,#retries (0-Off,1-On)>]
  9487	066146	260 17 0 00 066123*		GO	.OARG			; get argument
  9488						JRST	[GO	FIOFF		; error - shut off file input
  9489	066147	254 00 0 00 131006 			 JRST	BPK11A]		;   and exit
  9490	066150	254 00 0 00 066173 		JRST	BPK11B			; no more arguments - continue
  9491	066151	200 00 0 00 066126*		MOVE	ARGUM			; get argument
  9492	066152	202 00 0 00 065725 		MOVEM	TAMC			; save it
  9493
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 216
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0386

  9494	066153	260 17 0 00 066146*		GO	.OARG			; get argument
  9495						JRST	[GO	FIOFF		; error - shut off file input
  9496	066154	254 00 0 00 131006 			 JRST	BPK11A]		;   and exit
  9497	066155	254 00 0 00 066173 		JRST	BPK11B			; no more arguments - continue
  9498	066156	200 00 0 00 066151*		MOVE	ARGUM			; get argument
  9499	066157	202 00 0 00 065726 		MOVEM	TH4000			; save it
  9500
  9501	066160	260 17 0 00 066153*		GO	.OARG			; get argument
  9502						JRST	[GO	FIOFF		; error - shut off file input
  9503	066161	254 00 0 00 131006 			 JRST	BPK11A]		;   and exit
  9504	066162	254 00 0 00 066173 		JRST	BPK11B			; no more arguments - continue
  9505	066163	200 00 0 00 066156*		MOVE	ARGUM			; get argument
  9506	066164	202 00 0 00 065727 		MOVEM	TPRMSC			; save it
  9507
  9508	066165	210 01 0 00 131005 		MOVN	1,[FMSGCD <AMC,H4000 Mode,PRMSC Mode,#retries (0-Off,1-On)>]
  9509	066166	260 17 0 00 066160*		GO	.OARG			; get argument
  9510						JRST	[GO	FIOFF		; error - shut off file input
  9511	066167	254 00 0 00 131006 			 JRST	BPK11A]		;   and exit
  9512	066170	254 00 0 00 066173 		JRST	BPK11B			; no more arguments - continue
  9513	066171	200 00 0 00 066163*		MOVE	ARGUM			; get argument
  9514	066172	202 00 0 00 065730 		MOVEM	TRETRY			; save it
  9515
  9516					; Build the packet now
  9517
  9518	066173	120 00 0 00 033704 	BPK11B:	DMOVE	SADDR			; get our station address
  9519	066174	124 00 0 00 072120 		DMOVEM	PACKET+4		; save it
  9520	066175	402 00 0 00 072122 		SETZM	PACKET+6		; clear special bits
  9521	066176	200 00 0 00 065725 		MOVE	TAMC			; get AMC bit
  9522	066177	137 00 0 00 131010 		DPB	[POINT 1,PACKET+6,33]	; save it
  9523	066200	200 00 0 00 065726 		MOVE	TH4000			; get TH4000 bit
  9524	066201	137 00 0 00 131011 		DPB	[POINT 1,PACKET+6,34]	; save it
  9525	066202	200 00 0 00 065727 		MOVE	TPRMSC			; get PRMSC bit
  9526	066203	137 00 0 00 131012 		DPB	[POINT 1,PACKET+6,35]	; save it
  9527	066204	201 00 0 00 000001 		MOVEI	1			; get ACRC bit (force it always)
  9528	066205	137 00 0 00 131013 		DPB	[POINT 1,PACKET+6,32]	; save it
  9529	066206	200 00 0 00 065730 		MOVE	TRETRY			; get retry count allowed
  9530	066207	202 00 0 00 072123 		MOVEM	PACKET+7		; save it
  9531	066210	263 17 0 00 000000 		RTN
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 217
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0387

  9532
  9533					;#********************************************************************
  9534					;* ITEXT - get text length + text
  9535					;
  9536					; Given:  AC1 - Text starting address
  9537					;	  TBYTE - Byte count
  9538					;	  TFMFLG - 0-Compat / 1-HIDEN
  9539					;#********************************************************************
  9540
  9541					; First ensure byte count and word counts are in range ...
  9542
  9543	066211	261 17 0 00 000000 	ITEXT:	RPUT	(0,1,2,3)		; save AC's
  9544
  9545	066215	336 00 0 00 065720 		SKIPN	TBYTE			; byte count given?
  9546						JRST	[MOVE	TWORD		; no - get word count
  9547	066216	254 00 0 00 131014 			 JRST	ITEXT0]		;   and continue
  9548	066217	200 00 0 00 065720 		MOVE	TBYTE			; get length in bytes
  9549	066220	332 00 0 00 065711 		SKIPE	TFMFLG			; HIDEN format?
  9550						JRST	[LSH	1		; yes - multiply by 2 and
  9551							 IDIVI	9		;   divide by 9 to calculate
  9552							 SKIPE	1		;   word count - and ensure
  9553							 AOS			;   that it is an even number
  9554							 TRZ	1		;   of words
  9555	066221	254 00 0 00 131016 			 JRST	ITEXT0]
  9556	066222	231 00 0 00 000004 		IDIVI	4			; COMPAT - calculate word count
  9557	066223	332 00 0 00 000001 		SKIPE	1			; remainder?
  9558	066224	350 00 0 00 000000 		AOS				; yes - increment word count
  9559	066225	202 00 0 00 065721 	ITEXT0:	MOVEM	TWORD			; save word count
  9560	066226	332 00 0 00 065711 		SKIPE	TFMFLG			; HIDEN format?
  9561						GO	[LSH	-1		; yes - divide by 2 and
  9562							 IMULI	9		;   multiply by 9 to calculate
  9563	066227	260 17 0 00 131024 			 RTN]			;   byte count
  9564	066230	336 00 0 00 065711 		SKIPN	TFMFLG			; HIDEN format?	
  9565	066231	242 00 0 00 000002 		LSH	2			; no - calculate bytes
  9566	066232	202 00 0 00 065720 		MOVEM	TBYTE			; save byte count
  9567
  9568					; Now insert data pattern
  9569
  9570	066233	200 14 0 00 065722 		MOVE	PAT,TPAT		; get data pattern
  9571	066234	200 02 0 00 065721 		MOVE	2,TWORD			; word count
  9572	066235	303 02 0 00 000574 		CAILE	2,^D380			; word count in proper range?
  9573	066236	201 00 0 00 000574 		MOVEI	^D380			; no - limit to maximum length
  9574	066237	200 03 0 17 777776 		MOVE	3,-2(P)			; buffer address
  9575	066240	260 17 0 00 000000*		GO	BUFGEN			; generate buffer contents
  9576
  9577					; Exit after testing for additional routine
  9578
  9579	066241	332 00 0 00 134254'		SKIPE	TXADDL			; routine specified for addl data?
  9580	066242	260 17 1 00 134254'		GO	@TXADDL			; yes - call it
  9581	066243	262 17 0 00 000003 		RGET	(3,2,1,0)		; restore AC's
  9582
  9583	066247	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 218
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0388

  9584
  9585					;#********************************************************************
  9586					;* ICRC - Calculate CRC
  9587					;
  9588					; Given:  AC1 - Address of text data
  9589					;#********************************************************************
  9590
  9591	066250	332 00 0 00 134164'	ICRC:	SKIPE	INHCRC			; inhibit CRC calculation?
  9592	066251	263 17 0 00 000000 		RTN				; yes - return
  9593	066252	261 17 0 00 000001 		RPUT	(1,2,3,4,5,6,7,10)	; no - save AC's
  9594
  9595	066262	332 04 0 00 065776*		SKIPE	4,CRCSAV		; get precalculated CRC - valid?
  9596						JRST	[ADD	1,TWORD		; yes - save it and exit
  9597							 MOVEM	4,(1)
  9598	066263	254 00 0 00 131027 			 JRST	ICRCY]
  9599
  9600					; Calculate CRC of destination
  9601
  9602	066264	474 04 0 00 000000 		SETO	4,			; initial CRC value
  9603	066265	135 02 0 00 131032 		LDB	2,[POINT 8,PACKET+7,31]	; get byte 0
  9604	066266	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9605	066267	135 02 0 00 131033 		LDB	2,[POINT 8,PACKET+7,23]	; get byte 1
  9606	066270	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9607	066271	135 02 0 00 131034 		LDB	2,[POINT 8,PACKET+7,15]	; get byte 2
  9608	066272	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9609	066273	135 02 0 00 131035 		LDB	2,[POINT 8,PACKET+7,7]	; get byte 3
  9610	066274	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9611	066275	135 02 0 00 131036 		LDB	2,[POINT 8,PACKET+10,31]; get byte 4
  9612	066276	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9613	066277	135 02 0 00 131037 		LDB	2,[POINT 8,PACKET+10,23]; get byte 5
  9614	066300	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9615
  9616					; Calculate CRC of source
  9617
  9618	066301	135 02 0 00 123053 		LDB	2,[POINT 8,SADDR,31]	; get byte 0
  9619	066302	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9620	066303	135 02 0 00 123054 		LDB	2,[POINT 8,SADDR,23]	; get byte 1
  9621	066304	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9622	066305	135 02 0 00 123055 		LDB	2,[POINT 8,SADDR,15]	; get byte 2
  9623	066306	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9624	066307	135 02 0 00 123056 		LDB	2,[POINT 8,SADDR,7]	; get byte 3
  9625	066310	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9626	066311	135 02 0 00 123057 		LDB	2,[POINT 8,SADDR+1,31]	; get byte 4
  9627	066312	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9628	066313	135 02 0 00 123060 		LDB	2,[POINT 8,SADDR+1,23]	; get byte 5
  9629	066314	260 17 0 00 066443 		GO	CRCCAL			; calculate
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 219
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0389

  9630
  9631					; Calculate CRC of protocol type bytes
  9632
  9633	066315	135 02 0 00 131040 		LDB	2,[POINT 8,PACKET+5,31]	; get type byte 1
  9634	066316	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9635	066317	135 02 0 00 131041 		LDB	2,[POINT 8,PACKET+5,23]	; get type byte 2
  9636	066320	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9637
  9638					; Include 2 length bytes if pad flag is set
  9639
  9640	066321	336 00 0 00 065714 		SKIPN	TPDFLG			; pad flag set?
  9641	066322	254 00 0 00 066333 		JRST	ICRC0			; no - continue
  9642	066323	201 00 0 00 000004 		MOVEI	4			; ensure the length includes
  9643	066324	272 00 0 00 065720 		ADDM	TBYTE			;   4 bytes for CRC
  9644	066325	135 02 0 00 131042 		LDB	2,[POINT 8,TBYTE,35]	; get low order length
  9645	066326	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9646	066327	135 02 0 00 131043 		LDB	2,[POINT 8,TBYTE,27]	; get high order length
  9647	066330	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9648	066331	201 00 0 00 000004 		MOVEI	4			; restore the length
  9649	066332	276 00 0 00 065720 		SUBM	TBYTE			;   ...
  9650
  9651					; Calculate CRC of data, depending on packet format
  9652
  9653	066333	200 06 0 17 777771 	ICRC0:	MOVE	6,-7(P)			; get address of 1st word
  9654	066334	200 07 0 00 065721 		MOVE	7,TWORD			; get word count
  9655	066335	332 00 0 00 065711 		SKIPE	TFMFLG			; HIDEN format?
  9656	066336	254 00 0 00 066354 		JRST	ICRC2			; yes - go handle it
  9657
  9658					; Loop through all the bytes (COMPAT mode)
  9659
  9660	066337	322 07 0 00 066410 	ICRC1:	JUMPE	7,ICRC3			; exit if already done
  9661	066340	200 10 0 06 000000 		MOVE	10,(6)			; get data word
  9662	066341	135 02 0 00 131044 		LDB	2,[POINT 8,10,7]	; get byte 1
  9663	066342	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9664	066343	135 02 0 00 131045 		LDB	2,[POINT 8,10,15]	; get byte 2
  9665	066344	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9666	066345	135 02 0 00 131046 		LDB	2,[POINT 8,10,23]	; get byte 3
  9667	066346	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9668	066347	135 02 0 00 131047 		LDB	2,[POINT 8,10,31]	; get byte 4
  9669	066350	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9670	066351	350 00 0 00 000006 		AOS	6			; point to next word
  9671	066352	367 07 0 00 066337 		SOJG	7,ICRC1			; loop till done
  9672	066353	254 00 0 00 066410 		JRST	ICRC3			; continue
  9673
  9674					; Loop through all the bytes (HIDEN mode)
  9675
  9676	066354	322 07 0 00 066410 	ICRC2:	JUMPE	7,ICRC3			; exit if already done
  9677	066355	200 10 0 06 000000 		MOVE	10,(6)			; get 1st data word
  9678	066356	135 02 0 00 131044 		LDB	2,[POINT 8,10,7]	; get byte 1
  9679	066357	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9680	066360	135 02 0 00 131045 		LDB	2,[POINT 8,10,15]	; get byte 2
  9681	066361	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 220
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0390

  9682	066362	135 02 0 00 131046 		LDB	2,[POINT 8,10,23]	; get byte 3
  9683	066363	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9684	066364	135 02 0 00 131047 		LDB	2,[POINT 8,10,31]	; get byte 4
  9685	066365	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9686	066366	135 02 0 00 131050 		LDB	2,[POINT 4,10,35]	; get byte 5 (1st half)
  9687	066367	242 02 0 00 000004 		LSH	2,4			; position properly
  9688	066370	350 00 0 00 000006 		AOS	6			; point to next word
  9689	066371	200 10 0 06 000000 		MOVE	10,(6)			; get 2nd data word
  9690	066372	370 00 0 00 000007 		SOS	7			; decrement word count
  9691	066373	135 00 0 00 131051 		LDB	[POINT 4,10,3]		; get byte 5 (2nd half)
  9692	066374	434 02 0 00 000000 		IOR	2,0			; include with 1st half
  9693	066375	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9694	066376	135 02 0 00 131052 		LDB	2,[POINT 8,10,11]	; get byte 6
  9695	066377	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9696	066400	135 02 0 00 131053 		LDB	2,[POINT 8,10,19]	; get byte 7
  9697	066401	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9698	066402	135 02 0 00 131054 		LDB	2,[POINT 8,10,27]	; get byte 8
  9699	066403	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9700	066404	135 02 0 00 131055 		LDB	2,[POINT 8,10,35]	; get byte 9
  9701	066405	260 17 0 00 066443 		GO	CRCCAL			; calculate for this byte
  9702	066406	350 00 0 00 000006 		AOS	6			; point to next word
  9703	066407	367 07 0 00 066354 		SOJG	7,ICRC2			; loop till done
  9704
  9705					; Include 44 extra bytes if pad flag is set and length < 46 bytes
  9706					; (including CRC)
  9707
  9708	066410	336 00 0 00 065714 	ICRC3:	SKIPN	TPDFLG			; pad flag set?
  9709	066411	254 00 0 00 066424 		JRST	ICRCX			; no - continue
  9710	066412	200 00 0 00 065720 		MOVE	TBYTE			; get byte count
  9711	066413	301 00 0 00 000052 		CAIL	^D42			; less than 42 bytes?
  9712	066414	254 00 0 00 066424 		JRST	ICRCX			; no - continue
  9713	066415	261 17 0 00 000006 		PUT	6			; save AC6
  9714	066416	201 06 0 00 000054 		MOVEI	6,^D44			; get additional bytes
  9715	066417	400 02 0 00 000000 	ICRC4:	SETZ	2,			; get 0 byte
  9716	066420	260 17 0 00 066443 		GO	CRCCAL			; calculate
  9717	066421	367 06 0 00 066417 		SOJG	6,ICRC4			; loop till done
  9718	066422	262 17 0 00 000006 		GET	6			; restore AC6
  9719	066423	271 06 0 00 000013 		ADDI	6,^D11			; allow for an additional 11 words
  9720
  9721					; Done - just do final XOR and save in text
  9722
  9723	066424	430 04 0 00 124130 	ICRCX:	XOR	4,[-1]			; final XOR
  9724	066425	260 17 0 00 066457 		GO	CRCFIX			; swap bits properly
  9725	066426	242 04 0 00 000004 		LSH	4,4			; position in bits 0-31
  9726	066427	202 04 0 06 000000 		MOVEM	4,(6)			; save in buffer
  9727	066430	331 01 0 00 065777*		SKIPL	1,CRCOFF		; get offset value
  9728	066431	202 04 0 01 000000*		MOVEM	4,CRCTAB(1)		; save CRC value
  9729	066432	262 17 0 00 000010 	ICRCY:	RGET	(10,7,6,5,4,3,2,1)	; restore AC's
  9730
  9731	066442	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 221
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0391

  9732
  9733					;#********************************************************************
  9734					;* CRCCAL - Calculate CRC (cumulative) for 8 bits
  9735					;
  9736					; Given:   AC2 - data byte	Uses:	AC1,AC3,AC5 without saving or
  9737					;	   AC4 - result			restoring.
  9738					;
  9739					; Returns: AC4 - updated result
  9740					;#********************************************************************
  9741
  9742	066443	201 01 0 00 000010 	CRCCAL:	MOVEI	1,8			; do this 8 times
  9743	066444	400 03 0 00 000000 		SETZ	3,			; clear AC3
  9744	066445	246 02 0 00 777777 	CRCCA0:	LSHC	2,-1			; get a bit (into AC3)
  9745	066446	135 05 0 00 131056 		LDB	5,[POINT 1,3,0]		; get data bit
  9746	066447	602 04 0 00 000001 		TRNE	4,1			; leftmost bit set?
  9747	066450	431 05 0 00 000001 		XORI	5,1			; yes - XOR with data bit
  9748	066451	242 04 0 00 777777 		LSH	4,-1			; right shift 1 bit
  9749	066452	332 00 0 00 000005 		SKIPE	5			; data bit result non-zero?
  9750	066453	430 04 0 00 131057 		XOR	4,[15556,,101440]	; yes - XOR 1's with CRC
  9751	066454	137 05 0 00 131060 		DPB	5,[POINT 1,4,4]		; also insert result bit
  9752	066455	367 01 0 00 066445 		SOJG	1,CRCCA0		; loop till done
  9753	066456	263 17 0 00 000000 		RTN				; return
  9754
  9755
  9756					;#********************************************************************
  9757					;* CRCFIX - Adjust properly
  9758					;#********************************************************************
  9759
  9760	066457	261 17 0 00 000002 	CRCFIX:	RPUT	(2,3)			; save AC's
  9761
  9762	066461	400 03 0 00 000000 		SETZ	3,			; clear result
  9763	066462	135 02 0 00 131061 		LDB	2,[POINT 8,4,11]	; get byte 1
  9764	066463	137 02 0 00 131062 		DPB	2,[POINT 8,3,35]	; save it
  9765	066464	135 02 0 00 131063 		LDB	2,[POINT 8,4,19]	; get byte 2
  9766	066465	137 02 0 00 131064 		DPB	2,[POINT 8,3,27]	; save it
  9767	066466	135 02 0 00 131065 		LDB	2,[POINT 8,4,27]	; get byte 3
  9768	066467	137 02 0 00 131066 		DPB	2,[POINT 8,3,19]	; save it
  9769	066470	135 02 0 00 131067 		LDB	2,[POINT 8,4,35]	; get byte 4
  9770	066471	137 02 0 00 131070 		DPB	2,[POINT 8,3,11]	; save it
  9771	066472	200 04 0 00 000003 		MOVE	4,3			; get into AC4
  9772	066473	262 17 0 00 000003 		RGET	(3,2)			; restore AC's
  9773
  9774	066475	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 222
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0392

  9775
  9776					;#********************************************************************
  9777					;* RWAIT - Wait for a response (by CSR bit 'RspQAvail' bit being set.
  9778					;
  9779					;  Return:  +1 - Timeout after 1/2 second
  9780					;	    +2 - Ok	
  9781					;#********************************************************************
  9782
  9783	066476	350 00 0 17 000000 	RWAIT:	AOS	(P)			; setup ret+2
  9784	066477	261 17 0 00 000000 		RPUT	(0,1,2)			; save AC's
  9785
  9786	066502	201 02 0 00 000012 		MOVEI	2,^D10			; check up to 10 times
  9787	066503	260 17 0 00 065662*	RWAIT0:	GO	RDCSR			; read CSR
  9788	066504	255 00 0 00 000000 		JFCL				; ignore error
  9789	066505	602 01 0 00 000200 		TRNE	1,RESQAV		; response queue available bit set?
  9790	066506	254 00 0 00 066512 		JRST	RWAITX			; yes - exit
  9791	066507	005 00 0 00 000001 		DELAY	1			; wait 1 millisecond
  9792	066510	367 02 0 00 066503 		SOJG	2,RWAIT0		; no - loop till done
  9793	066511	370 00 0 17 777775 		SOS	-3(P)			; failed, setup ret+1
  9794	066512	262 17 0 00 000002 	RWAITX:	RGET	(2,1,0)			; restore AC's
  9795
  9796	066515	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 223
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0393

  9797
  9798					;#********************************************************************
  9799					;* CHKINT - Check/set up interlock for queue
  9800					;
  9801					; This routine tries to gain control of the specified queue.  If it
  9802					; cannot, it returns with an error condition.  If it can, it builds
  9803					; a list of entries in the queue, with  the  virtual address of the
  9804					; beginning of each queue entry.  Other routines access  the  queue
  9805					; via the addresses given in the entry list.
  9806					;
  9807					; Only one queue can be dealt with at a time, since there  is  only
  9808					; one list of queue entries.
  9809					;
  9810					; Given:   Q - Contains cmd queue number
  9811					;
  9812					; Return: +1 - Error, couldn't get access to queue in 1 second
  9813					;	  +2 - Ok
  9814					;#********************************************************************
  9815
  9816	066516	261 17 0 00 000000 	CHKINT:	RPUT	(0,1,2,3)		; save AC's
  9817
  9818	066522	201 01 0 00 000001 		MOVEI	1,1			; set up a wait of 1 ms
  9819	066523	332 00 0 00 030037 		SKIPE	USER			; user mode?
  9820	066524	104 00 0 00 000167 		DISMS				; yes - wait
  9821	066525	402 00 0 00 066650 		SETZM	NUMENT			; clear entry count
  9822						MOVE	1,[PCB+0		; CmdQ
  9823							   PCB+4		; RspQ
  9824							   PCB+10		; UnkFQ
  9825	066526	200 01 0 13 131071 			   PTTFQ](Q)		; PttFQ
  9826	066527	201 02 0 00 000764 		MOVEI	2,^D500			; do this up to 500 times
  9827	066530	356 00 0 01 000000 	CHKIN0:	AOSN	(1)			; available yet?
  9828	066531	254 00 0 00 066535 		JRST	CHKIN1			; yes - continue
  9829	066532	005 00 0 00 000001 		DELAY	1			; wait 1 millisecond
  9830	066533	367 02 0 00 066530 		SOJG	2,CHKIN0		; loop till done
  9831	066534	254 00 0 00 066556 		JRST	CHKINX			; exit
  9832	066535	350 00 0 17 777774 	CHKIN1:	AOS	-4(P)			; set up good return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 224
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0394

  9833
  9834					; Now search through the queue and build a queue entry list
  9835
  9836	066536	350 00 0 00 000001 		AOS	1			; point to FLINK
  9837	066537	201 00 0 01 000000 		MOVEI	(1)			; get address of FLINK of queue
  9838	066540	202 00 0 00 066651 		MOVEM	TOPADR			; save it
  9839	066541	201 02 0 00 066563 		MOVEI	2,LENTRY		; next address in list
  9840	066542	400 03 0 00 000000 		SETZ	3,			; init last entry address
  9841	066543	402 00 0 02 000000 	CHKIN2:	SETZM	(2)			; set up end of list
  9842	066544	200 01 0 01 000000 		MOVE	1,(1)			; get FLINK address
  9843	066545	260 17 0 00 066652 		GO	CONVIR			; convert to virtual
  9844	066546	316 01 0 00 066651 		CAMN	1,TOPADR		; points to start of list?
  9845	066547	254 00 0 00 066555 		JRST	CHKIN3			; yes - done
  9846	066550	202 01 0 02 000000 		MOVEM	1,(2)			; save address
  9847	066551	202 01 0 00 000003 		MOVEM	1,3			; save for last entry address
  9848	066552	350 00 0 00 000002 		AOS	2			; point to next list entry
  9849	066553	350 00 0 00 066650 		AOS	NUMENT			; increment entry count
  9850	066554	254 00 0 00 066543 		JRST	CHKIN2			; loop till done
  9851	066555	202 03 0 00 066647 	CHKIN3:	MOVEM	3,LASENT		; save it
  9852
  9853					; Done - exit
  9854
  9855	066556	262 17 0 00 000003 	CHKINX:	RGET	(3,2,1,0)		; restore AC's
  9856
  9857	066562	263 17 0 00 000000 		RTN				; return
  9858
  9859					; List of queue entries (ended with a zero)
  9860
  9861	066563	000000	000000		LENTRY:	0				; address of PCB FLINK entry
  9862	066564					BLOCK	^D50			; up to 50 queue entries
  9863	066646	000000	000000			0				; end of list
  9864	066647	000000	000000		LASENT:	0				; last entry in list
  9865	066650	000000	000000		NUMENT:	0				; entry count
  9866	066651	000000	000000		TOPADR:	0				; address of FLINK in queue header
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 225
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0395

  9867
  9868					;#********************************************************************
  9869					;* CONVIR - Convert physical address to virtual
  9870					;
  9871					; This routine searches through PHYTAB to find the physical address
  9872					; matching the one given here.  Then the virtual address is  gotten
  9873					; from the corresponding entry in VIRTAB.
  9874					;
  9875					; Given:  AC1 - Contains a physical address
  9876					;
  9877					; Return: AC1 - Contains the virtual address
  9878					;#********************************************************************
  9879
  9880	066652	261 17 0 00 000000 	CONVIR:	RPUT	(0,2)			; save AC's
  9881
  9882	066654	621 01 0 00 777700 		TLZ	1,777700		; clear all but address bits
  9883	066655	474 02 0 00 000000 		SETO	2,			; initialize address pointer
  9884	066656	350 00 0 00 000002 	CONVI0:	AOS	2			; point to next address
  9885	066657	335 00 0 02 065470 		SKIPGE	ADRPHY(2)		; end of list?
  9886	066660	254 00 0 00 066667 		JRST	CONVIE			; yes - error - go handle
  9887	066661	312 01 0 02 065470 		CAME	1,ADRPHY(2)		; address match?
  9888	066662	254 00 0 00 066656 		JRST	CONVI0			; no - loop till done
  9889	066663	200 01 0 02 065312 	CONVIX:	MOVE	1,ADRVIR(2)		; yes - get virtual address
  9890	066664	262 17 0 00 000002 		RGET	(2,0)			; restore AC's
  9891
  9892	066666	263 17 0 00 000000 		RTN				; return
  9893
  9894					; Unrecognized address
  9895
  9896	066667	037 00 0 00 131075 	CONVIE:	TMSGC	<? PCB or queue entries are no longer valid>
  9897	066670	037 00 0 00 131106 		TMSGC	<? Address >
  9898	066671	200 00 0 00 000001 		MOVE	1
  9899	066672	037 10 0 00 000000 		PNTADR
  9900	066673	037 00 0 00 131111 		TMSG	< not recognized as a physical address of a queue entry>
  9901	066674	037 00 0 00 131124 		TMSGC	<? CONVIR called from address - >
  9902	066675	200 00 0 17 777776 		MOVE	-2(P)
  9903	066676	037 10 0 00 000000 		PNTADR	
  9904	066677	260 17 0 00 000000*		GO	FFF
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 226
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0396

  9905
  9906					;#********************************************************************
  9907					;* INSQUE - Insert a packet into a queue
  9908					;
  9909					; PACKET - 256 word queue entry which can be copied directly into
  9910					;	   the command queue entry
  9911					;
  9912					; Return: +1 - Error, PTT value illegal (This return will never be taken)
  9913					;	  +2 - Error, out of room (or interlock failed)
  9914					;	  +2 - Ok
  9915					;#********************************************************************
  9916
  9917	066700	000000	000000		IQFUL:	0				; debug - number of times freeq empty
  9918	066701	000000	000000		IQFMIN:	0				; debug - minimum entries on free queue
  9919	066702	000000	000000		IQCMAX:	0				; debug - maximum entries on cmd queue
  9920
  9921	066703	261 17 0 00 000000 	INSQUE:	RPUT	(0,1,2,3)		; save AC's
  9922
  9923	066707	260 17 0 00 067164 		GO	PTCHKP			; check for a matching PTT value?
  9924	066710	201 13 0 00 000002 		MOVEI	Q,2			; no - set to Unk PT free queue
  9925
  9926					; Get control of free queue
  9927
  9928	066711	260 17 0 00 066516 		GO	CHKINT			; check interlock word
  9929	066712	254 00 0 00 066760 		JRST	INSQE2			; failed - exit
  9930	066713	336 00 0 00 066647 		SKIPN	LASENT			; queue empty?
  9931						JRST	[XCT  [SETOM PCB+10	; yes - error - out of room
  9932							       SETOM PTTFQ]-2(Q);   reset interlock and exit
  9933							 AOS   IQFUL
  9934	066714	254 00 0 00 131133 			 JRST  INSQE2]
  9935	066715	200 00 0 00 066650 		MOVE	NUMENT			; debug - get number of entries
  9936	066716	315 00 0 00 066701 		CAMGE	IQFMIN			; debug - more than minimum?
  9937	066717	202 00 0 00 066701 		MOVEM	IQFMIN			; debug - yes - save it
  9938
  9939					; Remove a free queue entry from the queue
  9940
  9941	066720	260 17 0 00 066766 		GO	GETQUE			; get an entry
  9942	066721	255 00 0 00 000000 		JFCL				; error - ignore
  9943	066722	202 01 0 00 134202'		MOVEM	1,NEWENT#		; save address of new entry
  9944	066723	200 02 0 00 066651 		MOVE	2,TOPADR		; get PCB address
  9945	066724	370 00 0 00 000002 		SOS	2			; point to interlock address
  9946	066725	476 00 0 02 000000 		SETOM	(2)			; reset interlock
  9947	066726	200 02 0 00 000001 		MOVE	2,1			; get address of entry into AC2
  9948	066727	271 01 0 00 000002 		ADDI	1,2			; build BLT pointer to move the
  9949	066730	505 01 0 00 072116 		HRLI	1,PACKET+2		;   packet into the queue entry 
  9950	066731	306 13 0 00 000003 		CAIN	Q,3			; PT free queue?
  9951	066732	251 01 0 02 000307 		BLT	1,^D199(2)		; yes - do the BLT
  9952	066733	306 13 0 00 000002 		CAIN	Q,2			; Unk PT free queue?
  9953	066734	251 01 0 02 000617 		BLT	1,^D399(2)		; yes - do the BLT
  9954
  9955					; Get flags/opcode and handle BSD modifications (BSD base address ...)
  9956
  9957	066735	135 01 0 00 127201 		LDB	1,[POINT 8,PACKET+3,23]	; get op code
  9958	066736	135 02 0 00 127200 		LDB	2,[POINT 8,PACKET+3,15]	; get flags
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 227
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0397

  9959	066737	306 01 0 00 000001 		CAIN	1,SNDDG			; datagram?
  9960	066740	606 02 0 00 000010 		TRNN	2,10			; yes - pad flag set?
  9961	066741	334 00 0 00 000000 		SKIPA				; no - continue
  9962						GO	[MOVE	2,NEWENT	; yes - get BSD base address
  9963							 ADDI	2,14		;   ...
  9964							 MOVE	1,2		; get into AC1
  9965							 SKIPN	UDEBUG		; debug mode?
  9966							 MAP	1,(2)		; no - convert to physical
  9967							 TLZ	1,777000	; get rid of extraneous bits
  9968							 MOVEM	1,-3(2)		; save it
  9969							 ADDI	2,4		; get segment base address
  9970							 MOVE	1,2		; get into AC1
  9971							 SKIPN	UDEBUG		; debug mode?
  9972							 MAP	1,(2)		; no - convert to physical
  9973							 TLZ	1,777000	; get rid of extraneous bits
  9974							 HLLZ	PACKET+14	; get non-address bits
  9975							 TLZ	77		;   ...
  9976							 IOR	1,		; include segment base address
  9977							 MOVEM	1,-4(2)		; save it
  9978	066742	260 17 0 00 131136 			 RTN]			; exit
  9979
  9980					; Get control of Command Queue
  9981
  9982	066743	400 13 0 00 000000 		SETZ	Q,			; get cmd queue number
  9983	066744	260 17 0 00 066516 		GO	CHKINT			; check interlock word
  9984	066745	254 00 0 00 066760 		JRST	INSQE2			; failed - exit
  9985	066746	200 00 0 00 066650 		MOVE	NUMENT			; debug - get number of entries
  9986	066747	313 00 0 00 066702 		CAMLE	IQCMAX			; debug - less than maximum?
  9987	066750	202 00 0 00 066702 		MOVEM	IQCMAX			; debug - yes - save it
  9988
  9989					; Insert this at the end of the command queue
  9990
  9991	066751	200 01 0 00 134202'		MOVE	1,NEWENT		; get address of new entry
  9992	066752	260 17 0 00 067022 		GO	PUTQUE			; insert in queue
  9993
  9994					; Reset interlock and update statistics
  9995
  9996	066753	200 02 0 00 066651 		MOVE	2,TOPADR		; get PCB address
  9997	066754	370 00 0 00 000002 		SOS	2			; point to interlock address
  9998	066755	476 00 0 02 000000 		SETOM	(2)			; reset interlock
  9999	066756	260 17 0 00 043461 		GO	SUPDAT			; update statistics (sent)
 10000
 10001					; Done - exit
 10002
 10003	066757	350 00 0 17 777774 		AOS	-4(P)			; set up proper return
 10004	066760	350 00 0 17 777774 	INSQE2:	AOS	-4(P)			; set up proper return +3
 10005	066761	262 17 0 00 000003 	INSQE1:	RGET	(3,2,1,0)		; restore AC's
 10006
 10007	066765	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 228
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0398

 10008
 10009					;#********************************************************************
 10010					;* GETQUE - Remove a queue entry from the beginning of a queue
 10011					;
 10012					; This routine removes the entry and adjusts the PCB and next
 10013					; entry links so that the queue is correct.
 10014					;
 10015					; Given:  LENTRY - Contains a list of queue entries (virtual addresses)
 10016					;	  TOPADR - Address of FLINK of queue header
 10017					;	  NUMENT - Number of entries in the queue
 10018					;	  LASENT - Last entry in the queue
 10019					;
 10020					; Return: AC1 - Address of entry obtained (virtual)
 10021					;	  +1 - No entry found
 10022					;	  +2 - An entry was found
 10023					;#********************************************************************
 10024
 10025	066766	336 00 0 00 066650 	GETQUE:	SKIPN	NUMENT			; empty list?
 10026	066767	263 17 0 00 000000 		RTN				; yes - return
 10027	066770	350 00 0 17 000000 		AOS	(P)			; no - set up proper return
 10028	066771	261 17 0 00 000000 		RPUT	(0,2)			; save AC's
 10029
 10030	066773	200 02 0 00 066650 		MOVE	2,NUMENT		; get number of entries
 10031	066774	303 02 0 00 000001 		CAILE	2,1			; more than one?
 10032	066775	254 00 0 00 067006 		JRST	GETQU0			; yes - go handle
 10033
 10034					; Only one entry in the list
 10035
 10036						MOVE	1,[PCB+1		; get address of FLINK in PCB
 10037							   PCB+5
 10038							   PCB+11
 10039	066776	200 01 0 13 131157 			   PTTFQ+1](Q)
 10040	066777	200 02 0 00 000001 		MOVE	2,1			; get into AC2 also
 10041	067000	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
 10042	067001	257 02 0 02 000000 		MAP	2,(2)			; no - map to physical
 10043	067002	621 02 0 00 777000 		TLZ	2,777000		; get rid of extraneous bits
 10044	067003	202 02 0 01 000000 		MOVEM	2,(1)			; set up new FLINK address
 10045	067004	202 02 0 01 000001 		MOVEM	2,1(1)			; set up new BLINK address
 10046	067005	254 00 0 00 067016 		JRST	GETQUX			; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 229
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0399

 10047
 10048					; Multiple entries in the list
 10049
 10050	067006	200 01 0 00 066563 	GETQU0:	MOVE	1,LENTRY		; get address of 1st entry
 10051	067007	200 01 0 01 000001 		MOVE	1,1(1)			; get BLINK of 1st entry
 10052	067010	200 02 0 00 066564 		MOVE	2,LENTRY+1		; get address of 2nd entry
 10053	067011	202 01 0 02 000001 		MOVEM	1,1(2)			; set up BLINK of 2nd entry
 10054	067012	200 01 0 00 066563 		MOVE	1,LENTRY		; get address of 1st entry
 10055	067013	200 01 0 01 000000 		MOVE	1,(1)			; get FLINK of 1st entry
 10056						MOVE	2,[PCB+1		; get address of FLINK in PCB
 10057							   PCB+5
 10058							   PCB+11
 10059	067014	200 02 0 13 131157 			   PTTFQ+1](Q)
 10060	067015	202 01 0 02 000000 		MOVEM	1,(2)			; set up new FLINK in PCB
 10061
 10062					; Exit
 10063
 10064	067016	200 01 0 00 066563 	GETQUX:	MOVE	1,LENTRY		; get address of entry
 10065	067017	262 17 0 00 000002 		RGET	(2,0)			; restore AC's
 10066
 10067	067021	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 230
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0400

 10068
 10069					;#********************************************************************
 10070					;* PUTQUE - Insert an entry onto the specified queue
 10071					;
 10072					; Given:  AC1 - contains address of entry
 10073					;	  Q - Contains the queue to put entry back on:
 10074					;		0 - Cmd queue
 10075					;		1 - Rsp queue
 10076					;		2 - UnkF queue
 10077					;		3 - PttF queue
 10078					;#********************************************************************
 10079
 10080	067022	261 17 0 00 000000 	PUTQUE:	RPUT	(0,1,2,3)		; save AC's
 10081
 10082
 10083					; Check for data pointer if a free queue entry
 10084
 10085	067026	307 13 0 00 000001 		CAIG	Q,1			; CMD or RSP queue?
 10086	067027	254 00 0 00 067037 		JRST	PUTQU0			; yes - continue
 10087	067030	200 01 0 00 134202'		MOVE	1,NEWENT		; get address of new entry
 10088	067031	271 01 0 00 000013 		ADDI	1,13			; get address of start of text
 10089	067032	200 02 0 00 000001 		MOVE	2,1			; get into AC2
 10090	067033	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
 10091	067034	257 02 0 01 000000 		MAP	2,(1)			; map to physical
 10092	067035	621 02 0 00 777000 		TLZ	2,777000		; get rid of extraneous bits
 10093	067036	202 02 0 01 777777 		MOVEM	2,-1(1)			; save it
 10094	067037	200 03 0 00 134202'	PUTQU0:	MOVE	3,NEWENT		; get address of new entry
 10095	067040	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
 10096	067041	257 03 0 03 000000 		MAP	3,(3)			; map to physical
 10097	067042	621 03 0 00 777000 		TLZ	3,777000		; get rid of extraneous bits
 10098
 10099					; Insert at the end of the specified queue
 10100
 10101	067043	332 00 0 00 066650 		SKIPE	NUMENT			; queue currently empty?
 10102	067044	254 00 0 00 067055 		JRST	PUTQU1			; no - continue
 10103
 10104					; Empty queue - insert entry
 10105
 10106						MOVE	1,[PCB+1		; get address of FLINK in PCB
 10107							   PCB+5
 10108							   PCB+11
 10109	067045	200 01 0 13 131157 			   PTTFQ+1](Q)
 10110	067046	200 02 0 01 000000 		MOVE	2,(1)			; get FLINK
 10111	067047	202 03 0 01 000000 		MOVEM	3,(1)			; set up new FLINK in PCB
 10112	067050	202 03 0 01 000001 		MOVEM	3,1(1)			; set up new BLINK in PCB
 10113	067051	200 03 0 00 134202'		MOVE	3,NEWENT		; get address of new entry
 10114	067052	202 02 0 03 000000 		MOVEM	2,(3)			; set up FLINK of new entry
 10115	067053	202 02 0 03 000001 		MOVEM	2,1(3)			; set up BLINK of new entry
 10116	067054	254 00 0 00 067073 		JRST	PUTQUX			; done - continue
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 231
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0401

 10117
 10118					; Queue is not empty - insert entry
 10119
 10120	067055	200 02 0 00 066647 	PUTQU1:	MOVE	2,LASENT		; get address of last entry
 10121	067056	200 01 0 02 000000 		MOVE	1,(2)			; get FLINK of last entry
 10122	067057	202 03 0 02 000000 		MOVEM	3,(2)			; set up new FLINK of last entry
 10123	067060	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
 10124	067061	257 02 0 02 000000 		MAP	2,(2)			; no - map to physical
 10125	067062	621 02 0 00 777000 		TLZ	2,777000		; get rid of extraneous bits
 10126	067063	200 03 0 00 134202'		MOVE	3,NEWENT		; get address of new entry
 10127	067064	202 01 0 03 000000 		MOVEM	1,(3)			; set up FLINK of new entry
 10128	067065	202 02 0 03 000001 		MOVEM	2,1(3)			; set up BLINK of new entry
 10129	067066	336 00 0 00 134255'		SKIPN	UDEBUG			; debug mode?
 10130	067067	257 03 0 03 000000 		MAP	3,(3)			; no - map to physical
 10131	067070	621 03 0 00 777000 		TLZ	3,777000		; get rid of extraneous bits
 10132						MOVE	1,[PCB+0		; CmdQ
 10133							   PCB+4		; RspQ
 10134							   PCB+10		; UnkFQ
 10135	067071	200 01 0 13 131071 			   PTTFQ](Q)		; PttFQ
 10136	067072	202 03 0 01 000002 		MOVEM	3,2(1)			; set up new BLINK in PCB
 10137
 10138					; Done - exit
 10139
 10140	067073	262 17 0 00 000003 	PUTQUX:	RGET	(3,2,1,0)		; restore AC's
 10141
 10142	067077	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 232
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0402

 10143
 10144					;#********************************************************************
 10145					;* CHKRSP - Check if a response queue entry
 10146					;
 10147					; Return:  +1 - No entry
 10148					;	   +2 - Found an entry(ies)
 10149					;#********************************************************************
 10150
 10151	067100	352 00 0 00 072004 	CHKRSP:	AOSE	PCB+4			; check interlock for rsp queue
 10152	067101	263 17 0 00 000000 		RTN				; return - queue is in use already
 10153	067102	261 17 0 00 000000 		RPUT	(0,1,2,Q)		; save AC's
 10154
 10155	067106	476 00 0 00 072004 		SETOM	PCB+4			; reset interlock
 10156	067107	201 13 0 00 000001 		MOVEI	Q,1			; set up for response queue
 10157	067110	260 17 0 00 066516 		GO	CHKINT			; check interlock word
 10158	067111	254 00 0 00 067144 		JRST	CHKRSX			; failed - exit
 10159
 10160					; Remove response queue packet from the response queue and reset
 10161					; interlock.  Also, copy it to 'RSPONS'.
 10162
 10163	067112	260 17 0 00 066766 		GO	GETQUE			; get a queue entry
 10164						JRST	[GO	SHUTRQ		; empty - reset the response queue
 10165							 SETOM	PCB+4		;   available bit, then reset the
 10166	067113	254 00 0 00 131163 			 JRST	CHKRSX]		;   interlock word and exit
 10167	067114	202 01 0 00 134202'		MOVEM	1,NEWENT		; got an entry - save address
 10168	067115	476 00 0 00 134225'		SETOM	RQAFLG			; set rsp queue available flag
 10169	067116	350 00 0 17 777774 		AOS	-4(P)			; set up proper return
 10170	067117	260 17 0 00 067274 		GO	SHUTRQ			; reset 'RSPQAV' bit
 10171	067120	476 00 0 00 072004 		SETOM	PCB+4			; reset interlock word
 10172	067121	504 00 0 00 134202'		HRL	NEWENT			; build a BLT pointer
 10173	067122	541 00 0 00 073000 		HRRI	RSPONS
 10174	067123	251 00 0 00 073307 		BLT	RSPONS+^D199		; copy into 'RSPONS'
 10175	067124	135 02 0 00 127162 		LDB	2,[POINT 8,RSPONS+3,23]	; get opcode
 10176	067125	306 02 0 00 000004 		CAIN	2,CNTRC			; CNTRC packet?
 10177						GO	[MOVE	2,[PCB+^D25,,RSPONS+4] ; yes - copy the counters data
 10178							 BLT	2,RSPONS+^D53	;   to the response buffer area
 10179	067126	260 17 0 00 131167 			 RTN]
 10180	067127	402 00 0 01 000000 		SETZM	(1)			; clear first word
 10181	067130	504 00 0 00 000001 		HRL	1			; build a BLT pointer
 10182	067131	540 00 0 00 000001 		HRR	1			;  ...
 10183	067132	350 00 0 00 000000 		AOS				;  ...
 10184	067133	251 00 0 01 000307 		BLT	^D199(1)		; clear remainder of packet
 10185
 10186					; Determine which queue (PTT or UNK free queues) to put entry back on, and
 10187					; put packet back in the free queue
 10188
 10189	067134	260 17 0 00 067223 		GO	CHKQUE			; check if PTT or UNK queue
 10190	067135	202 13 0 00 134227'		MOVEM	Q,RSPQUE#		; save queue number
 10191	067136	260 17 0 00 066516 		GO	CHKINT			; check interlock word
 10192	067137	334 00 0 00 000000 		SKIPA				; failed - continue
 10193	067140	260 17 0 00 067022 		GO	PUTQUE			; insert back on queue
 10194						MOVE	1,[PCB+0		; get address of interlock word
 10195							   PCB+4
 10196							   PCB+10
 10197	067141	200 01 0 13 131071 			   PTTFQ](Q)
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 232-1
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0403

 10198	067142	476 00 0 01 000000 		SETOM	(1)			; reset interlock
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 233
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0404

 10199
 10200					; Update statistics
 10201
 10202	067143	260 17 0 00 043511 		GO	RUPDAT			; update statistics (received)
 10203
 10204					; Exit
 10205
 10206	067144	262 17 0 00 000013 	CHKRSX:	RGET	(Q,2,1,0)		; restore AC's
 10207
 10208	067150	263 17 0 00 000000 		RTN				; return
 10209
 10210
 10211					;#********************************************************************
 10212					;* CHKRQV - Check for response queue available
 10213					;#********************************************************************
 10214
 10215	067151	332 00 0 00 134225'	CHKRQV:	SKIPE	RQAFLG			; rsp queue available flag set?
 10216	067152	263 17 0 00 000000 		RTN				; yes - return and process next entry
 10217	067153	261 17 0 00 000001 		PUT	1			; save AC1
 10218	067154	260 17 0 00 066503*		GO	RDCSR			; read CSR
 10219	067155	400 01 0 00 000000 		SETZ	1,			; error - ignore
 10220	067156	602 01 0 00 000200 		TRNE	1,RESQAV		; rsp queue available bit set?
 10221	067157	476 00 0 00 134225'		SETOM	RQAFLG			; yes - set flag
 10222	067160	606 01 0 00 000200 		TRNN	1,RESQAV		; rsp queue available bit set?
 10223	067161	350 00 0 17 777777 		AOS	-1(P)			; no - take skip return
 10224	067162	262 17 0 00 000001 		GET	1			; restore AC1
 10225	067163	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 234
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0405

 10226
 10227					;#********************************************************************
 10228					;* PTCHKP - Check type of packet and for matching PTT value
 10229					;
 10230					; Given:  PACKET - Contains packet to check
 10231					;
 10232					; Returns:  +1 - PTT value error
 10233					;	    +2 - Ok, Q has proper queue number
 10234					;#********************************************************************
 10235
 10236	067164	261 17 0 00 000000 	PTCHKP:	RPUT	(0,1,2,3)		; save AC's
 10237
 10238	067170	200 00 0 00 072117 		MOVE	PACKET+3		; get op code word
 10239	067171	202 00 0 00 134236'		MOVEM	SAVOPW#			; save it
 10240	067172	200 00 0 00 072121 		MOVE	PACKET+5		; get PTT value word
 10241	067173	202 00 0 00 134237'		MOVEM	SAVPTT#			; save it
 10242	067174	201 13 0 00 000002 		MOVEI	Q,2			; point to UnkFQ
 10243	067175	135 00 0 00 131172 		LDB	[POINT 8,SAVOPW,23] 	; get opcode
 10244	067176	332 00 0 00 134255'		SKIPE	UDEBUG			; debug mode?
 10245	067177	254 00 0 00 067202 		JRST	.+3			; yes - continue
 10246	067200	302 00 0 00 000001 		CAIE	SNDDG			; SNDDG?
 10247	067201	254 00 0 00 067215 		JRST	PTCHKX			; no - exit
 10248
 10249					; Check for matching PTT value
 10250
 10251	067202	135 00 0 00 131173 		LDB	[POINT 16,SAVPTT,31]	; get pt value
 10252	067203	201 01 0 00 105000 		MOVEI	1,PTABLE		; initial address in pt table
 10253	067204	200 02 0 01 000000 	PTCHK0:	MOVE	2,(1)			; get value word
 10254	067205	135 03 0 00 131174 		LDB	3,[POINT 16,2,31]	; get pt value
 10255	067206	316 00 0 00 000003 		CAMN	3			; same as desired?
 10256	067207	254 00 0 00 067214 		JRST	PTCHK1			; yes - exit
 10257	067210	271 01 0 00 000003 		ADDI	1,3			; point to next entry
 10258	067211	305 01 0 00 105055 		CAIGE	1,PTABLE+55		; done yet?
 10259	067212	254 00 0 00 067204 		JRST	PTCHK0			; no - loop till done
 10260	067213	254 00 0 00 067216 		JRST	PTCHKY			; yes - continue
 10261
 10262					; Exit
 10263
 10264	067214	201 13 0 00 000003 	PTCHK1:	MOVEI	Q,3			; found PTT value - set queue number
 10265	067215	350 00 0 17 777774 	PTCHKX:	AOS	-4(P)			; set up proper return
 10266	067216	262 17 0 00 000003 	PTCHKY:	RGET	(3,2,1,0)		; restore AC's
 10267
 10268	067222	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 235
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0406

 10269
 10270					;#********************************************************************
 10271					;* CHKQUE - Determine which queue to insert entry back on
 10272					;
 10273					; Given:    NEWENT - Contains address of packet
 10274					; Returns:  Q - Contains queue to put entry back on
 10275					;#********************************************************************
 10276
 10277	067223	261 17 0 00 000000 	CHKQUE:	RPUT	(0,1)			; save AC's
 10278
 10279	067225	201 01 0 00 067242 		MOVEI	1,CHKTAB-1		; get entry table address
 10280	067226	350 00 0 00 000001 	CHKQU0:	AOS	1			; increment table pointer
 10281	067227	200 00 0 01 000000 		MOVE	(1)			; get address
 10282	067230	321 00 0 00 067234 		JUMPL	CHKQUX			; end of list? yes - exit
 10283	067231	621 00 0 00 777777 		TLZ	777777			; clear left half
 10284	067232	312 00 0 00 134202'		CAME	NEWENT			; match expected?
 10285	067233	254 00 0 00 067226 		JRST	CHKQU0			; no - keep looping
 10286	067234	554 13 0 01 000000 	CHKQUX:	HLRZ	Q,(1)			; yes - get queue number
 10287	067235	301 13 0 00 000002 		CAIL	Q,2			; valid queue number?
 10288	067236	303 13 0 00 000003 		CAILE	Q,3
 10289						GO	[FMSGC	<? Unrecognized packet address - >
 10290							 MOVE	NEWENT
 10291							 PNTHWF
 10292							 MOVEI	Q,2
 10293	067237	260 17 0 00 131204 			 RTN]
 10294	067240	262 17 0 00 000001 		RGET	(1,0)			; restore AC's
 10295
 10296	067242	263 17 0 00 000000 		RTN				; return
 10297
 10298	067243	000003	105074		CHKTAB:	EXP	3B17!PTTF0,3B17!PTTF1,3B17!PTTF2,3B17!PTTF3,3B17!PTTF4
 10299	067244	000003	106000
 10300	067245	000003	106310
 10301	067246	000003	107000
 10302	067247	000003	107310
 10303	067250	000003	110000			EXP	3B17!PTTF5,3B17!PTTF6,3B17!PTTF7,3B17!PTTF10,3B17!PTTF11
 10304	067251	000003	110310
 10305	067252	000003	111000
 10306	067253	000003	111310
 10307	067254	000003	112000
 10308	067255	000003	112310			EXP	3B17!PTTF12,3B17!PTTF13,3B17!PTTF14,3B17!PTTF15,3B17!PTTF16
 10309	067256	000003	113000
 10310	067257	000003	113310
 10311	067260	000003	114000
 10312	067261	000003	114310
 10313	067262	000003	115000			EXP	3B17!PTTF17
 10314	067263	000002	075000			EXP	2B17!QUNKF0,2B17!QUNKF1,2B17!QUNKF2,2B17!QUNKF3,2B17!QUNKF4
 10315	067264	000002	076000
 10316	067265	000002	077000
 10317	067266	000002	100000
 10318	067267	000002	101000
 10319	067270	000002	102000			EXP	2B17!QUNKF5,2B17!QUNKF6,2B17!QUNKF7
 10320	067271	000002	103000
 10321	067272	000002	104000
 10322	067273	777777	777777			-1
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 236
DFNIA1	MAC	18-Feb-84 20:30		Packet Handling Routines                                                           SEQ 0407

 10323
 10324					;#********************************************************************
 10325					;* SHUTRQ - Turn off response queue available
 10326					;#********************************************************************
 10327
 10328	067274	261 17 0 00 000001 	SHUTRQ:	PUT	1			; save AC1
 10329	067275	260 17 0 00 067154*		GO	RDCSR			; read CSR
 10330	067276	254 00 0 00 067303 		JRST	SHUTRX			; error - exit
 10331	067277	621 01 0 00 777777 		TLZ	1,777777		; clear left half
 10332	067300	620 01 0 00 000400 		TRZ	1,CMDQAV		; clear this bit
 10333	067301	660 01 0 00 000200 		TRO	1,RESQAV		; set the bit
 10334	067302	260 17 0 00 065660*		GO	LDCSR			; write the CSR register
 10335	067303	262 17 0 00 000001 	SHUTRX:	GET	1			; restore AC1
 10336	067304	263 17 0 00 000000 		RTN				; return
 10337
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 237
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0408

 10338						SUBTTL	Queue Print Routines
 10339
 10340					;#********************************************************************
 10341					;* PQUEUE - Print a set of queue entries
 10342					;
 10343					; Q - Queue to print -  0 - Cmd Queue
 10344					;			1 - Rsp Queue
 10345					;			2 - Unk Free Queue
 10346					;			3 - Ptt Free Queue
 10347					;			4 - Pt table
 10348					;			5 - Multi-Cast Table
 10349					; PK - Address of packet
 10350					;#********************************************************************
 10351
 10352	067305	261 17 0 00 000000 	PQUEUE:	RPUT	(0,1,2,3,4)		; save AC's
 10353
 10354						XCT	[JFCL			; dispatch on queue type
 10355							 JFCL
 10356							 JFCL
 10357							 JFCL
 10358							 JRST	PQUEUP
 10359	067312	256 00 0 13 131211 			 JRST	PQUEUM](Q)
 10360						MOVE	PK,[PCB+0		; get address of beginning of queue
 10361							    PCB+4
 10362							    PCB+10
 10363	067313	200 12 0 13 131071 			    PTTFQ](Q)
 10364	067314	200 04 0 00 000012 		MOVE	4,PK			; get into AC4 also
 10365	067315	260 17 0 00 066516 		GO	CHKINT			; obtain queue ownership
 10366						GO	[GO	ISTOP		; failed - stop the port,
 10367							 SETOM	(PK)		;   clear the interlock word,
 10368							 GO	CHKINT		;   obtain the queue again,
 10369							 JFCL			;   and continue
 10370	067316	260 17 0 00 131217 			 RTN]
 10371						XCT	[TMSGC	<CmdQ > 	; print name of queue
 10372							 TMSGC	<RspQ >
 10373							 TMSGC	<UnkFQ>
 10374	067317	256 00 0 13 131234 			 TMSGC	<PttFQ>](Q)
 10375	067320	037 00 0 00 130125 		TMSG	< (>
 10376	067321	200 01 0 00 000012 		MOVE	1,PK			; get address
 10377	067322	260 17 0 00 070544 		GO	LINKV			; print offset
 10378	067323	037 00 0 00 131240 		TMSG	<): Flink = >
 10379	067324	350 00 0 00 000012 		AOS	PK			; point to FLINK
 10380	067325	200 01 0 12 000000 		MOVE	1,(PK)			; get FLINK
 10381	067326	260 17 0 00 070537 		GO	LINKP			; print it
 10382	067327	037 00 0 00 131243 		TMSG	<  Blink = >
 10383	067330	200 01 0 12 000001 		MOVE	1,1(PK)			; get BLINK
 10384	067331	260 17 0 00 070537 		GO	LINKP			; print it
 10385	067332	336 00 0 00 066650 		SKIPN	NUMENT			; queue empty?
 10386	067333	037 00 0 00 131246 		TMSGC	< Queue is empty>	; yes - print message
 10387	067334	201 03 0 00 066562 		MOVEI	3,LENTRY-1		; init entry pointer
 10388	067335	336 00 0 00 066650 		SKIPN	NUMENT			; queue empty?
 10389	067336	254 00 0 00 067345 		JRST	PQUEUX			; yes - exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 238
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0409

 10390
 10391					; Print the queue entry
 10392
 10393	067337	350 00 0 00 000003 	PQUEU0:	AOS	3			; point to next entry
 10394	067340	336 00 0 03 000000 		SKIPN	(3)			; non-zero queue entry?
 10395	067341	254 00 0 00 067345 		JRST	PQUEUX			; no - done with queue - exit
 10396	067342	200 12 0 03 000000 		MOVE	PK,(3)			; get address of queue entry
 10397						XCT	[GO	PPAKC		; print CmdQ entry
 10398							 GO	PPAKR		; print RspQ entry
 10399							 GO	PPAKF		; print UnkFQ entry
 10400	067343	256 00 0 13 131252 			 GO	PPAKF](Q)	; print PttFQ entry
 10401	067344	254 00 0 00 067337 		JRST	PQUEU0			; loop till done
 10402	067345	476 00 0 04 000000 	PQUEUX:	SETOM	(4)			; reset interlock
 10403	067346	262 17 0 00 000004 	PQUEUY:	RGET	(4,3,2,1,0)		; restore AC's
 10404
 10405	067353	263 17 0 00 000000 		RTN				; return
 10406
 10407					; Print Pt table
 10408
 10409	067354	037 00 0 00 131256 	PQUEUP:	TMSGC	<** Protocol Type Table **>
 10410	067355	037 00 0 00 131264 		TMSGC	<  N  Ena   Type   Address>
 10411	067356	037 00 0 00 131272 		TMSGC	<  -  ---   ----   ------->
 10412	067357	400 03 0 00 000000 		SETZ	3,			; initialize entry count
 10413	067360	201 04 0 00 105000 		MOVEI	4,PTABLE		; initialize pointer to table
 10414	067361	037 00 0 00 030242 	PQUEP0:	PCRL
 10415	067362	001 03 0 00 000003 		PNTOCC	3,3			; print address number
 10416	067363	331 00 0 04 000000 		SKIPL	(4)			; enable bit set?
 10417	067364	037 00 0 00 131300 		TMSG	<   N >			; no - print such
 10418	067365	335 00 0 04 000000 		SKIPGE	(4)			; enable bit set?
 10419	067366	037 00 0 00 131302 		TMSG	<   Y >			; yes - print such
 10420	067367	200 02 0 04 000000 		MOVE	2,(4)			; get first word
 10421	067370	135 00 0 00 131174 		LDB	[POINT 16,2,31]		; get type value
 10422	067371	001 07 0 00 000000 		PNTOCC	7,0			; print it
 10423	067372	037 00 0 00 131304 		TMSG	<   >
 10424	067373	200 01 0 04 000001 		MOVE	1,1(4)			; get header address
 10425	067374	260 17 0 00 070537 		GO	LINKP			; print it
 10426	067375	271 04 0 00 000003 		ADDI	4,3			; point to next entry
 10427	067376	305 04 0 00 105060 		CAIGE	4,PTABLE+60		; done yet?
 10428	067377	254 00 0 00 067361 		JRST	PQUEP0			; no - loop till done
 10429	067400	254 00 0 00 067346 		JRST	PQUEUY			; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 239
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0410

 10430
 10431					; Print Multi-cast table
 10432
 10433	067401	037 00 0 00 131305 	PQUEUM:	TMSGC	<** Multi-Cast Table **>
 10434	067402	037 00 0 00 131312 		TMSGC	<  N Ena  Bt0 BT1 BT2 BT3 BT4 BT5>
 10435	067403	037 00 0 00 131321 		TMSGC	<  - ---  --- --- --- --- --- --->
 10436	067404	400 03 0 00 000000 		SETZ	3,			; initialize entry count
 10437	067405	201 04 0 00 115320 		MOVEI	4,MTABLE		; initialize pointer to table
 10438	067406	037 00 0 00 030242 	PQUEM0:	PCRL
 10439	067407	001 03 0 00 000003 		PNTOCC	3,3			; print address number
 10440	067410	331 00 0 04 000001 		SKIPL	1(4)			; enable bit set?
 10441	067411	037 00 0 00 131330 		TMSG	<  N   >		; no - print such
 10442	067412	335 00 0 04 000001 		SKIPGE	1(4)			; enable bit set?
 10443	067413	037 00 0 00 131332 		TMSG	<  Y   >		; yes - print such
 10444	067414	200 02 0 04 000000 		MOVE	2,(4)			; get first word
 10445	067415	135 00 0 00 131334 		LDB	[POINT 8,2,31]		; get byte 0
 10446	067416	037 03 0 00 000000 		PNT3				; print it
 10447	067417	135 00 0 00 131335 		LDB	[POINT 8,2,23]		; get byte 1
 10448	067420	037 03 0 00 000000 		PNT3				; print it
 10449	067421	135 00 0 00 131336 		LDB	[POINT 8,2,15]		; get byte 2
 10450	067422	037 03 0 00 000000 		PNT3				; print it
 10451	067423	135 00 0 00 131337 		LDB	[POINT 8,2,7]		; get byte 3
 10452	067424	037 03 0 00 000000 		PNT3				; print it
 10453	067425	200 02 0 04 000001 		MOVE	2,1(4)			; get second word
 10454	067426	135 00 0 00 131334 		LDB	[POINT 8,2,31]		; get byte 4
 10455	067427	037 03 0 00 000000 		PNT3				; print it
 10456	067430	135 00 0 00 131335 		LDB	[POINT 8,2,23]		; get byte 5
 10457	067431	037 03 0 00 000000 		PNT3				; print it
 10458	067432	271 04 0 00 000002 		ADDI	4,2			; point to next entry
 10459	067433	305 04 0 00 115360 		CAIGE	4,MTABLE+40		; done yet?
 10460	067434	254 00 0 00 067406 		JRST	PQUEM0			; no - loop till done
 10461	067435	254 00 0 00 067346 		JRST	PQUEUY			; exit
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 240
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0411

 10462
 10463					;#********************************************************************
 10464					;* PPAKC - Print a command queue entry
 10465					;#********************************************************************
 10466
 10467	067436	261 17 0 00 000000 	PPAKC:	RPUT	(0,1)			; save AC's
 10468
 10469	067440	476 00 0 00 134146'		SETOM	CMDPAK#			; set command packet flag
 10470	067441	402 00 0 00 134226'		SETZM	RSPPAK#			; clear response packet flag
 10471	067442	037 00 0 00 131340 		TMSGC	< -------------------->
 10472	067443	037 00 0 00 125342 		TMSGC	< >
 10473	067444	200 01 0 00 000012 		MOVE	1,PK			; get address
 10474	067445	260 17 0 00 070537 		GO	LINKP
 10475	067446	037 00 0 00 131345 		TMSG	</ (CmdQ Entry) - >
 10476
 10477					; Print op code
 10478
 10479	067447	200 01 0 12 000003 	PPAKC0:	MOVE	1,3(PK)			; get status word
 10480	067450	135 11 0 00 131351 		LDB	OP,[POINT 8,1,23]	; get op code
 10481	067451	260 17 0 00 070134 		GO	OPCPNT			; print op code
 10482
 10483					; Now print remainder of queue entry with regard to packet type
 10484
 10485	067452	261 17 0 00 000002 	PPAKCC:	PUT	2			; save AC2 
 10486	067453	260 17 0 00 070207 		GO	DECOPC			; decode op code
 10487	067454	201 01 0 00 000011 		MOVEI	1,11			; error - set offset to 11
 10488	067455	261 17 0 00 000003 		RPUT	(3,4)			; save AC's
 10489
 10490						XCT	[GO	PACK1		; 1-SNDDG
 10491							 GO	PACK2		; 2-LDMCAT
 10492							 GO	PACK3		; 3-LDPTT
 10493							 GO	PACK4		; 4-RCCNT
 10494							 GO	PACK6		; 6-WRPLI
 10495							 GO	PACK7		; 7-RDPLI
 10496							 GO	PACK10		; 10-RDNSA
 10497							 GO	PACK11		; 11-WRNSA
 10498							 GO	PACK5		; 5-DGRCV
 10499	067457	256 00 0 01 131352 			 GO	PACKG](1)	; 12-Misc
 10500	067460	262 17 0 00 000004 		RGET	(4,3,2)			; restore AC's
 10501
 10502	067463	262 17 0 00 000001 	PPAKCX:	RGET	(1,0)			; restore AC's
 10503
 10504	067465	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 241
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0412

 10505
 10506					;#********************************************************************
 10507					;* PPAKR - Print a response queue entry
 10508					;#********************************************************************
 10509
 10510	067466	261 17 0 00 000000 	PPAKR:	RPUT	(0,1)			; save AC's
 10511
 10512	067470	402 00 0 00 134146'		SETZM	CMDPAK			; clear command packet flag
 10513	067471	476 00 0 00 134226'		SETOM	RSPPAK			; set response packet flag
 10514	067472	037 00 0 00 131340 		TMSGC	< -------------------->
 10515	067473	037 00 0 00 125342 		TMSGC	< >
 10516	067474	200 01 0 00 000012 		MOVE	1,PK			; get address
 10517	067475	260 17 0 00 070537 		GO	LINKP
 10518	067476	037 00 0 00 131364 		TMSG	</ (RspQ Entry) - >
 10519	067477	254 00 0 00 067447 		JRST	PPAKC0
 10520
 10521
 10522					;#********************************************************************
 10523					;* PPAKF - Print a free queue entry
 10524					;
 10525					; PK - Address of packet
 10526					; Q - Cmd queue number
 10527					;#********************************************************************
 10528
 10529	067500	261 17 0 00 000000 	PPAKF:	RPUT	(0,1)			; save AC's
 10530
 10531	067502	037 00 0 00 125342 		TMSGC	< >
 10532	067503	200 01 0 00 000012 		MOVE	1,PK			; get address
 10533	067504	260 17 0 00 070537 		GO	LINKP
 10534	067505	037 00 0 00 131370 		TMSG	</ Flink = >
 10535	067506	200 01 0 12 000000 		MOVE	1,(PK)			; get FLINK
 10536	067507	260 17 0 00 070537 		GO	LINKP			; print it
 10537	067510	037 00 0 00 131243 		TMSG	<  Blink = >
 10538	067511	200 01 0 12 000001 		MOVE	1,1(PK)			; get BLINK
 10539	067512	260 17 0 00 070537 		GO	LINKP			; print it
 10540	067513	262 17 0 00 000001 		RGET	(1,0)			; restore AC's
 10541
 10542	067515	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 242
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0413

 10543
 10544					;#********************************************************************
 10545					;* PACK1 - Print a packet - SNDDG command / DGSNT response
 10546					;
 10547					; BSD style packet format:
 10548					;
 10549					;   PACKET+11/ BSD Base Address (PACKET+14)
 10550					;
 10551					;   PACKET+14/ Packing Mode/Segment Base Address (PACKET+20)
 10552					;   PACKET+15/ Next BSD Address (0)
 10553					;   PACKET+16/ Segment Length (n)
 10554					;   PACKET+17/ 0
 10555					;
 10556					;   PACKET+20/ Data+0
 10557					;   PACKET+21/ Data+1
 10558					;    ...       ...
 10559					;#********************************************************************
 10560
 10561	067516	260 17 0 00 070237 	PACK1:	GO	PHEAD			; print header data
 10562	067517	037 00 0 00 131373 		TMSGC	< Text Length:  >
 10563	067520	200 00 0 12 000004 		MOVE	4(PK)			; get length word
 10564	067521	037 15 0 00 000000 		PNTDEC				; print it
 10565	067522	037 00 0 00 131377 		TMSG	<. (bytes)>
 10566	067523	200 00 0 12 000003 		MOVE	3(PK)			; get status word
 10567	067524	603 00 0 00 000040 		TLNE	40			; BSD style?
 10568	067525	254 00 0 00 067545 		JRST	PACK1A			; yes - go handle
 10569
 10570					; Non-BSD style
 10571
 10572	067526	037 00 0 00 131401 		TMSGC	< PTT Value:  >
 10573	067527	200 00 0 12 000005 		MOVE	5(PK)			; get PTT word
 10574	067530	135 00 0 00 131405 	 	LDB	[POINT 16,0,31]		; get PTT value
 10575	067531	037 16 0 00 000003 		PNTOCS				; print it
 10576	067532	037 00 0 00 131406 		TMSGC	< FREEQ Header Addr:  >
 10577	067533	200 01 0 12 000006 		MOVE	1,6(PK)			; get FREEQ address
 10578	067534	260 17 0 00 070537 		GO	LINKP			; print it out
 10579	067535	037 00 0 00 131413 		TMSGC	< Destination Addr:  >
 10580	067536	120 01 0 12 000007 		DMOVE	1,7(PK)			; get destination address
 10581	067537	260 17 0 00 070261 		GO	PADDR			; print address
 10582	067540	201 01 0 12 000011 		MOVEI	1,11(PK)		; get text address
 10583	067541	200 02 0 12 000004 		MOVE	2,4(PK)			; get length word
 10584	067542	400 04 0 00 000000 		SETZ	4,			; set packing mode to COMPAT
 10585	067543	260 17 0 00 070431 		GO	PTEXT			; print text data
 10586	067544	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 243
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0414

 10587
 10588					; BSD style
 10589
 10590	067545	037 00 0 00 131401 	PACK1A:	TMSGC	< PTT Value:  >
 10591	067546	200 00 0 12 000005 		MOVE	5(PK)			; get PTT word
 10592	067547	135 00 0 00 131405 		LDB	[POINT 16,0,31]		; get PTT value
 10593	067550	037 16 0 00 000003 		PNTOCS				; print it
 10594	067551	037 00 0 00 131406 		TMSGC	< FREEQ Header Addr:  >
 10595	067552	200 01 0 12 000006 		MOVE	1,6(PK)			; get FREEQ address
 10596	067553	260 17 0 00 070537 		GO	LINKP			; print it out
 10597	067554	037 00 0 00 131413 		TMSGC	< Destination Addr:  >
 10598	067555	120 01 0 12 000007 		DMOVE	1,7(PK)			; get destination address
 10599	067556	260 17 0 00 070261 		GO	PADDR			; print address
 10600	067557	037 00 0 00 131420 		TMSGC	< BSD Base Addr:  >
 10601	067560	200 01 0 12 000011 		MOVE	1,11(PK)		; get BSD base address
 10602	067561	260 17 0 00 070537 		GO	LINKP			; print it out
 10603	067562	201 03 0 12 000014 		MOVEI	3,14(PK)		; get BSD segment address
 10604	067563	201 01 0 00 000001 		MOVEI	1,1			; get segment number
 10605	067564	260 17 0 00 070475 		GO	PBSD			; print data
 10606	067565	263 17 0 00 000000 		RTN				; return
 10607
 10608
 10609					;#********************************************************************
 10610					;* PACK2 - Print a packet - LDMCAT command / MCATLD response
 10611					;#********************************************************************
 10612
 10613	067566	260 17 0 00 070237 	PACK2:	GO	PHEAD			; print header data
 10614	067567	263 17 0 00 000000 		RTN				; return
 10615
 10616
 10617					;#********************************************************************
 10618					;* PACK3 - Print a packet - LDPTT command / PTTLD response
 10619					;#********************************************************************
 10620
 10621	067570	260 17 0 00 070237 	PACK3:	GO	PHEAD			; print header data
 10622	067571	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 244
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0415

 10623
 10624					;#********************************************************************
 10625					;* PACK4 - Print a packet - RCCNT command / CNTRC response
 10626					;#********************************************************************
 10627
 10628	067572	260 17 0 00 070237 	PACK4:	GO	PHEAD			; print header data
 10629	067573	336 00 0 00 134226'		SKIPN	RSPPAK			; response packet?
 10630	067574	263 17 0 00 000000 		RTN				; no - return
 10631
 10632	067575	201 04 0 12 000003 	CNTPNT:	MOVEI	4,3(PK)			; get address of start of counters
 10633	067576	400 05 0 00 000000 		SETZ	5,			; initialize counters
 10634	067577	335 00 0 05 067677 	PACK4B:	SKIPGE	PACK4T(5)		; done printing?
 10635	067600	263 17 0 00 000000 		RTN				; yes - exit
 10636	067601	606 05 0 00 000001 		TRNN	5,1			; multiple of 2?
 10637	067602	037 00 0 00 125342 		TMSGC	< >			; yes - next line
 10638	067603	350 00 0 00 000004 		AOS	4			; point to next data item
 10639	067604	550 02 0 05 067677 		HRRZ	2,PACK4T(5)
 10640	067605	307 02 0 00 000003 		CAIG	2,3			; special text?
 10641						XCT	[JRST	[SOS	4	; yes - handle it
 10642								 JRST	PACK4C]
 10643							 JRST	PACK4D
 10644							 JRST	PACK4E
 10645	067606	256 00 0 02 131426 			 JRST	PACK4G](2)
 10646	067607	256 00 0 05 067677 		XCT	PACK4T(5)		; no - print text
 10647	067610	200 00 0 04 000000 		MOVE	(4)			; get counter data
 10648	067611	010 15 0 00 000000 		PNTDCL	15,			; print it
 10649	067612	350 00 0 00 000005 	PACK4C:	AOS	5
 10650	067613	254 00 0 00 067577 		JRST	PACK4B			; loop till done
 10651
 10652					; Rcv/Xmt failure bit masks
 10653
 10654	067614	037 00 0 00 131432 	PACK4D:	TMSGC	< Xmt Fail BitMask = >
 10655	067615	201 02 0 00 067660 		MOVEI	2,PACK4X		; get xmt failure bit mask table addr
 10656	067616	254 00 0 00 067621 		JRST	.+3			; continue
 10657	067617	037 00 0 00 131437 	PACK4E:	TMSGC	< Rcv Fail BitMask = >
 10658	067620	201 02 0 00 067671 		MOVEI	2,PACK4Y		; get rcv failure bit mask table addr
 10659	067621	200 00 0 04 000000 		MOVE	(4)			; get counter data
 10660	067622	037 13 0 00 000000 		PNTHW				; print it
 10661	067623	402 00 0 00 134210'		SETZM	NUMPNT#			; clear number printed?
 10662	067624	336 00 0 02 000000 	PACK4F:	SKIPN	(2)			; done yet?
 10663	067625	254 00 0 00 067612 		JRST	PACK4C			; yes - exit
 10664	067626	550 00 0 02 000000 		HRRZ	(2)			; get bit mask
 10665	067627	554 01 0 02 000000 		HLRZ	1,(2)			; get text address
 10666	067630	350 00 0 00 000002 		AOS	2			; point to next entry
 10667	067631	616 00 0 04 000000 		TDNN	(4)			; bit set?
 10668	067632	254 00 0 00 067624 		JRST	PACK4F			; no - continue
 10669	067633	350 03 0 00 134210'		AOS	3,NUMPNT		; increment print count
 10670	067634	306 03 0 00 000003 		CAIN	3,3			; end of 1st line?
 10671	067635	037 00 0 00 131444 		TMSGC	<    >
 10672	067636	306 03 0 00 000006 		CAIN	3,6			; end of 2nd line?
 10673	067637	037 00 0 00 131444 		TMSGC	<    >
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 245
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0416

 10674	067640	306 03 0 00 000011 		CAIN	3,9			; end of 3rd line?
 10675	067641	037 00 0 00 131444 		TMSGC	<    >
 10676	067642	256 00 0 01 000000 		XCT	(1)			; yes - print text
 10677	067643	254 00 0 00 067624 		JRST	PACK4F			; loop till done
 10678
 10679	067644	336 00 0 05 067700 	PACK4G:	SKIPN	PACK4T+1(5)		; done with this section?
 10680						JRST	[SOS	4		; yes - continue with other
 10681	067645	254 00 0 00 131424 			 JRST	PACK4C]
 10682	067646	256 00 0 05 067700 		XCT	PACK4T+1(5)		; print text
 10683	067647	554 00 0 04 000000 		HLRZ	(4)			; get counter data
 10684	067650	010 15 0 00 000000 		PNTDCL	15,			; print it
 10685	067651	256 00 0 05 067700 		XCT	PACK4T+1(5)		; print text
 10686	067652	550 00 0 04 000000 		HRRZ	(4)			; get counter data
 10687	067653	010 15 0 00 000000 		PNTDCL	15,			; print it
 10688	067654	037 00 0 00 125342 		TMSGC	< >			; next line
 10689	067655	271 05 0 00 000002 		ADDI	5,2			; point to next text sequence
 10690	067656	350 00 0 00 000004 		AOS	4			; point to next data item
 10691	067657	254 00 0 00 067644 		JRST	PACK4G			; loop till done
 10692
 10693					; Xmt failure bit mask table
 10694
 10695	067660	131451	004000		PACK4X:	[TMSG <(Lost carrier)>],,1B24
 10696	067661	131455	002000			[TMSG <(XmtBuf PE)>],,1B25
 10697	067662	131464	001000			[TMSG <(Remote failure to defer)>],,1B26
 10698	067663	131471	000400			[TMSG <(Frame too long)>],,1B27
 10699	067664	131475	000200			[TMSG <(Open circuit)>],,1B28
 10700	067665	131502	000100			[TMSG <(Short circuit)>],,1B29
 10701	067666	131510	000040			[TMSG <(Carrier check failed)>],,1B30
 10702	067667	131516	000020			[TMSG <(Excessive collisions)>],,1B31
 10703	067670	000000	000000			0
 10704
 10705					; Rcv failure bit mask table
 10706
 10707	067671	131522	000400		PACK4Y:	[TMSG <(Free list PE)>],,1B27
 10708	067672	131526	000200			[TMSG <(Data overrun)>],,1B28
 10709	067673	131471	000100			[TMSG <(Frame too long)>],,1B29
 10710	067674	131533	000040			[TMSG <(Framing error)>],,1B30
 10711	067675	131540	000020			[TMSG <(Block check error)>],,1B31
 10712	067676	000000	000000			0
 10713
 10714					; Counters table
 10715
 10716	067677	037 00 0 00 131541 	PACK4T:	TMSG	<Bytes Rcvd       = >		; 4
 10717	067700	037 00 0 00 131545 		TMSG	<Bytes Xmtd       = >		; 5
 10718	067701	037 00 0 00 131551 		TMSG	<Frames Rcvd      = >		; 6
 10719	067702	037 00 0 00 131555 		TMSG	<Frames Xmtd      = >		; 7
 10720	067703	037 00 0 00 131561 		TMSG	<MC Bytes Rcvd    = >		; 10
 10721	067704	037 00 0 00 131565 		TMSG	<MC Frames Rcvd   = >		; 11
 10722	067705	037 00 0 00 131571 		TMSG	<Frames Deferred  = >		; 12
 10723	067706	000000	000000			0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 246
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0417

 10724	067707	037 00 0 00 131575 		TMSG	<Sngle Collisions = >		; 13
 10725	067710	037 00 0 00 131601 		TMSG	<Multi Collisions = >		; 14
 10726	067711	037 00 0 00 131605 		TMSG	<Xmit Failures    = >		; 15
 10727	067712	000000	000001			1					; 16 XFBM
 10728	067713	037 00 0 00 131611 		TMSG	<Coll.Det.Failed  = >		; 17
 10729	067714	000000	000000			0
 10730	067715	037 00 0 00 131615 		TMSG	<Rcv Failures     = >		; 20
 10731	067716	000000	000002			2					; 21 RFBM
 10732	067717	037 00 0 00 131621 		TMSG	<Discarded unknwn = >		; 22
 10733	067720	037 00 0 00 131625 		TMSG	<Discarded PT 1   = >		; 23
 10734	067721	037 00 0 00 131631 		TMSG	<Discarded PT 2   = >		; 24
 10735	067722	037 00 0 00 131635 		TMSG	<Discarded PT 3   = >		; 25
 10736	067723	037 00 0 00 131641 		TMSG	<Discarded PT 4   = >		; 26
 10737	067724	037 00 0 00 131645 		TMSG	<Discarded PT 5   = >		; 27
 10738	067725	037 00 0 00 131651 		TMSG	<Discarded PT 6   = >		; 30
 10739	067726	037 00 0 00 131655 		TMSG	<Discarded PT 7   = >		; 31
 10740	067727	037 00 0 00 131661 		TMSG	<Discarded PT 8   = >		; 32
 10741	067730	037 00 0 00 131665 		TMSG	<Discarded PT 9   = >		; 33
 10742	067731	037 00 0 00 131671 		TMSG	<Discarded PT 10  = >		; 34
 10743	067732	037 00 0 00 131675 		TMSG	<Discarded PT 11  = >		; 35
 10744	067733	037 00 0 00 131701 		TMSG	<Discarded PT 12  = >		; 36
 10745	067734	037 00 0 00 131705 		TMSG	<Discarded PT 13  = >		; 37
 10746	067735	037 00 0 00 131711 		TMSG	<Discarded PT 14  = >		; 40
 10747	067736	037 00 0 00 131715 		TMSG	<Discarded PT 15  = >		; 41
 10748	067737	037 00 0 00 131721 		TMSG	<Discarded PT 16  = >		; 42
 10749	067740	037 00 0 00 131725 		TMSG	<Unrec Frame Dest = >		; 43
 10750	067741	037 00 0 00 131731 		TMSG	<Data Overrun     = >		; 44
 10751	067742	037 00 0 00 131735 		TMSG	<Sys Buff Unavail = >		; 45
 10752	067743	037 00 0 00 131741 		TMSG	<Usr Buff Unavail = >		; 46
 10753	067744	000000	000000			0
 10754	067745	000000	000003			3
 10755	067746	037 00 0 00 131745 		TMSG	<PLI Reg Read PE  = >		; 47
 10756	067747	037 00 0 00 131751 		TMSG	<PLI PE           = >		; 47
 10757	067750	037 00 0 00 131755 		TMSG	<Mover PE         = >		; 50
 10758	067751	037 00 0 00 131761 		TMSG	<CBUS PE          = >		; 50
 10759	067752	037 00 0 00 131765 		TMSG	<EBUS PE          = >		; 51
 10760	067753	037 00 0 00 131771 		TMSG	<EBUS QUE PE      = >		; 51
 10761	067754	037 00 0 00 131775 		TMSG	<Channel Error    = >		; 52
 10762	067755	037 00 0 00 132001 		TMSG	<Spur Chan Error  = >		; 52
 10763	067756	037 00 0 00 132005 		TMSG	<Spur Xmt Atn Err = >		; 53
 10764	067757	037 00 0 00 132011 		TMSG	<CBUS Req Tmo Err = >		; 53
 10765	067760	037 00 0 00 132015 		TMSG	<EBUS Req Tmo Err = >		; 54
 10766	067761	037 00 0 00 132021 		TMSG	<CSR Grnt Tmo Err = >		; 54
 10767	067762	037 00 0 00 132025 		TMSG	<Used Buffer PE   = >		; 55
 10768	067763	037 00 0 00 132031 		TMSG	<Xmt Buffer PE    = >		; 55
 10769	067764	000000	000000			0
 10770	067765	037 00 0 00 132035 		TMSG	<Rsvd for ucode   = >		; 56
 10771	067766	037 00 0 00 132035 		TMSG	<Rsvd for ucode   = >		; 57
 10772	067767	777777	777777			-1
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 247
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0418

 10773
 10774					;#********************************************************************
 10775					;* PACK5 - Print a packet - DGRCV response
 10776					;#********************************************************************
 10777
 10778	067770	260 17 0 00 070237 	PACK5:	GO	PHEAD			; print header data
 10779	067771	037 00 0 00 131373 		TMSGC	< Text Length:  >
 10780	067772	200 00 0 12 000004 		MOVE	4(PK)			; get length word
 10781	067773	037 15 0 00 000000 		PNTDEC				; print it
 10782	067774	037 00 0 00 131377 		TMSG	<. (bytes)>
 10783	067775	037 00 0 00 131413 		TMSGC	< Destination Addr:  >
 10784	067776	120 01 0 12 000005 		DMOVE	1,5(PK)			; get destination address
 10785	067777	260 17 0 00 070261 		GO	PADDR			; print address
 10786	070000	037 00 0 00 132041 		TMSGC	< Source Addr:  >
 10787	070001	120 01 0 12 000007 		DMOVE	1,7(PK)			; get source address
 10788	070002	260 17 0 00 070261 		GO	PADDR			; print address
 10789	070003	037 00 0 00 131401 		TMSGC	< PTT Value:  >
 10790	070004	200 00 0 12 000011 		MOVE	11(PK)			; get PTT word
 10791	070005	135 00 0 00 131405 		LDB	[POINT 16,0,31]		; get PTT value
 10792	070006	037 16 0 00 000003 		PNTOCS				; print it
 10793	070007	037 00 0 00 132045 		TMSGC	< Data Pointer:  >
 10794	070010	200 01 0 12 000012 		MOVE	1,12(PK)		; get text pointer
 10795	070011	260 17 0 00 070537 		GO	LINKP			; print it
 10796	070012	201 01 0 12 000013 		MOVEI	1,13(PK)		; get text address
 10797	070013	200 02 0 12 000004 		MOVE	2,4(PK)			; get length word
 10798	070014	400 04 0 00 000000 		SETZ	4,			; set packing mode to COMPAT
 10799	070015	260 17 0 00 070431 		GO	PTEXT			; print text data
 10800	070016	263 17 0 00 000000 		RTN				; return
 10801
 10802
 10803					;#********************************************************************
 10804					;* PACK6 - Print a packet - WRPLI command / PLIWR response
 10805					;#********************************************************************
 10806
 10807	070017	260 17 0 00 070237 	PACK6:	GO	PHEAD			; print header data
 10808	070020	037 00 0 00 132051 		TMSGC	< Control Bits = >
 10809	070021	200 01 0 12 000004 		MOVE	1,4(PK)			; get word
 10810	070022	135 00 0 00 132055 		LDB	[POINT 4,1,23]		; get bits
 10811	070023	037 16 0 00 000003 		PNTOCS
 10812	070024	037 00 0 00 132056 		TMSGC	< PLI Data = >
 10813	070025	135 00 0 00 125343 		LDB	[POINT 8,1,35]		; get bits
 10814	070026	037 16 0 00 000003 		PNTOCS				; print
 10815	070027	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 248
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0419

 10816
 10817					;#********************************************************************
 10818					;* PACK7 - Print a packet - RDPLI command / PLIRD response
 10819					;#********************************************************************
 10820
 10821	070030	260 17 0 00 070237 	PACK7:	GO	PHEAD			; print header data
 10822	070031	037 00 0 00 132051 		TMSGC	< Control Bits = >
 10823	070032	200 01 0 12 000004 		MOVE	1,4(PK)			; get word
 10824	070033	135 00 0 00 132055 		LDB	[POINT 4,1,23]		; get bits
 10825	070034	037 16 0 00 000003 		PNTOCS				; print
 10826	070035	037 00 0 00 132056 		TMSGC	< PLI Data = >
 10827	070036	135 00 0 00 125343 		LDB	[POINT 8,1,35]		; get bits
 10828	070037	037 16 0 00 000003 		PNTOCS				; print
 10829	070040	263 17 0 00 000000 		RTN				; return
 10830
 10831
 10832					;#********************************************************************
 10833					;* PACK10 - Print a packet - RDNSA command / NSARD response
 10834					;#********************************************************************
 10835
 10836	070041	260 17 0 00 070237 	PACK10:	GO	PHEAD			; print header data
 10837	070042	332 00 0 00 134146'		SKIPE	CMDPAK			; command packet?
 10838	070043	263 17 0 00 000000 		RTN				; yes - exit
 10839
 10840					; Response packet NSARD
 10841
 10842	070044	037 00 0 00 132061 		TMSGC	< NI Address:  >
 10843	070045	120 01 0 12 000004 		DMOVE	1,4(PK)			; get destination address
 10844	070046	260 17 0 00 070261 		GO	PADDR			; print address
 10845	070047	120 01 0 12 000006 		DMOVE	1,6(PK)			; get special word
 10846	070050	037 00 0 00 132065 		TMSGC	< AMC = >
 10847	070051	135 00 0 00 132067 		LDB	[POINT 1,1,33]		; get AMC bit
 10848	070052	037 16 0 00 000003 		PNTOCS				; print it
 10849	070053	037 00 0 00 132070 		TMSG	<, H4000 Mode = >
 10850	070054	135 00 0 00 132074 		LDB	[POINT 1,1,34]		; get H4000 MODE bit
 10851	070055	037 16 0 00 000003 		PNTOCS				; print it
 10852	070056	037 00 0 00 132075 		TMSG	<, PRMSC Mode = >
 10853	070057	135 00 0 00 132101 		LDB	[POINT 1,1,35]		; get PRMSC MODE bit
 10854	070060	037 16 0 00 000003 		PNTOCS				; print it
 10855	070061	037 00 0 00 132102 		TMSGC	< UCode Version = > 
 10856	070062	135 00 0 00 131335 		LDB	[POINT 8,2,23]		; get UCode Version
 10857	070063	037 16 0 00 000003 		PNTOCS				; print it
 10858	070064	037 00 0 00 132106 		TMSG	<, # MCAT = >
 10859	070065	135 00 0 00 132111 		LDB	[POINT 6,2,29]		; get # MCAT
 10860	070066	037 16 0 00 000003 		PNTOCS				; print it
 10861	070067	037 00 0 00 132112 		TMSG	<, # PTT = >
 10862	070070	135 00 0 00 127603 		LDB	[POINT 6,2,35]		; get # PTT
 10863	070071	037 16 0 00 000003 		PNTOCS				; print it
 10864	070072	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 249
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0420

 10865
 10866					;#********************************************************************
 10867					;* PACK11 - Print a packet - WRNSA command / NSAWR response
 10868					;#********************************************************************
 10869
 10870	070073	260 17 0 00 070237 	PACK11:	GO	PHEAD			; print header data
 10871	070074	037 00 0 00 132061 		TMSGC	< NI Address:  >
 10872	070075	120 01 0 12 000004 		DMOVE	1,4(PK)			; get destination address
 10873	070076	260 17 0 00 070261 		GO	PADDR			; print address
 10874	070077	120 01 0 12 000006 		DMOVE	1,6(PK)			; get special word
 10875	070100	037 00 0 00 132065 		TMSGC	< AMC = >
 10876	070101	135 00 0 00 132067 		LDB	[POINT 1,1,33]		; get AMC bit
 10877	070102	037 16 0 00 000003 		PNTOCS				; print it
 10878	070103	037 00 0 00 132070 		TMSG	<, H4000 Mode = >
 10879	070104	135 00 0 00 132074 		LDB	[POINT 1,1,34]		; get H4000 MODE bit
 10880	070105	037 16 0 00 000003 		PNTOCS				; print it
 10881	070106	037 00 0 00 132075 		TMSG	<, PRMSC Mode = >
 10882	070107	135 00 0 00 132101 		LDB	[POINT 1,1,35]		; get PRMSC MODE bit
 10883	070110	037 16 0 00 000003 		PNTOCS				; print it
 10884	070111	037 00 0 00 132115 		TMSGC	< # Retries Allowed = > 
 10885	070112	135 00 0 00 132122 		LDB	[POINT 12,2,35]		; get # Retries Allowed
 10886	070113	037 16 0 00 000003 		PNTOCS				; print it
 10887	070114	263 17 0 00 000000 		RTN				; return
 10888
 10889
 10890					;#********************************************************************
 10891					;* PACKG - Print a general type packet (unrecognized)
 10892					;#********************************************************************
 10893
 10894	070115	260 17 0 00 070237 	PACKG:	GO	PHEAD			; print header data
 10895	070116	037 00 0 00 132123 		TMSGC	< Packet Data:>		; print heading
 10896	070117	201 01 0 12 000005 		MOVEI	1,5(PK)			; get address to start
 10897	070120	201 02 0 00 000005 		MOVEI	2,5			; initialize word number
 10898	070121	200 03 0 00 033706 		MOVE	3,DSPRIN		; get words to print
 10899	070122	037 00 0 00 132127 	PMISC0:	TMSGC	< +>			; print word count
 10900	070123	200 00 0 00 000002 		MOVE	2			; get word number
 10901	070124	037 16 0 00 000003 		PNTOCS				; print it
 10902	070125	037 00 0 00 124736 		TMSG	</ >
 10903	070126	200 00 0 01 000000 		MOVE	(1)			; get packet data
 10904	070127	037 13 0 00 000000 		PNTHW				; print it
 10905	070130	350 00 0 00 000001 		AOS	1			; point to next word
 10906	070131	350 00 0 00 000002 		AOS	2			; increment word count
 10907	070132	367 03 0 00 070122 		SOJG	3,PMISC0		; done yet? no - loop till done
 10908	070133	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 250
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0421

 10909
 10910					;#********************************************************************
 10911					;* OPCPNT - Print opcode of command packet
 10912					;
 10913					; OP - Contains opcode
 10914					;#********************************************************************
 10915
 10916	070134	261 17 0 00 000000 	OPCPNT:	RPUT	(0,1)			; save AC's
 10917
 10918	070136	200 00 0 00 000011 		MOVE	OP			; get op code
 10919	070137	037 16 0 00 000003 		PNTOCS				; print it
 10920	070140	037 00 0 00 117115 		TMSG	<->
 10921	070141	201 01 0 00 070163 		MOVEI	1,CMDOPC-1		; get cmd packet table
 10922	070142	336 00 0 00 134146'		SKIPN	CMDPAK			; command packet?
 10923	070143	201 01 0 00 070174 		MOVEI	1,RSPOPC-1		; no - get rsp packet table
 10924	070144	350 00 0 00 000001 	OPCPN0:	AOS	1			; point to next entry
 10925	070145	554 00 0 01 000000 		HLRZ	(1)			; get entry
 10926	070146	322 00 0 00 070155 		JUMPE	OPCPNE			; done? yes - error
 10927	070147	312 00 0 00 000011 		CAME	OP			; correct?
 10928	070150	254 00 0 00 070144 		JRST	OPCPN0			; no - look at next entry
 10929	070151	550 01 0 01 000000 		HRRZ	1,(1)			; get address of message
 10930	070152	200 01 0 01 000000 		MOVE	1,(1)			; get message
 10931	070153	256 00 0 00 000001 		XCT	1			; print it
 10932	070154	254 00 0 00 070161 		JRST	OPCPNX			; exit
 10933	070155	037 00 0 00 132130 	OPCPNE:	TMSG	<??>
 10934	070156	200 00 0 00 000011 		MOVE	OP
 10935	070157	037 16 0 00 000003 		PNTOCS
 10936	070160	037 00 0 00 132130 		TMSG	<??>
 10937	070161	262 17 0 00 000001 	OPCPNX:	RGET	(1,0)			; restore AC's
 10938
 10939	070163	263 17 0 00 000000 		RTN				; return
 10940
 10941					; Table of cmd/rsp opcodes
 10942
 10943	070164	000001	132133		CMDOPC:	SNDDG,,[TMSG <SNDDG>]
 10944	070165	000002	132136			LDMCAT,,[TMSG <LDMCAT>]
 10945	070166	000003	132141			LDPTT,,[TMSG <LDPTT>]
 10946	070167	000004	132144			RCCNT,,[TMSG <RCCNT>]
 10947	070170	000006	132147			WRPLI,,[TMSG <WRTPLI>]
 10948	070171	000007	132152			RDPLI,,[TMSG <RDPLI>]
 10949	070172	000010	132155			RDNSA,,[TMSG <RDNSA>]
 10950	070173	000011	132160			WRNSA,,[TMSG <WRTNSA>]
 10951	070174	000000	000000			0
 10952
 10953	070175	000001	132163		RSPOPC:	DGSNT,,[TMSG <DGSNT>]
 10954	070176	000002	132166			MCATLD,,[TMSG <MCATLD>]
 10955	070177	000003	132171			PTTLD,,[TMSG <PTTLD>]
 10956	070200	000004	132174			CNTRC,,[TMSG <CNTRC>]
 10957	070201	000005	132177			DGRCV,,[TMSG <DGRCV>]
 10958	070202	000006	132202			PLIWR,,[TMSG <PLIWRT>]
 10959	070203	000007	132205			PLIRD,,[TMSG <PLIRD>]
 10960	070204	000010	132210			NSARD,,[TMSG <NSARD>]
 10961	070205	000011	132213			NSAWR,,[TMSG <NSAWRT>]
 10962	070206	000000	000000			0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 251
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0422

 10963
 10964					;#********************************************************************
 10965					;* DECOPC - Decode op code
 10966					;
 10967					; Given:  OP - Contains op code to decode
 10968					;
 10969					; Returns:  AC1 - Contains offset address of opcode (0..n)
 10970					;	    AC2 - Contains 0 - Sent
 10971					;			   1 - Received (as a response ...)
 10972					;			   2 - Received (from another port)
 10973					;	    +1 - No match
 10974					;	    +2 - Match
 10975					;#********************************************************************
 10976
 10977	070207	261 17 0 00 000000 	DECOPC:	PUT	0			; save AC0
 10978	070210	201 01 0 00 070224 		MOVEI	1,DECTAB-1		; initialize table address
 10979	070211	350 00 0 00 000001 	DECOP0:	AOS	1			; point to next entry
 10980	070212	336 00 0 01 000000 		SKIPN	(1)			; end of list?
 10981	070213	254 00 0 00 070223 		JRST	DECOPX			; yes - exit +1 (error)
 10982	070214	550 00 0 01 000000 		HRRZ	(1)			; get op code
 10983	070215	312 00 0 00 000011 		CAME	OP			; match?
 10984	070216	254 00 0 00 070211 		JRST	DECOP0			; no - loop till done
 10985	070217	200 02 0 01 000000 		MOVE	2,(1)			; get data
 10986	070220	135 01 0 00 132214 		LDB	1,[POINT 15,2,17]	; get offset
 10987	070221	135 02 0 00 132215 		LDB	2,[POINT 3,2,2]		; get type
 10988	070222	350 00 0 17 777777 		AOS	-1(P)			; set up return +2
 10989	070223	262 17 0 00 000000 	DECOPX:	GET	0			; restore AC0
 10990	070224	263 17 0 00 000000 		RTN				; exit
 10991
 10992					; Table of op codes
 10993
 10994	070225	000000	000001		DECTAB:	0B2!0B17!SNDDG			; 0
 10995	070226	000001	000002			0B2!1B17!LDMCAT			; 1
 10996	070227	000002	000003			0B2!2B17!LDPTT			; 2
 10997	070230	000003	000004			0B2!3B17!RCCNT			; 3
 10998	070231	000004	000006			0B2!4B17!WRPLI			; 4
 10999	070232	000005	000007			0B2!5B17!RDPLI			; 5
 11000	070233	000006	000010			0B2!6B17!RDNSA			; 6
 11001	070234	000007	000011			0B2!7B17!WRNSA			; 7
 11002	070235	200010	000005			2B2!10B17!DGRCV			; 10
 11003	070236	000000	000000			0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 252
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0423

 11004
 11005					;#********************************************************************
 11006					;* PHEAD - Print header info of a packet
 11007					;#********************************************************************
 11008
 11009	070237	261 17 0 00 000000 	PHEAD:	RPUT	(0,1)			; save AC's
 11010
 11011
 11012					; Print Flink/Blink
 11013
 11014	070241	037 00 0 00 132216 		TMSGC	< Flink = >
 11015	070242	200 01 0 12 000000 		MOVE	1,(PK)			; get FLINK
 11016	070243	260 17 0 00 070537 		GO	LINKP			; print it
 11017	070244	037 00 0 00 132221 		TMSG	< / Blink = >
 11018	070245	200 01 0 12 000001 		MOVE	1,1(PK)			; get BLINK
 11019	070246	260 17 0 00 070537 		GO	LINKP			; print it
 11020	070247	037 00 0 00 132224 		TMSGC	< Status Word:  >
 11021	070250	200 00 0 12 000003 		MOVE	3(PK)			; get status word
 11022	070251	037 13 0 00 000000 		PNTHW				; print it
 11023	070252	037 00 0 00 132230 		TMSGC	<   OpCode = >
 11024	070253	260 17 0 00 070134 		GO	OPCPNT			; print OP CODE
 11025	070254	260 17 0 00 070360 		GO	PFLAGS
 11026	070255	260 17 0 00 070276 		GO	PSTATS
 11027	070256	262 17 0 00 000001 		RGET	(1,0)			; restore AC's
 11028
 11029	070260	263 17 0 00 000000 		RTN				; return
 11030
 11031
 11032					;#********************************************************************
 11033					;* PADDR - Print 6 byte source/destination address
 11034					;
 11035					; AC1,AC2 - Contain the address to print
 11036					;#********************************************************************
 11037
 11038	070261	135 00 0 00 132233 	PADDR:  LDB	[POINT 8,1,31]		; get byte 0
 11039	070262	037 03 0 00 000000 		PNT3				; print it
 11040	070263	135 00 0 00 131351 		LDB	[POINT 8,1,23]		; get byte 1
 11041	070264	037 03 0 00 000000 		PNT3				; print it
 11042	070265	135 00 0 00 132234 		LDB	[POINT 8,1,15]		; get byte 2
 11043	070266	037 03 0 00 000000 		PNT3				; print it
 11044	070267	135 00 0 00 132235 		LDB	[POINT 8,1,7]		; get byte 3
 11045	070270	037 03 0 00 000000 		PNT3				; print it
 11046	070271	135 00 0 00 131334 		LDB	[POINT 8,2,31]		; get byte 4
 11047	070272	037 03 0 00 000000 		PNT3				; print it
 11048	070273	135 00 0 00 131335 		LDB	[POINT 8,2,23]		; get byte 5
 11049	070274	037 03 0 00 000000 		PNT3				; print it
 11050	070275	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 253
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0424

 11051
 11052					;#********************************************************************
 11053					;* PSTATS - Print status field
 11054					;#********************************************************************
 11055
 11056	070276	261 17 0 00 000000 	PSTATS:	RPUT	(0,1,2,3)		; save AC's
 11057
 11058	070302	037 00 0 00 132236 		TMSGC	<   Status >
 11059	070303	200 01 0 12 000003 		MOVE	1,3(PK)			; get word
 11060	070304	135 01 0 00 132235 		LDB	1,[POINT 8,1,7]		; get status byte
 11061	070305	200 00 0 00 000001 		MOVE	1			; get octal
 11062	070306	037 03 0 00 000000 		PNT3				; print it
 11063	070307	037 00 0 00 126465 		TMSG	<= >
 11064	070310	606 01 0 00 000001 		TRNN	1,1			; any error?
 11065						JRST	[TMSG	<No Error>	; no - print no error
 11066	070311	254 00 0 00 132243 			 JRST	PSTATX]		;   and exit
 11067
 11068					; Error byte
 11069
 11070	070312	135 02 0 00 132245 	PSTAT0:	LDB	2,[POINT 5,1,34]	; get error bits
 11071	070313	201 01 0 00 070334 		MOVEI	1,STATAB-1		; initialize table address
 11072	070314	350 00 0 00 000001 	PSTAT1:	AOS	1			; point to next entry
 11073	070315	337 00 0 01 000000 		SKIPG	(1)			; end of list?
 11074	070316	254 00 0 00 070325 		JRST	PSTAT2			; yes - print unrecognized
 11075	070317	554 00 0 01 000000 		HLRZ	(1)			; get error code
 11076	070320	312 00 0 00 000002 		CAME	2			; match?
 11077	070321	254 00 0 00 070314 		JRST	PSTAT1			; no - keep looking
 11078	070322	550 01 0 01 000000 		HRRZ	1,(1)			; get address of text to print
 11079	070323	256 00 0 01 000000 		XCT	(1)			; print it
 11080	070324	254 00 0 00 070330 		JRST	PSTATX			; exit
 11081
 11082					; Not recognized
 11083
 11084	070325	037 00 0 00 132246 	PSTAT2:	TMSG	< ? Invalid error code - >
 11085	070326	200 00 0 00 000002 		MOVE	2
 11086	070327	037 16 0 00 000003 		PNTOCS
 11087
 11088					; Exit
 11089
 11090	070330	262 17 0 00 000003 	PSTATX:	RGET	(3,2,1,0)		; done - restore AC's
 11091
 11092	070334	263 17 0 00 000000 		RTN				;  and return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 254
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0425

 11093
 11094					; Status error table
 11095
 11096	070335	000000	132260		STATAB:	0,,[TMSG <Excessive collisions>]
 11097	070336	000001	132266			1,,[TMSG <Carrier check failed>]
 11098	070337	000002	132275			2,,[TMSG <Collision detect check failed>]
 11099	070340	000003	132301			3,,[TMSG <Short circuit>]
 11100	070341	000004	132305			4,,[TMSG <Open circuit>]
 11101	070342	000005	132311			5,,[TMSG <Frame too long>]
 11102	070343	000006	132323			6,,[TMSG <Remove failure to deter (late collision)>]
 11103	070344	000007	132332			7,,[TMSG <Block check error (CRC error)>]
 11104	070345	000010	132336			10,,[TMSG <Framing error>]
 11105	070346	000011	132342			11,,[TMSG <Data overrun>]
 11106	070347	000012	132351			12,,[TMSG <Unrecognized protocol type>]
 11107	070350	000013	132356			13,,[TMSG <Frame too short>]
 11108
 11109	070351	000031	132364			31,,[TMSG <Queue length violation>]
 11110	070352	000032	132372			32,,[TMSG <Illegal PLI function>]
 11111	070353	000033	132400			33,,[TMSG <Unrecognized command>]
 11112	070354	000034	132406			34,,[TMSG <Buffer length violation>]
 11113	070355	000035	132413			35,,[TMSG <Free buffer list PE>]
 11114	070356	000036	132420			36,,[TMSG <Transmit buffer PE>]
 11115	070357	777777	777777			-1
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 255
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0426

 11116
 11117					;#********************************************************************
 11118					;* PFLAGS - Print flags field (AC1 contains status byte (right justified))
 11119					;#********************************************************************
 11120
 11121	070360	261 17 0 00 000000 	PFLAGS:	RPUT	(0,1,2,3)		; save AC's
 11122
 11123	070364	200 01 0 12 000003 		MOVE	1,3(PK)			; get word
 11124	070365	135 01 0 00 132234 		LDB	1,[POINT 8,1,15]	; get flags byte
 11125	070366	037 00 0 00 132421 		TMSGC	<   Flags  >
 11126	070367	200 00 0 00 000001 		MOVE	1			; get octal
 11127	070370	037 03 0 00 000000 		PNT3
 11128	070371	037 00 0 00 126465 		TMSG	<= >
 11129	070372	200 01 0 12 000003 		MOVE	1,3(PK)			; get word
 11130	070373	135 00 0 00 131351 		LDB	[POINT 8,1,23]		; get op code
 11131	070374	135 01 0 00 132234 		LDB	1,[POINT 8,1,15]	; get flags byte
 11132	070375	302 00 0 00 000001 		CAIE	DGSNT			; datagram sent or
 11133	070376	306 00 0 00 000005 		CAIN	DGRCV			;   received?
 11134	070377	334 00 0 00 000000 		SKIPA				; yes - continue
 11135	070400	254 00 0 00 070416 		JRST	PFLAG0			; no - just print response bit
 11136
 11137					; Datagram
 11138
 11139	070401	135 02 0 00 132424 		LDB	2,[POINT 1,1,28]	; get bits
 11140						XCT	[TMSG	<COMPAT mode>	; print
 11141	070402	256 00 0 02 132433 			 TMSG	<HIDEN mode>](2)
 11142	070403	037 00 0 00 132435 		TMSG	<, ICRC=>		; print 'include CRC' flag
 11143	070404	135 00 0 00 132437 		LDB	[POINT 1,1,29]
 11144	070405	037 16 0 00 000003 		PNTOCS
 11145	070406	037 00 0 00 132440 		TMSG	<, PAD=>		; print 'PAD' flag
 11146	070407	135 00 0 00 132442 		LDB	[POINT 1,1,30]
 11147	070410	037 16 0 00 000003 		PNTOCS
 11148	070411	037 00 0 00 132443 		TMSG	<, BSD=>		; print 'BSD' flag
 11149	070412	135 00 0 00 132445 		LDB	[POINT 1,1,32]
 11150	070413	037 16 0 00 000003 		PNTOCS
 11151	070414	037 00 0 00 132446 		TMSG	<,  >
 11152	070415	254 00 0 00 070421 		JRST	PFLAG1
 11153
 11154					; Non-datagram
 11155
 11156	070416	037 00 0 00 132447 	PFLAG0:	TMSG	<ClrCntr=>
 11157	070417	135 02 0 00 132074 		LDB	2,[POINT 1,1,34] 	; get bits
 11158						XCT	[TMSG	<No,  >		; print
 11159	070420	256 00 0 02 132455 			 TMSG	<Yes,  >](2)
 11160
 11161					; Common to either datagram or non-datagram
 11162
 11163	070421	037 00 0 00 132457 	PFLAG1:	TMSG	<Rsp requested=>
 11164	070422	135 02 0 00 132101 		LDB	2,[POINT 1,1,35] 	; get bits
 11165						XCT	[TMSG	<No>		; print
 11166	070423	256 00 0 02 132464 			 TMSG	<Yes>](2)
 11167	070424	262 17 0 00 000003 		RGET	(3,2,1,0)		; restore AC's
 11168
 11169	070430	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 256
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0427

 11170
 11171					;#********************************************************************
 11172					;* PTEXT - Print text data in a datagram
 11173					;
 11174					; AC1 - Contains text address
 11175					; AC2 - Contains text length (in bytes)
 11176					; AC4 - Contains packing mode 0-COMPAT / 1-HIDEN
 11177					;#********************************************************************
 11178
 11179	070431	200 03 0 00 132466 	PTEXT:	MOVE	3,[POINT 8,0]		; get initial byte pointer
 11180	070432	434 03 0 00 000001 		IOR	3,1			; include in byte pointer
 11181	070433	200 00 0 00 033706 		MOVE	DSPRIN			; get max length to print
 11182	070434	242 00 0 00 000002 		LSH	2			; calculate max bytes
 11183	070435	315 00 0 00 000002 		CAMGE	2			; exceed maximum?
 11184	070436	200 02 0 00 000000 		MOVE	2,0			; yes - limit to maximum
 11185	070437	326 04 0 00 070452 		JUMPN	4,PTEXT1		; HIDEN mode? yes - go handle
 11186
 11187					; COMPAT mode
 11188	
 11189	070440	037 00 0 00 132467 	PTEXT0:	TMSGC	< Text:  +0/ >
 11190	070441	400 01 0 00 000000 		SETZ	1,			; clear byte count
 11191	070442	134 00 0 00 000003 		ILDB	3			; get byte to print
 11192	070443	037 03 0 00 000000 		PNT3				; print it
 11193	070444	350 00 0 00 000001 		AOS	1			; increment byte count
 11194	070445	367 02 0 00 070447 		SOJG	2,.+2			; done yet? no - continue
 11195	070446	263 17 0 00 000000 		RTN				; yes - return
 11196	070447	606 01 0 00 000007 		TRNN	1,7			; end of line?
 11197						GO	[TMSGC	<        +>	; yes - start a new line
 11198							 MOVE	1
 11199							 LSH	-2
 11200							 PNTOCS
 11201							 TMSG	</ >
 11202	070450	260 17 0 00 132475 			 RTN]
 11203	070451	254 00 0 00 070442 		JRST	PTEXT0+2		; loop till done
 11204
 11205					; HIDEN mode
 11206
 11207	070452	037 00 0 00 132467 	PTEXT1:	TMSGC	< Text:  +0/ >
 11208	070453	402 00 0 00 134257'		SETZM	WORCNT#			; clear word count
 11209	070454	201 00 0 00 000011 	PTEXT2:	MOVEI	9			; get bytes per line
 11210	070455	202 00 0 00 134167'		MOVEM	LINCNT#			; set up byte count
 11211	070456	120 03 0 01 000000 		DMOVE	3,(1)			; get 2 words to print
 11212	070457	135 00 0 00 132503 	PTEXT3:	LDB	[POINT 8,3,7]		; get byte to print
 11213	070460	037 03 0 00 000000 		PNT3				; print it
 11214	070461	246 03 0 00 000010 		LSHC	3,8			; left shift 8 bits
 11215	070462	363 02 0 00 117037 		SOJLE	2,[RTN]			; byte count exhausted? yes - exit
 11216	070463	373 00 0 00 134167'		SOSLE	LINCNT			; line byte count exhausted?
 11217	070464	254 00 0 00 070457 		JRST	PTEXT3			; no - loop till done
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 257
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0428

 11218	070465	037 00 0 00 132472 		TMSGC	<        +>		; print new line
 11219	070466	350 00 0 00 134257'		AOS	WORCNT			; increment word count
 11220	070467	350 00 0 00 134257'		AOS	WORCNT			; increment word count
 11221	070470	200 00 0 00 134257'		MOVE	WORCNT			; get word count
 11222	070471	037 16 0 00 000003 		PNTOCS				; print it
 11223	070472	037 00 0 00 124736 		TMSG	</ >
 11224	070473	271 01 0 00 000002 		ADDI	1,2			; increment word address
 11225	070474	254 00 0 00 070454 		JRST	PTEXT2			; keep looping
 11226
 11227
 11228					;#********************************************************************
 11229					;* PBSD - Print BSD segment
 11230					;
 11231					; AC1 - Contains segment number
 11232					; AC3 - Contains address of start of segment
 11233					;#********************************************************************
 11234
 11235	070475	261 17 0 00 000000 	PBSD:	RPUT	(0,1,2,3,4)		; save AC's
 11236
 11237	070502	037 00 0 00 132504 		TMSGC	< Segment #>
 11238	070503	200 00 0 00 000001 		MOVE	1
 11239	070504	037 16 0 00 000003 		PNTOCS
 11240	070505	037 00 0 00 131412 		TMSG	<:  >
 11241	070506	200 02 0 03 000000 		MOVE	2,(3)			; get first word
 11242	070507	135 04 0 00 132507 		LDB	4,[POINT 1,2,6]		; get packing mode
 11243						XCT	[TMSG	<COMPAT>	; print it
 11244	070510	256 00 0 04 132514 			 TMSG	<HIDEN>](4)
 11245	070511	037 00 0 00 132516 		TMSG	<, BaseAdr = >
 11246	070512	135 01 0 00 130520 		LDB	1,[POINT 24,2,35]	; get address
 11247	070513	260 17 0 00 070537 		GO	LINKP			; print it
 11248	070514	037 00 0 00 132521 		TMSG	<, NextAdr = >
 11249	070515	200 01 0 03 000001 		MOVE	1,1(3)			; get 2nd word
 11250	070516	260 17 0 00 070544 		GO	LINKV			; print it
 11251	070517	037 00 0 00 132524 		TMSG	<, Length = >
 11252	070520	200 00 0 03 000002 		MOVE	2(3)			; get length
 11253	070521	037 15 0 00 000000 		PNTDEC				; print it
 11254	070522	037 00 0 00 131377 		TMSG	<. (bytes)>
 11255	070523	135 01 0 00 130520 		LDB	1,[POINT 24,2,35]	; get address
 11256	070524	260 17 0 00 066652 		GO	CONVIR			; convert to virtual
 11257	070525	306 13 0 00 000001 		CAIN	Q,1			; response queue?
 11258	070526	201 01 0 00 073020 		MOVEI	1,RSPONS+20		; yes - use different address
 11259	070527	200 02 0 03 000002 		MOVE	2,2(3)			; get length	
 11260	070530	260 17 0 00 070431 		GO	PTEXT			; print text data
 11261	070531	262 17 0 00 000004 		RGET	(4,3,2,1,0)		; restore AC's
 11262
 11263	070536	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 258
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0429

 11264
 11265					;#********************************************************************
 11266					;* LINKP - Print FLINK/BLINK data in symbolic format
 11267					;
 11268					; Given:  AC1 - Contains the LINK data (physical address)
 11269					;#********************************************************************
 11270
 11271	070537	261 17 0 00 000000 	LINKP:	RPUT	(0,1,2)			; save AC's
 11272
 11273	070542	260 17 0 00 066652 		GO	CONVIR			; convert to virtual address
 11274	070543	254 00 0 00 070547 		PJRST	LINKG			; continue
 11275
 11276
 11277					;#********************************************************************
 11278					;* LINKV - Print FLINK/BLINK data in symbolic format
 11279					;
 11280					; Given:  AC1 - Contains the LINK data (virtual address)
 11281					;#********************************************************************
 11282
 11283	070544	261 17 0 00 000000 	LINKV:	RPUT	(0,1,2)			; save AC's
 11284
 11285	070547	200 00 0 00 000001 	LINKG:	MOVE	1			; get into AC0
 11286	070550	201 02 0 00 070567 		MOVEI	2,LINTAB		; get table address
 11287	070551	554 01 0 02 000000 	LINKV0:	HLRZ	1,(2)			; get virtual address
 11288	070552	322 01 0 00 070557 		JUMPE	1,LINKV1		; not found? yes - go print octal
 11289	070553	316 00 0 00 000001 		CAMN	1			; correct one?
 11290	070554	254 00 0 00 070561 		JRST	LINKV2			; yes - continue
 11291	070555	350 00 0 00 000002 		AOS	2			; point to next address
 11292	070556	254 00 0 00 070551 		JRST	LINKV0	
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 259
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0430

 11293
 11294	070557	037 16 0 00 000003 	LINKV1:	PNTOCS				; print it
 11295	070560	254 00 0 00 070563 		JRST	LINKVX			; exit
 11296
 11297	070561	550 02 0 02 000000 	LINKV2:	HRRZ	2,(2)			; get address
 11298	070562	256 00 0 02 000000 		XCT	(2)			; print text
 11299
 11300	070563	262 17 0 00 000002 	LINKVX:	RGET	(2,1,0)			; restore AC's
 11301
 11302	070566	263 17 0 00 000000 		RTN				; return
 11303
 11304					; Virtual address translation table
 11305
 11306	070567	072000	132531		LINTAB:	   PCB,,[TMSG <PCB   >]
 11307	070570	072001	132534			 PCB+1,,[TMSG <PCB+1 >]
 11308	070571	072004	132537			 PCB+4,,[TMSG <PCB+4 >]
 11309	070572	072005	132542			 PCB+5,,[TMSG <PCB+5 >]
 11310	070573	072010	132545			PCB+10,,[TMSG <PCB+10>]
 11311	070574	072011	132550			PCB+11,,[TMSG <PCB+11>]
 11312	070575	072031	132553			PCB+31,,[TMSG <PCB+31>]
 11313	070576	105000	132556			PTABLE,,[TMSG <PTABLE>]
 11314	070577	115320	132561			MTABLE,,[TMSG <MTABLE>]
 11315	070600	105070	132564			 PTTFQ,,[TMSG <PTTFQ >]
 11316	070601	105071	132567		       PTTFQ+1,,[TMSG <PTTFQ+1>]
 11317	070602	105074	132572			 PTTF0,,[TMSG <PTTF0 >]
 11318	070603	106000	132575			 PTTF1,,[TMSG <PTTF1 >]
 11319	070604	106310	132600			 PTTF2,,[TMSG <PTTF2 >]
 11320	070605	107000	132603			 PTTF3,,[TMSG <PTTF3 >]
 11321	070606	107310	132606			 PTTF4,,[TMSG <PTTF4 >]
 11322	070607	110000	132611			 PTTF5,,[TMSG <PTTF5 >]
 11323	070610	110310	132614			 PTTF6,,[TMSG <PTTF6 >]
 11324	070611	111000	132617			 PTTF7,,[TMSG <PTTF7 >]
 11325	070612	111310	132622			 PTTF10,,[TMSG <PTTF10>]
 11326	070613	112000	132625			 PTTF11,,[TMSG <PTTF11>]
 11327	070614	112310	132630			 PTTF12,,[TMSG <PTTF12>]
 11328	070615	113000	132633			 PTTF13,,[TMSG <PTTF13>]
 11329	070616	113310	132636			 PTTF14,,[TMSG <PTTF14>]
 11330	070617	114000	132641			 PTTF15,,[TMSG <PTTF15>]
 11331	070620	114310	132644			 PTTF16,,[TMSG <PTTF16>]
 11332	070621	115000	132647			 PTTF17,,[TMSG <PTTF17>]
 11333	070622	075000	132652			QUNKF0,,[TMSG <QUNKF0>]
 11334	070623	076000	132655			QUNKF1,,[TMSG <QUNKF1>]
 11335	070624	077000	132660			QUNKF2,,[TMSG <QUNKF2>]
 11336	070625	100000	132663			QUNKF3,,[TMSG <QUNKF3>]
 11337	070626	101000	132666			QUNKF4,,[TMSG <QUNKF4>]
 11338	070627	102000	132671			QUNKF5,,[TMSG <QUNKF5>]
 11339	070630	103000	132674			QUNKF6,,[TMSG <QUNKF6>]
 11340	070631	104000	132677			QUNKF7,,[TMSG <QUNKF7>]
 11341	070632	072114	132702			PACKET,,[TMSG <PACKET>]
 11342	070633	072127	132705			PACKET+13,,[TMSG <PACKET+13>]
 11343	070634	072130	132710			PACKET+14,,[TMSG <PACKET+14>]
 11344	070635	072134	132713			PACKET+20,,[TMSG <PACKET+20>]
 11345
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 260
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0431

 11346	070636	105107	132716			 PTTF0+13,,[TMSG <PTTF0+13 >]
 11347	070637	106013	132721			 PTTF1+13,,[TMSG <PTTF1+13 >]
 11348	070640	106323	132724			 PTTF2+13,,[TMSG <PTTF2+13 >]
 11349	070641	107013	132727			 PTTF3+13,,[TMSG <PTTF3+13 >]
 11350	070642	107323	132732			 PTTF4+13,,[TMSG <PTTF4+13 >]
 11351	070643	110013	132735			 PTTF5+13,,[TMSG <PTTF5+13 >]
 11352	070644	110323	132740			 PTTF6+13,,[TMSG <PTTF6+13 >]
 11353	070645	111013	132743			 PTTF7+13,,[TMSG <PTTF7+13 >]
 11354	070646	111323	132746			 PTTF10+13,,[TMSG <PTTF10+13>]
 11355	070647	112013	132751			 PTTF11+13,,[TMSG <PTTF11+13>]
 11356	070650	112323	132754			 PTTF12+13,,[TMSG <PTTF12+13>]
 11357	070651	113013	132757			 PTTF13+13,,[TMSG <PTTF13+13>]
 11358	070652	113323	132762			 PTTF14+13,,[TMSG <PTTF14+13>]
 11359	070653	114013	132765			 PTTF15+13,,[TMSG <PTTF15+13>]
 11360	070654	114323	132770			 PTTF16+13,,[TMSG <PTTF16+13>]
 11361	070655	115013	132773			 PTTF17+13,,[TMSG <PTTF17+13>]
 11362	070656	075013	132776			QUNKF0+13,,[TMSG <QUNKF0+13>]
 11363	070657	076013	133001			QUNKF1+13,,[TMSG <QUNKF1+13>]
 11364	070660	077013	133004			QUNKF2+13,,[TMSG <QUNKF2+13>]
 11365	070661	100013	133007			QUNKF3+13,,[TMSG <QUNKF3+13>]
 11366	070662	101013	133012			QUNKF4+13,,[TMSG <QUNKF4+13>]
 11367	070663	102013	133015			QUNKF5+13,,[TMSG <QUNKF5+13>]
 11368	070664	103013	133020			QUNKF6+13,,[TMSG <QUNKF6+13>]
 11369	070665	104013	133023			QUNKF7+13,,[TMSG <QUNKF7+13>]
 11370
 11371	070666	105110	133026			 PTTF0+14,,[TMSG <PTTF0+14 >]
 11372	070667	106014	133031			 PTTF1+14,,[TMSG <PTTF1+14 >]
 11373	070670	106324	133034			 PTTF2+14,,[TMSG <PTTF2+14 >]
 11374	070671	107014	133037			 PTTF3+14,,[TMSG <PTTF3+14 >]
 11375	070672	107324	133042			 PTTF4+14,,[TMSG <PTTF4+14 >]
 11376	070673	110014	133045			 PTTF5+14,,[TMSG <PTTF5+14 >]
 11377	070674	110324	133050			 PTTF6+14,,[TMSG <PTTF6+14 >]
 11378	070675	111014	133053			 PTTF7+14,,[TMSG <PTTF7+14 >]
 11379	070676	111324	133056			 PTTF10+14,,[TMSG <PTTF10+14>]
 11380	070677	112014	133061			 PTTF11+14,,[TMSG <PTTF11+14>]
 11381	070700	112324	133064			 PTTF12+14,,[TMSG <PTTF12+14>]
 11382	070701	113014	133067			 PTTF13+14,,[TMSG <PTTF13+14>]
 11383	070702	113324	133072			 PTTF14+14,,[TMSG <PTTF14+14>]
 11384	070703	114014	133075			 PTTF15+14,,[TMSG <PTTF15+14>]
 11385	070704	114324	133100			 PTTF16+14,,[TMSG <PTTF16+14>]
 11386	070705	115014	133103			 PTTF17+14,,[TMSG <PTTF17+14>]
 11387	070706	075014	133106			QUNKF0+14,,[TMSG <QUNKF0+14>]
 11388	070707	076014	133111			QUNKF1+14,,[TMSG <QUNKF1+14>]
 11389	070710	077014	133114			QUNKF2+14,,[TMSG <QUNKF2+14>]
 11390	070711	100014	133117			QUNKF3+14,,[TMSG <QUNKF3+14>]
 11391	070712	101014	133122			QUNKF4+14,,[TMSG <QUNKF4+14>]
 11392	070713	102014	133125			QUNKF5+14,,[TMSG <QUNKF5+14>]
 11393	070714	103014	133130			QUNKF6+14,,[TMSG <QUNKF6+14>]
 11394	070715	104014	133133			QUNKF7+14,,[TMSG <QUNKF7+14>]
 11395
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 261
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0432

 11396	070716	105114	133136			 PTTF0+20,,[TMSG <PTTF0+20 >]
 11397	070717	106020	133141			 PTTF1+20,,[TMSG <PTTF1+20 >]
 11398	070720	106330	133144			 PTTF2+20,,[TMSG <PTTF2+20 >]
 11399	070721	107020	133147			 PTTF3+20,,[TMSG <PTTF3+20 >]
 11400	070722	107330	133152			 PTTF4+20,,[TMSG <PTTF4+20 >]
 11401	070723	110020	133155			 PTTF5+20,,[TMSG <PTTF5+20 >]
 11402	070724	110330	133160			 PTTF6+20,,[TMSG <PTTF6+20 >]
 11403	070725	111020	133163			 PTTF7+20,,[TMSG <PTTF7+20 >]
 11404	070726	111330	133166			 PTTF10+20,,[TMSG <PTTF10+20>]
 11405	070727	112020	133171			 PTTF11+20,,[TMSG <PTTF11+20>]
 11406	070730	112330	133174			 PTTF12+20,,[TMSG <PTTF12+20>]
 11407	070731	113020	133177			 PTTF13+20,,[TMSG <PTTF13+20>]
 11408	070732	113330	133202			 PTTF14+20,,[TMSG <PTTF14+20>]
 11409	070733	114020	133205			 PTTF15+20,,[TMSG <PTTF15+20>]
 11410	070734	114330	133210			 PTTF16+20,,[TMSG <PTTF16+20>]
 11411	070735	115020	133213			 PTTF17+20,,[TMSG <PTTF17+20>]
 11412	070736	075020	133216			QUNKF0+20,,[TMSG <QUNKF0+20>]
 11413	070737	076020	133221			QUNKF1+20,,[TMSG <QUNKF1+20>]
 11414	070740	077020	133224			QUNKF2+20,,[TMSG <QUNKF2+20>]
 11415	070741	100020	133227			QUNKF3+20,,[TMSG <QUNKF3+20>]
 11416	070742	101020	133232			QUNKF4+20,,[TMSG <QUNKF4+20>]
 11417	070743	102020	133235			QUNKF5+20,,[TMSG <QUNKF5+20>]
 11418	070744	103020	133240			QUNKF6+20,,[TMSG <QUNKF6+20>]
 11419	070745	104020	133243			QUNKF7+20,,[TMSG <QUNKF7+20>]
 11420	070746	000000	000000			0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 262
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0433

 11421
 11422					;#********************************************************************
 11423					;* PPCB - Print current data in the PCB
 11424					;
 11425					; Addresses are printed are symbolic.
 11426					;#********************************************************************
 11427
 11428	070747	261 17 0 00 000000 	PPCB:	RPUT	(0,1,2,3,4)		; save AC's
 11429
 11430	070754	037 00 0 00 133244 		TMSGC	<PCB:>
 11431	070755	037 00 0 00 133246 		TMSGC	< PCB Base Addr:>
 11432	070756	200 01 0 00 072024 		MOVE	1,PCB+^D20		; get address
 11433	070757	260 17 0 00 066652 		GO	CONVIR			; convert to virtual
 11434	070760	001 07 0 00 000001 		PNTOCC	7,1			; print it
 11435	070761	037 00 0 00 133252 		TMSGC	< PI Level:  >
 11436	070762	001 12 0 00 072025 		PNTOCC	12,PCB+^D21		; print PI level
 11437	070763	037 00 0 00 133255 		TMSGC	< Int Vector:>
 11438	070764	001 12 0 00 072026 		PNTOCC	12,PCB+^D22		; print int vector assignment
 11439	070765	037 00 0 00 133260 		TMSGC	< CCW:    >
 11440	070766	200 00 0 00 072027 		MOVE	PCB+^D23		; get CCW
 11441	070767	037 13 0 00 000000 		PNTHW				; print it
 11442	070770	037 00 0 00 133263 		TMSGC	< Counters Address: >
 11443	070771	200 01 0 00 072030 		MOVE	1,PCB+^D24		; get counters address
 11444	070772	260 17 0 00 066652 		GO	CONVIR			; convert to virtual
 11445	070773	001 11 0 00 000001 		PNTOCC	11,1			; print it
 11446	070774	037 00 0 00 133270 		TMSGC	< --------------->
 11447	070775	037 00 0 00 133274 		TMSGC	< PTT Address:>
 11448	070776	200 01 0 00 072015 		MOVE	1,PCB+^D13		; get address
 11449	070777	260 17 0 00 066652 		GO	CONVIR			; convert to virtual
 11450	071000	001 11 0 00 000001 		PNTOCC	11,1			; print it
 11451	071001	037 00 0 00 133300 		TMSGC	< MCT Address:>
 11452	071002	200 01 0 00 072016 		MOVE	1,PCB+^D14		; get address
 11453	071003	260 17 0 00 066652 		GO	CONVIR			; convert to virtual
 11454	071004	001 11 0 00 000001 		PNTOCC	11,1			; print it
 11455	071005	037 00 0 00 133270 		TMSGC	< --------------->
 11456	071006	037 00 0 00 133304 		TMSGC	< Logout 0:  >
 11457	071007	200 00 0 00 072020 		MOVE	PCB+^D16
 11458	071010	037 13 0 00 000000 		PNTHW
 11459	071011	037 00 0 00 133307 		TMSGC	< Logout 1:  >
 11460	071012	200 00 0 00 072021 		MOVE	PCB+^D17
 11461	071013	037 13 0 00 000000 		PNTHW
 11462	071014	037 00 0 00 133312 		TMSGC	< Logout 2:  >
 11463	071015	200 00 0 00 072022 		MOVE	PCB+^D18
 11464	071016	037 13 0 00 000000 		PNTHW
 11465	071017	037 00 0 00 133315 		TMSGC	< Logout 3:  >
 11466	071020	200 00 0 00 072023 		MOVE	PCB+^D19
 11467	071021	037 13 0 00 000000 		PNTHW
 11468	071022	037 00 0 00 133270 		TMSGC	< --------------->
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 263
DFNIA1	MAC	18-Feb-84 20:30		Queue Print Routines                                                               SEQ 0434

 11469
 11470					; Print queues
 11471
 11472	071023	037 00 0 00 133320 	PPCBD:	TMSGC	< # Queue  PCB Addr  Interlock  Flink  Blink>
 11473	071024	037 00 0 00 133332 		TMSGC	< - -----  --------  ---------  -----  ----->
 11474	071025	400 04 0 00 000000 		SETZ	4,			; initialize pointer into PCB
 11475	071026	400 03 0 00 000000 		SETZ	3,			; initialize queue number
 11476	071027	037 00 0 00 125342 	PPCB0:	TMSGC	< >			; start a new line
 11477	071030	200 00 0 00 000003 		MOVE	3			; get queue number
 11478	071031	037 16 0 00 000003 		PNTOCS				; print it
 11479	071032	037 00 0 00 117042 		TMSG	< >
 11480						XCT	[TMSG	<CmdQ >		; print type of queue
 11481							 TMSG	<RspQ >
 11482	071033	256 00 0 03 133352 			 TMSG	<UnkFQ>](3)
 11483	071034	037 00 0 00 133355 		TMSG	<   PCB+>
 11484	071035	001 02 0 00 000004 		PNTOCC	2,4			; print PCB offset
 11485	071036	001 11 0 04 072000 		PNTOCC	11,PCB(4)		; print interlock
 11486	071037	037 00 0 00 125215 		TMSG	<     >
 11487	071040	200 01 0 04 072001 		MOVE	1,PCB+1(4)		; get flink
 11488	071041	260 17 0 00 070537 		GO	LINKP			; print it
 11489	071042	037 00 0 00 127515 		TMSG	<  >
 11490	071043	200 01 0 04 072002 		MOVE	1,PCB+2(4)		; get flink
 11491	071044	260 17 0 00 070537 		GO	LINKP			; print it
 11492	071045	271 04 0 00 000004 		ADDI	4,4			; point to next queue location
 11493	071046	350 00 0 00 000003 		AOS	3			; point to next queue number
 11494	071047	305 03 0 00 000003 		CAIGE	3,3			; done yet?
 11495	071050	254 00 0 00 071027 		JRST	PPCB0			; no - loop till done
 11496	071051	262 17 0 00 000004 		RGET	(4,3,2,1,0)		; restore AC's
 11497
 11498	071056	263 17 0 00 000000 		RTN				; return
 11499
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 264
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0435

 11500						SUBTTL	Port Control Block and Data Areas
 11501
 11502					;#********************************************************************
 11503					;* IPCB - PCB initial data
 11504					;#********************************************************************
 11505
 11506	071057	777777	777777		IPCB:	-1				; PCB+0
 11507	071060	000000	072001			PCB+1				; ..  1
 11508	071061	000000	072001			PCB+1				; ..  2
 11509	071062	000000	000000			0				; ..  3
 11510
 11511	071063	777777	777777			-1				; ..  4
 11512	071064	000000	072005			PCB+5				; ..  5
 11513	071065	000000	072005			PCB+5				; ..  6
 11514	071066	000000	000000			0				; ..  7
 11515
 11516	071067	777777	777777			-1				; .. 10
 11517	071070	000000	075000			QUNKF0				; .. 11
 11518	071071	000000	104000			QUNKF7				; .. 12
 11519	071072	000000	000605			^D400-13			; .. 13
 11520	071073	000000	000000			0				; .. 14
 11521
 11522	071074	000000	105000			PTABLE				; .. 15
 11523	071075	000000	115320			MTABLE				; .. 16
 11524	071076	000000	000000			0				; .. 17
 11525
 11526	071077	000000	000000			0				; .. 20
 11527	071100	000000	000000			0				; .. 21
 11528	071101	000000	000000			0				; .. 22
 11529	071102	000000	000000			0				; .. 23
 11530
 11531	071103	000000	072000			PCB				; .. 24
 11532	071104	000000	000004			4				; .. 25
 11533	071105	000000	000000			0				; .. 26
 11534	071106	000000	000000			0				; .. 27
 11535	071107	000000	072031			PCB+31				; .. 30
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 265
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0436

 11536
 11537					;#********************************************************************
 11538					;* IPTAB - PTABLE initial data
 11539					;#********************************************************************
 11540
 11541	071110	000000	000000		IPTAB:	EXP	0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17
 11542	071111	000000	000001
 11543	071112	000000	000002
 11544	071113	000000	000003
 11545	071114	000000	000004
 11546	071115	000000	000005
 11547	071116	000000	000006
 11548	071117	000000	000007
 11549	071120	000000	000010
 11550	071121	000000	000011
 11551	071122	000000	000012
 11552	071123	000000	000013
 11553	071124	000000	000014
 11554	071125	000000	000015
 11555	071126	000000	000016
 11556	071127	000000	000017
 11557
 11558
 11559					;#********************************************************************
 11560					;* IMTAB - MTABLE initial data
 11561					;#********************************************************************
 11562
 11563	071130	000000	000060		IMTAB:	EXP	1B30!1B31,1B0		; 0
 11564	071131	400000	000000
 11565	071132	000000	000120			EXP	2B30!1B31,1B0		; 1
 11566	071133	400000	000000
 11567	071134	000000	000160			EXP	3B30!1B31,1B0		; 2
 11568	071135	400000	000000
 11569	071136	000000	000220			EXP	4B30!1B31,1B0		; 3
 11570	071137	400000	000000
 11571	071140	000000	000260			EXP	5B30!1B31,1B0		; 4
 11572	071141	400000	000000
 11573	071142	000000	000320			EXP	6B30!1B31,1B0		; 5
 11574	071143	400000	000000
 11575	071144	000000	000360			EXP	7B30!1B31,1B0		; 6
 11576	071145	400000	000000
 11577	071146	000000	000420			EXP	10B30!1B31,1B0		; 7
 11578	071147	400000	000000
 11579	071150	000000	000460			EXP	11B30!1B31,1B0		; 10
 11580	071151	400000	000000
 11581	071152	000000	000520			EXP	12B30!1B31,1B0		; 11
 11582	071153	400000	000000
 11583	071154	000000	000560			EXP	13B30!1B31,1B0		; 12
 11584	071155	400000	000000
 11585	071156	000000	000620			EXP	14B30!1B31,1B0		; 13
 11586	071157	400000	000000
 11587	071160	000000	000660			EXP	15B30!1B31,1B0		; 14
 11588	071161	400000	000000
 11589	071162	000000	000720			EXP	16B30!1B31,1B0		; 15
 11590	071163	400000	000000
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 265-1
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0437

 11591	071164	000000	000760			EXP	17B30!1B31,1B0		; 16
 11592	071165	400000	000000
 11593	071166	000000	001020			EXP	20B30!1B31,1B0		; 17
 11594	071167	400000	000000
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 266
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0438

 11595
 11596					;#********************************************************************
 11597					;* PCB - Port Control Block
 11598					;#********************************************************************
 11599
 11600	072000				LOC	<.+1000>&777000			; align to a page boundary
 11601
 11602	072000	777777	777777		PCB:	-1				; INTLK for Cmd Queue
 11603	072001	000000	072001			PCB+1				; FLINK
 11604	072002	000000	072001			PCB+1				; BLINK
 11605	072003	000000	000000			0				; reserved
 11606
 11607	072004	777777	777777			-1				; INTLK for Rsp Queue
 11608	072005	000000	072005			PCB+5				; FLINK
 11609	072006	000000	072005			PCB+5				; BLINK
 11610	072007	000000	000000			0				; reserved
 11611
 11612	072010	777777	777777			-1				; INTLK for Unknown Protocol Free Queue
 11613	072011	000000	075000			QUNKF0				; FLINK
 11614	072012	000000	104000			QUNKF7				; BLINK
 11615	072013	000000	000620			^D400				; entry length
 11616	072014	000000	000000			0				; reserved
 11617
 11618	072015	000000	105000			PTABLE				; Protocol Type Table address
 11619	072016	000000	115320			MTABLE				; Multi-cast Address Table address
 11620	072017	000000	000000			0				; reserved
 11621
 11622	072020	000000	000000			0				; Error logout 0
 11623	072021	000000	000000			0				; Error logout 1
 11624	072022	000000	000000			0				; Error logout 2
 11625	072023	000000	000000			0				; Error logout 3
 11626
 11627	072024	000000	072000			PCB				; PCB base address
 11628	072025	000000	000004			4				; PIA interrupt level
 11629	072026	000000	000000			0				; interrupt vector
 11630	072027	000000	000000			0				; CCW command word
 11631	072030	000000	072031			PCB+31				; reserved to port
 11632	072031					BLOCK	^D50			; 50 words for counters
 11633
 11634					; Data areas
 11635
 11636	072114				LOC	<.+4>&777774			; align to 4 word boundary
 11637
 11638	072114				PACKET:	BLOCK	^D400			; packet being built
 11639
 11640	073000				LOC	<.+1000>&777000			; align to a page boundary
 11641
 11642	073000				RSPONS:	BLOCK	^D400			; response packet
 11643	073620				SAVPKT:	BLOCK	^D400			; saved packet data
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 267
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0439

 11644
 11645					;#********************************************************************
 11646					;* Command/Unknown protocol queues
 11647					;#********************************************************************
 11648
 11649	075000				LOC	<.+1000>&777000			; align to a page boundary
 11650
 11651					; Unknown protocol type free queue
 11652
 11653	075000				UNKBEG:
 11654	075000	000000	076000		QUNKF0:	QUNKF1				; FLINK
 11655	075001	000000	072011			PCB+11				; BLINK
 11656	075002					BLOCK	^D398			; remainder of entry
 11657
 11658	076000				LOC	<.+1000>&777000			; align to a page boundary
 11659
 11660	076000	000000	077000		QUNKF1:	QUNKF2				; FLINK
 11661	076001	000000	075000			QUNKF0				; BLINK
 11662	076002					BLOCK	^D398			; remainder of entry
 11663
 11664	077000				LOC	<.+1000>&777000			; align to a page boundary
 11665
 11666	077000	000000	100000		QUNKF2:	QUNKF3				; FLINK
 11667	077001	000000	076000			QUNKF1				; BLINK
 11668	077002					BLOCK	^D398			; remainder of entry
 11669
 11670	100000				LOC	<.+1000>&777000			; align to a page boundary
 11671
 11672	100000	000000	101000		QUNKF3:	QUNKF4				; FLINK
 11673	100001	000000	077000			QUNKF2				; BLINK
 11674	100002					BLOCK	^D398			; remainder of entry
 11675
 11676	101000				LOC	<.+1000>&777000			; align to a page boundary
 11677
 11678	101000	000000	102000		QUNKF4:	QUNKF5				; FLINK
 11679	101001	000000	100000			QUNKF3				; BLINK
 11680	101002					BLOCK	^D398			; remainder of entry
 11681
 11682	102000				LOC	<.+1000>&777000			; align to a page boundary
 11683
 11684	102000	000000	103000		QUNKF5:	QUNKF6				; FLINK
 11685	102001	000000	101000			QUNKF4				; BLINK
 11686	102002					BLOCK	^D398			; remainder of entry
 11687
 11688	103000				LOC	<.+1000>&777000			; align to a page boundary
 11689
 11690	103000	000000	104000		QUNKF6:	QUNKF7				; FLINK
 11691	103001	000000	102000			QUNKF5				; BLINK
 11692	103002					BLOCK	^D398			; remainder of entry
 11693
 11694	104000				LOC	<.+1000>&777000			; align to a page boundary
 11695
 11696	104000	000000	072011		QUNKF7:	PCB+11				; FLINK
 11697	104001	000000	103000			QUNKF6				; BLINK
 11698	104002					BLOCK	^D397			; remainder of entry
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 267-1
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0440

 11699	104617	000000	000000		UNKEND:	0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 268
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0441

 11700
 11701					;#********************************************************************
 11702					;* PTABLE - Protocol type free queues
 11703					;#********************************************************************
 11704
 11705	105000				LOC	<.+1000>&777000			; align to a page boundary
 11706
 11707	105000	400000	000000		PTABLE:	400000,,0			; Enable/Protocol type value 0
 11708	105001	000000	105071			PTTFQ+1				; FreeQ 0 queue header address
 11709	105002	000000	000000			0				; reserved
 11710
 11711	105003	400000	000020			400000,,20			; Enable/Protocol type value 1
 11712	105004	000000	105071			PTTFQ+1				; FreeQ 1 queue header address
 11713	105005	000000	000000			0				; reserved
 11714
 11715	105006	400000	000040			400000,,40			; Enable/Protocol type value 2
 11716	105007	000000	105071			PTTFQ+1				; FreeQ 2 queue header address
 11717	105010	000000	000000			0				; reserved
 11718
 11719	105011	400000	000060			400000,,60			; Enable/Protocol type value 3
 11720	105012	000000	105071			PTTFQ+1				; FreeQ 3 queue header address
 11721	105013	000000	000000			0				; reserved
 11722
 11723	105014	400000	000100			400000,,100			; Enable/Protocol type value 4
 11724	105015	000000	105071			PTTFQ+1				; FreeQ 4 queue header address
 11725	105016	000000	000000			0				; reserved
 11726
 11727	105017	400000	000120			400000,,120			; Enable/Protocol type value 5
 11728	105020	000000	105071			PTTFQ+1				; FreeQ 5 queue header address
 11729	105021	000000	000000			0				; reserved
 11730
 11731	105022	400000	000140			400000,,140			; Enable/Protocol type value 6
 11732	105023	000000	105071			PTTFQ+1				; FreeQ 6 queue header address
 11733	105024	000000	000000			0				; reserved
 11734
 11735	105025	400000	000160			400000,,160			; Enable/Protocol type value 7
 11736	105026	000000	105071			PTTFQ+1				; FreeQ 7 queue header address
 11737	105027	000000	000000			0				; reserved
 11738
 11739	105030	400000	000200			400000,,200			; Enable/Protocol type value 10
 11740	105031	000000	105071			PTTFQ+1				; FreeQ 10 queue header address
 11741	105032	000000	000000			0				; reserved
 11742
 11743	105033	400000	000220			400000,,220			; Enable/Protocol type value 11
 11744	105034	000000	105071			PTTFQ+1				; FreeQ 11 queue header address
 11745	105035	000000	000000			0				; reserved
 11746
 11747	105036	400000	000240			400000,,240			; Enable/Protocol type value 12
 11748	105037	000000	105071			PTTFQ+1				; FreeQ 12 queue header address
 11749	105040	000000	000000			0				; reserved
 11750
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 269
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0442

 11751	105041	400000	000260			400000,,260			; Enable/Protocol type value 13
 11752	105042	000000	105071			PTTFQ+1				; FreeQ 13 queue header address
 11753	105043	000000	000000			0				; reserved
 11754
 11755	105044	400000	000300			400000,,300			; Enable/Protocol type value 14
 11756	105045	000000	105071			PTTFQ+1				; FreeQ 14 queue header address
 11757	105046	000000	000000			0				; reserved
 11758
 11759	105047	400000	000320			400000,,320			; Enable/Protocol type value 15
 11760	105050	000000	105071			PTTFQ+1				; FreeQ 15 queue header address
 11761	105051	000000	000000			0				; reserved
 11762
 11763	105052	400000	000340			400000,,340			; Enable/Protocol type value 16
 11764	105053	000000	105071			PTTFQ+1				; FreeQ 16 queue header address
 11765	105054	000000	000000			0				; reserved
 11766
 11767	105055	400000	000360			400000,,360			; Enable/Protocol type value 17
 11768	105056	000000	105071			PTTFQ+1				; FreeQ 17 queue header address
 11769	105057	000000	000000			0				; reserved
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 270
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0443

 11770
 11771					; Protocol table queue
 11772
 11773	105070				LOC	<.+10>&777770			; align to 8 word boundary
 11774
 11775	105070				PTTBEG:
 11776	105070	777777	777777		PTTFQ:	-1				; interlock word
 11777	105071	000000	105074			PTTF0				; FLINK
 11778	105072	000000	115000			PTTF17				; BLINK
 11779	105073	000000	000310			^D200				; entry length
 11780
 11781	105074	000000	106000		PTTF0:	PTTF1				; FLINK
 11782	105075	000000	105071			PTTFQ+1				; BLINK
 11783	105076					BLOCK	^D198			; remainder of entry
 11784
 11785	106000				LOC	<.+1000>&777000			; align to a page boundary
 11786
 11787	106000	000000	106310		PTTF1:	PTTF2				; FLINK
 11788	106001	000000	105074			PTTF0				; BLINK
 11789	106002					BLOCK	^D198			; remainder of entry
 11790
 11791	106310	000000	107000		PTTF2:	PTTF3				; FLINK
 11792	106311	000000	106000			PTTF1				; BLINK
 11793	106312					BLOCK	^D198			; remainder of entry
 11794
 11795	107000				LOC	<.+1000>&777000			; align to a page boundary
 11796
 11797	107000	000000	107310		PTTF3:	PTTF4				; FLINK
 11798	107001	000000	106310			PTTF2				; BLINK
 11799	107002					BLOCK	^D198			; remainder of entry
 11800
 11801	107310	000000	110000		PTTF4:	PTTF5				; FLINK
 11802	107311	000000	107000			PTTF3				; BLINK
 11803	107312					BLOCK	^D198			; remainder of entry
 11804
 11805	110000				LOC	<.+1000>&777000			; align to a page boundary
 11806
 11807	110000	000000	110310		PTTF5:	PTTF6				; FLINK
 11808	110001	000000	107310			PTTF4				; BLINK
 11809	110002					BLOCK	^D198			; remainder of entry
 11810
 11811	110310	000000	111000		PTTF6:	PTTF7				; FLINK
 11812	110311	000000	110000			PTTF5				; BLINK
 11813	110312					BLOCK	^D198			; remainder of entry
 11814
 11815	111000				LOC	<.+1000>&777000			; align to a page boundary
 11816
 11817	111000	000000	111310		PTTF7:	PTTF10				; FLINK
 11818	111001	000000	110310			PTTF6				; BLINK
 11819	111002					BLOCK	^D198			; remainder of entry
 11820
 11821	111310	000000	112000		PTTF10:	PTTF11				; FLINK
 11822	111311	000000	111000			PTTF7				; BLINK
 11823	111312					BLOCK	^D198			; remainder of entry
 11824
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 270-1
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0444

 11825	112000				LOC	<.+1000>&777000			; align to a page boundary
 11826
 11827	112000	000000	112310		PTTF11:	PTTF12				; FLINK
 11828	112001	000000	111310			PTTF10				; BLINK
 11829	112002					BLOCK	^D198			; remainder of entry
 11830
 11831	112310	000000	113000		PTTF12:	PTTF13				; FLINK
 11832	112311	000000	112000			PTTF11				; BLINK
 11833	112312					BLOCK	^D198			; remainder of entry
 11834
 11835	113000				LOC	<.+1000>&777000			; align to a page boundary
 11836
 11837	113000	000000	113310		PTTF13:	PTTF14				; FLINK
 11838	113001	000000	112310			PTTF12				; BLINK
 11839	113002					BLOCK	^D198			; remainder of entry
 11840
 11841	113310	000000	114000		PTTF14:	PTTF15				; FLINK
 11842	113311	000000	113000			PTTF13				; BLINK
 11843	113312					BLOCK	^D198			; remainder of entry
 11844
 11845	114000				LOC	<.+1000>&777000			; align to a page boundary
 11846
 11847	114000	000000	114310		PTTF15:	PTTF16				; FLINK
 11848	114001	000000	113310			PTTF14				; BLINK
 11849	114002					BLOCK	^D198			; remainder of entry
 11850
 11851	114310	000000	115000		PTTF16:	PTTF17				; FLINK
 11852	114311	000000	114000			PTTF15				; BLINK
 11853	114312					BLOCK	^D198			; remainder of entry
 11854
 11855	115000				LOC	<.+1000>&777000			; align to a page boundary
 11856
 11857	115000	000000	105071		PTTF17:	PTTFQ+1				; FLINK
 11858	115001	000000	114310			PTTF16				; BLINK
 11859	115002					BLOCK	^D197			; remainder of entry
 11860	115307	000000	000000		PTTEND:	0
 11861
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 271
DFNIA1	MAC	18-Feb-84 20:30		Port Control Block and Data Areas                                                  SEQ 0445

 11862
 11863					;#********************************************************************
 11864					;* MTABLE - Table of multi-cast addresses
 11865					;#********************************************************************
 11866
 11867	115320				LOC	<.+10>&777770			; align to 8 word boundary
 11868
 11869	115320				MTABLE:
 11870	115320	000000	000060		MCAT0:	EXP	1B30!1B31,1B0
 11871	115321	400000	000000
 11872	115322	000000	000120		MCAT1:	EXP	2B30!1B31,1B0
 11873	115323	400000	000000
 11874	115324	000000	000160		MCAT2:	EXP	3B30!1B31,1B0
 11875	115325	400000	000000
 11876	115326	000000	000220		MCAT3:	EXP	4B30!1B31,1B0
 11877	115327	400000	000000
 11878	115330	000000	000260		MCAT4:	EXP	5B30!1B31,1B0
 11879	115331	400000	000000
 11880	115332	000000	000320		MCAT5:	EXP	6B30!1B31,1B0
 11881	115333	400000	000000
 11882	115334	000000	000360		MCAT6:	EXP	7B30!1B31,1B0
 11883	115335	400000	000000
 11884	115336	000000	000420		MCAT7:	EXP	10B30!1B31,1B0
 11885	115337	400000	000000
 11886	115340	000000	000460		MCAT10:	EXP	11B30!1B31,1B0
 11887	115341	400000	000000
 11888	115342	000000	000520		MCAT11:	EXP	12B30!1B31,1B0
 11889	115343	400000	000000
 11890	115344	000000	000560		MCAT12:	EXP	13B30!1B31,1B0
 11891	115345	400000	000000
 11892	115346	000000	000620		MCAT13:	EXP	14B30!1B31,1B0
 11893	115347	400000	000000
 11894	115350	000000	000660		MCAT14:	EXP	15B30!1B31,1B0
 11895	115351	400000	000000
 11896	115352	000000	000720		MCAT15:	EXP	16B30!1B31,1B0
 11897	115353	400000	000000
 11898	115354	000000	000760		MCAT16:	EXP	17B30!1B31,1B0
 11899	115355	400000	000000
 11900	115356	000000	001020		MCAT17:	EXP	20B30!1B31,1B0
 11901	115357	400000	000000
 11902
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 272
DFNIA1	MAC	18-Feb-84 20:30		SPEAR Reporting                                                                    SEQ 0446

 11903						SUBTTL	SPEAR Reporting
 11904
 11905					;#********************************************************************
 11906					;* SPREP1 - Print initial SPEAR report 'diagnostic started'
 11907					;#********************************************************************
 11908
 11909	115360	332 00 0 00 134255'	SPREP1:	SKIPE	UDEBUG			; debug mode?
 11910	115361	263 17 0 00 000000 		RTN				; yes - return
 11911	115362	332 00 0 00 030037 		SKIPE	USER			; exec mode?
 11912	115363	332 00 0 00 134244'		SKIPE	SPEAR1			; already done?
 11913	115364	263 17 0 00 000000 		RTN				; yes - return
 11914
 11915					; Check switches first
 11916
 11917	115365	261 17 0 00 000000 		RPUT	(0,1)			; save AC's
 11918
 11919	115367	260 17 0 00 042614*		GO	SWITT			; get program switches
 11920	115370	602 00 0 00 004000 		TRNE	DSPEAR			; SPEAR reporting disabled?
 11921	115371	254 00 0 00 115402 		JRST	SPRE1X			; yes - exit
 11922
 11923					; Get PPN and build entry / get time and insert it
 11924
 11925	115372	260 17 0 00 115564 	SPCHK1:	GO	GETPPN			; get user's PPN
 11926	115373	202 01 0 00 115417 		MOVEM	1,SENT10+11+1		; save in SPEAR entry block
 11927	115374	104 00 0 00 000227 		GTAD				; get time and day
 11928	115375	202 01 0 00 115413 		MOVEM	1,SENT10+5+1		; save it
 11929
 11930					; Make the entry
 11931
 11932	115376	201 01 0 00 115405 		MOVEI	1,SENT10		; get address of argument block
 11933	115377	201 02 0 00 000013 		MOVEI	2,^D10+1		; get length
 11934	115400	104 00 0 00 000527 	S1:	SYERR				; write to SYSERR file
 11935
 11936					; Exit
 11937
 11938	115401	476 00 0 00 134244'		SETOM	SPEAR1			; set 'SPEAR initial msg done' flag
 11939	115402	262 17 0 00 000001 	SPRE1X:	RGET	(1,0)			; restore AC's
 11940
 11941	115404	263 17 0 00 000000 		RTN				; return
 11942
 11943					; SPEAR entry block 10
 11944
 11945	115405	250000	000000		SENT10:	250000,,0			; event type
 11946	115406	000000	000000			0				; zero
 11947	115407	000000	000000			0				; zero
 11948	115410	000000	000000			0				; zero
 11949	115411	000000	000000			0				; (for Release 6.0 or later)
 11950	115412	000000	020002			20002				; time of occurence block
 11951	115413	000000	000000			0				; time
 11952	115414	000000	100004			0,,100004			; 4 words, type 10 code
 11953	115415	44 46 56 51 41 00 		SIXBIT	/DFNIA/			; diagnostic name
 11954	115416	000000	000002			MCNVER,,DECVER			; diagnostic version
 11955	115417	000000	000000			0				; user PPN
 11956	115420	000000	000000			0
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 273
DFNIA1	MAC	18-Feb-84 20:30		SPEAR Reporting                                                                    SEQ 0447

 11957
 11958					;#********************************************************************
 11959					;* SPREP2 - Print error or successful completion SPEAR report
 11960					;#********************************************************************
 11961
 11962	115421	336 00 0 00 134255'	SPREP2:	SKIPN	UDEBUG			; debug mode?
 11963	115422	336 00 0 00 030037 		SKIPN	USER			; exec mode?
 11964	115423	263 17 0 00 000000 		RTN				; yes - return
 11965
 11966					; First check if anything should be reported now
 11967
 11968	115424	261 17 0 00 000000 		PUT	0			; save AC0
 11969	115425	200 00 0 00 134245'		MOVE	SPEAR2			; get reporting flag
 11970	115426	322 00 0 00 115432 		JUMPE	SPRE2A			; nothing yet? yes - continue
 11971	115427	316 00 0 00 124130 		CAMN	[-1]			; already reported an error?
 11972						JRST	[GET			; yes - exit
 11973	115430	254 00 0 00 133357 			 RTN]
 11974						JUMPE	ERFLG,[GET		; error this time? no - exit
 11975	115431	322 15 0 00 133357 			       RTN]
 11976
 11977					; Check switches
 11978
 11979	115432	261 17 0 00 000001 	SPRE2A:	RPUT	(1,2,3,4)		; save AC's
 11980
 11981	115436	260 17 0 00 115367*		GO	SWITT			; get program switches
 11982	115437	602 00 0 00 004000 		TRNE	DSPEAR			; SPEAR reporting disabled?
 11983	115440	254 00 0 00 115514 		JRST	SPRE2X			; yes - exit
 11984
 11985					; Initialize entry
 11986
 11987	115441	402 00 0 00 115536 	SPCHK2:	SETZM	SENT11+^D11+1		; clear test number
 11988	115442	402 00 0 00 115540 		SETZM	SENT11+^D13+1		; clear test description length
 11989	115443	201 02 0 00 000003 		MOVEI	2,3			; set block length to 3 words
 11990	115444	137 02 0 00 133361 		DPB	2,[POINT 9,SEN11L,35]	; save length
 11991	115445	322 15 0 00 115500 		JUMPE	ERFLG,SPRE2C		; error? no - continue
 11992
 11993					; Insert test name
 11994
 11995	115446	200 01 0 00 133362 		MOVE	1,[SIXBIT /TST0  /]	; get SIXBIT 'TST'
 11996	115447	135 00 0 00 133363 		LDB	[POINT 3,TSTNUM,29]	; get digit 1
 11997	115450	271 00 0 00 000020 		ADDI	20			; convert to SIXBIT
 11998	115451	137 00 0 00 133364 		DPB	[POINT 6,1,23]		; save it
 11999	115452	135 00 0 00 133365 		LDB	[POINT 3,TSTNUM,32]	; get digit 2
 12000	115453	271 00 0 00 000020 		ADDI	20			; convert to SIXBIT
 12001	115454	137 00 0 00 133366 		DPB	[POINT 6,1,29]		; save it
 12002	115455	135 00 0 00 133367 		LDB	[POINT 3,TSTNUM,35]	; get digit 3
 12003	115456	271 00 0 00 000020 		ADDI	20			; convert to SIXBIT
 12004	115457	137 00 0 00 133370 		DPB	[POINT 6,1,35]		; save it
 12005	115460	202 01 0 00 115536 		MOVEM	1,SENT11+^D11+1		; save test number
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 274
DFNIA1	MAC	18-Feb-84 20:30		SPEAR Reporting                                                                    SEQ 0448

 12006
 12007					; Insert test description
 12008
 12009	115461	200 01 0 00 115576 		MOVE	1,TSTNUM		; get test number
 12010	115462	550 01 0 01 032120 		HRRZ	1,TSTNAM(1)		; get address of test description
 12011	115463	474 02 0 00 000000 		SETO	2,			; initialize character count
 12012	115464	200 03 0 00 133371 		MOVE	3,[POINT 7,0]		; get initial byte pointer
 12013	115465	540 03 0 00 000001 		HRR	3,1			; insert address
 12014	115466	200 04 0 00 133372 		MOVE	4,[POINT 7,SENT11+^D13+1];get initial byte pointer
 12015	115467	134 00 0 00 000003 	SPRE2B:	ILDB	3			; get a byte
 12016	115470	136 00 0 00 000004 		IDPB	4			; save it
 12017	115471	350 00 0 00 000002 		AOS	2			; increment byte count
 12018	115472	326 00 0 00 115467 		JUMPN	SPRE2B			; loop till done
 12019
 12020					; Insert block length ...
 12021
 12022	115473	231 02 0 00 000005 		IDIVI	2,5			; calculate number of words
 12023	115474	332 00 0 00 000003 		SKIPE	3			; remainder?
 12024	115475	350 00 0 00 000002 		AOS	2			; yes - add in partial word
 12025	115476	271 02 0 00 000003 		ADDI	2,3			; calculate subtotal
 12026	115477	137 02 0 00 133361 		DPB	2,[POINT 9,SEN11L,35]	; save length
 12027
 12028					; Add time and day
 12029
 12030	115500	104 00 0 00 000227 	SPRE2C:	GTAD				; get time and day
 12031	115501	202 01 0 00 115530 		MOVEM	1,SENT11+5+1		; save it
 12032
 12033					; Get PPN and build entry / get time and insert it
 12034
 12035	115502	260 17 0 00 115564 		GO	GETPPN			; get user's PPN
 12036	115503	202 01 0 00 115534 		MOVEM	1,SEN11L-1		; save in SPEAR entry block
 12037
 12038					; Make the SPEAR entry
 12039
 12040	115504	201 01 0 00 115522 		MOVEI	1,SENT11		; get address of argument block
 12041	115505	135 02 0 00 133361 		LDB	2,[POINT 9,SEN11L,35]	; get length
 12042	115506	271 02 0 00 000013 		ADDI	2,^D10+1		; calculate total block length
 12043	115507	104 00 0 00 000527 	S2:	SYERR				; write to SYSERR file
 12044
 12045					; Exit
 12046
 12047	115510	200 00 0 00 124130 		MOVE	[-1]			; get flag for 'Error message'
 12048	115511	336 00 0 00 000015 		SKIPN	ERFLG			; error flag set?
 12049	115512	200 00 0 00 125204 		MOVE	[-2]			; no - get flag for 'Final message'
 12050	115513	202 00 0 00 134245'		MOVEM	SPEAR2			; set 'SPEAR err/fin msg done' flag
 12051	115514	262 17 0 00 000004 	SPRE2X:	RGET	(4,3,2,1,0)		; restore AC's
 12052
 12053	115521	263 17 0 00 000000 		RTN				; return
 12054
 12055					; SPEAR entry block 11
 12056
 12057	115522	250000	000000		SENT11:	250000,,0			; event type
 12058	115523	000000	000000			0				; zero
 12059	115524	000000	000000			0				; zero
 12060	115525	000000	000000			0				; zero
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 274-1
DFNIA1	MAC	18-Feb-84 20:30		SPEAR Reporting                                                                    SEQ 0449

 12061	115526	000000	000000			0				; (for Release 6.0 or later)
 12062	115527	000000	020002			20002				; time of occurence block
 12063	115530	000000	000000			0				; time
 12064
 12065	115531	000000	100004			0,,100004			; 4 words, type 10 code
 12066	115532	44 46 56 51 41 00 		SIXBIT /DFNIA/			; diagnostic name
 12067	115533	000000	000002			MCNVER,,DECVER			; diagnostic version
 12068	115534	000000	000000			0				; user PPN
 12069
 12070	115535	000000	110000		SEN11L:	0,,110000			; type 11 code
 12071	115536	000000	000000			0				; failing test name
 12072	115537	000000	000003			3				; failing test description offset
 12073	115540					BLOCK	^D20			; ASCII test description
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 275
DFNIA1	MAC	18-Feb-84 20:30		SPEAR Reporting                                                                    SEQ 0450

 12074
 12075					;#********************************************************************
 12076					;* GETPPN - Find out PPN number
 12077					;#********************************************************************
 12078
 12079	115564	261 17 0 00 000002 	GETPPN:	RPUT	(2,3)			; save AC's
 12080
 12081	115566	474 01 0 00 000000 		SETO	1,			; indicate current job
 12082	115567	200 02 0 00 133373 		MOVE	2,[-1,,1]		; place 1 word into AC1
 12083	115570	201 03 0 00 000003 		MOVEI	3,3			; point to connected directory number
 12084	115571	104 00 0 00 000507 		GETJI				; get job information
 12085	115572	400 01 0 00 000000 		SETZ	1,			; error - just clear AC1
 12086	115573	262 17 0 00 000003 		RGET	(3,2)			; restore AC's
 12087
 12088	115575	263 17 0 00 000000 		RTN				; return
 12089
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 276
DFNIA1	MAC	18-Feb-84 20:30		Miscellaneous Test Variables                                                       SEQ 0451

 12090						SUBTTL	Miscellaneous Test Variables
 12091
 12092					;#*********************************************************************
 12093					; Current Test Data
 12094					;#*********************************************************************
 12095
 12096	115576	000 00 0 00 000000 	TSTNUM:	Z				; current test number (1-n)
 12097	115577	000 00 0 00 000000 	TSTSUB:	Z				; current subtest number
 12098	115600	000 00 0 00 000000 	TSTPC:	Z				; current test PC
 12099	115601	000 00 0 00 000000 	TSTFLG:	Z				; current test flags
 12100	115602	000 00 0 00 000000 	TSTMSK:	Z				; mask to determine what test to run
 12101	115603	000 00 0 00 000000 	TSTREP:	Z				; number of test repetitions done
 12102	115604	000 00 0 00 000000 	TSTREQ:	Z				; number of test repetitions requested
 12103	115605	000 00 0 00 000000 	TSTMUL:	Z				; multiple test flag
 12104	115606	000 00 0 00 000000 	TSTOFF:	Z				; relocatable offset of test module
 12105	115607	000 00 0 00 000000 	TSTREL:	Z				; reliability mode repeat count
 12106	115610	000 00 0 00 000000 	TSTCNT:	Z				; reliability mode repeat count
 12107
 12108	115611	000 00 0 00 000000 	PMODE:	Z				; program mode
 12109
 12110	115612	056400	000000		NIPORT:	56400,,0			; NI port controller number
 12111
 12112
 12113					;#********************************************************************
 12114					; BUFF - Buffer area
 12115					;#********************************************************************
 12116
 12117	115613				BUFF:	BLOCK	^D512
 12118
 12119
 12120					;#********************************************************************
 12121					; PATCH - Patch Area
 12122					;#********************************************************************
 12123
 12124	116613				PATCH0:
 12125	116613				PATCH:	BLOCK	100			; patch area
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 277
DFNIA1	MAC	18-Feb-84 20:30		Miscellaneous Test Variables                                                       SEQ 0452

 12126
 12127					;#********************************************************************
 12128					;* Special code to test SPEAR entries
 12129					;#********************************************************************
 12130
 12131	116713	200 00 0 00 117045 	STEST:	MOVE	[JFCL]			; get noop
 12132	116714	202 00 0 00 115400 		MOVEM	S1			; delete SYERR call #1
 12133	116715	202 00 0 00 115507 		MOVEM	S2			; delete SYERR call #2
 12134	116716	260 17 0 00 116722 		GO	.+4			; do it
 12135	116717	201 01 0 00 115405 		MOVEI	1,SENT10		; get address to print
 12136	116720	260 17 0 00 116755 		GO	STESTP			; print it
 12137	116721	254 00 0 00 116725 		JRST	STEST0			; continue
 12138	116722	261 17 0 00 000000 		RPUT	(0,1)			; save AC's
 12139
 12140	116724	254 00 0 00 115372 		JRST	SPCHK1			; check entry type 1
 12141
 12142	116725	260 17 0 00 116731 	STEST0:	GO	.+4			; do it
 12143	116726	201 01 0 00 115522 		MOVEI	1,SENT11		; get address to print
 12144	116727	260 17 0 00 116755 		GO	STESTP			; print it
 12145	116730	254 00 0 00 116740 		JRST	STEST1			; continue
 12146	116731	261 17 0 00 000000 		RPUT	(0,1,2,3,4)		; save AC's
 12147
 12148	116736	400 15 0 00 000000 		SETZ	ERFLG,			; clear error flag
 12149	116737	254 00 0 00 115441 		JRST	SPCHK2			; check entry type 2 (no error)
 12150
 12151	116740	260 17 0 00 116744 	STEST1:	GO	.+4			; do it
 12152	116741	201 01 0 00 115522 		MOVEI	1,SENT11		; get address to print
 12153	116742	260 17 0 00 116755 		GO	STESTP			; print it
 12154	116743	254 00 0 00 030007 		JRST	SRTDDT			; continue
 12155	116744	261 17 0 00 000000 		RPUT	(0,1,2,3,4)		; save AC's
 12156
 12157	116751	474 15 0 00 000000 		SETO	ERFLG,			; set error flag
 12158	116752	201 00 0 00 000012 		MOVEI	12			; get test number
 12159	116753	202 00 0 00 115576 		MOVEM	TSTNUM			; save it
 12160	116754	254 00 0 00 115441 		JRST	SPCHK2			; check entry type 2 (error)
 12161
 12162	116755	037 00 0 00 133374 	STESTP:	TMSGCD	<Buffer:>
 12163	116756	505 01 0 00 777753 		HRLI	1,-25			; build AOBJN word
 12164	116757	200 00 0 01 000000 		MOVE	(1)			; get data
 12165	116760	037 13 0 00 000000 		PNTHW				; print
 12166	116761	037 00 0 00 030242 		PCRL
 12167	116762	253 01 0 00 116757 		AOBJN	1,STESTP+2		; loop till done
 12168	116763	263 17 0 00 000000 		RTN				; return
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 278
DFNIA1	MAC	18-Feb-84 20:30		Miscellaneous Test Variables                                                       SEQ 0453

 12169
 12170					;#********************************************************************
 12171					;* Special code to produce an EXE version
 12172					;
 12173					; To produce a standard DFCIA.EXE, just type EXE$G in DDT, then ^Z,
 12174					; then CSAVE DFCIA.EXE.  Non-DIAG version type EXEN$G.
 12175					;#********************************************************************
 12176
 12177	116764	200 00 0 00 122777 	EXEN:	MOVE	[SKIPA]
 12178	116765	202 00 0 00 000000*		MOVEM	REQ1
 12179	116766	202 00 0 00 000000*		MOVEM	REQ2
 12180	116767	202 00 0 00 000000*		MOVEM	REL
 12181	116770	200 00 0 00 133377 		MOVE	[10,,140]
 12182	116771	334 00 0 00 000000 		SKIPA	
 12183	116772	200 00 0 00 130661 	EXE:	MOVE	[10,,0]
 12184	116773	202 00 0 00 030046 		MOVEM	CONSW
 12185	116774	200 00 0 00 133400 		MOVE	[SETOM $$TOGG]
 12186	116775	202 00 0 00 030642 		MOVEM	START+31
 12187	116776	201 00 0 00 030000 		MOVEI	30000
 12188	116777	542 00 0 00 000120 		HRRM	.JBSA
 12189	117000	402 00 0 00 030056 		SETZM	$ONETM
 12190	117001	402 00 0 00 000000*		SETZM	HAVIPA
 12191	117002	402 00 0 00 000000*		SETZM	LOCDON
 12192	117003	402 00 0 00 000016 		SETZM	MBCN
 12193	117004	402 00 0 00 044330 		SETZM	CNAME
 12194	117005	254 00 0 00 030007 		JRST	SRTDDT
 12195
 12196	117006	201 01 0 00 000004 	P7:	MOVEI	1,4
 12197	117007	254 00 0 00 117015 		JRST	PG
 12198	117010	201 01 0 00 000003 	P5:	MOVEI	1,3
 12199	117011	254 00 0 00 117015 		JRST	PG
 12200	117012	201 01 0 00 000002 	P3:	MOVEI	1,2
 12201	117013	334 00 0 00 000000 		SKIPA
 12202	117014	201 01 0 00 000001 	P1:	MOVEI	1,1
 12203					PG:	MOVE	1,[0
 12204							   54400,,0
 12205							   55400,,0
 12206							   56400,,0
 12207	117015	200 01 0 01 133401 			   57400,,0](1)
 12208	117016	202 01 0 00 115612 		MOVEM	1,NIPORT
 12209	117017	254 00 0 00 030007 		JRST	SRTDDT
 12210
 12211
 12212					;#********************************************************************
 12213					; End of Mainline Module
 12214					;#********************************************************************
 12215
 12216	117020				D1LIT:	XLIST
 12217
NO ERRORS DETECTED

PROGRAM BREAK IS 134262
ABSOLUTE BREAK IS 134142
CPU TIME USED 01:46.914
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page 278-1
DFNIA1	MAC	18-Feb-84 20:30		Miscellaneous Test Variables                                                       SEQ 0454

130P CORE USED
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page S-1
DFNIA1	MAC	18-Feb-84 20:30		SYMBOL TABLE                                                                       SEQ 0455

AADDR		000000	ext	CHKQUE		067223		CWORDR		035606	int	DDALU		036412		
ABORT		400000	spd	CHKQUX		067234		D1LIT		117020		DDALU0		036416		
ADRPHY		065470		CHKRQV		067151	ent	DACRAM		035530		DDALUM		036570		
ADRQUE		065145		CHKRSP		067100	ent	DADDR		033702		DDALUX		036470		
ADRVIR		065312		CHKRSX		067144		DBCRAM		035525		DDCRAM		035522		
ALL	740000	000000	spd	CHKTAB		067243		DBPAC0		041435		DDCSR		033723		
ALTCHK	007000	000000		CLRBUF		124161	ext	DBPACK		041376		DDEBU1		035447		
ALTF		134143'	int	CLREBU		064403	ext	DBPACP		041432		DDEBUF		035443		
ALTMGO		030063		CMD0		032235		DBREA0		040457		DDEBUG		134151'	int	
ALUFR		036606		CMD1		032264		DBREAK		040455		DDLOC0		036717		
ALUTO		036607		CMD1A		032276		DC1ST		134150'		DDLOCM		037063		
ANEXT		035611		CMD2		032300		DCBR0		040552		DDLOCS		036713		
ARGFLG		066136	ext	CMDOPC		070164	ent	DCBR1		040563		DDLOCX		036764		
ARGUM		127172	ext	CMDPAK		134146'		DCBRK		040533		DDNEX0		040267		
BEGIN		030000		CMDQAV		000400	spd	DCCOD1		041063		DDNEX1		040276		
BONETM		134144'		CMDQUE		032314		DCCOD2		041107		DDNEX2		040303		
BPACK		065733	ent	CMDQUU		032317		DCCOD3		041111		DDNEX3		040310		
BPACK0		065763		CNAME		044330		DCCOD4		041117		DDNEX4		040313		
BPACKN		065731	ent	CNTPNT		067575	ent	DCCOD5		041121		DDNEX5		040316		
BPACKX		065770		CNTRC		000004	spd	DCCOD6		041127		DDNEX6		040321		
BPAK1		065776		CONPN0		043105		DCCODE		041055		DDNEXT		040241		
BPAK11		066134		CONPNT		043073	ent	DCLEAR		033745		DDPLI		037310		
BPAK1A		066024		CONPNX		043117		DCMAR0		037200		DDPLI0		037320		
BPAK4		066053		CONSW		030046		DCMAR1		037211		DDPLI1		037350		
BPAK6		066066		CONTBL		043151	int	DCMAR2		037226		DDPLIM		037367		
BPAK6A		066070		CONVI0		066656		DCMARK		037161		DDPLIX		037364		
BPAK6B		066107		CONVIE		066667		DCODPB		036053		DDPLM2		037373		
BPAK7		066115		CONVIR		066652	ent	DCOLDB		036031		DDPMU0		040353		
BPAK7A		066117		CONVIX		066663		DCOM0		035562		DDPMUL		040347		
BPAK7B		066130		CONVR0		042214		DCOM1		035577		DDPPA0		040376		
BPK11A		066136		CONVRE		042222		DCOM3A		035753		DDPPAK		040372		
BPK11B		066173		CONVRR		042207		DCOMA0		035726		DDPPT0		040330		
BSDFLG		033700		CONVRX		042223		DCOMA1		035731		DDPPTT		040324		
BUFCOM		000000	ext	CONVSX		122776	ext	DCOMA2		035750		DDRAR		035475		
BUFF		115613	int	CRAMFR		035602		DCOMA3		035751		DDTAB		040246		
BUFGEN		066240	ext	CRAMTO		035603		DCOMA4		035770		DDUMP		037533	int	
CADDR		035604	int	CRCCA0		066445		DCOMA5		035772		DDUMP0		037566		
CALL	200000	000000	spd	CRCCAL		066443		DCOMAA		035740		DDUMPM		037651		
CALMAR		134145'		CRCFIX		066457		DCOMAG		035712		DDUMPX		037643		
CALPAR		042551	ent	CRCOFF		066430	ext	DCOMAL		035707		DEALU		036304		
CBASE		030657	ext	CRCSAV		066262	ext	DCOMAX		035775		DEALU0		036325		
CCMIC		041173		CRCTAB		066431	ext	DCOMDB		035702		DEALU1		036345		
CCTAB1		041133		CSHFLG		030506		DCOMDE		035612		DEALUM		036565		
CCTAB3		041153		CSHMEM		030507		DCOMEX		036160		DEALUX		036405		
CCWPNT		041255	ext	CSREN0		042641		DCOMEZ		036201		DEBALU		036343		
CHINIT		065652	ext	CSREN1		042655		DCOMGO		035541		DEBEBU		035425		
CHKARG		120731	ext	CSREN2		042656		DCOML0		036206		DEBELO		036647		
CHKCSR		000000	ext	CSRENB		042666		DCOMLI		036204		DEBLAR		035460		
CHKIN0		066530		CSRENG		042627	ent	DCOMLX		036226		DEBSTK		040420		
CHKIN1		066535		CSRENS		134147'		DCOMP	000040	000000	spd	DEBTIM		042011	ext	
CHKIN2		066543		CSRENX		042660		DCOMSG		036007		DEBUG1		002000	spd	
CHKIN3		066555		CSRPNT		042605	ent	DCOMZE		036142		DEBUG2		001000	spd	
CHKINT		066516	ent	CSRPNX		042622		DCONF		042260		DEBUG3		000400	spd	
CHKINX		066556		CURTIM		042045	ext	DCONT		035405		DEBUG4		000200	spd	
CHKQU0		067226		CWORDL		035605	int	DCWPNT		041252		DEBUG6		000040	spd	
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page S-2
DFNIA1	MAC	18-Feb-84 20:30		SYMBOL TABLE                                                                       SEQ 0456

DECOP0		070211		DHELP1		032712		DSDAD1		033467		DSPCB2		033134		
DECOPC		070207		DIINIT		041353		DSDAD2		033472		DSPEAR		004000	spd	
DECOPX		070223		DIPRIN		041277		DSDADL		033511		DSPNT1		033566		
DECRAM		035517		DIQUEU		041453		DSDATA		033667		DSPNT2		033567		
DECSR		033713		DISGO		031205		DSEBU1		033113		DSPRIN		033706	int	
DECTAB		070225		DISLIS		031131		DSEBU2		033114		DSPTT1		033546		
DECVER		000002	spd	DISMS	104000	000167	int	DSET		032737		DSPTT2		033547		
DECYN		033357	ext	DISP0		030772		DSETAD		033024		DSRES1		033302		
DEEBUF		035422		DISP0A		031052		DSETBS		033333		DSRES2		033303		
DELAR		035455		DISP0B		031054		DSETCS		033045		DSSAD2		033520		
DELAY	005000	000000		DISP1		031062		DSETDA		033413		DSSCLR		034130		
DELOC0		036631		DISP2		031117		DSETEB		033102		DSSPN0		034117		
DELOC1		036652		DISPAT		030766		DSETFN		033142		DSSPNT		034106		
DELOCM		037056		DISPD		031106		DSETFO		033311		DSST0		034053		
DELOCS		036610		DISPE		031114		DSETHE		033655		DSST1		034067		
DELOCX		036706		DISPR		031100		DSETHL		033663		DSSTEP		034037		
DENE0		040166		DISPX		031120		DSETIN		033574		DSSTX		034073		
DENEX0		040222		DISQUE		031124		DSETLN		033373		DSSUM		033707		
DENEX1		040226		DISQUU		031127		DSETPA		033173		DSSUM1		033620		
DENEX2		040232		DLBR0		040616		DSETPC		033122		DSSUM2		033621		
DENEX3		040236		DLBR1		040631		DSETPD		033353		DSTAR0		033773		
DENEXT		040157		DLBR2		040650		DSETPL		033233		DSTART		033765		
DEPLI		037400		DLBRK		040577		DSETPP		033252		DSTOP		034014		
DEPLI0		037425		DLBRX		040656		DSETPR		033062		DSTOP1		034027		
DEPLI1		037437		DLCRAM		035536		DSETPT		033554		DSTPAT		033674		
DEPLIM		037475		DLGPNT		041260		DSETPV		033537		DSWIT		041266		
DEPLIX		037471		DLIST		040701		DSETPX		033266		DTRAC0		034041		
DERBUF		037526		DLMAR0		037251		DSETRE		033270		DTRACE		034034		
DESTA0		040431		DLMAR1		037264		DSETSA		033513		DTRANS		041045		
DESTAK		040415		DLMAR2		037300		DSETSU		033611		DTRFLG		134153'		
DESTAX		040446		DLMARK		037232		DSETUP		030706	ext	DWATC0		041572		
DESTAY		040447		DLMARX		037306		DSETWH		033626		DWATC1		041667		
DESTKM		040452		DLOAD		040660		DSFNM0		033156		DWATC2		041750		
DETAB		040204		DMARK		037103		DSFNM1		033162		DWATC3		042017		
DETBUF		037521		DMARK0		037105		DSFNM2		033163		DWATC4		042027		
DEVREL		031353	ext	DPINIT		041361		DSFOR1		033323		DWATC5		042032		
DEVREQ		030717	ext	DPLIH		037517		DSFOR2		033324		DWATC6		042043		
DFEXA0		041020		DPPCB		041464		DSFORL		033330		DWATC7		042050		
DFEXAM		041010		DPQUE0		041515		DSIDLE		041366		DWATC8		042120		
DFEXAX		041043		DPQUEU		041472		DSINIT		033752		DWATC9		042126		
DFILLN		041204		DRBR0		040512		DSINT		033710		DWATCA		042134		
DFILLP		041230		DRBRK		040510		DSINT1		033603		DWATCH		041531		
DFILN0		041215		DRCRAM		036263	ent	DSINT2		033604		DWATCQ		041567		
DFILP0		041241		DRESET		033740		DSLEN1		033405		DWATCX		042142		
DFLAG		134152'		DRMAR0		037134		DSLEN2		033406		DWATCY		042145		
DFLIS0		040764		DRMARK		037132		DSPAD1		033364		DWATLP		041712		
DFLIST		040753		DSADD1		033037		DSPAD2		033365		DWCRAM		036231	ent	
DFLISX		041006		DSADD2		033040		DSPAR1		033073		DWORDL		134154'		
DFLOAD		040714		DSADDR		033666		DSPAR2		033074		DWORDR		134155'		
DFVER0		040750		DSBSD1		033344		DSPAT		033673		DZALU		036473		
DFVERF		040737		DSBSD2		033345		DSPAT1		033220		DZALU0		036514		
DGRCV		000005	spd	DSBYTE		033672		DSPAT2		033221		DZALU1		036534		
DGSNT		000001	spd	DSCSR1		033054		DSPAT3		033231		DZALUM		036603		
DHELP		032645		DSCSR2		033055		DSPATX		033214		DZALUX		036562		
DHELP0		032657		DSDAD0		033433		DSPCB1		033133		DZCRAM		035533		
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page S-3
DFNIA1	MAC	18-Feb-84 20:30		SYMBOL TABLE                                                                       SEQ 0457

DZCSR		033732		GETJI	104000	000507	int	LASARG		033626	ext	MLNUM		134173'	int	
DZEBUF		035436		GETLOG		041263	ext	LASENT		066647		MLOAD0		064405		
DZLOC0		037010		GETPPN		115564		LAST	010000	000000	spd	MLOAD1		064427		
DZLOC1		037030		GETQU0		067006		LDCRAM		064456	ext	MLOAD2		064502		
DZLOCM		037076		GETQUE		066766	ent	LDCSR		127311	ext	MLOADN		064353	ent	
DZLOCS		036767		GETQUX		067016		LDEBUF		035453	ext	MLOADR		064425		
DZLOCX		037053		GO	260740	000000		LDEBUG		134166'	int	MLOADX		064505		
DZRAR		035507		GTAD	104000	000227	int	LDMCAT		000002	spd	MLOADY		064355	ent	
EADDR		000000	ext	HALT	254200	000000		LDPTT		000003	spd	MONTYP		030516		
ECODE		064334		HAVIPA		117001	ext	LDRAR		065654	ext	MPRUN		000010	spd	
ECOMP	000020	000000	spd	ICRC		066250		LENTRY		066563		MSG	100000	000000	spd	
EDEBUG		134156'	int	ICRC0		066333		LINCNT		134167'		MTABLE		115320	int	
ENABLE		030710	ext	ICRC1		066337		LINKG		070547		MULFLG		134174'		
ENATST		134157'		ICRC2		066354		LINKP		070537		MULINI		134175'		
ENDFIX		030577		ICRC3		066410		LINKV		070544		MVCOM		064366		
ENDUUO	037500	000004		ICRC4		066417		LINKV0		070551		MVFLAG		134176'		
EOPUUO	037700	000004		ICRCX		066424		LINKV1		070557		MVNUM		134177'		
EPLIH		037520		ICRCY		066432		LINKV2		070561		MVPNT		064536	ent	
ERESET		033743	ext	ICWA0		037767	ext	LINKVX		070563		MVPNT1		064556		
ERFLG		000015		IGNFLG		134163'		LINTAB		070567		MVPNTW		064615		
ERRPC		030052		IMTAB		071130		LOCDON		117002	ext	MVPNTX		064605		
EXE		116772		INHCRC		134164'		LOCFR		037101		MVREP		134200'		
EXEN		116764		INITPD		031344	ext	LOCPHY		030707	ext	MWBADR		064517		
FFF		066677	ext	INITPI		041356	ext	LOCTO		037102		MWBLAC		064525		
FFLAG		044331		INSQE1		066761		LOGPNT		041264	ext	MWBLCO		064522		
FGETW		044034	ext	INSQE2		066760		LOOFLG		134170'		MWBRAC		064533		
FINCMD		124131	ext	INSQUE		066703	ent	LOOP	100000	000000	spd	MWBRCO		064530		
FINECH		134160'	int	INTAPR		041342	ext	LOOPGM		040000	spd	MWDQUE		036120		
FINPUT		134161'	int	INTCON		041337	ext	LOOPTS		020000	spd	NCHAR		134201'		
FIOFF		131006	ext	INTCSR		041345	ext	MAPNEW		030143		NEWENT		134202'	int	
FLDLIS		036075		INTEND		120675	ext	MAXTST		000027	spd	NIA	200000	000000	spd	
FLOADB		044010		INTNUM		120676	ext	MBCN		000016		NIPORT		115612		
FLOADC		044074		INTPC		041325	ext	MCAT0		115320		NPACKL		134203'		
FLODB0		044024		INTTIM		041330	ext	MCAT1		115322		NPACKO		134204'		
FLODB1		044034		INTTYP		041350	ext	MCAT10		115340		NPACKQ		134205'		
FLODB2		044052		INTUSE		041333	ext	MCAT11		115342		NPACKR		134206'		
FLODBE		044066		IPACLR		065651	ext	MCAT12		115344		NPACKS		134207'		
FLODBX		044065		IPASRT		035410	ext	MCAT13		115346		NSARD		000010	spd	
FLODC0		044114		IPASST		040437	ext	MCAT14		115350		NSAWR		000011	spd	
FLODCX		044137		IPASTP		034017	ext	MCAT15		115352		NUMENT		066650	int	
FLONOP		044147		IPCB		071057		MCAT16		115354		NUMPNT		134210'		
FMTTYP		134162'		IPRIN0		041305		MCAT17		115356	int	OP		000011		
FNAME		044324		IPRINI		041316		MCAT2		115324		OPCPN0		070144		
FOARG		000000	ext	IPRINT		041302	ent	MCAT3		115326		OPCPNE		070155		
FORPNT		032032	ext	IPRINX		041312		MCAT4		115330		OPCPNT		070134	ent	
FORSEL		033677		IPTAB		071110		MCAT5		115332		OPCPNX		070161		
FSELEC	037240	000004		IQCMAX		066702		MCAT6		115334		OPRSEL		000010	spd	
FUERR		044231		IQFMIN		066701		MCAT7		115336		P		000017		
FUERR0		044254		IQFUL		066700		MCATLD		000002	spd	P1		117014		
FUNCT	040000	000000	spd	ISTOP		131217	ext	MCNVER		000000	spd	P3		117012		
FVERF0		044164		ITERAT		000005	spd	MCPUS		134171'		P5		117010		
FVERF1		044207		ITEXT		066211		MDEBUG		134172'	int	P7		117006		
FVERFC		044152		ITEXT0		066225		MLIST		064625		PACK1		067516		
FVERFE		044223		ITRCNT		030024		MLIST0		064634		PACK10		070041		
GET	262740	000000		LARG2		134165'		MLISTX		064657		PACK11		070073		
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page S-4
DFNIA1	MAC	18-Feb-84 20:30		SYMBOL TABLE                                                                       SEQ 0458

PACK1A		067545		PLOG		037755		PSPF	037040	000040		QUNKF7		104000		
PACK2		067566		PLOG0		040001		PSTAT0		070312		RALUB		134217'		
PACK3		067570		PLOGM		040017		PSTAT1		070314		RALUE		134220'		
PACK4		067572		PMISC0		070122		PSTAT2		070325		RANCNT		134221'		
PACK4B		067577		PMODE		115611	int	PSTATS		070276		RANDBS		030022		
PACK4C		067612		PNT1	037040	000000		PSTATX		070330		RANGEN		031606		
PACK4D		067614		PNT2	037100	000000		PTABLE		105000	int	RANNUM		134222'		
PACK4E		067617		PNT3	037140	000000		PTCHK0		067204		RCCNT		000004	spd	
PACK4F		067624		PNT4	037200	000000		PTCHK1		067214		RDADD0		065676		
PACK4G		067644		PNT4F	037200	000001		PTCHKP		067164		RDADDR		065672	ent	
PACK4T		067677	ent	PNTADR	037400	000000		PTCHKX		067215		RDBF		040054		
PACK4X		067660		PNTCI	037000	000000		PTCHKY		067216		RDBUF1		037675		
PACK4Y		067671		PNTCIF	037040	000000		PTEXT		070431		RDBUF2		037722		
PACK5		067770		PNTCRM		042433		PTEXT0		070440		RDBUF3		037740		
PACK6		070017		PNTDCC	003000	000000		PTEXT1		070452		RDBUFR		037713		
PACK7		070030		PNTDCF	037640	000001		PTEXT2		070454		RDBUFT		037656		
PACKET		072114	int	PNTDCL	010000	000000		PTEXT3		070457		RDBUFX		037746		
PACKG		070115		PNTDEC	037640	000000		PTIME		127314	ext	RDCRAM		130470	ext	
PADDR		070261		PNTENB		030220		PTTBEG		105070		RDCSR		127306	ext	
PADFLG		033701		PNTHST		035340		PTTEND		115307		RDEBUF		040117	ext	
PAG		000010	spd	PNTHW	037540	000000		PTTF0		105074		RDLAR		041101	ext	
PARFLG		033670	int	PNTHWF	037540	000001		PTTF1		106000		RDNSA		000010	spd	
PASCNT		030047		PNTMSF	037040	000000		PTTF10		111310		RDPLI		000007	spd	
PASPNT		030747		PNTMSG	037000	000000		PTTF11		112000		REL		116767	ext	
PAT		000014		PNTOCC	001000	000000		PTTF12		112310		RELIAB		000400	spd	
PAT1		134211'		PNTOCF	037740	000003		PTTF13		113000		REQ1		116765	ext	
PAT2		134212'		PNTOCS	037700	000003		PTTF14		113310		REQ2		116766	ext	
PATCH		116613		PNTRS0		042233		PTTF15		114000		RESCR0		042763		
PATCH0		116613		PNTRS1		042251		PTTF16		114310		RESCRM		042752		
PATPNT		033257	ext	PNTRS2		042252		PTTF17		115000		RESQAV		000200	spd	
PBSD		070475		PNTRSP		042227	ent	PTTF2		106310		RFROM		035610		
PCB		072000	int	PNTRSX		042253		PTTF3		107000		RLOCB		134223'		
PCBFLG		033675		PNTSIX	037000	000002		PTTF4		107310		RLOCE		134224'		
PCMD		134213'		PNTSXF	037040	000002		PTTF5		110000		RQAFLG		134225'	int	
PCRL	037000	030242		PNTWD		042527		PTTF6		110310		RRDBF		040101		
PCRL2	037000	030243		PORT	400000	000000	spd	PTTF7		111000		RSPFLG		033676		
PCRLF	037040	030242		PPAKC		067436	ent	PTTFQ		105070	int	RSPONS		073000	int	
PDSABL		000040	spd	PPAKC0		067447		PTTLD		000003	spd	RSPOPC		070175		
PENABL		000020	spd	PPAKCC		067452		PTTVAL		033712		RSPPAK		134226'		
PFLAG0		070416		PPAKCX		067463		PUT	261740	000000		RSPQUE		134227'	ent	
PFLAG1		070421		PPAKF		067500	ent	PUTQU0		067037		RSTART		200000	spd	
PFLAGS		070360		PPAKR		067466	ent	PUTQU1		067055		RTN	263740	000000		
PFORCE	037040	000026		PPCB		070747	ent	PUTQUE		067022	ent	RTO		035607		
PG		117015		PPCB0		071027		PUTQUX		067073		RUNTME		042044	ext	
PGMINT	265000	030011		PPCBD		071023	ent	PVPAGI		030511		RUPDA1		043535		
PGMNAM		030600	int	PQUEM0		067406		Q		000013		RUPDA2		043542		
PHEAD		070237		PQUEP0		067361		QARG1		134215'		RUPDA3		043555		
PJRST	254000	000000		PQUEU0		067337		QARG2		134216'		RUPDAT		043511	ent	
PK		000012		PQUEUE		067305	ent	QUNKF0		075000		RUPDAX		043563		
PLICTL		037514		PQUEUM		067401		QUNKF1		076000		RWAIT		066476	ent	
PLIDAT		037515		PQUEUP		067354		QUNKF2		077000		RWAIT0		066503		
PLINUM		134214'		PQUEUX		067345		QUNKF3		100000		RWAITX		066512		
PLIRD		000007	spd	PQUEUY		067346		QUNKF4		101000		S1		115400		
PLIREP		037516		PRSFLG		033671		QUNKF5		102000		S2		115507		
PLIWR		000006	spd	PSP	037000	000040		QUNKF6		103000		SADDR		033704	int	
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page S-5
DFNIA1	MAC	18-Feb-84 20:30		SYMBOL TABLE                                                                       SEQ 0459

SANCH0		042162		SPCHK2		115441		TDEST		065715	int	TST26		000000	ext	
SANCHE		042202		SPEAR1		134244'		TFLER1		043750		TST27		000000	ext	
SANCHK		042150		SPEAR2		134245'	int	TFLER2		043760		TST3		000000	ext	
SANCHX		042173		SPRE1X		115402		TFLER3		043770		TST4		000000	ext	
SANFLG		033711		SPRE2A		115432		TFLER4		044000		TST5		000000	ext	
SAVAD1		134230'		SPRE2B		115467		TFLOAD		043715	ent	TST6		000000	ext	
SAVAD2		134231'		SPRE2C		115500		TFLOAE		043743		TST7		000000	ext	
SAVCMD		134232'		SPRE2X		115514		TFLOAX		043741		TSTAL0		032012		
SAVCO1		043134		SPREP1		115360		TFMFLG		065711	int	TSTALT		032003		
SAVCO2		043147		SPREP2		115421	int	TH4000		065726	int	TSTCNT		115610		
SAVCON		043124		SREPO0		043603		TIDLE		065646	ent	TSTCON		031366		
SAVCR0		042737		SREPO1		043621		TIDLEE		065666		TSTD0		031675		
SAVCRL		042777		SREPO2		043626		TLERR		064707		TSTD1		031703		
SAVCRM		042730		SREPOR		043571		TLOAD		064666	ent	TSTD2		031715		
SAVEP		134233'		SREPOX		043651		TLOADE		064700		TSTD3		031716		
SAVFLD		134234'		SRTDDT		030007		TLOADX		064676		TSTD4		031721		
SAVHST		035357		SSADRL		034340		TMP1		134247'		TSTD5		031730		
SAVNUM		134235'		SSADRN		034540		TOPADR		066651		TSTD6		031735		
SAVOPW		134236'		SSCSRL		034740		TPAT		065722	int	TSTD7		031752		
SAVPKT		073620		SSCSRN		035140		TPCB		064711	ent	TSTD8		031761		
SAVPTT		134237'		SSLOC		034137		TPCB0		064717		TSTD9		031770		
SAVRAR		134240'		SSNUM		034140		TPCB1		064754		TSTDDT		031337		
SB		030610		STARCV		043676	int	TPCB2		065112		TSTDEB		032231		
SCOOFF		042371	ext	START		030611	ent	TPCB3		065113		TSTDIA		031332		
SCOPE1		000000	ext	STARTA		030722	ent	TPCB4		065123		TSTDIS		031655		
SCOPER	027000	000000		STARTB		030746		TPCB5		065124		TSTDL0		031462		
SCOSW		000000	ext	STASNT		043665	int	TPCB6		065135		TSTDS0		031436		
SDATA		042374	ext	STATAB		070335		TPDFLG		065714	int	TSTDSA		031425		
SELLAR		040000	spd	STATB		043665		TPRMSC		065727	int	TSTDSL		031455		
SEN11L		115535		STATE		043714	spd	TPTTVL		065717	int	TSTEBF		200000	spd	
SENT10		115405		STCLOK		030660	ext	TRACE		042350	ent	TSTEN0		031434		
SENT11		115522		STEST		116713		TRACET		400000	spd	TSTENA		031431		
SETDS0		042337		STEST0		116725		TREGD		065724	int	TSTEND		042406	ent	
SETDSA		042324	ent	STEST1		116740		TREGN		065723	int	TSTEOP		032021		
SETDSX		042345		STESTP		116755		TRETRY		065730	int	TSTEXE		031260		
SETEBU		035450	ext	STIME		134246'		TREX		042366		TSTFLG		115601	int	
SETEN0		042274		STRT1		030651		TREXX		042402		TSTHL0		031405		
SETEN1		042303		SUPDA0		043472		TRSFLG		065713	int	TSTHLC		031413		
SETEN2		042310		SUPDAT		043461	ent	TSLOAD		134250'	int	TSTHLL		031420		
SETEN3		042317		SWCHPT		000000	ext	TST1		000000	ext	TSTHLP		031373		
SETENA		042264	ent	SWCOM		041274	ext	TST10		000000	ext	TSTHLT		031350		
SETENE		042320		SWITT		115436	ext	TST11		000000	ext	TSTL1		134251'		
SETLAR		037447	ext	SWPTAB		030525		TST12		000000	ext	TSTL2		134252'		
SETVEC		041357	ext	SWRGT		030634	ext	TST13		000000	ext	TSTLI0		031310		
SHUTRQ		067274		SWSTP		000125	spd	TST14		000000	ext	TSTLI1		031317		
SHUTRX		067303		SWSTT		000027	spd	TST15		000000	ext	TSTLIS		031266		
SINCYC		020000	spd	SYERR	104000	000527	int	TST16		000000	ext	TSTLIX		031330		
SLAST		035371	ext	SZERO		043661		TST17		000000	ext	TSTMAX		032067		
SLDATA		134241'		T2M		000000	ext	TST2		000000	ext	TSTMIC		032070		
SNARKF		000000	ext	T3M		000000	ext	TST20		000000	ext	TSTMSK		115602	int	
SNDDG		000001	spd	TAKFIL		031561	int	TST21		000000	ext	TSTMUL		115605		
SNDFLG		134242'		TAMC		065725	int	TST22		000000	ext	TSTNAM		032120	int	
SNDTIM		134243'		TBSDFL		065712	int	TST23		000000	ext	TSTNUM		115576	int	
SNEXT		042373	ext	TBYTE		065720	int	TST24		000000	ext	TSTOFF		115606	int	
SPCHK1		115372		TDENA	000100	000000	spd	TST25		000000	ext	TSTPC		115600	int	
DFNIA (Port Functional Diagnostic)	MACRO %53A(1152) 19:59 24-Sep-84 Page S-6
DFNIA1	MAC	18-Feb-84 20:30		SYMBOL TABLE                                                                       SEQ 0460

TSTPN0		042422		$GARG		000000		.MB		000017	spd	.RS0A	400000	000000	spd	
TSTPNT		042411	ent	$ONETM		030056		.MCCER		000037	spd	.RS0B	300000	000000	spd	
TSTPNX		042430		$TTCHR		030231		.MCCPP		000037	spd	.RSD0	700000	000000	spd	
TSTPRI		031477		$TWCNT		030225		.MCENA		000001	spd	.RSELC		004000	spd	
TSTRA0		031641		%ADDR		000057	spd	.MCJP		000017	spd	.RSELE		005000	spd	
TSTRAA		031647		%ML	005600	000000	spd	.MCONT		000017	spd	.RSELM		002000	spd	
TSTRAN		031626		%MR		000340	spd	.MCRTN		000017	spd	.RSELP		001000	spd	
TSTREL		115607		.CGOT		041272	ext	.MCRY		000001	spd	.RSKCN		240000	spd	
TSTREP		115603	int	.CLOSE		031354	ext	.MD		000007	spd	.RSWIT		030635	ext	
TSTREQ		115604		.COMM		035763	ext	.MJ		007777	spd	.SARG		033417	ext	
TSTRES		032151		.CONI		000000	ext	.MJMAP		000017	spd	.SBSNT		000001	spd	
TSTSAV		134253'		.CONO		000000	ext	.MLDCT		000017	spd	.SPSNT		000000	spd	
TSTSP0		031604		.DARG		041504	ext	.MLDLM		000037	spd	.STCMD		032751		
TSTSPC		031563		.DATAI		040004	ext	.MMGC		001777	spd	.STDIS		032777		
TSTSSW		031516		.DATAO		037777	ext	.MOENA		000001	spd	.STERR		000002	spd	
TSTSUB		115577	int	.DBCMD		032322		.MOR		000007	spd	.SWCHP		120733	ext	
TSTSWI		031504		.DBDIS		032474		.MPLUS		000007	spd	
TSTSWP		031511		.HLCMD		032665		.MRDLM		000037	spd	
TSTTA0		031544		.INPNT		041751	ext	.MRPCT		000017	spd	
TSTTAB		032037	int	.INWD1		031042	ext	.MS0A		000007	spd	
TSTTAK		031527		.ISWT		120726	ext	.MS0B		000007	spd	
TSTTAN		031525		.JBSA		000120	spd	.MSD0		000007	spd	
TSTZER		031361		.LA		000000	spd	.MSELC		000007	spd	
TTALTM	037340	000003		.LADDR	000100	000000	spd	.MSELE		000007	spd	
TTIDEC	037200	000003		.LAND		000000	spd	.MSELM		000007	spd	
TTNBRF		030510		.LB		000000	spd	.MSELP		000007	spd	
TTSIXB	037400	000003		.LCCER		000000	spd	.MSKCN		000037	spd	
TTYYES		066061	ext	.LCCPP		000000	spd	.OARG		066166	ext	
TWORD		065721	int	.LCENA		000000	spd	.RA	000010	000000	spd	
TXADDL		134254'	int	.LCJP		000000	spd	.RAND	040000	000000	spd	
TXALL	060000	000000	spd	.LCONT		000000	spd	.RB		400000	spd	
TXTINH		000200	spd	.LCRTN		000000	spd	.RBRCV		000001	spd	
UCODE		044333		.LCRY		000000	spd	.RCCER		100000	spd	
UDEBUG		134255'	int	.LD		000000	spd	.RCCPP		150000	spd	
ULEN		044332		.LJ		010000	spd	.RCENA	000400	000000	spd	
UNAME		044326		.LJMAP		000000	spd	.RCJP		000060	spd	
UNKBEG		075000		.LLDCT		000000	spd	.RCONT		000340	spd	
UNKEND		104617		.LLDLM		000000	spd	.RCRTN		000240	spd	
USER		030037		.LMGC		000001	spd	.RCRY		000400	spd	
USRION		030711	ext	.LOENA		002000	spd	.RD	001000	000000	spd	
UVERR		064333		.LOR		000000	spd	.RESET		030651	ext	
UVERSN		134256'	int	.LPLUS		000000	spd	.RJ		000000	spd	
WORCNT		134257'		.LRDLM		000000	spd	.RJMAP		000040	spd	
WRDERR		000000	ext	.LRPCT		000000	spd	.RLDCT		000300	spd	
WRNSA		000011	spd	.LS0A		000000	spd	.RLDLM		230000	spd	
WRPLI		000006	spd	.LS0B		000000	spd	.RMGC		000000	spd	
WRTPLI		040126		.LSD0		000000	spd	.ROENA		000000	spd	
XXW		134260'		.LSELC		000000	spd	.ROR	030000	000000	spd	
XXX		134261'		.LSELE		000000	spd	.RPLUS		000000	spd	
ZCOUN0		044303		.LSELM		000000	spd	.RPRCV		000000	spd	
ZCOUNT		044300		.LSELP		000000	spd	.RRCRC		000003	spd	
$$TOGG		030521		.LSKCN		000000	spd	.RRDLM		220000	spd	
$ARG2		000001		.LSWIT		000000	ext	.RRERR		000002	spd	
$B		000064		.MA		000017	spd	.RREXP		000004	sin	
$CHR	000043	575664		.MAND		000007	spd	.RRPCT		000220	spd	
AADDR	    75#
ABORT	   236	  1184                                                                                                     SEQ 0461
ADRPHY	  7059	  7061	  8796	  9047#	  9885	  9887
ADRQUE	  8804	  8827#
ADRVIR	  7065	  8791	  8931#	  9889
ALL	   613
ALTF	    38	   229	   309#	   309	   323	   327	  1159	  1202	  1547	  1551	  3414	  3471	  3561	  3873
	  3902	  3996	  4050	  4293	  4347	  5087	  5096	  5105	  5118	  5125	  5130	  5138	  5428	  6113
	  6148	  6605	  6674	  7338	  8595
ALTMGO	   326	   994	  1041	  1077	  1160	  1163	  1550	  3474	  3565
ALUFR	  3969	  4009	  4083	  4148	  4187	  4257#
ALUTO	  3971	  4011	  4085	  4150	  4189	  4258#
ANEXT	  3465#	  3535	  3657	  3851	  3877	  3905	  4047	  4114	  4132	  4210	  4351	  4403	  4404	  4425
	  4509	  4848	  4929	  5453	  5460	  5467	  5474	  5513	  5520	  5528	  5536	  5542	  5548	  5554
	  5587	  5588	  5622	  5623	  5657	  5658
ARGFLG	    87#	   403	   406	   837	  1003	  1011	  1083	  1091	  1105	  1581	  1584	  3486	  4130	  4423
	  4558	  4601	  5727	  5774	  9396	  9412	  9452	  9478
ARGUM	    87#	   647	   654	   763	   765	   848	   950	   956	  1009	  1089	  1956	  1958	  2141	  2204
	  2229	  2319	  2325	  2350	  2365	  2395	  2404	  2463	  2537	  2566	  2569	  2587	  2593	  2599
	  2605	  2612	  2675	  2694	  2719	  2738	  2879	  2962	  3044	  3045	  3050	  3118	  3123	  3263
	  3277	  3316	  3396	  3406	  3493	  3501	  3509	  3517	  3525	  3980	  3988	  4077	  4092	  4133
	  4159	  4167	  4277	  4285	  4375	  4389	  4426	  4452	  4460	  4569	  4612	  4657	  4667	  4730
	  4740	  4811	  4826	  4834	  4835	  4905	  4913	  4925	  4926	  5409	  5410	  5415	  5420	  5429
	  5523	  5531	  5537	  5543	  5549	  5555	  5570	  5585	  5605	  5620	  5640	  5655	  5738	  5785
	  5826	  5836	  5894	  5904	  5974	  6005	  6167	  6280	  6308	  6466	  6577	  6591	  6619	  6620
	  6772	  6781	  6826	  6837	  6851	  6853	  6914	  6943	  9425	  9437	  9464	  9491	  9498	  9505
	  9513
BEGIN	 12217
BONETM	   137#	   137	   139	   376
BPACK	    46	  6493	  9277#
BPACK0	  9293	  9304#
BPACKN	    46	  9275#
BPACKX	  9312	  9329#
BPAK1	  9317	  9337#
BPAK11	  9324	  9476#
BPAK1A	  9349	  9365#
BPAK4	  9320	  9394#
BPAK6	  9321	  9410#
BPAK6A	  9412#	  9422	  9434
BPAK6B	  9411	  9439#
BPAK7	  9322	  9450#
BPAK7A	  9452#	  9461
BPAK7B	  9451	  9466#
BPK11A	  9478#	  9489	  9496	  9503	  9511
BPK11B	  9477	  9490	  9497	  9504	  9512	  9518#
BSDFLG	  2492	  2494	  2499	  2501	  2837#	  6478
BUFCOM	    88#
BUFF	    49	 12117#
BUFGEN	    88#	  9575
CADDR	    26	  3457#	  3482	  3547	  3551	  3844	  3862	  3893	  3897	  3918	  3930	  3946	  3953	  4581
	  4624	  4693	  4768	  5750	  5797	  5862	  5932	  6103	  6110	  6137	  6144	  6284	  6309	  6312
	  7533	  7555	  8060	  8144	  8210	  8226	  8241	  8251	  8442	  8482
CALL	  8636
CALMAR	  7390#	  7390	  7392	  7416
CALPAR	    25	  3926	  5758	  5939	  7388#	  8454	  8589                                                             SEQ 0462
CBASE	    78#	   170
CCMIC	  6191	  6192	  6259#
CCTAB1	  6217	  6226	  6238#
CCTAB3	  6204	  6206	  6216	  6225	  6255#
CCWPNT	    78#	  6329
CHINIT	    78#	  2957	  9174
CHKARG	    87#	   697	   708	   722	   737	   748	   873	   900	   910	   916	   927	  1510	  1789	  1864
	  1876	  1883	  1911	  1916	  2645	  2784	  2860	  2889	  2901	  2911	  2922	  2993	  3142	  3216
	  3238	  3261	  3287	  3326	  5044	  5058	  5511	  5668	  6025	  6068	  6091	  6126	  6177	  6327
	  6339	  6351	  6365	  6423	  6435	  6446	  6532	  6559	  7111
CHKCSR	    74#
CHKIN0	  9827#	  9830
CHKIN1	  9828	  9832#
CHKIN2	  9841#	  9850
CHKIN3	  9845	  9851#
CHKINT	    46	  6923	  6957	  6968	  7023	  9816#	  9928	  9983	 10157	 10191	 10365	 10368
CHKINX	  9831	  9855#
CHKQU0	 10280#	 10285
CHKQUE	 10189	 10277#
CHKQUX	 10282	 10286#
CHKRQV	    46	  6750	 10215#
CHKRSP	    46	  6751	 10151#
CHKRSX	 10158	 10166	 10206#
CHKTAB	 10279	 10298#
CLRBUF	    84#	   334	  1544	  3569	  3616	  3636	  9397	  9413	  9453	  9483
CLREBU	    74#	  8415
CMD0	  1516#	  1549	  1574	  1593	  1595	  1601
CMD1	  1545#	  1561	  1566	  1579
CMD1A	  1563#	  1578
CMD2	  1562	  1576#
CMDOPC	    47	 10921	 10943#
CMDPAK	  7093	 10469#	 10469	 10512	 10837	 10922
CMDQAV	  6939	 10332
CMDQUE	  1569	  1599#
CMDQUU	  1600	  1603#
CNAME	  2329	  3533	  3655	  3846	  6040	  6052	  6291	  6316	  8029	  8114	  8157	  8350#	  8423	 12193
CNTPNT	    30	 10632#
CNTRC	 10176	 10956
CONPN0	  7592#	  7604
CONPNT	    47	   750	  7112	  7574#
CONPNX	  7597	  7608#
CONSW	 12184
CONTBL	    48	   158	   159	   160	  7591	  7629	  7630	  7633	  7634	  7643	  7648#
CONVI0	  9884#	  9888
CONVIE	  9886	  9896#
CONVIR	    47	  6754	  9843	  9880#	 11256	 11273	 11433	 11444	 11449	 11453
CONVIX	  9889#
CONVR0	  7058#	  7062
CONVRE	  7060	  7064#
CONVRR	  7030	  7053#
CONVRX	  7065#
CONVSX	    85#	   421	  2570	  3626
CRAMFR	  3388	  3397	  3411	  3422	  3433	  3455#	  3481	  3534	  3546	  3550	  3566	  3656	  3843	  3850     SEQ 0463
	  3861	  3876	  3892	  3904	  5455	  5515
CRAMTO	  3386	  3398	  3407	  3417	  3435	  3456#	  3536	  3658	  3852	  3878	  3906	  5454	  5514
CRCCA0	  9744#	  9752
CRCCAL	  9604	  9606	  9608	  9610	  9612	  9614	  9619	  9621	  9623	  9625	  9627	  9629	  9634	  9636
	  9645	  9647	  9663	  9665	  9667	  9669	  9679	  9681	  9683	  9685	  9693	  9695	  9697	  9699
	  9701	  9716	  9742#
CRCFIX	  9724	  9760#
CRCOFF	    69#	  9338	  9727
CRCSAV	    69#	  9337	  9595
CRCTAB	    69#	  9728
CSHFLG	   126
CSHMEM	   127
CSREN0	  7458#	  7472
CSREN1	  7463	  7470#
CSREN2	  7460	  7471#
CSRENB	  7470	  7481#
CSRENG	    30	  7437	  7451#
CSRENS	  7453#	  7453	  7497	  7517
CSRENX	  7458	  7473#
CSRPNT	    30	  2864	  2979	  3009	  3229	  5079	  6168	  6887	  7427#
CSRPNX	  7434	  7438#
CURTIM	    84#	  1049	  6656	  6693	  6743	  6908
CWORDL	    26	  3459#	  3479	  3528	  3544	  3688	  3690	  3692	  3694	  3696	  3698	  3727	  3729	  3731
	  3733	  3735	  3737	  3841	  3868	  3899	  3922	  3951	  4582	  4585	  4625	  4628	  4694	  4697
	  4769	  5751	  5756	  5759	  5798	  5863	  5933	  5937	  5940	  6282	  6288	  6310	  6313	  7535
	  7557	  8062	  8064	  8147	  8219	  8231	  8245	  8253	  8460	  8475	  8486
CWORDR	    26	  3460#	  3480	  3531	  3545	  3700	  3702	  3704	  3706	  3708	  3710	  3712	  3714	  3716
	  3718	  3720	  3722	  3739	  3741	  3743	  3745	  3747	  3749	  3751	  3753	  3755	  3757	  3759
	  3761	  3842	  3869	  3900	  3923	  3958	  4583	  4586	  4588	  4626	  4629	  4631	  4695	  4698
	  4701	  4770	  4772	  5752	  5757	  5760	  5799	  5864	  5934	  5938	  6283	  6289	  6311	  6314
	  8066	  8151	  8234	  8474	  8476	  8488
D1LIT	 12216#
DACRAM	  1827	  3362#
DADDR	  2557	  2577	  2616	  2620	  2622	  2624	  2626	  2628	  2630	  2840#	  6484
DBCRAM	  1826	  3354#
DBPAC0	  6501#	  6506	  6508	  6525
DBPACK	  1895	  6460#
DBPACP	  6460	  6498#
DBREA0	  5734#	  5766
DBREAK	  1845	  5727#
DC1ST	  3444#	  3444	  3475	  3477	  3556	  3559
DCBR0	  5825	  5835	  5841#
DCBR1	  5862#	  5872
DCBRK	  1847	  5817#
DCCOD1	  6188#	  6207
DCCOD2	  6190	  6211#
DCCOD3	  6213#	  6218
DCCOD4	  6215	  6220#
DCCOD5	  6222#	  6227
DCCOD6	  6224	  6228#
DCCODE	  1858	  6176#
DCLEAR	  1806	  2910#
DCMAR0	  4656	  4666	  4672#                                                                                            SEQ 0464
DCMAR1	  4693#	  4708
DCMAR2	  4700	  4706#
DCMARK	  1842	  4648#
DCODPB	  3647	  3727#
DCOLDB	  3595	  3688#
DCOM0	  3395	  3405	  3411#	  5456	  5516
DCOM1	  3444#
DCOM3A	  3591	  3620#
DCOMA0	  3575#	  3606
DCOMA1	  3578#	  3642	  3650
DCOMA2	  3594	  3599#	  3619	  3639
DCOMA3	  3587	  3600#	  3603	  3622
DCOMA4	  3628	  3646#
DCOMA5	  3623	  3648#
DCOMAA	  3588#	  3614
DCOMAG	  3548	  3556#
DCOMAL	  3449	  3550#	  3663
DCOMAX	  3580	  3610	  3654#
DCOMDB	  3448	  3544#	  3662
DCOMDE	  3447	  3471#	  3537
DCOMEX	  3446	  3861#	  3879
DCOMEZ	  3875	  3880#
DCOMGO	  3340	  3348	  3356	  3364	  3372	  3380	  3385#
DCOML0	  3892#	  3907
DCOMLI	  3451	  3890#
DCOMLX	  3903	  3908#
DCOMP	  7134	  7179
DCOMSG	  3599	  3667#
DCOMZE	  3450	  3841#	  3853
DCONF	  7110#
DCONT	  1810	  3215#
DCWPNT	  1888	  6326#
DDALU	  1833	  4071#
DDALU0	  4077#	  4134	  5524
DDALUM	  4105	  4109	  4110	  4237#
DDALUX	  4131	  4138#
DDCRAM	  1825	  3346#
DDCSR	  1802	  2873#
DDEBU1	  3264	  3272#
DDEBUF	  1818	  3266#
DDEBUG	    17	   112#	   112	   179	   189	   343	   353	  1527	  1536
DDLOC0	  4375#	  4427	  5532
DDLOCM	  4402	  4405	  4529#
DDLOCS	  1837	  4369#
DDLOCX	  4424	  4431#
DDNEX0	  5490	  5491	  5492	  5493	  5494	  5495	  5510#
DDNEX1	  5496	  5497	  5498	  5520#
DDNEX2	  5499	  5500	  5501	  5528#
DDNEX3	  5502	  5503	  5536#
DDNEX4	  5504	  5542#
DDNEX5	  5505	  5548#
DDNEX6	  5506	  5554#
DDNEXT	  1799	  5482#                                                                                                    SEQ 0465
DDPLI	  1900	  4805#
DDPLI0	  4820#	  5538
DDPLI1	  4861#	  4875
DDPLIM	  4851	  4855	  4885#	  5388	  5389
DDPLIX	  4873	  4879#
DDPLM2	  4849	  4889#	  5386
DDPMU0	  5550	  5605#
DDPMUL	  1903	  5599#
DDPPA0	  5556	  5640#
DDPPAK	  1904	  5634#
DDPPT0	  5544	  5570#
DDPPTT	  1902	  5564#
DDRAR	  1822	  3307#
DDTAB	  5483	  5485	  5490#
DDUMP	    17	  1885	  5070#
DDUMP0	  5103#	  5109
DDUMPM	  5147	  5167#
DDUMPX	  5088	  5097	  5106	  5119	  5126	  5131	  5139	  5161#
DEALU	  1832	  3969#
DEALU0	  3979	  3987	  3993#	  5463
DEALU1	  4022#	  4055
DEALUM	  4025	  4034	  4035	  4231#
DEALUX	  4052	  4059#
DEBALU	  4017#	  5086
DEBEBU	  3240#	  5080
DEBELO	  4314#	  5117
DEBLAR	  3289#	  5081
DEBSTK	  5090	  5670#
DEBTIM	    85#	  6873
DEBUG1	   182	   346	  1529
DEBUG2	   184	   348	  1531
DEBUG3	   186	   350	  1533
DEBUG4	   188	   352	  1535
DEBUG6	   190	   354
DECOP0	 10979#	 10984
DECOPC	  6467	  6505	  7677	  7761	  9308	 10486	 10977#
DECOPX	 10981	 10989#
DECRAM	  1828	  3338#
DECSR	  1801	  2859#
DECTAB	 10978	 10994#
DECVER	     9	 11954	 12067
DECYN	    87#	  2249	  2272	  2296	  2438	  2490	  2514
DEEBUF	  1817	  3237#
DELAR	  1821	  3286#
DELOC0	  4276	  4284	  4290#	  5470
DELOC1	  4320#	  4353
DELOCM	  4331	  4332	  4521#
DELOCS	  1836	  4266#
DELOCX	  4349	  4357#
DENE0	  5419#	  5432
DENEX0	  5436	  5437	  5438	  5439	  5440	  5441	  5453#
DENEX1	  5442	  5443	  5444	  5460#
DENEX2	  5445	  5446	  5447	  5467#                                                                                    SEQ 0466
DENEX3	  5448	  5449	  5474#
DENEXT	  1798	  5409#
DEPLI	  1901	  4901#
DEPLI0	  4933#	  5476
DEPLI1	  4967#	  4992
DEPLIM	  4939	  4940	  5003#	  5332	  5333	  5358	  5359
DEPLIX	  4990	  4996#
DERBUF	  1906	  5057#
DESTA0	  5682#	  5702
DESTAK	  1859	  5667#
DESTAX	  5684	  5706#
DESTAY	  5691	  5694	  5707#
DESTKM	  5672	  5713#
DETAB	  5424	  5426	  5436#
DETBUF	  1905	  5043#
DEVREL	    79#	   699	   724
DEVREQ	    79#	   208
DFEXA0	  6133#	  6151
DFEXAM	  1855	  6125#
DFEXAX	  6133	  6149	  6153#
DFILLN	  1860	  6273#
DFILLP	  1861	  6301#
DFILN0	  6284#	  6292
DFILP0	  6312#	  6318
DFLAG	  3339#	  3339	  3347	  3355	  3363	  3371	  3379	  3445	  3592	  3660	  4013	  4095	  4191	  4310
	  4392	  4484	  4838	  4902	  5423	  5425	  5482	  5484	  5590	  5625	  5660
DFLIS0	  6099#	  6116
DFLIST	  1854	  6090#
DFLISX	  6099	  6114	  6118#
DFLOAD	  1852	  6024#
DFVER0	  6082#
DFVERF	  1853	  6067#
DGRCV	  6760	  6766	  6777	  6779	  7710	  7721	 10957	 11002	 11133
DGSNT	  6759	  7662	  7711	  9292	 10953	 11132
DHELP	  1787	  1948#
DHELP0	  1966#	  1970
DHELP1	  1966	  1995#
DIINIT	  1871	  6422#
DIPRIN	  1862	  6364#
DIQUEU	  1896	  6531#
DISGO	   457	   550#	   578
DISLIS	   411	   492#
DISP0	   317#	   321	   386	   391	   401	   438	   447	   453	   464	   471	  7044
DISP0A	   388#	   400
DISP0B	   387	   398#
DISP1	   410#
DISP2	   370	   414	   457#
DISPAT	   228	   309#
DISPD	   422	   442#
DISPE	   397	   445	   451#
DISPR	   425	   433#
DISPX	   429	   462#
DISQUE	   396	   469#                                                                                                    SEQ 0467
DISQUU	   470	   473#
DLBR0	  5893	  5903	  5909#
DLBR1	  5932#	  5960
DLBR2	  5941	  5955#
DLBRK	  1848	  5885#
DLBRX	  5957	  5961#
DLCRAM	  1829	  3378#
DLGPNT	  1889	  6338#
DLIST	  1851	  5999#
DLMAR0	  4729	  4739	  4745#
DLMAR1	  4768#	  4793
DLMAR2	  4774	  4788#
DLMARK	  1843	  4721#
DLMARX	  4790	  4794#
DLOAD	  1850	  5968#
DMARK	  1840	  4558#
DMARK0	  4565#	  4593
DPINIT	  1893	  6434#
DPLIH	  4805	  4820	  4831	  5027#
DPPCB	  1898	  6558#
DPQUE0	  6590	  6602#	  6612
DPQUEU	  1897	  6569#
DRBR0	  5781#	  5805
DRBRK	  1846	  5774#
DRCRAM	    25	  3552	  3866	  3894	  3944#	  4584	  4627	  4696	  4771	  5753	  5800	  5865	  5935	  7534
	  8218	  8252
DRESET	  1805	  2900#
DRMAR0	  4608#	  4636
DRMARK	  1841	  4601#
DSADD1	  2203	  2214#	  2759	  2928
DSADD2	  2215#
DSADDR	  2205	  2211	  2216	  2822#	  2924	  2952
DSBSD1	  2489	  2497#
DSBSD2	  2498#	  2768
DSBYTE	  2543	  2548	  2828#	  6486
DSCSR1	  2228	  2233#
DSCSR2	  2234#	  2760	  2929
DSDAD0	  2572	  2581#
DSDAD1	  2565	  2586	  2592	  2598	  2604	  2611	  2615#
DSDAD2	  2579	  2619#	  2770
DSDADL	  2567	  2637#
DSDATA	  2230	  2235	  2823#	  2926	  2965
DSEBU1	  2271	  2279#
DSEBU2	  2280#	  2762
DSET	  1795	  2131#
DSETAD	  2173	  2200#
DSETBS	  2183	  2486#
DSETCS	  2174	  2225#
DSETDA	  2185	  2557#
DSETEB	  2176	  2268#
DSETFN	  2178	  2315#
DSETFO	  2182	  2459#
DSETHE	  2193	  2783#                                                                                                    SEQ 0468
DSETHL	  2787	  2790#
DSETIN	  2190	  2715#
DSETLN	  2184	  2533#
DSETPA	  2179	  2346#
DSETPC	  2177	  2292#
DSETPD	  2188	  2510#
DSETPL	  2180	  2388#
DSETPP	  2394	  2403	  2412#	  2425
DSETPR	  2175	  2245#
DSETPT	  2189	  2690#
DSETPV	  2187	  2671#
DSETPX	  2423	  2426#
DSETRE	  2181	  2433#
DSETSA	  2186	  2644#
DSETSU	  2191	  2734#
DSETUP	    79#	   199
DSETWH	  2192	  2754#
DSFNM0	  2324	  2327#
DSFNM1	  2318	  2332#
DSFNM2	  2333#	  2764
DSFOR1	  2462	  2471#
DSFOR2	  2472#	  2767
DSFORL	  2464	  2478#
DSIDLE	  1894	  6445#
DSINIT	  1815	  2921#
DSINT	  2720	  2725	  2849#	  6876	  6982
DSINT1	  2718	  2723#
DSINT2	  2724#	  2775
DSLEN1	  2536	  2546#
DSLEN2	  2547#	  2769
DSPAD1	  2513	  2521#
DSPAD2	  2522#	  2773
DSPAR1	  2248	  2256#
DSPAR2	  2257#	  2761
DSPAT	  2356	  2374	  2391	  2830#	  6489
DSPAT1	  2349	  2372#
DSPAT2	  2373#	  2765
DSPAT3	  2377	  2381#
DSPATX	  2358	  2367#
DSPCB1	  2295	  2303#
DSPCB2	  2304#	  2763
DSPEAR	 11920	 11982
DSPNT1	  2693	  2703#
DSPNT2	  2704#	  2774
DSPRIN	    31	  2700	  2705	  2846#	  5189	  5190	  5231	  5232	 10898	 11181
DSPTT1	  2674	  2679#
DSPTT2	  2680#	  2772
DSRES1	  2437	  2446#
DSRES2	  2447#	  2766
DSSAD2	  2650#	  2771
DSSCLR	  1814	  2930	  3141#
DSSPN0	  3126#	  3133
DSSPNT	  1813	  3117#                                                                                                    SEQ 0469
DSST0	  3057#	  3097
DSST1	  3087#
DSSTEP	  1811	  3041#
DSSTX	  3071	  3076	  3096	  3101#
DSSUM	  2739	  2744	  2848#	  6657	  6744
DSSUM1	  2737	  2742#
DSSUM2	  2743#	  2776
DSTAR0	  2961#
DSTART	  1808	  2949#
DSTOP	  1809	  2992#
DSTOP1	  3002	  3007#
DSTPAT	  2366	  2379	  2831#
DSWIT	  1923	  1924	  1925	  1926	  1927	  1928	  1929	  1930	  1931	  1932	  1933	  1934	  1935	  1936
	  1937	  1938	  1939	  1940	  1941	  1942	  6350#
DTRAC0	  3039	  3044#
DTRACE	  1812	  3037#
DTRANS	  1857	  6161#
DTRFLG	  3038	  3041#	  3041	  3052	  3070	  3082	  3090
DWATC0	  6669#	  6872	  6875	  6889	  6895	  6910	  6920	  6925	  6930	  6933	  6935	  6955	  6959	  6962
	  6970	  6974	  6985	  6987	  6996	  7005
DWATC1	  6695	  6750#
DWATC2	  6746	  6757	  6770	  6783	  6788	  6815	  6817	  6837#
DWATC3	  6859	  6882#
DWATC4	  6861	  6893#
DWATC5	  6893	  6897#
DWATC6	  6863	  6906#
DWATC7	  6843	  6878	  6914#
DWATC8	  6846	  6978#
DWATC9	  6849	  6991#
DWATCA	  6865	  7000#
DWATCH	  1899	  6619#
DWATCQ	  6663#	  6867
DWATCX	  6673	  6675	  7009#
DWATCY	  6687	  7012#
DWATLP	  6773	  6776	  6787#
DWCRAM	    25	  3532	  3654	  3845	  3916#	  4591	  4634	  4704	  5764	  5803	  5868	  6290	  6315	  7558
	  8152
DWORDL	  8213#	  8213	  8220	  8229	  8243
DWORDR	  8217#	  8217	  8235
DZALU	  1834	  4148#
DZALU0	  4158	  4166	  4172#
DZALU1	  4200#	  4221
DZALUM	  4201	  4205	  4206	  4251#
DZALUX	  4218	  4225#
DZCRAM	  1830	  3370#
DZCSR	  1803	  2888#
DZEBUF	  1819	  3260#
DZLOC0	  4451	  4459	  4465#
DZLOC1	  4493#	  4511
DZLOCM	  4494	  4495	  4543#	  8320	  8321
DZLOCS	  1838	  4441#
DZLOCX	  4507	  4515#
DZRAR	  1823	  3325#                                                                                                    SEQ 0470
EADDR	    75#
ECODE	  8225	  8240	  8291	  8363#
ECOMP	  7149
EDEBUG	    18	   113#	   113	   180	   191	   344	   355	  1213	  6697
ENABLE	    78#	   201
ENATST	   830#	   830	   834#	   834	   861	   863
ENDFIX	    10
EPLIH	  4909	  4922	  5033#
ERESET	    74#	  2903
ERFLG	   333	   623	  1517	  7211	  7234	  7962	  8627	 11974	 11991	 12048	 12148	 12157
ERRPC	  7212
EXE	 12183#
EXEN	 12177#
FFF	    79#	  9904
FFLAG	  6027	  6070	  6093	  6128	  7935	  8035	  8045	  8079	  8108	  8115	  8126	  8200	  8257	  8352#
FGETW	    85#	  8057
FINCMD	    85#	   385	  1560	  3589
FINECH	    31	   132#	   132	   378	   379	   943	   945	  1553	  1554
FINPUT	    31	   131#	   131	   377	   384	   979	  1107	  1552	  1559	  3588
FIOFF	    85#	   324	   437	   452	   665	   674	   769	   839	   854	   961	  1201	  1548	  1573	  1592
	  1962	  2139	  2145	  2209	  2354	  2363	  2409	  2416	  2541	  2698	  2877	  2969	  2972	  2997
	  3000	  3063	  3066	  3220	  3223	  3243	  3270	  3275	  3311	  3415	  3420	  3424	  3472	  3491
	  3499	  3507	  3515	  3523	  3562	  3618	  3638	  3997	  4002	  4006	  4075	  4080	  4090	  4175
	  4180	  4184	  4294	  4299	  4303	  4373	  4379	  4387	  4468	  4473	  4477	  4560	  4572	  4603
	  4615	  4675	  4680	  4684	  4748	  4753	  4757	  4809	  4814	  4824	  4916	  5568	  5574	  5580
	  5603	  5609	  5615	  5638	  5644	  5650	  5690	  5693	  5729	  5741	  5776	  5788	  5844	  5849
	  5853	  5912	  5917	  5921	  5972	  5980	  5984	  6003	  6011	  6015	  6165	  6277	  6305	  6464
	  6471	  6539	  6546	  6549	  6575	  6580	  6594	  6599	  9421	  9423	  9433	  9435	  9460	  9462
	  9488	  9495	  9502	  9510
FLDLIS	  3633	  3766#
FLOADB	  6028	  6071	  6094	  6129	  7936	  8021#
FLOADC	  6053	  7951	  8105#
FLODB0	  8025	  8033#
FLODB1	  8057#	  8070
FLODB2	  8058	  8074#
FLODBE	  8036	  8044	  8093#
FLODBX	  8028	  8092#
FLODC0	  8142#	  8154
FLODCX	  8112	  8116	  8125	  8167#
FLONOP	  8161	  8175#
FMTTYP	   136#	   136
FNAME	  2326	  2328	  2334	  2337	  7970	  7973	  7979	  7982	  7988	  7991	  7997	  8000	  8024	  8027
	  8033	  8038	  8041	  8047	  8050	  8074	  8345#
FOARG	    85#
FORPNT	    85#	   153	   258	  1223
FORSEL	  2468	  2473	  2836#	  6480
FUERR	  6060	  6083	  8279#
FUERR0	  8295#	  8305
FUNCT	   617	  1235	  1236	  1244	  1245	  1246	  1247	  1248	  1249	  1250	  1251	  1252	  1253
FVERF0	  8206#	  8249
FVERF1	  8209	  8223	  8233	  8238	  8247	  8248#
FVERFC	  6059	  6082	  7954	  8197#
FVERFE	  8202	  8256	  8268#                                                                                            SEQ 0471
GETLOG	    78#	  6341
GETPPN	 11925	 12035	 12079#
GETQU0	 10032	 10050#
GETQUE	    47	  6963	  9941	 10025#	 10163
GETQUX	 10046	 10064#
HAVIPA	    79#	 12190
ICRC	  9360	  9386	  9591#
ICRC0	  9641	  9653#
ICRC1	  9660#	  9671
ICRC2	  9656	  9676#	  9703
ICRC3	  9660	  9672	  9676	  9708#
ICRC4	  9715#	  9717
ICRCX	  9709	  9712	  9723#
ICRCY	  9598	  9729#
ICWA0	    78#	  5264
IGNFLG	  6651#	  6651	  6768	  6774	  6825	  7000	  7001	  7003
IMTAB	  8815	 11563#
INHCRC	  9275#	  9275	  9277	  9294	  9356	  9381	  9591
INITPD	    76#	   712
INITPI	    76#	   226	   363	  6425
INSQE1	 10005#
INSQE2	  9929	  9934	  9984	 10004#
INSQUE	    46	  6544	  6813	  6931	  9921#
INTAPR	    77#	  6407
INTCON	    77#	  6404
INTCSR	    77#	  6410
INTEND	    77#	  1868
INTNUM	    77#	  1866	  1867	  1869	  6369	  6380	  6383	  7215
INTPC	    77#	  6394
INTTIM	    77#	  6397
INTTYP	    77#	  6385	  6413
INTUSE	    77#	  6400
IPACLR	    74#	  2913	  5222	  8620	  9170
IPASRT	    75#	  2967	  3218
IPASST	    75#	  3061	  5688
IPASTP	    75#	  2995
IPCB	  8650	 11506#
IPRIN0	  6369#	  6373
IPRINI	  6371	  6380#
IPRINT	    42	  6367#
IPRINX	  6370	  6374#
IPTAB	  8686	 11541#
IQCMAX	  1148	  9919#	  9986	  9987
IQFMIN	  1147	  9918#	  9936	  9937
IQFUL	  1145	  9917#	  9933
ISTOP	    74#	  2961	  3049	  3240	  3272	  3289	  3313	  3328	  3440	  4577	  4620	  4689	  4762	  5180
	  5678	  5746	  5793	  5858	  5926	  5986	  6033	  6076	  6279	  6307	  7011	  7042	  7530	  7550
	  7943	  8414	  8646	 10366
ITERAT	   192
ITEXT	  9354	  9379	  9543#
ITEXT0	  9547	  9555	  9559#
ITRCNT	   193
LARG2	  4093	  4123	  4390#	  4390	  4416                                                                             SEQ 0472
LASARG	    87#	  2367	  2754
LASENT	  9851	  9864#	  9930	 10120
LAST	  8636
LDCRAM	    73#	  3928	  3935	  8457	  8470
LDCSR	    73#	  2880	  2892	  3291	  3315	  3330	  4042	  4122	  4126	  4215	  4339	  4341	  4415	  4419
	  4502	  4504	  4865	  4867	  4971	  4973	  5154	  5156	  5262	  5284	  5340	  5342	  5366	  5368
	  5396	  5398	  6035	  6078	  6199	  6201	  6823	  6940	  7130	  7145	  7175	  7945	  8328	  8330
	  9183	 10334
LDEBUF	    73#	  3278
LDEBUG	    16	   111#	   111	   178	   187	   342	   351	  1526	  1534	  7947	  8615
LDMCAT	 10944	 10995
LDPTT	 10945	 10996
LDRAR	    73#	  3317	  3331	  3921	  3933	  3949	  3956	  4040	  4120	  4213	  4337	  4413	  4500	  4863
	  4969	  5152	  5260	  5338	  5364	  5394	  6197	  8326	  8446	  8467	  9179
LENTRY	  7028	  7032	  9839	  9861#	 10050	 10052	 10054	 10064	 10387
LINCNT	 11210#	 11210	 11216
LINKG	 11274	 11285#
LINKP	 10381	 10384	 10425	 10474	 10517	 10533	 10536	 10539	 10578	 10596	 10602	 10795	 11016	 11019
	 11247	 11271#	 11488	 11491
LINKV	 10377	 11250	 11283#
LINKV0	 11287#	 11292
LINKV1	 11288	 11294#
LINKV2	 11290	 11297#
LINKVX	 11295	 11300#
LINTAB	 11286	 11306#
LOCDON	    80#	 12191
LOCFR	  4266	  4306	  4381	  4401	  4441	  4480	  4549#
LOCPHY	    80#	   200
LOCTO	  4268	  4308	  4382	  4443	  4482	  4550#
LOGPNT	    78#	  6342
LOOFLG	  6650#	  6650	  6787	  6991	  6992	  6994
LOOP	   616	  1241	  1242	  1243	  1254
LOOPGM	   242
LOOPTS	   997
MAPNEW	   114
MAXTST	   419#	   424	   434	   638	   660	   662	   669	   671	   849	   851	   878	  1054	  1138	  5975
	  5977	  6006	  6008
MBCN	   198	   335	  1140	  1215	  1520	  5263	  6699	 12192
MCAT0	 11870#
MCAT1	 11872#
MCAT10	 11886#
MCAT11	 11888#
MCAT12	 11890#
MCAT13	 11892#
MCAT14	 11894#
MCAT15	 11896#
MCAT16	 11898#
MCAT17	    48	 11900#
MCAT2	 11874#
MCAT3	 11876#
MCAT4	 11878#
MCAT5	 11880#
MCAT6	 11882#                                                                                                            SEQ 0473
MCAT7	 11884#
MCATLD	 10954
MCNVER	     9	 11954	 12067
MCPUS	   122#	   122
MDEBUG	    15	   110#	   110	   177	   185	   341	   349	  1525	  1532	  7963	  8631
MLIST	  6017	  8568#
MLIST0	  8572#	  8596
MLISTX	  8574	  8597#
MLNUM	    26	  5990	  8403#	  8403	  8493
MLOAD0	  8420#	  8435	  8437	  8495
MLOAD1	  8426	  8441#
MLOAD2	  8472	  8478	  8481	  8493#
MLOADN	    25	  4036	  4111	  4207	  4333	  4406	  4496	  4856	  4941	  5148	  5254	  5334	  5360	  5390
	  5673	  6193	  8162	  8322	  8390#	  8621
MLOADR	  8431	  8436#
MLOADX	  8422	  8499#
MLOADY	    25	  5987	  8392#
MONTYP	   166
MPRUN	  4041	  4121	  4214	  4338	  4414	  4501	  4864	  4970	  5153	  5261	  5339	  5365	  5395	  6198
	  6684	  7127	  7142	  7170	  7172	  8327	  9180	  9187
MSG	  8635
MTABLE	    48	  5621	  8815	  8816	  8931	  9047	 10437	 10459	 11314	 11523	 11619	 11869#
MULFLG	   357#	   357	  1538	  3874	  3880	  3908	  4051	  4059	  4348	  4357	  5419	  5422	  7339
MULINI	   358#	   358	  1539	  3890	  5431
MVCOM	  8394	  8397	  8402#
MVFLAG	  8393#	  8393	  8396	  8456	  8458	  8469	  8471
MVNUM	  8402#	  8402	  8479	  8499	  8517	  8521
MVPNT	    25	  8502	  8517#	  8636
MVPNT1	  8528#	  8549
MVPNTW	  8534	  8538	  8544	  8555#
MVPNTX	  8546	  8551#
MVREP	  8390#	  8390	  8392	  8501
MWBADR	  8408	  8409	  8483	  8507#	  8528
MWBLAC	  8487	  8509#	  8536	  8541
MWBLCO	  8484	  8508#	  8532	  8540
MWBRAC	  8410	  8489	  8511#	  8537	  8543
MWBRCO	  8485	  8510#	  8533	  8542
MWDQUE	  3612	  3788#
NCHAR	  6644#	  6644	  6676	  6677	  6839	  6840
NEWENT	    48	  6965	  6971	  9943#	  9943	  9962	  9991	 10087	 10094	 10113	 10126	 10167	 10172	 10284
	 10290
NIA	   615	  1237	  1238	  1239	  1240
NIPORT	   198	   335	  1140	  1520	 12110#	 12208
NPACKL	  6648#	  6648	  6728	  6731	  6818
NPACKO	  6647#	  6647	  6735	  6738	  6771
NPACKQ	  6649#	  6649	  6721	  6724	  6767	  6778
NPACKR	  6646#	  6646	  6714	  6717	  6780
NPACKS	  6645#	  6645	  6707	  6710	  6942
NSARD	 10960
NSAWR	 10961
NUMENT	    48	  6819	  6928	  6936	  6960	  7026	  9821	  9849	  9865#	  9935	  9985	 10025	 10030	 10101
	 10385	 10388
NUMPNT	 10661#	 10661	 10669                                                                                             SEQ 0474
OP	  6466	  6499	  6501	  6502	  6515	  6758	  6759	  6760	  6766	  6777	  6779	  6797	  6798	  6947
	  7086	  7660	  7662	  7693	  7705	  7708	  7710	  7711	  7721	  7760	  7781	  9292	  9310	  9313
	 10480	 10918	 10927	 10934	 10983
OPCPN0	 10924#	 10928
OPCPNE	 10926	 10933#
OPCPNT	    47	  6831	  6948	  7087	 10481	 10916#	 11024
OPCPNX	 10932	 10937#
OPRSEL	   232	   312	   319	   322	   369	   463	  1099	  1204	  1211
P	   317	  1026	  1029	  1030	  1031	  1512	  5385	  5387	  7043	  7053	  7064	  7100	  7157	  7956
	  7964	  8092	  8110	  8111	  8124	  8169	  8170	  8267	  8399	  8500	  8624	  8632	  9188	  9574
	  9653	  9783	  9793	  9832	  9902	 10003	 10004	 10027	 10169	 10223	 10265	 10988
P1	 12202#
P3	 12200#
P5	 12198#
P7	 12196#
PACK1	 10490	 10561#
PACK10	 10496	 10836#
PACK11	 10497	 10870#
PACK1A	 10568	 10590#
PACK2	 10491	 10613#
PACK3	 10492	 10621#
PACK4	 10493	 10628#
PACK4B	 10634#	 10650
PACK4C	 10642	 10649#	 10663	 10681
PACK4D	 10643	 10654#
PACK4E	 10644	 10657#
PACK4F	 10662#	 10668	 10677
PACK4G	 10645	 10679#	 10691
PACK4T	    30	 10634	 10639	 10646	 10679	 10682	 10685	 10716#
PACK4X	 10655	 10695#
PACK4Y	 10658	 10707#
PACK5	 10498	 10778#
PACK6	 10494	 10807#
PACK7	 10495	 10821#
PACKET	    49	  5656	  6537	  6627	  6792	  6793	  6794	  6796	  6798	  6800	  6803	  6805	  6807	  6808
	  6809	  6916	  6917	  6918	  6947	  7660	  7664	  7679	  7689	  8931	  9047	  9283	  9284	  9285
	  9304	  9313	  9340	  9345	  9347	  9353	  9358	  9359	  9365	  9367	  9369	  9370	  9372	  9374
	  9377	  9378	  9383	  9384	  9385	  9403	  9439	  9441	  9443	  9467	  9468	  9519	  9520	  9522
	  9524	  9526	  9528	  9530	  9603	  9605	  9607	  9609	  9611	  9613	  9633	  9635	  9949	  9957
	  9958	  9974	 10238	 10240	 11341	 11342	 11343	 11344	 11638#
PACKG	 10499	 10894#
PADDR	  7586	  7602	 10581	 10599	 10785	 10788	 10844	 10873	 11038#
PADFLG	  2516	  2518	  2523	  2525	  2838#	  6482
PAG	  5267
PARFLG	    26	  2251	  2253	  2258	  2260	  2825#	  3925	  4589	  4590	  4592	  4632	  4633	  4635	  4702
	  4703	  4705	  5762	  5763	  5765	  5801	  5802	  5804	  5866	  5867	  5869	  7551	  7552	  7561
	  8140	  8141	  8155
PASCNT	   172	   248	   254	   371
PASPNT	   233	   248#
PAT	  2391	  2392	  2393	  2401	  2402	  2412	  2413	  2414	  2419	  2420	  2424	  9570
PAT1	  2392#	  2392	  2396#	  2396	  2401	  2407	  2412
PAT2	  2393#	  2393	  2402	  2405	  2406	  2424
PATCH	 12125#                                                                                                            SEQ 0475
PATCH0	 12124#
PATPNT	    88#	  2375	  2419
PBSD	 10605	 11235#
PCB	    55	  6753	  6755	  6926	  6961	  6966	  6973	  8650	  8651	  8653	  8660	  8674	  8827	  8836
	  8931	  9041	  9047	  9157	  9822	  9823	  9824	  9931	 10036	 10037	 10038	 10056	 10057	 10058
	 10106	 10107	 10108	 10132	 10133	 10134	 10151	 10155	 10165	 10171	 10177	 10194	 10195	 10196
	 10360	 10361	 10362	 11306	 11307	 11308	 11309	 11310	 11311	 11312	 11432	 11436	 11438	 11440
	 11443	 11448	 11452	 11457	 11460	 11463	 11466	 11485	 11487	 11490	 11507	 11508	 11512	 11513
	 11531	 11535	 11602#	 11603	 11604	 11608	 11609	 11627	 11631	 11655	 11696
PCBFLG	  2298	  2300	  2305	  2307	  2833#	  2956
PCMD	  1516#	  1516	  1580	  1588
PDSABL	  7127	  7172
PENABL	  7142
PFLAG0	 11135	 11156#
PFLAG1	 11152	 11163#
PFLAGS	 11025	 11121#
PG	 12197	 12199	 12203#
PGMNAM	    19	    94#
PHEAD	 10561	 10613	 10621	 10628	 10778	 10807	 10821	 10836	 10870	 10894	 11009#
PK	  7089	 10360	 10364	 10367	 10376	 10379	 10380	 10383	 10396	 10473	 10479	 10516	 10532	 10535
	 10538	 10563	 10566	 10573	 10577	 10580	 10582	 10583	 10591	 10595	 10598	 10601	 10603	 10632
	 10780	 10784	 10787	 10790	 10794	 10796	 10797	 10809	 10823	 10843	 10845	 10872	 10874	 10896
	 11015	 11018	 11021	 11059	 11123	 11129
PLICTL	  4816	  4847	  4904	  4918	  4928	  4938	  4946	  5021#
PLIDAT	  4827	  4850	  5022#
PLINUM	  4963#	  4963	  4977	  4979
PLIRD	 10959
PLIREP	  4836	  4874	  4903	  4927	  4991	  5023#	  5475
PLIWR	 10958
PLOG	  5137	  5159	  5251#
PLOG0	  5274#	  5282
PLOGM	  5253	  5294#
PMISC0	 10899#	 10907
PMODE	    38	   194	   356	  1121	  1537	  9394	  9410	  9450	  9476	 12108#
PNTCRM	  3901	  6112	  7267#	  8590
PNTENB	   152	   332	  1519
PNTHST	  3083	  3126	  3164#
PNTRS0	  7083#
PNTRS1	  7091	  7096#
PNTRS2	  7100#
PNTRSP	    46	  6775	  6782	  7078#
PNTRSX	  7101#
PNTWD	  3870	  6147	  7352#	  8300	  8303
PORT	   614	  1232	  1233	  1234
PPAKC	    54	 10397	 10467#
PPAKC0	 10479#	 10519
PPAKCC	  7095	 10485#
PPAKCX	 10502#
PPAKF	    54	 10399	 10400	 10529#
PPAKR	    54	 10398	 10510#
PPCB	    54	  5095	  6561	 11428#
PPCB0	 11476#	 11495
PPCBD	    54	  6902	 11472#                                                                                            SEQ 0476
PQUEM0	 10438#	 10460
PQUEP0	 10414#	 10428
PQUEU0	 10393#	 10401
PQUEUE	    54	  5103	  6603	 10352#
PQUEUM	 10359	 10433#
PQUEUP	 10358	 10409#
PQUEUX	 10389	 10395	 10402#
PQUEUY	 10403#	 10429	 10461
PRSFLG	  2274	  2276	  2281	  2283	  2826#	  3058
PSTAT0	 11070#
PSTAT1	 11072#	 11077
PSTAT2	 11074	 11084#
PSTATS	 11026	 11056#
PSTATX	 11066	 11080	 11090#
PTABLE	    48	  5586	  8689	  8691	  8853	  8859	  8865	  8931	  9047	 10252	 10258	 10413	 10427	 11313
	 11522	 11618	 11707#
PTCHK0	 10253#	 10259
PTCHK1	 10256	 10264#
PTCHKP	  6921	  9923	 10236#
PTCHKX	 10247	 10265#
PTCHKY	 10260	 10266#
PTEXT	 10585	 10799	 11179#	 11260
PTEXT0	 11189#	 11203
PTEXT1	 11185	 11207#
PTEXT2	 11209#	 11225
PTEXT3	 11212#	 11217
PTIME	    84#	  6829	  6885	  6900	  6945	  7084	  7795	  7826
PTTBEG	  8679	  8680	 11775#
PTTEND	  8681	 11860#
PTTF0	  8697	  8703	  8704	  8754	  8755	  8871	  8911	  8947	  8973	  8998	  9023	  9063	  9089	  9114
	  9139	 10298	 11317	 11346	 11371	 11396	 11777	 11781#	 11788
PTTF1	  8702	  8705	  8706	  8756	  8757	  8871	  8911	  8947	  8973	  8998	  9023	  9063	  9089	  9114
	  9139	 10298	 11318	 11347	 11372	 11397	 11781	 11787#	 11792
PTTF10	  8716	  8719	  8720	  8770	  8771	  8887	  8917	  8957	  8979	  9004	  9029	  9073	  9095	  9120
	  9145	 10303	 11325	 11354	 11379	 11404	 11817	 11821#	 11828
PTTF11	  8718	  8721	  8722	  8772	  8773	  8887	  8917	  8957	  8979	  9004	  9029	  9073	  9095	  9120
	  9145	 10303	 11326	 11355	 11380	 11405	 11821	 11827#	 11832
PTTF12	  8720	  8723	  8724	  8774	  8775	  8887	  8917	  8957	  8985	  9010	  9035	  9073	  9101	  9126
	  9151	 10308	 11327	 11356	 11381	 11406	 11827	 11831#	 11838
PTTF13	  8722	  8725	  8726	  8776	  8777	  8887	  8922	  8957	  8985	  9010	  9035	  9073	  9101	  9126
	  9151	 10308	 11328	 11357	 11382	 11407	 11831	 11837#	 11842
PTTF14	  8724	  8727	  8728	  8778	  8779	  8895	  8922	  8957	  8985	  9010	  9035	  9073	  9101	  9126
	  9151	 10308	 11329	 11358	 11383	 11408	 11837	 11841#	 11848
PTTF15	  8726	  8729	  8730	  8780	  8781	  8895	  8922	  8957	  8985	  9010	  9035	  9073	  9101	  9126
	  9151	 10308	 11330	 11359	 11384	 11409	 11841	 11847#	 11852
PTTF16	  8728	  8731	  8732	  8782	  8783	  8895	  8922	  8957	  8985	  9010	  9035	  9073	  9101	  9126
	  9151	 10308	 11331	 11360	 11385	 11410	 11847	 11851#	 11858
PTTF17	  8697	  8730	  8733	  8784	  8785	  8895	  8922	  8957	  8985	  9010	  9035	  9073	  9101	  9126
	  9151	 10313	 11332	 11361	 11386	 11411	 11778	 11851	 11857#
PTTF2	  8704	  8707	  8708	  8758	  8759	  8871	  8911	  8947	  8973	  8998	  9023	  9063	  9089	  9114
	  9139	 10298	 11319	 11348	 11373	 11398	 11787	 11791#	 11798
PTTF3	  8706	  8709	  8710	  8760	  8761	  8871	  8911	  8947	  8973	  8998	  9023	  9063	  9089	  9114
	  9139	 10298	 11320	 11349	 11374	 11399	 11791	 11797#	 11802                                             SEQ 0477
PTTF4	  8708	  8711	  8712	  8762	  8763	  8879	  8911	  8947	  8979	  9004	  9029	  9063	  9095	  9120
	  9145	 10298	 11321	 11350	 11375	 11400	 11797	 11801#	 11808
PTTF5	  8710	  8713	  8714	  8764	  8765	  8879	  8911	  8947	  8979	  9004	  9029	  9063	  9095	  9120
	  9145	 10303	 11322	 11351	 11376	 11401	 11801	 11807#	 11812
PTTF6	  8712	  8715	  8716	  8766	  8767	  8879	  8917	  8947	  8979	  9004	  9029	  9063	  9095	  9120
	  9145	 10303	 11323	 11352	 11377	 11402	 11807	 11811#	 11818
PTTF7	  8714	  8717	  8718	  8768	  8769	  8879	  8917	  8947	  8979	  9004	  9029	  9063	  9095	  9120
	  9145	 10303	 11324	 11353	 11378	 11403	 11811	 11817#	 11822
PTTFQ	    55	  6804	  6927	  7037	  8682	  8690	  8698	  8700	  8702	  8732	  8869	  8947	  9063	  9341
	  9343	  9825	  9932	 10039	 10059	 10109	 10135	 10197	 10363	 11315	 11316	 11708	 11712	 11716
	 11720	 11724	 11728	 11732	 11736	 11740	 11744	 11748	 11752	 11756	 11760	 11764	 11768	 11776#
	 11782	 11857
PTTLD	 10955
PTTVAL	  2676	  2681	  2853#	  6491
PUTQU0	 10086	 10094#
PUTQU1	 10102	 10120#
PUTQUE	    47	  6972	  9992	 10080#	 10193
PUTQUX	 10116	 10140#
PVPAGI	   115
Q	  5102	  5107	  5108	  6602	  6610	  6611	  6922	  6927	  6956	  6967	  7022	  7038	  7080	  7090
	  7101	  9825	  9924	  9932	  9950	  9952	  9982	 10039	 10059	 10085	 10109	 10135	 10155	 10156
	 10190	 10197	 10206	 10242	 10264	 10286	 10287	 10288	 10292	 10359	 10363	 10374	 10400	 11257
QARG1	  6582#	  6582	  6597	  6602	  6610
QARG2	  6583#	  6583	  6596#	  6596	  6611
QUNKF0	  8661	  8662	  8737	  8738	  8837	  8903	  8939	  8967	  8992	  9017	  9055	  9083	  9108	  9133
	 10314	 11333	 11362	 11387	 11412	 11517	 11613	 11654#	 11661
QUNKF1	  8660	  8663	  8664	  8739	  8740	  8837	  8903	  8939	  8967	  8992	  9017	  9055	  9083	  9108
	  9133	 10314	 11334	 11363	 11388	 11413	 11654	 11660#	 11667
QUNKF2	  8662	  8665	  8666	  8741	  8742	  8837	  8903	  8939	  8967	  8992	  9017	  9055	  9083	  9108
	  9133	 10314	 11335	 11364	 11389	 11414	 11660	 11666#	 11673
QUNKF3	  8664	  8667	  8668	  8743	  8744	  8837	  8903	  8939	  8967	  8992	  9017	  9055	  9083	  9108
	  9133	 10314	 11336	 11365	 11390	 11415	 11666	 11672#	 11679
QUNKF4	  8666	  8669	  8670	  8745	  8746	  8845	  8903	  8939	  8967	  8992	  9017	  9055	  9083	  9108
	  9133	 10314	 11337	 11366	 11391	 11416	 11672	 11678#	 11685
QUNKF5	  8668	  8671	  8672	  8747	  8748	  8845	  8903	  8939	  8967	  8992	  9017	  9055	  9083	  9108
	  9133	 10319	 11338	 11367	 11392	 11417	 11678	 11684#	 11691
QUNKF6	  8670	  8673	  8674	  8749	  8750	  8845	  8909	  8939	  8973	  8998	  9023	  9055	  9089	  9114
	  9139	 10319	 11339	 11368	 11393	 11418	 11684	 11690#	 11697
QUNKF7	  8672	  8675	  8751	  8752	  8845	  8909	  8939	  8973	  8998	  9023	  9055	  9089	  9114	  9139
	 10319	 11340	 11369	 11394	 11419	 11518	 11614	 11690	 11696#
RALUB	  3970#	  3970	  3981	  3993	  4004	  4008	  4023	  4053	  4082	  4104	  4149	  4160	  4172	  4182
	  4186	  4200	  4219	  5083	  5461	  5521
RALUE	  3972#	  3972	  3982	  3989	  3999	  4010	  4054	  4084	  4151	  4161	  4168	  4177	  4188	  4220
	  5085	  5462	  5522
RANCNT	  1046#	  1046	  1058	  1064
RANDBS	  1022
RANGEN	  1019#	  1055
RANNUM	  1021#	  1021	  1024	  1050
RCCNT	 10946	 10997
RDADD0	  9201#	  9212
RDADDR	    47	   222	  2575	  2647	  7576	  9197#
RDBF	  5191	  5329#	  9204
RDBUF1	  5191#	  5199                                                                                                     SEQ 0478
RDBUF2	  5216#	  5238
RDBUF3	  5233#	  5236
RDBUFR	  5063	  5129	  5209#
RDBUFT	  5049	  5124	  5178#
RDBUFX	  5218	  5242#
RDCRAM	    73#	  3950	  3957	  8459	  8473
RDCSR	    73#	   203	  2862	  2977	  5077	  6681	  6820	  6882	  6937	  7132	  7147	  7168	  7177	  9185
	  9787	 10218	 10329
RDEBUF	    73#	  3248	  4043	  4342	  4974	  5343	  5369
RDLAR	    73#	  3292	  4984	  6202
RDNSA	 10949	 11000
RDPLI	 10948	 10999
REL	    79#	 12180
RELIAB	  1129
REQ1	    79#	 12178
REQ2	    79#	 12179
RESCR0	  7555#	  7560
RESCRM	  4062	  4139	  4226	  4360	  4432	  4516	  4880	  4998	  5158	  5289	  5347	  5373	  5400	  5708
	  6233	  7548#
RESQAV	  9789	 10220	 10222	 10333
RFROM	  3387	  3434	  3463#
RLOCB	  4267#	  4267	  4278	  4290	  4301	  4305	  4316	  4320	  4326	  4330	  4350	  4442	  4453	  4465
	  4475	  4479	  4493	  4508	  5114	  5468	  5529
RLOCE	  4269#	  4269	  4279	  4286	  4296	  4307	  4352	  4444	  4454	  4461	  4470	  4481	  4510	  5116
	  5469	  5530
RQAFLG	    48	  6659#	  6659	  6752	  6756	 10168	 10215	 10221
RRDBF	  5233	  5355#
RSPFLG	  2433	  2440	  2443	  2448	  2450	  2835#	  6476
RSPONS	    49	  6758	  6764	  6765	  6799	  6801	  6806	  6808	  7086	  7089	  7618	  7708	  7713	  7723
	  7750	  7760	  7763	  7773	 10173	 10174	 10175	 10177	 10178	 11258	 11642#
RSPOPC	 10923	 10953#
RSPPAK	  7094	 10470#	 10470	 10513	 10629
RSPQUE	    46	 10190#	 10190
RSTART	  1172
RTO	  3385	  3436	  3462#
RUNTME	    84#	   260	  1048	  1225	  6655	  6692	  6704	  6907
RUPDA1	  7725	  7737#
RUPDA2	  7722	  7746#
RUPDA3	  7753	  7760#
RUPDAT	    30	  7703#	 10202
RUPDAX	  7733	  7741	  7781#
RWAIT	    46	  9783#
RWAIT0	  9787#	  9792
RWAITX	  9790	  9794#
S1	 11934#	 12132
S2	 12043#	 12133
SADDR	    50	   221	   223	  2576	  2651	  2653	  2655	  2657	  2659	  2661	  2843#	  6763	  7585	  7621
	  7622	  7665	  7666	  7714	  7715	  9205	  9206	  9207	  9208	  9209	  9210	  9518	  9618	  9620
	  9622	  9624	  9626	  9628
SANCH0	  7028#	  7036
SANCHE	  7031	  7035	  7041#
SANCHK	  6670	  7020#
SANCHX	  7025	  7027	  7037#                                                                                            SEQ 0479
SANFLG	  2851#
SAVAD1	  2558#	  2558	  2582	  2588	  2594	  2600	  2615
SAVAD2	  2559#	  2559	  2606	  2613
SAVCMD	  1512#	  1512
SAVCO1	  7629#	  7638
SAVCO2	  7635	  7643#
SAVCON	  7618#	  7777
SAVCR0	  7533#	  7538
SAVCRL	  7531	  7553	  7568#
SAVCRM	  4018