KA820-AA
















      PPPPPP       A       RRRRRR    TTTTTTTTT         IIIII  IIIII
      P     P     A A      R     R       T               I      I
      P      P   A   A     R      R      T               I      I
      P      P   A   A     R      R      T               I      I
      P     P   A     A    R     R       T               I      I
      PPPPPP    AAAAAAA    RRRRRR        T               I      I
      P        A       A   R   R         T               I      I
      P        A       A   R    R        T               I      I
      P       A         A  R     R       T               I      I
      P       A         A  R      R      T             IIIII  IIIII









                USER AND PROGRAMMING INFORMATION


   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION      Page 2
   PART II TABLE OF CONTENTS                                    24 Jan 86


           1.0     POWERUP FLOW . . . . . . . . . . . . . . . . . . . . 3
           2.0     MICROCODE PATCHES  . . . . . . . . . . . . . . . . . 4
           2.1       PATCH MECHANISM  . . . . . . . . . . . . . . . . . 4
           2.2       READING PATCHES FROM THE ROM/RAM CHIPS . . . . . . 6
           2.3       LOADING PATCHES  . . . . . . . . . . . . . . . . . 7
           3.0     SELFTEST . . . . . . . . . . . . . . . . . . . . .  10
           3.1       SELFTEST DISCRIPTION . . . . . . . . . . . . . .  10
           3.2       SELFTEST USERS AND USES  . . . . . . . . . . . .  11
           3.3       SELFTEST PERFORMANCE GOALS . . . . . . . . . . .  11
           3.4       FUNCTIONAL DESCRIPTION . . . . . . . . . . . . .  12
           3.5       POWERUP AND SELFTEST FLOW DIAGRAM  . . . . . . .  19
           4.0     INITIALIZATION . . . . . . . . . . . . . . . . . .  20
           4.1       POWER UP INITIALIZATION  . . . . . . . . . . . .  20
           4.2       PROCESSOR INITIALIZATION   . . . . . . . . . . .  21
           4.3       SYSTEM BUS INITIALIZATION  . . . . . . . . . . .  23
           5.0     BOOTING  . . . . . . . . . . . . . . . . . . . . .  28
           5.1       BOOT MICROCODE . . . . . . . . . . . . . . . . .  28
           6.0     EEPROM CONTENTS  . . . . . . . . . . . . . . . . .  32
           6.1       CHECKSUM ALGORITHM FOR EEPROM DATA . . . . . . .  38
           6.2       READING AND WRITING THE EEPROM . . . . . . . . .  38
           7.0     CONSOLE  . . . . . . . . . . . . . . . . . . . . .  39
           7.1       CONSOLE SOURCES  . . . . . . . . . . . . . . . .  39
           7.2       CONSOLE I/O MODE ENTRY . . . . . . . . . . . . .  44
           7.3       SCORPIO CONSOLE COMMANDS AND SYNTAX  . . . . . .  45
           7.4       APT SUPPORT  . . . . . . . . . . . . . . . . . .  64
           7.5       CONSOLE OUTPUT DURING BOOTING  . . . . . . . . .  64
           8.0     MACHINE CHECK SPECIFICATION  . . . . . . . . . . .  68
           8.1       MACHINE CHECK CONDITIONS . . . . . . . . . . . .  69
           8.2       MACHINE CHECK EXCEPTION  . . . . . . . . . . . .  71
           8.3       ERROR RECOVERY . . . . . . . . . . . . . . . . .  72
           8.4       STACK CONTENTS DURING MACHINE CHECK  . . . . . .  73
           9.0     SYSTEM CONTROL BLOCK VECTORS . . . . . . . . . . .  79
           10.0    PCNTL CSR  . . . . . . . . . . . . . . . . . . . .  81
           11.0    SERIAL LINES . . . . . . . . . . . . . . . . . . .  93
           11.1      RXCS1, RXCS2, RXCS3 - RECEIVE CSR REGISTERS  . .  93
           11.2      RXDB1, RXDB2, RXDB3 - RECEIVE DATA REGISTERS . .  95
           11.3      TXCS1, TXCS2, TXCS3 - TRANSMIT CSR REGISTERS . .  96
           11.4      TXDB1, TXDB2, TXDB3 - TRANSMIT DATA REGISTERS  .  98
           12.0    BI PROGRAMMING . . . . . . . . . . . . . . . . . . 100
           12.1      BI RESET . . . . . . . . . . . . . . . . . . . . 100
           12.2      BI STOP COMMAND  . . . . . . . . . . . . . . . . 100
           12.3      BIIC REGISTERS   . . . . . . . . . . . . . . . . 100
           13.0    PROGRAMMING THE WATCH CHIP . . . . . . . . . . . . 114
           13.1      CSR DEFINITIONS  . . . . . . . . . . . . . . . . 116
           13.2      OPERATING SYSTEM SOFTWARE  . . . . . . . . . . . 118

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION      Page 3
   POWERUP FLOW                                                 24 Jan 86


   1.0  POWERUP FLOW

   The flow diagram  in  fig.   1.0  shows  the  flow  of  the  KA820  powerup
   microcode.   This  flow diagram should be consulted when reading sections 2
   through 5.
             figure 1.0  POWERUP MICROCODE FLOW
                                                       .----------------------------.
                   +---------------------------------->| DCLO deasserted.           |
                   |                                   | BI selftest initiated.     |
                   |                                   | yellow LED off, red LED on.|
|                  |                                   | baud rate to 1200 on UART0 |
|                  |                                   `-----------+----------------'
|                  |                                               |<-------------------------------.
|                  |                                               V                                | NO
|                  |                                   .-----------+-----------.  NO       .-------------------------.
|                  |                                   | ACLO deasserted ?     |---------->|  ACLO 10 sec. timeout?  |
|                  |                                   `-----------+-----------'           `-------------------------'
|                  |                                               | Y                              |  YES
|                  |                                               V <-------------.                V             
|                  |   .------------------.         N  .-----------+-----------.   |     .----------------------.      
|                  |   | can't read valid |<-----------| Able to set baud rate |   |     | Print ?41 to console |<---------.
|                  |   | baudrate (30-37) |            |      from  EEPROM?    |   |     `----------+-----------'          |
|                  |   `--------+---------'            `-----------+-----------'   |                |<------------------.  |
|                  |            |                                  | Y             |                V                   |  |
|                  |            V                                  |               | Y    .--------------------.        |  |
|                  |   .-----------------.                         V               `------+  ACLO deasserted?  |        |  |
|                  |   | set default BR  |             .-----------+------------.         `---------+----------'        |  |
|                  |   |    to 1200      |             |    Print ASCII "#".    |                   |  NO               |  |
|                  |   `-----------------'             | Init CAM and RAM of CS.|                   |                   |  |
|                  |            |                      | Read eeprom constants. |                   V                   |  |
|                  |            |                      |   Checksum eeprom      |          .---------------------.  N   |  |
|                  |            V                      |    patch section.      |          | 20 minute timeout?  +------'  |
|                  |        .<-------------------------+ Load patches, r/wcheck |          `--------+------------'         |
|                  |        |          <--any failures |   & enable patches.    |                   |  Y                   |
|                  |        |                          |   Turn red LED off.    |                   `----------------------'
|                  |        |                          `-----------+------------'
                   |        |                                      |
                   |        |                                      V
                   |        |                          .-----------+-----------.
                   |        |                      .<--+     T(est) command?   |
                   |        |                      | Y `-----------+-----------'
                   |        |                      |               | N
                   |        |                      |               V
                   |        |                      |   .-----------+-----------.
                   |        |                      |<--+ Fast or Slow test ?   +---.
                   |        |                      | S `-----------------------' F |
                   |        |                      |                               |
                   |        |                      V                               V
                   |        |          .-----------+-----------.       .-----------+-----------.
                   |        |          |  Comprehensive Slow   |       |      Fast Test.       |
                   |        |          |   Test.  Print ASCII  |       |   Enable Cache and    |
                   |        |<---------+    character after    |       |   F Chip if present.  |
                   |        | failures |    each section.      |       `-----------+-----------'
                   |        |          `-----------+-----------'                   |
                   |        |                      |                               |
                   |        |                      `---------------+---------------'
                   |        |                                      |
                   |        |                                      V
                   |        |                     .---------------------------------.
                   |        |                     |       Print ASCII "#".          |       
                   |        |                     |       Do Power Up Init.         |
|                  |        |                     | Light yellow LED, clr Broke bit |
                   |        |                     `----------------+----------------'
                   |        |                                      |
                   |        |                                      V
                   |        |                          .-----------+-----------.
                   |        |                          | Processor Init.       |
                   |        |                          |   load PCNTL enable   |
                   |        |                          | for RX50 from EEPROM  |
                   |        |                          |    Init state, PSL,   |
                   |        |                          |    M Chip parity,     |
                   |        |                          |    Istatus, etc.      |
                   |        |                          `-----------+-----------'
                   |        |                                      |
                   |        |                                      V
                   |        |                       .--------------+-------------.
                   |        |                       |       System Init.         |
                   |        |                       |   Read BI BROKE bits, if   |
                   |        |                       |    broke, set warm flag.   |
|                  |        |                       | Output BI sys stat to cnsl.|
|            .-----+-----.  |  .-----------------.  |  Set BI memory S/E adrs's. |
|            | Save state|  |  | Processor Init  |  `--------------+-------------'
|            | T command.|  |  |    I command.   |                 |
|            `-----+-----'  |  `-----+-----+-----'                 |<---------------------------------------------------------.
|                  ^        |        ^     |                       |                                                          |
|                  |        V        |     V   W/C=11, T,          V                                                          |
|                .-+--------+--------+-----+-. or halt .-----------+-----------.    W/C=00    .-----------------------.       |
|                | VAX Console mode.         +<--------+ Boot decision ?       +------------->+ Set WARM flag.        |       |
|                `-+---+-------------+-------'         `-----------+-----------'              `-----------+-----------'       |
|                  |   ^             V                     W/C=10, |                                      |                   |
|                  |   |      .------+------.            and DCLO  |                                      V                   |
|                  |   |      | B command.  |               boot   |                          .-----------+-----------.       |       
                   |   |      `------+------'                      |<-------------------------+ Restart Param. Block? |       |     
                   |   |             |                             |                        N `-----------+-----------'       |
                   |   |             V                             |                                      | Y                 |
                   |   |      .------+------.                      |                                      |                   |
                   |   |      | System Init +--------------------->|                                      |                   |
                   |   |      `-------------'                      |                                      |                   |
                   |   |                                           V                                      V                   |
                   |   |                               .-----------+-----------.              .-----------+-----------.       |       
                   |   |                               | Set COLD flag.        |              | Load PC with 2nd      |       |
                   |   +<------------------------------+ Find 64K good memory. |              |    longword of RPB.   |       |
                   |   |                       failure | Load PC with address  |              `-----------+-----------'       |
                   |   |                               |    of boot device.    |                          |                   |
                   |   |                               `-----------+-----------'                          |                   |
                   |   |                                           |                                      |                   |
                   |   |                                           |<-------------------------------------'                   |
                   |   |                                           V                                                          |
                   |   |                               .-----------+-----------.                                              |
                   |   |                               | Processor Init.       |                                              |
                   |   |                               | Start at PC, either   |                                              |
                   |   |                               |    boot or restart.   |                                              |
                   |   |                               `-----------+-----------'                                              |
                   |   |                                           |                                                          |
                   |   |                                           V                                                          |
                   |   |    ^P and NEXT halts.         .-----------+-----------. VAX error halt .-----------------------.     |
                   |   `-------------------------------+ VAX program mode.     +--------------->| Set halt code.        +-----'
                   `---------------------------------->| run light on.         | or halt instr  `-----------------------'
                     START, CONTINUE, NEXT commands.   `-----------------------'

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION      Page 4
   MICROCODE PATCHES                                            24 Jan 86


   2.0  MICROCODE PATCHES

     2.1  PATCH MECHANISM

|    Microcode changes can be incorporated by patches which are stored in  the
|    EEPROM.   Their purpose is to correct microcode bugs;  they are not meant
|    for customizing the microcode.  The patches are loaded after powerup from
|    the   EEPROM  by  microcode.   They  can  also  be  loaded  by  VAX  MTPR
|    instructions.  Microcode loads the  patches  from  the  EEPROM  upon  the
|    deassertion of DCLO L.

     Patches are loaded into the custom VLSI RAM/ROM control  store  chips  as
     described  in  the  hardware  section.  The Control store consists of the
     following parts:

             15K locations of 40-bit ROM-based microwords.
                   (addresses 0 - 3BFF)

             1020 locations of 40-bit RAM-based microwords
                   (addresses 3C00 - 3FFB)

             160 locations of 14-bit CAM (content addressable memory).

     An empty CAM location is loaded with the ROM address to be patched.   The
     patch  for  the ROM address is loaded into RAM at the address (3C00 HEX +
     ROM address<9:0>).  When a ROM-based microinstruction is fetched from the
     controlstore,  its  address  is compared against all 160 locations of the
     CAM.  If the micro address is in the CAM,  the  microinstruction  at  RAM
     location  (3C00  HEX  +  ROM  address<9:0>)  is  substituted  for the ROM
     instruction.
     For example:
          ROM location 1200 HEX is to be patched.

     To do this:
         An empty CAM location is loaded with 1200 HEX

         RAM location 3E00 HEX is loaded with the 40-bit 
         microinstruction patch.

     Thus when microinstruction at ROM location 1200 HEX is  to  be  executed,
     the  microsequencer  substitutes the RAM instruction at location 3E00 hex
     in its place.

     The following example describes a multiple instruction patch:

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION      Page 5
   MICROCODE PATCHES                                            24 Jan 86



     What is loaded into the ROM/RAM chips:
      
        Empty CAM location loaded with patched ROM address 2256.

        RAM location 3E56  <-- 1st instruction of patch (branch to 3E33).

        RAM location 3E33  <-- 2nd instruction of patch



     The execution flow if ROM location 2256 is patched:

        ROM location 2256 is fetched but NOT executed.   (patched with 3E56)

        RAM location 3E56 is fetched and executed.       (does jump to 3E33)

        RAM location 3E33 is fetched and executed.   (jump back to ROM 2252)

        ROM location 2252 is fetched and executed.       (goes somewhere)



   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION      Page 6
   MICROCODE PATCHES                                            24 Jan 86


     2.2  READING PATCHES FROM THE ROM/RAM CHIPS

     The following two privileged processor registers are used  for  examining
     the contents of the patch RAM using MTPR and MFPR instructions.

     WCSA  IPR #2C

     31                   22 21                      08 07              00
|    +----------------------+--------------------------+------------------+
|    |                      |   Address bits <0:13>    | data bits <16:9> |
|    +----------------------+--------------------------+------------------+

     This register is used in conjunction with the WCSD register  for  reading
     the  contents of the control store.  It is interpreted by microcode which
     then accesses the ROM/RAM chips as specified by the 14 bit address.   The
     low order byte contains bits <16:9> of the 40 bit microword that is to be
     read;  the other 32 bits of data are read using the WCSD register.

     NOTE:  The 14 address bits are BACKWARDS from the normal VAX  order,  and
     the  data  bits  that  are  read  in the WCSD register are permuted in an
     unusual way which reduces the amount of microcode required.


     WCSD  IPR #2D

      31           23  22  21                                           00
     +---------------+----+-----------------------------------------------+
     |data bits <8:0>|<39>|            data bits <17:38>                  |
     +---------------+----+-----------------------------------------------+


     To READ a control store location, an MTPR is first performed to the  WCSA
     with a valid address and don't care data.  Then an MFPR is performed from
     the WCSD followed by another MFPR from  the  WCSA,  IN  THAT  ORDER.   No
     interrupts   or   context   changes   should   be   taken   within   this
     three-instruction sequence, or the internal  address/data  state  may  be
     lost.   Addresses 0000 to 3BFF refer to ROM locations.  Addresses 3C00 to
     3FFB refer to patch RAM locations.  Addresses 3FFC to 3FFF refer  to  the
     CAM  match  register.  When reading a ROM location that has been patched,
     the data returned is the patch, NOT the original ROM word.

     To read patches from the  console,  the  following  sequence  of  console
     commands can be used:  (refer to the console section for more information
     on these commands.)
|    >>> D/I         ; data <21:8> makes up the control store
                                 ;      address as shown above.
     >>> E/I               ; CS data bits <8:0>,<39>,<17:38> are read as
                                 ;      shown above.
|    >>> E/I               ; CS data bits <16:9> are read as shown above.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION      Page 7
   MICROCODE PATCHES                                            24 Jan 86


     2.3  LOADING PATCHES

     Patches can be loaded by software through VAX MFPR/MTPR  instructions  by
     using  another  privileged  processor  register  (WCSL).  It is used as a
     pointer to a block of patches, which are sequentially loaded by microcode
     following an MTPR to this WCSL register.

     Seven bytes are required to define each individual patch,  with  2  bytes
     used  for  the  ROM  address  being  patched and 5 bytes used for the new
     controlstore word.  When loading patches, all the 7 byte  patches,  along
     with  a  starting  and  ending  header,  are  put  into a block format as
     follows:

   Patch block format:

                                                                    address
           55   48 47   40 39   32 31   24 23   16 15    8 7     0
           .------+-------+-------+-------+-------+-------+-------.
           | # OF PATCHES |CAM ADR|     checksum of patches       | SRC
           +------+-------+-------+-------+-------+-------+-------+
   patch 1 |C|0| ROM addrs|      40 bit microword patch           | SRC + 7
|          | | |  <0:13>  |      <16:9>  <8:0, 39, 17:38>         |
           +------+-------+-------+-------+-------+-------+-------+
   patch 2 |C|0| ROM addrs|      40 bit microword patch           | SRC + 14
           +------+-------+-------+-------+-------+-------+-------+
   patch 3 |C|0| ROM addrs|      40 bit microword patch           | SRC + 21
           +------+-------+-------+-------+-------+-------+-------+
                  ..............................................        

           +------+-------+-------+-------+-------+-------+-------+
   ptch N-1|C|0| ROM addrs|      40 bit microword patch           | 
           +------+-------+-------+-------+-------+-------+-------+
   patch N |C|0| ROM addrs|      40 bit microword patch           | SRC+(7*N)
           +------+-------+-------+-------+-------+-------+-------+
           |       zero padded to longword boundary               |
           `------+-------+-------+-------+-------+-------+-------'





       2.3.1  FIELD DEFINITIONS OF PATCH BLOCK -

       # OF PATCHES:

           Unsigned number of  seven-byte  patches  that  are  to  be  loaded.
           Numbers  in  the  range  0  to 1020 are valid.  Numbers not in this
           range will produce unpredictable results.

       ROM ADDRESS:

           Contains the ROM address that is being patched.  Bits <9:0> of  the
           ROM  address  determine  the  RAM  address  into  which  the 40-bit
           microword patch will be loaded.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION      Page 8
   MICROCODE PATCHES                                            24 Jan 86


       CAM ADDR:

           The  CAM  location  to  start  loading  ROM  addresses  of  patched
           locations.   The  internal  CAM address will be incremented after a
           CAM location is loaded.  Numbers in the range of 0 to 159 (10)  are
           valid.   Numbers  not  in  this  range  will  produce unpredictable
           results.

       C:

           If C = 1 THEN the CAM will be loaded with a ROM address and the RAM
           will  be  loaded  with a patch.  ELSE the RAM will be loaded with a
           patch only.




       2.3.2  CHECK SUM ALGORITHM FOR PATCH DATA: -

       A check sum is generated by a 32-bit unsigned add, ignoring  overflows,
       of  the  data starting at the check sum longword and ending at the zero
       padding data.
               IF checksum NEQ 6969 6969 (hex) THEN fail
                       ELSE pass.
               
               # of longwords in checksum = ((# patches + 1) * 7 +3) MOD 4





       2.3.3  MTPR TO WCSL REGISTER - The WCSL register is  written  with  the
       pointer (src) to the block of patches by an MTPR instruction:

       WCSL  IPR #2E

        31                                                               0
       +------------------------------------------------------------------+
       |            physical address of the block of patches              |
       +------------------------------------------------------------------+


       The format for this instruction is:
               MTPR src.rl,WCSL

       Description:
       The MTPR to the WCSL instruction causes the microcode to load the whole
       block  of  microcode  patches.   The  SRC operand contains the physical
       address of the block of patches  in  memory  as  was  shown  above.   A
|      checksum  of  the  block  of  patches  is  done by the microcode before
|      loading them.  If the checksum fails, the patches will not  be  loaded,
|      and  the PSL V bit is set as shown below.  Otherwise all of the patches
|      will be loaded and the PSL condition codes will be set according to the
|      SRC operand.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION      Page 9
   MICROCODE PATCHES                                            24 Jan 86


|      After loading each RAM location, the  microcode  reads  the  result  to
|      assure that it was loaded properly.  If not the Vbit is set.

       Condition codes:
               
               N <-- src LSS 0            ! if patches are loaded
               Z <-- src EQL 0            
               V <-- 0
               C <-- C

               N <-- src lss 0            ! if Checksum fails and patches
               Z <-- src EQL 0            ! are not loaded.
               V <-- 1
               C <-- C




       2.3.4  INSTALLATION  VIA  CONSOLE - Although   patches   are   normally
       installed  with  the EEPROM/BI Configurator utility that was written by
       Dick Vignoni, they can also be installed from  the  console.   This  is
       done  by by first using the X command to load them into physical memory
       and then the D/I command to load them  through  the  WCSL  register  as
       follows:   (refer  to the console section for more information on the X
       and D commands.)

|      >>> X       ; where ADDR is the pointer to the 
                                    ; patch block and count is the number 
                                    ;       of bytes of data.
       >>> D/I         

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION     Page 10
   SELFTEST                                                     24 Jan 86


   3.0  SELFTEST

     3.1  SELFTEST DISCRIPTION


     The KA820 CPU module performs module  selftest  in  accordance  with  the
     Scorpio  System  RAMP  spec  and  the  BI Self Test Spec.  The microcoded
     selftest assures a minimum level of module functionality and  provides  a
     test  status  through  the  Status  LED's,  the  Hardware Fault State Bit
     (HFSB), and Serial Line Unit 0 (SLU0).  Upon successful  completion,  the
     selftest  passes  microcode  control  to  the  system  initialization and
     booting routines.

     The hardware gives microcode control  to  the  selftest  routine  at  the
     deassertion  of  BCI  DCLO L.  BCI DCLO L assertion to start the selftest
     may be caused by a real power-up sequence,  by  the  console  test  ("T")
     command,  by  software  writing the BI RESET bit in the PCntl CSR, or the
     SST bit in the KA820's BIIC.

     BCI DCLO L deassertion clears the Self Test Pass bit in  the  PCntl  CSR.
     When cleared, this bit drives an open collector output to BI BAD L.  When
     set, this bit drives the two yellow Status LED's.  At the conclusion of a
     successful  selftest, this bit is cleared by microcode, which releases BI
     Bad L and lights the two yellow LED's.

     From a system's perspective, BI Bad L is  a  wire-or  of  the  self  test
     results  of  all  the  BI devices in the system.  It is used to provide a
     visual indication to the front panel of any BI devices  that  fail  their
     selftests.  Additionally, a bit in the BIIC CSR, called the BROKE bit, is
     set by BCI DCLO  L  and  it  is  cleared  by  microcode  upon  successful
     completion  of  the  selftest.   This bit is used to provide a systemwide
     software indication of each BI node's selftest result.

     The Hardware Fault State Bit (HFSB) in the CPU's I/Echip is  set  by  BCI
     DCLO  L  deassertion,  MIB  parity  microtraps,  and  MERR (M Chip error)
     microtraps.  It is set and cleared  under  microcode  control.   The  Red
     Status  LED's on the module are driven to provide a visual display of the
     state of the HFSB.  The HFSB is cleared prior  to  selftest  to  indicate
     that  patches  were  loaded successfully and that the first character ( )
     was sent to the console.

     Selftest outputs ASCII characters to Serial Line Unit 0 (SLU0) only.   If
     the  desired baud rate is not readable from the EEPROM, output is sent at
     a default baud rate of 1200 baud.  In the multiprocessor environment, the
     output to SLU0 is only possible by the primary processor that is attached
     to a physical console.  Since internode BI traffic  is  precluded  during
     the  selftest,  the  BI  logical console register is not used for failure
     information.

     Normally the selftest performs a "slow" comprehensive test which requires
     a  maximum of 10 seconds to complete.  Slow selftest carefully verifies a
     kernel of  functionality  on  the  module,  then  expands  the  level  of
     verification  using  only  previously  tested  logic  to  test  new logic
     sections.  However when BI STF L is asserted, selftest follows  a  "fast"

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 11
   POWERUP SELFTEST                                                  24 Jan 86


     path  which  completes  in  a maximum of .25 seconds and provides minimal
     coverage.  Successful  execution  through  either  path  results  in  the
     release   of   BI   Bad  L  and  passage  of  microcode  control  to  the
     initialization and boot routines.



     3.2  SELFTEST USERS AND USES

     The KA820 module selftest is applicable to the following areas:

     Engineering usage.  The selftest routine provides  power-up  verification
     of prototype modules in the Engineering Tester environment.

     Manufacturing usage.  Selftest may be used  as  a  stimulus  in  any  ATE
     testing,  environmental  testing,  or  verifiction process which benefits
     from the selftest coverage and isolation.

     Field Service usage.  The selftest is a go/no-go test for the KA820 which
     is the lowest level field replaceable unit (FRU) in the system.

     Customer usage.  The selftest is a go/no-go  test.   Console  output  may
     provide  relevant  information  to share with the field service office in
     the event of a failure.



     3.3  SELFTEST PERFORMANCE GOALS

     The selftest has the following performance and failsoft goals.

     Timing.  When BI STF L is not asserted,  the  KA820  completes  self-test
     within  10  seconds after the deassertion of BI DCLO L.  When BI STF L is
     asserted,  self-test  completes  within  250   milliseconds   after   the
     deassertion of BI DCLO L.

     Dependency.  Selftest has no dependency upon correct operation  of  other
     BI nodes, provided the BI itself is not corrupted by another BI node.

     System hardware.  Selftest provides maximum coverage for CPU  connectors,
     sockets, cables, and backplane interconnect in the system.

     Power fail.  Whenever BCI DCLO L is deasserted, selftest begins.

     Unexpected traps.  All microtraps that occur during selftest branch to  a
     special diagnostic trap block.  A trap catching register is checked after
     each test to detect unexpected traps.  Unexpected traps are reported as a
     hardware error.

     Hardware failure.   Selftest  attempts  to  send  failure  and  isolation
     information to the console, and then enters console mode.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 12
   POWERUP SELFTEST                                                  24 Jan 86


     3.4  FUNCTIONAL DESCRIPTION

       3.4.1  POWER UP FLOW -
                                                                   S
                                                                   L
                    power up action                       | HFSB  |U| Failure
   -------------------------------------------------------+-------+-+---------
   1.  In hardware; DCLO asserted, DCLO deasserted,       |  set  | |   
       microcode 0 fetched, Pcntl cleared,|       | |
       HFSB set, BROKE bit set, red status LED's on.      |       | |
|                                                         |       | |
|  2.  Set baud rate to 1200; if BI ACLO L is asserted,   |       | |
|      loop here. After 10 sec, print out ?41 to console, |       | |
|      continue to loop & reprint every 20 min.           |       | |
|                                                         |       | |
|  3.  Read default baud rate from EEPROM and set UART0   |       | | console
|      baud rate (default to 1200 if unreadable).         |       | |
                                                          |       | |
   4.  Send , ASCII "#", turn off HFSB.           | clear |#| 
                                                          |       | |
   5.  Initialize CAM = 7FFF#16, and RAM =                |       | | console
       BROAD.CALL[1DDD#16].                               |       | |
                                                          |       | |
   6.  Load patches, write with read check,               |       | | console
       call[BOOT.LOAD.EEPROM.PATCH].                      |       | |
                                                          |       | |
   7.  Call[BOOT.CHECK.PB.R..E]. If BI STF L is not       |       | | 
       asserted or selftest is executing a T command,     |       | | 
       go to the slow selftest flow, otherwise go to fast |       | |
       selftest flow.                                     |       | |
                                                          |       | |
   8.  Return from selftest. Send ASCII "#", .    |       |#|
                                                          |       | |
   9.  Go to BOOT.SELFTEST.SUCCESS                        |       | |



   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 13
   POWERUP SELFTEST                                                  24 Jan 86


       3.4.2  SELFTEST FLOW -
|  
|                                    SLU0 
|                                 output on
|        slow selftest action       |pass |   failing unit(s)
|  ---------------------------------+-----+-----------------------------
|  1.  Control Store checksum.      |  A  | CS hybrid, CS etch, IE Chip
|  2.  IE Chip internals.           |  B  | IE Chip
|  3.  DAL Interface                |  C  | IE Chip, DAL etch, M Chip
|  4.  M Chip internals.            |  D  | M Chip, Cache, BTB, etch
|  5.  BTB array test.          (1) |  E  | BTB, etch
|  6.  Cache array test.        (2) |  F  | Cache, etch
|  7.  I/E and Mchip interaction    |  G  |
|  8.  PCntl internals.             |  H  | PCntl, II, Packet RAM, etch.
|  9.  EEPROM checksum.             |  I  | EEPROM, II etch
|  10. Packet RAM test.             |  J  | Packet RAM, II etch
|  11. Fchip test.              (3) |  K  | F Chip, DAL etch
|  12. No NI chipset anymore    (4) |  .  | 
|  13. RCX50 test if present.   (5) |  M  | RCX50, cable
|  14. BIIC test                    |  N  | BIIC, Pcntl
   15. Return to power up flow.     |     |


         fast selftest action       |
   ---------------------------------+-----------------------------------------
   1.  Enable Cache             (2) |
   2.  Enable F Chip            (3) |
   3.  Return to power up flow.     |

|  (1) disable bit in EEPROM is checked and BTB enabled, since it must always be 
|      enabled.
|  
|  (2) disable bit in EEPROM is checked and cache enabled.  This bit is normally 
|      enabled.  Software can disable the cache with the CADR processor register, 
|      but this doesn't change the state of the EEPROM bit.
|  
|  (3) disable bit in EEPROM is checked and Fchip enabled prior to selftesting.  
|      This bit is normally enabled since the Fchip is no longer optional.
|  
|  (4) disable bit in EEPROM is checked; should always be disabled which disables 
|      the selftest, since there is longer an NI chipset on the module.
|  
|  (5) disable bit in EEPROM is checked, and selftest disabled if this option 
|      isn't present.


   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 14
   POWERUP SELFTEST                                                  24 Jan 86


       3.4.3  SELFTEST SECTION DESCRIPTION - Details for each selftest section
       are given below.
|  
|      1.  Checksum control store.  Checksum microaddresses  0  to  3FFB  with
|          patches  enabled.   This  tests all usable ROM locations, CAM, RAM,
|          match logic, and the IE Chip control store interface.   The  result
|          is  compared  to  the  stored  EEPROM constant.  If the test fails,
|          general purpose registers  can  be  examined  in  console  mode  to
|          provide the following information:
|  
|          G[0] = 01000001#16      CONTROL STORE READ CONSTANT TEST; failed when reading 
|                                  the EEPROM.
|  
|          G[0] = 01000002#16      CONTROL STORE CHECKSUM TEST; the checksum was wrong, 
|                                  indicating a defective hybrid.
|  
|      2.  IE Chip internals.  Test the internal logic of the IE  Chip  first.
|          The USEQ, EBOX, utraps, and some branch conditions are tested.  Any
|          failure indicates that the I/Echip is probably defective.   If  the
|          test  fails,  general  purpose registers can be examined in console
|          mode to provide the following failure information:
|  
|          G[0] = 02000001#16      MICROSEQUENCER DATAPATH TEST
|          G[0] = 02000002#16      MICROSEQUENCER STACK TEST
|          G[0] = 02000003#16      MICROSEQUENCER BRANCH TEST
|          G[0] = 02000004#16      MICROSEQUENCER TRAP TEST
|          G[0] = 02000005#16      EBOX GPR REGISTER TEST
|          G[0] = 02000006#16      EBOX TEMPORARY REGISTER TEST
|          G[0] = 02000007#16      EBOX WORKING REGISTER TEST
|          G[0] = 02000008#16      EBOX ALU TEST
|          G[0] = 02000009#16      EBOX CONDITION CODE TEST
|          G[0] = 0200000A#16      EBOX SHIFTER TEST
|          G[0] = 0200000B#16      EBOX CONSTANT MUX TEST
|          G[0] = 0200000C#16      EBOX SHIFT COUNTER TEST
|          G[0] = 0200000D#16      EBOX PROGRAM COUNTER TEST
|          G[0] = 0200000E#16      EBOX STATE REGISTER TEST
|          G[0] = 0200000F#16      MINT MICROTRAP TEST
|          G[0] = 02000010#16      MINT BRANCH TEST
|          G[0] = 02000011#16      MINT STATUS REGISTER TEST
|          G[0] = 02000012#16      IBOX ACCESS TYPE/DATA LENGTH TEST
|          G[0] = 02000013#16      IBOX REGISTER NUMBER TEST
|          G[0] = 02000014#16      IBOX BRANCH TEST
|          G[0] = 02000015#16      IBOX RLOG TEST
|  
|      3.  DAL Interface - tests the remaining IE Chip logic that requires the
|          DAL;  the Memory Interface, IBOX and other branch conditions.  Test
|          the DAL with MXPR's.  Test the M Chip using force cache hit, simple
|          MREQ  functions.   If the test fails, general purpose registers can
|          be examined in  console  mode  to  provide  the  following  failure
|          information about the DAL interface bus:

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 15
   POWERUP SELFTEST                                                  24 Jan 86


|  
|          G[0] = 03000001#16      DAL STUCK-AT TEST (BTB DISABLED)
|          G[0] = 03000002#16      DAL STUCK-AT TEST
|  
|          G[1] = MCHIP STUCK AT ONE, any bits = 1 are stuck at 1
|          G[2] = MCHIP STUCK AT ZERO, any bits = 0 are stuck at 0
|          G[3] = BTB STUCK AT ONE, any bits = 1 are stuck at 1
|          G[4] = BTB STUCK AT ZERO, any bits = 0 are stuck at 0
|  
|          G[0] = 03000003#16      DAL SHORTS TEST (BTB DISABLED)
|          G[0] = 03000004#16      DAL SHORTS TEST
|  
|          G[1] = MCHIP SHORTED ONE; any bits = 1 were shorted high together
|          G[2] = MCHIP SHORTED ZERO; any bits = 0 were shorted low together
|          G[3] = BTB SHORTED ONE; any bits = 1 were shorted high together
|          G[4] = BTB SHORTED ZERO; any bits = 0 were shorted low together
|  
|  
|      4.  M Chip internals - Finish testing  the  M  Chip.   Check  all  MREQ
|          functions,  all  MXPR's,  interrupts,  UARTS, and the tag and valid
|          arrays for the BTB and Cache.  If the test fails,  general  purpose
|          registers  can be examined in console mode to provide the following
|          failure information about the Mchip:
|  
|          G[0] = 04000001#16      MTEMP REGISTER TEST
|          G[0] = 04000002#16      BTB/CACHE TAG ARRAY TEST
|          G[0] = 04000003#16      REFRESH REGISTER TEST
|          G[0] = 04000004#16      ADDRESS TRANSLATION LOGIC TEST
|          G[0] = 04000005#16      REI LOGIC TEST
|          G[0] = 04000006#16      UART LOOPBACK TEST
|          G[0] = 04000007#16      INTERVAL TIMER TEST
|          G[0] = 04000008#16      TIME OF DAY COUNTER TEST
|          G[0] = 04000009#16      BTB INVALIDATE TEST
|          G[0] = 0400000A#16      CACHE INVALIDATE TEST
|  
|  
|      5.  BTB test.  The BTB is tested with a unique  data  pattern  to  each
|          location  through  the  array, and then repeated with complimentary
|          data.  If the test fails, general purpose registers can be examined
|          in console mode to provide the following failure information:
|  
|          G[0] = 05000001#16      BTB ARRAY WRITE/READ TEST
|  
|          G[1] = Failed bits, which can be used to show the defective as follows:
|  
|                                          Bits            Device
|                                          -----------     ------
|                                          <31:24>         E10
|                                          <23:16>         E11
|                                          <15:08>         E12
|                                          <07:00>         E13

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 16
   POWERUP SELFTEST                                                  24 Jan 86


|      6.  Cache test - The cache is tested with a unique data pattern to each
|          location  through  the  array, and then repeated with complimentary
|          data.  The cache is then enabled if the test is successful.  If the
|          test  fails,  general  purpose registers can be examined in console
|          mode to provide the following failure information:
|  
|          G[0] = 06000001#16      CACHE ARRAY WRITE/READ TEST
|  
|          G[1] = Failed bits, which can be used to show the defective as follows:
|  
|                                          Failed bits     Device
|                                          -----------     ------
|                                          <31:24>         E6
|                                          <23:16>         E7
|                                          <15:08>         E8
|                                          <07:00>         E9
|  
|      7.  IE and M Chip Interaction Section - These tests are to assure  that
|          the  I/Echip  and  the Mchip can successfully operate together.  If
|          the test fails,  general  purpose  registers  can  be  examined  in
|          console mode to provide the following failure information:
|  
|          G[0] = 07000001#16      INTERRUPT DISABLE TEST
|          G[0] = 07000002#16      MINT PHYSICAL REFERENCE TEST
|          G[0] = 07000003#16      IBOX PREFETCH QUEUE TEST
|          G[0] = 07000004#16      MINT MINI TRANSLATION BUFFER HIT TEST
|          G[0] = 07000005#16      MINT MINI TRANSLATION BUFFER MISS TEST
|          G[0] = 07000006#16      MINT FUNCTION TEST
|          G[0] = 07000007#16      MINT MISCELLANEOUS BIT TEST
|          G[0] = 07000008#16      MINT MICROTRAP TEST
|          G[0] = 07000009#16      IBOX DECODE TEST
|          G[0] = 0700000A#16      IBOX MICROTRAP TEST
|          G[0] = 0700000B#16      EBOX CONDITION CODE TEST
|          G[0] = 0700000C#16      EBOX PROGRAM COUNTER TEST
|          G[0] = 0700000D#16      ADDRESS TRANSLATION LOGIC STATUS TEST
|          G[0] = 0700000E#16      BTB/CACHE TAG HIT LOGIC TEST
|          G[0] = 0700000F#16      INTERRUPT REQUEST TEST
|  
|  
|      8.  PCntl test - Tests the Pcntl CSR by  moving  patterns  through  the
|          data  path.   If  the  test fails, general purpose registers can be
|          examined  in  console  mode  to  provide  the   following   failure
|          information:
|  
|          G[0] = 08000001#16      PCNTL CSR WRITE/READ TEST
|  
|  
|      9.  EEPROM test - Checksum the patch and boot portion  of  the  EEPROM.
|          The   options  portion  is  not  checksummed  since  it  is  system
|          configuration  dependent.   If  the  test  fails,  general  purpose
|          registers  can be examined in console mode to provide the following
|          failure information:

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 17
   POWERUP SELFTEST                                                  24 Jan 86


|  
|          G[0] = 09000001#16      EEPROM READ CONSTANT TEST
|  
|          G[0] = 09000002#16      EEPROM CHECKSUM TEST
|  
|  
|  
|                                         NOTE
|  
|              The second  EEPROM  was  added  to  the  module  after  the
|              selftest was written, and it therefore is not tested by the
|              selftest.
|  
|  
|  
|     10.  Packet RAM test.  The packet RAMs are tested  with  a  unique  data
|          pattern  to each location through the array, and then repeated with
|          complimentary data.  If the test fails, general  purpose  registers
|          can   be   examined  in  console  mode  to  provide  the  following
|          information:
|  
|          G[0] = 0A000001#16      PRAM ARRAY WRITE/READ TEST
|  
|          G[1] = Failed bits; these bits can be translated to a defective RAM as 
|          follows:                        
|                                          Failed Bits     Device
|                                          -----------     ------
|                                          <31:28,15:12>   E39
|                                          <27:24,11:08>   E40
|                                          <23:20,07:04>   E41
|                                          <19:16,03:00>   E42
|  
|     11.  Fchip test - this test performs a simple  functional  test  on  the
|          Fchip.   Four  ADDF instructions are performed with data structured
|          to check all the internal DALs and condition codes.  The Fchip test
|          is  enabled by bit <0> of EEPROM location 2009 817E, and it is left
|          enabled whether or not the test fails.  If the test fails,  general
|          purpose register R0 contains the following:
|  
|          G[0] = 0B000001#16      F CHIP INTERFACE TEST
|  
|     12.  LANCE Chip test - no longer performed bacause there is no longer an
|          NI  chipset in the module.  The selftest looks at bit <3> of EEPROM
|          location 2009 8176, which must be = 1 to disable  the  non-existent
|          LANCE chip.
|  
|     13.  RCX50 test - this test accesses the RCX50 CSRs, as long as the RX50
|          is  enabled (bit <4> of EEPROM location 2009 8176 must be = 1).  If
|          the test fails,  general  purpose  registers  can  be  examined  in
|          console mode to provide the following information:

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 18
   POWERUP SELFTEST                                                  24 Jan 86


|  
|          G[0] = 0D000001#16      RX50 INTERNAL TEST
|  
|          G[0] = 0D000002#16      RX50 ID TEST
|  
|  
|     14.  BIIC test - tests  the  results  of  the  BIIC's  internal  powerup
|          selftest,  and  also  performs a series of loopback transactions to
|          write to and read from the BIIC's general  purpose  registers.   If
|          the  test  fails,  general  purpose  registers  can  be examined in
|          console mode to provide the following information:
|          G[0] = 0E000001#16      BIIC GPR WRITE/READ TEST
|  
|          G[0] = 0E000002#16      BIIC INTERNAL SELFTEST
|  

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 19
   POWERUP SELFTEST                                                  24 Jan 86


     3.5  POWERUP AND SELFTEST FLOW DIAGRAM

                        SELFTEST FLOW DIAGRAM
      
                            .-----------------------.
|                           |                       | DCLO asserted by powerup,
|         +---------------->| DCLO deasserted       | console T command, SW
|         |                 | HFSB set, red LEDs on | write to PCntl Reset bit,
|         |                 | yellow LEDs off       | SW write to BIIC Reset
          |                 `-----------+-----------'
          |           +---------------->|            
          |           |                 V        
          |           |     .-----------+-----------.
          |           +-----| AC LO deasserted ?    |
          |               N `-----------+-----------'
          |                             |Y           
          |                             V            
          |                 .-----------+-----------.
          |         errors  | Set defaults          |
          |     +<----------+ Read EEPROM constants |
          |     +<----------+ Checksum EEPROM       |
          |     |           | Init CAM and RAM.     |
          |     +<----------+ Load patches, write   |
          |     |           |    read check, enable |
          |     |           |    patches.           |
          |     +<----------+ Baud rate range check?|
          |     +<----------+ Loop back SLU0        |
          |     |           | Turn HFSB off         |
          |     |           | Send          |
          |     |           | Send ASCII "#"        |
          |     |           `-----------+-----------'
          |     |                       |            
          |     |                       V            
          |     |           .-----------+-----------.
          |     |      +----+ T command self test ? |
          |     |      |  Y `-----------+-----------'
          |     |      |                |N  
          |     |      |                V
          |     |      V    .-----------+-----------.
          |     |      +----+ Fast self test ?      |
          |     |      |  N `-----------+-----------'
|         |     |      |                |Y           
|         |     |      |                V
|         |     |      |    .-----------+-----------.    .----------------.   
|         |     |      |    | Check Fchip and cache +--->| Enable/Disable |
|         |     |      |    | enable bits in EEPROM |    | Fchip & cache  +---->.
|         |     |      |    `-----------------------'    `----------------'     |
|         |     |      |                                                        |
|         |     |      |                                                        |
          |     |      |                                                        |
          |     |      +----------------+                                       |
          |     |                       |                                       |
          |     |                       V                                       |
          |     |           .-----------+-----------.                           |
          |     +<----------+ Checksum control store|                           |
          |     |           | Print ASCII "A"       |                           |
          |     +<----------+ IE Chip internals     |                           |
          |     |           | Print ASCII "B"       |                           |
          |     +<----------+ DAL INTerface         |                           |
          |     |           | Print ASCII "C"       |                           |
          |     +<----------+ M Chip internals      |                           |
          |     |           | Print ASCII "D"       |                           |
|         |     +<----------+ Test the BTB array *  |                           |
|         |     |           | Print ASCII "E"       |                           |
|         |     +<----------+ Test cache array   *  |                           |
|         |     |           | Print ASCII "F"       |                           |
|         |     +<----------+ Test the I/E, Mchip   |                           |
|         |     |           |  interactions         |                           |
|         |     |           | Print ASCII "G"       |                           |
|         |     +<----------+ Test PCntl CSR        |                           |
|         |     |           | Print ASCII "H"       |                           |
|         |     +<----------+ Chcksum part of EEPROM|                           |
|         |     |           | Print ASCII "I"       |                           |
|         |     +<----------+ Test packet RAM       |                           |
|         |     |           | Print ASCII "J"       |                           |
|         |     +<----------+ Test Fchip         *  |                           |
|         |     |           | Print ASCII "K"       |                           |
|         |     +<----------+ No LANCE (disabled)*  |                           |
|         |     |           | Print ASCII "."       |                           |
|         |     +<----------+ Test RX50          *  |                           |
|         |     |           | Print ASCII "M"       |                           |
|         |     +<----------+ Test BIIC             |                           |
|         |     |           | Print ASCII "N"       |                           |
          |     |           `-----------+-----------'                           |
          |     |                       |<--------------------------------------+
          |     |                       V
          |     |           .-----------+-----------.
          |     |           | Send ASCII "#"        |
          |     |           | Send          |
          |     |           `-----------+-----------'
          |     |                       |
          |     |                       V
|         |     |           .-----------------------.
|         |     |           |    Do Init Routine    |
|         |     |           `-----------+-----------'
|         |     |                       |
          |     |                       V
          |     |           .-----------------------.
          |     |           | Clear broke bit       |
          |     |           | Set selftest pass     |
          |     |           |Yellow LED's on,Red off|
          |     |           `-----------------------'
          |     |                                    
          |     |                                    
          |     |           .-----------------------.
          |     +---------->| Console routine       |
          |                 |                       |
          +-----------------+ Test command causes   |
                            |    DC LO assertion    |
                            `-----------------------'

           * These disable bits are first checked in the EEPROM to determine
               whether or not to test the function, and in some cases to 
               enable the function as described in the selftest flow in 3.4.2.


   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 20
   INITIALIZATION                                                    24 Jan 86


   4.0  INITIALIZATION

     4.1  POWER UP INITIALIZATION

     Power-up initialization is only done when power is restored to the system
     (DCLO  deasserted).  This power-up could have been caused by a true power
     fail, a console "T" command, by software setting the BI Reset bit in  the
     PCntl  CSR (bit <28> of I/O location 2008 8000), or by an NI reboot which
     sets the same bit.  Portcontroller and BIIC initialization must  be  done
     BEFORE deasserting BI BAD L (BI self test status signal).

     Power-up initialization includes the following:

     IEchip
             1) Load power-up halt code "03"

     Mchip
             1) stop time of year clock and clear it.
             2) MTEMP15 clear WARM/COLD flags

     Portcontroller

             1) RXCD ....  clear the busy bit
             
     Module BIIC (see BIIC chip specification)

             1) Load patch revision number from EEPROM to 
                the BI device type register. 
|            2) Load the BCI control register with 0000 0770 as follows:
              31           24 23           16 15           08 07           00
|            +---------------+-----------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-----+
|            |     0's             0's   |0|0|0|0|0|0|0|1|1|1|0|1|1|1|0| 0's |
|            +---------------+-----------+|+|+|+|+|+|+|+|+|+|+|+|+|+|+|+-----+
                                          | | | | | | | | | | | | | | |    
                            BURSTEN ------+ | | | | | | | | | | | | | |   
                            IPINTR FORCE ---+ | | | | | | | | | | | | |
                            MSEN -------------+ | | | | | | | | | | | |
                            BDCSTEN ------------+ | | | | | | | | | | |
                            STOPEN ---------------+ | | | | | | | | | |
                            RESEN ------------------+ | | | | | | | | |
                            IDENTEN ------------------+ | | | | | | | |
                            INVALEN --------------------+ | | | | | | |
                            WINVALEN ---------------------+ | | | | | |
                            UCSREN -------------------------+ | | | | |
                            BICSREN --------------------------+ | | | |
                            INTREN -----------------------------+ | | |
                            IPINTREN -----------------------------+ | |
                            PNXTEN ---------------------------------+ |
                            RTOEVEN ----------------------------------+


             3) Clear broke bit if Self-test passed.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 21
   INITIALIZATION                                                    24 Jan 86


     4.2  PROCESSOR INITIALIZATION

     Processor initialization is done during power-up, from  the  console  "I"
     command,   and   before   attempting   warm   or  cold  boot.   Processor
     initialization puts the KA820 module into a state  such  that  VAX  macro
     instructions can be executed.  Parts of the initialization are defined in
     the VAX SRM (rev 7 page 11-6), and the rest is processor dependent.   The
     following  sections  describe  what  is  initialized  in each part of the
     module.



       4.2.1  I/E CHIP INITIALIZATION -

            1) Turn off test mode features

            2) stop V-bus data reducing

            3) Clear VAX trap request bit.

            4) Clear re-execute bit.

            5) Load new PSL ---- 041F 0000 (16)

            6) clear MAPEN bit.

            7) Enable memory management traps

            8) clear Mini-TB 

            9) clear hardware fault state bit

            10) clear state4  ....  currently unused state bit

            11) set state5    ....  make sure console executing bit
                                    is on.  This bit must be clear
                                    BEFORE going to VAX program mode.
                                       
            12) clear state6  ....  exception bit used by interrupts
                                    and exceptions code.

            13) clear state7  ....  machine check bit used by interrupts
                                    and exceptions code.

            14) Halt prefetching.
|  
|           15) Clear Istream MTB Load .... turns off Istream MTB load on 
|                                           PTE read; loads Dstream only.
|  

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 22
   INITIALIZATION                                                    24 Jan 86


       4.2.2  M CHIP INITIALIZATION -

            1) REFR <-- 1     ....  Make sure mchip refresh is going

            2) P0LR <-- 0400 0000 (16)  .... Set ASTLVL to 4.

            3) Load new PSL ---- 041F 0000 (16)

            4) ICCS           ....  turn off interval timer 
                                    Disable interval timer interrupts
                                    clear interval timer error bit
                                    disable watch dog timer interrupts

            5) WDR            ....  Clear Watchdog timer register.

            6) SISR <-- 0     ....  Clear software interrupts

            7) UART0-3        ....  Clear recieve interrupt enable bit
                                    Clear transmit interrupt enable bit
                
            8) ISTATUS        ....  Clear pending level 14(hex) interrupts.

            9) P1LR <-- 0     ....  Clear the PME bit.

            10) MTEMP15       ....  Clear FPD restart code
                                    load logical console byte from EEPROM
                                 
            11) MTEMP16 <-- 0 ....  Clear machine check code.

            12) clear BTB     ....  Clear tags.

            13) clear cache   ....  Clear tags.



       4.2.3  F CHIP INITIALIZATION -

            1) Nothing.



       4.2.4  PORTCONTROLLER INITIALIZATION -

               1) CSR        ....   unlock BI event code
                                    clear IP interrupt bit
                                    disable CRD enable bit
                                    clear CRD interrupt bit
                                    clear RUN light 
                                    clear console interrupt bit
                                    disable remote console interrupt 
                                    clear write wrong parity bits.


   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 23
   INITIALIZATION                                                    24 Jan 86


       4.2.5  BIIC INITIALIZATION -

            1) Load BCI register with same contents as

               power-up initialization above.

|           2) Load BI device type register from EEPROM.
|          (4 consecutive bytes starting at location 2009 8168)



       4.2.6  PACKET BUFFER INITIALIZATION -

            1) Copy Options and Boot section of EEPROM to packet buffer 
               starting at location 0.




       4.2.7  RX50 INITIALIZATION -

            1) Nothing.




       4.2.8  WATCH CHIP INITIALIZATION -

            1) Nothing.




     4.3  SYSTEM BUS INITIALIZATION

|    System bus initialization consists of checking each node's broke bit, and
|    then  loading  BI  memory  nodes' starting and ending addresses.  This is
|    done at power-up, NI reboot, "T" console command, "B" console command and
|    "T /M" console command.
|  
|    If a node's 'broke' bit is set, it is  assumed  that  the  node  has  not
|    completed  it's  selftest.   The  CPU  then enters a programmable timeout
|    loop, based upon an EEPROM stored constant.  This  wait  period  that  is
|    stored  in the EEPROM is determined by subtracting the total time for the
|    CPU selftest from 10 seconds.
|  
|    After the timeout period has expired, the microcode  then  reprobes  that
|    node  and  then  continues to the other BI nodes.  If the CPU now finds a
|    'broke' bit set, it checks to see if it is a memory node.  A BI memory is
|    defined  to have a device type with bits 14-8 equal to zero.  The size of
|    the BI memory is gotten from the memory CSR located at 100  (hex)  offset
|    from its BI node space.
|  
|    If not found to be a memory node, it assumes that it is broken.  If it is

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 24
   INITIALIZATION                                                    24 Jan 86


|    a memory node, it checks bit <12> of the memory CSR register to determine
|    if it is broke.   If  not  broke,  the  BI  memory  starting  and  ending
|    addresses are then loaded.
|  
|    For fast selftest the same timeout stored in the EEPROM is used, but  now
|    the  constant  should  be  set to 0, since all nodes should be done their
|    fast selftests within 250 ms.
|  
|    The system bus initialization routine prints to the console the status of
|    each  node.  A "." is printed for a non-existing node, the node number is
     printed for a good node, and a "-" is printed in front of the node number
     of a broken BI node.  Finally the maximum BI memory address is printed in
     HEX.
     EXAMPLE:

     0 1 2 . . -5 . . . . . B . . . .
     04000000

     Note:  node 5 is broke
            nodes 0, 1, 2, and B are good.
            nodes 3,4,6,7,8,9,A,C,D,E,F do not exist.
            0400 0000 (16) is the maximum BI memory address.



       4.3.1  BI MEMORY REGISTERS - These two memory registers are accessed by
       the initialization microcode.



         4.3.1.1  BI MEMORY CSR REGISTER - This register is read  at  each  BI
         Memory  node to determine the memory size and to check its BROKE bit,
         to determine if it passed its own self test.
        
       Address is bb+100.    (bb is the BI node space base address)


    31 30 29 28              18 17 16 15 14 13 12 11 10 09 08 07 06      00
   +--+--+--+------------------+--+--+--+--+--+--+--+--+--+-----+----------+
   |  |  |  |      MEM SIZE    |  |  |  |  |  |  |  |  |  |     |          | 
   +--+--+--+------------------+--+--+--+--+--+--+--+--+--+-----+----------+
                                               ^
                                               |
                                   BROKE BIT---+     


         All BI nodes with BIIC device type  register  bits  <14:8>  equal  to
         zero, MUST have a CSR at address bb+100 like the one above.  The "MEM
         SIZE" field is the memory size  in  256  Kbyte  increments.   If  the
         memory  size field is non-zero, BIIC start/end address registers will
         be loaded.  The "BROKE BIT" in the memory CSR will  indicate  if  the
         module is good or not.  The BIIC broke bit will be ignored.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 25
   INITIALIZATION                                                    24 Jan 86


         4.3.1.2  MEMORY  BCI  CONTROL  REGISTER - This  register  is  located
         within  the memory module's BIIC.  Since the BI memory can't write to
         its own BCI CSR, this register must be written with 0000 2100,  which
         sets  the  STOPEN  and USCREN bits.  This enables the BI STOP command
         and also enables its User CSR space.

                                                   Start   
                                   .-----------------+--------------------.                                                                  
                                   |  Start at BI node 0.                 |                                                                  
                                   |  Load time-out constant from EEPROM  |                                                                  
                                   `-----------------+--------------------'                                                                  
|        .------------------------------------------>|<------------------------------.
|        |                                           V                               |                                                    
|        |                           .-----------------------------.                 |
|        |                           |  Read BIIC status register  |                 |        .---------------------.
|        |                           `---------------+-------------'                 |        |                     |             
|        |                                           V                               | Y      V                     |               
|        |                                   .----------------. Y              .-----+-------------. N     .--------+----------.  
|        |                                   | Broke bit set? +--------------->| time-out reg = 0? +------>| decrement timeout |
|        |                                   `-------+--------'                `-------------------'       `-------------------'
|        |                                           | N
|        |                                           V                                   
|        |                        .--------------------------------------.                  
|        |                        |   Read BI node device type register  |                                                       
|        |     Device type of     `--------+--------+-------+-------+----'   Non-existing BI node. .----------------------.      
|        |       0000 or FFFF hex.         |        |       |       `----------------------------->| Print "." to console.|      
|        |       .-------------------------'        |       |                                      `----------+-----------'      
|        |       |                                  |       |                                                 |                  
|        |       |                  BI memory node. |       |  BI device node.                                |                  
|        |       |                     .------------'       `---------------.                                 |          
|        |       |                     V                                    V                                 |
|        |       |      .---------------------------------.                 |                                 |                             
|        |       |      | Initialize BIIC.                |                 |                                 |                             
|        |       |      | Read memory CSR for SIZE and    |                 |                                 |                             
|        |       |      | BROKE bit.                      |                 |                                 |                             
|        |       |      | Load BIIC Start/End address     |                 |                                 |                             
|        |       |      | register for memory nodes.      |                 |                                 |                             
|        |       |      `--------------+------------------'                 |                                 |                             
|        |       |                     `----------.    .--------------------'                                 |                             
|        |       |                                V    V                                                      |                             
|        |       |                             .----------.   No                                              |                             
|        |       |                             |  Broken? |-------------------------------------------------->|                             
|        |       |                             `-----+----'                                                   |                             
|        |       `---------------------------------> | Yes                                                    |
|        |                                           V                                                        |
         |                               .-----------------------.                                            |
         |                               | Print "-" on console. |                                            |   
         |                               `-----------+-----------'                                            |   
         |                                           V                                                        |
         |                   .-----------------------+----------------------.                                 |
         |                   | Print BI node number and space on console.   |                                 |   
         |                   |       Update maximum memory register.        |<--------------------------------'
         |                   |          Increment BI node number.           |                                     
         |                   `-----------------------------+----------------'                                      
         |                                                 V                          .-------------------------------.            
         |                                   No   .--------+---------. Y              | Print  to console.    |
         `<---------------------------------------|   BI node = 16?  +--------------->| Print Maximum memory address. | 
                                                  `------------------'                | Print  to console.    |
                                                                                      `----------------+--------------' 
                                                                                                       V
                                                                                                     DONE
                figure 4.1  FLOW FOR LOADING STARTING AND ENDING ADDRESSES TO BI MEMORY                    

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 27
   INITIALIZATION                                                    24 Jan 86


       4.3.2  BI NODE REGISTERS USED -



         4.3.2.1  BIIC DEVICE TYPE REGISTER - This register is read at each BI
         node to determine which nodes are present and which are memory nodes.
         (see BI specification for more details):

           Address is bb+00.    (bb is the BI node space base address)
             
             31                           16 15                            0
            +-------------------------------+-------------------------------+
            |          Rev code             |         Device type           |
            +-------------------------------+-------------------------------+

             If bits <14:8> equal zero then device is a BI memory.

             If bits <15:0> equal  FFFF (hex) or 00000 then device is still 
                       initializing or broke.




         4.3.2.2  BI CONTROL AND STATUS REGISTER - This register must be  read
         at  all  non-memory nodes to determine if each device passed its self
         test.  On memory nodes, the BROKE bit is located  within  the  Memory
         CSR  register,  since  the  memory  can't  write  to  its  own BI CSR
         register.

             Address is bb+04.    (bb is the BI node space base address)

             31           24 23           16 15       10  08 07      03   00
            +---------------+---------------+-+-+-+-+-+-+-+-+-+-+---+-------+
            |      0's      |   BIIC Type   | | | | | | |0| | | |ARB|Node ID|
            +---------------+---------------+|+|+|+|+|+|+-+|+|+|+---+-------+
                                             | | | | | |   | | |
                                      HES ---+ | | | | |   | | |
                                      SES -----+ | | | |   | | |
                                      INIT ------+ | | |   | | |
                                 *    BROKE -------+ | |   | | |
                                      STS -----------+ |   | | |
                                      SST -------------+   | | |
                                      UWP -----------------+ | |
                                      HEIE ------------------+ |
                                      SEIE --------------------+

                 * Broke bit for BI device nodes.  Cleared by
                   BI node if its self-test passed.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 28
   BOOTING                                                           24 Jan 86


   5.0  BOOTING

     5.1  BOOT MICROCODE

     This code is entered from power-up, from a VAX HALT instruction, and from
     a  machine  error  halt.   If PCntl CSR bit <31>, RSTRT/HALT, is set to a
     '1', which is the HALT position, control is passed to console  microcode,
     otherwise  a  reboot  is  attempted.   Microcode  has internal flags that
     signal whether a WARM or COLD boot is in progress.   This  is  to  insure
     that  the  machine  does  not loop forever on trying to reboot.  The WARM
     boot flag is in the Mchip register MTEMP15 bit 27 and the cold boot  flag
     is bit 26.



       5.1.1  WARM BOOT - Steps to a warm boot are the following:

       1.  Check internal WARM and COLD boot flags.  If  either  the  WARM  or
           COLD  flags  are  set,  then  WARM  boot  fails  and a COLD boot is
           attempted.

       2.  Set the WARM boot flag.

       3.  Find a valid Restart Parameter Block (RPB).  If none is found,  the
           WARM boot fails.  (see next section for RPB search algorithm).

       4.  Check the software restart in progress flag in the  RPB.   If  set,
           the restart fails.

       5.  Load the SP with address RBP+512.

       6.  Load the Argument Pointer (AP) with halt code describing reason for
           REBOOT.

       7.  Do processor initialization.

       8.  Turn on the front panel RUN light.

       9.  Start processor at the restart address (longword at address RPB+4).




       5.1.1.1  FIND RPB ALGORITHM - Finding a Restart Parameter  Block  (RPB)
       is done as part of a WARM restart.  The algorithm is as follows:

                   Restart Parameter block

          RPB + 00   physical address of the RPB. (must be page aligned.)
          RPB + 04   physical address of the restart routine (cannot be 0)
          RPB + 08   checksum of the 1st 31 longwords of restart routine
          RPB + 0C   software restart in progress flag, bit 0.


   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 29
   BOOTING                                                           24 Jan 86


       1.  Starting at physical address of 0000 0000, search  for  a  page  of
           memory  that contains its own address in the first longword through
           the end of memory.  If no such page  is  found,  then  the  Restart
           Parameter search fails.  The maximum physical address is found when
           loading the BI memory starting and ending address.

       2.  If second longword of page is zero, or not a  valid  address,  then
           return  to  step  1  and  continue  searching.  The second longword
           contains the address of the restart routine.

       3.  Calculate the 32-bit unsigned sum of the first 31 longwords of  the
           restart  routine.  If the sum is not equal to the third longword of
           the page, then return to step 1 and continue searching.

       4.  Valid RPB found.




       5.1.2  COLD BOOT - Steps to a cold boot are the following:

       1.  If the cold boot flag is set, then  COLD  boot  fails  and  control
           passes to console microcode.

       2.  Set the COLD boot flag

       3.  Find 64K of good memory.  If not found then  COLD  boot  fails  and
           control passes to console mode.

       4.  Load General Purpose Registers:
                 R0    not touched
                 R1    not touched
                 R2    not touched
                 R3    In console mode, for a "B ddan" command, R3 is 
                       loaded with "ddan".  For all other cases it is 
                       loaded with zeros to indicate the default boot device.
                 R4    not touched
                 R5    In console mode, if B/R5: is specified, R5 is 
                       loaded with .  For an NI reboot, R5 is loaded 
                       with a boot parameter (see the NI reboot section).  
                       For all other cases R5 is loaded with zeros.
                 R6    not touched
                 R7    not touched
                 R8    not touched
                 R9    not touched
                 R10   HALT PC.   (unpredictable on power-up)
                 R11   Halt PSL.  (unpredicable on power-up).
                 AP    Halt code. (see table in CONSOLE section).
                 FP    not touched
                 SP    Address of 512 bytes past start of good memory.


   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 30
   BOOTING                                                           24 Jan 86


       5.  Turn on the RUN light.

       6.  Jump to macrocode at physical address 2009 0104 (hex) in the Packet
           buffer.

       The packet buffer code is responsible for bringing in VMB (in  the  VMS
|      case)  off  of  a disk or the RX50.  From there VMB loads SYSBOOT which
|      finally brings in VMS.  Other operating systems will use different boot
       programs, but the flow is basically the same.



         5.1.2.1  FIND 64K GOOD MEMORY ALGORITHM - The Find 64K of good memory
         is  executed  by the "B" command, the "T/M" command and also during a
         COLD boot.  The algorithm for finding 64K  of  good  memory  has  two
         parts.   The  first  part  does  a quick RAM test to find 64K of good
         memory.  This consists of a marching  1's  test  through  64K  of  BI
         memory,  and if an error is detected, restarting on the next page and
         continuing until 64K is found that is error free.   If  64K  of  good
         memory  is  found,  the  following  additional testing is done.  This
         second part checks pieces of the BI memory board that are untested by
         its own module self-test.

         The main logic missed by the internal self test is the BIIC  to  Gate
         Array  interconnect  and the command decode logic.  ECC logic is also
         missed but the scope of the extended memory tests can't  easily  test
         this.  Listed below are the tests done in the extended memory test to
         the BI node on which 64K of good  memory  is  found.   If  64K  isn't
         found,  or  if  this  second part of the testing fails, the COLD boot
         fails and control is passed to the console microcode.



       5.1.3  VAX INSTRUCTIONS TO CLEAR WARM/COLD FLAGS - Once  the  operating
       system  is  restarted  or  booted, it must clear the WARM and COLD boot
       flags before another AUTO-REBOOT can  take  place.   This  is  done  by
       writing  to  TXDB  (IPR  23  HEX)  using  an  MTPR instruction with the
       following data:
           
           0000 0F02   causes reboot using default device.

           0000 0F03   clears WARM boot flag.

           0000 0F04   clears COLD boot flag.
        

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 31
   BOOTING                                                           24 Jan 86


       5.1.4  BOOT SUMMARY - Summary of boot code modules executed by  console
       commands, reboot, and during power-up.

                             |                                 |                     | DCLO caused by: TRUE power loss,    | 
                             |     Console commands            |    Vax Error Halt   |    or Portcontroller CSR reset bit. | 
     Boot section            |    |   |    |    |    |    |    |   or HALT instr.    |       slow       |      Fast        | 
                             | B  | I | T  |T/M | S  | C  |  N |warm  cold  halt     | Warm  cold  Halt | warm  cold  Halt |
   --------------------------|----|---|----|----|----|----|----|---------------------|------------------|------------------|
   Load EEPROM patches       | -  | - | X  | -  | -  | -  | -  |   -     -     -     |   X     X     X  |  X      X     X  |
   --------------------------|----|---|----|----|----|----|----|---------------------|------------------|------------------|
   Slow self-test            | -  | - | X  | -  | -  | -  | -  |   -     -     -     |   X     X     X  |   -     -     -  |
   --------------------------|----|---|----|----|----|----|----|---------------------|------------------|------------------
   processor initialization  | X  | X | X  | X  | -  | -  | -  |   X     X     ?     |   X     X     X  |   X     X     X  |
   --------------------------|----|---|----|----|----|----|----|---------------------|------------------|------------------|
   System initialization     | X  | - | X  | X  | -  | -  | -  |   -     -     -     |   X     X     X  |   X     X     X  |
   --------------------------|----|---|----|----|----|----|----|---------------------|------------------|------------------|
   Find RPB                  | -  | - | -  | -  | -  | -  | -  |   X     X     ?     |   X     X     ?  |   X     X     ?  |
   --------------------------|----|---|----|----|----|----|----|---------------------|------------------|------------------|
   Find 64K good memory      | X  | - | -  | X  | -  | -  | -  |   -     X     ?     |   -     X     ?  |   -     X     ?  |
   and extended memory test  |    |   |    |    |    |    |    |                     |                  |                  |
   --------------------------|----|---|----|----|----|----|----|---------------------|------------------|------------------|
   Enter VAX program mode    | X  | - | -  | X  | X  | X  | X  |   X     X     -     |   X     X     -  |   X     X     -  |
   --------------------------+----+---+----+----+----+----+----+---------------------+------------------+------------------'

         "X"  -- code module executed in normal path.
         "-"  -- code not executed in path
         "?"  -- code not executed if HALT/BOOT switch is halt or WARM/COLD flags both set.
                 code is executed  if HALT/BOOT switch is BOOT and WARM/COLD boot fails.




       5.1.5  BOOT EXAMPLES - The following sections will show examples of the
       different ways a scorpio system can be booted.



         5.1.5.1  NORMAL SINGLE PROCESSOR BOOT -

                                                                                 
                    TTY                                                          
                     |                                                           
       .-----------. |             .------------.           .-----------.
       |  KA820    |-'             | BI memory  |           |   disk    |
       |           |Boot           |            |           |           |
       `-----+-----'console: UART0 `-----+------'           `-----+-----'
             |                           |                        |      
    ---------+---------------------------+------------------------+----- BI   


         For a base system the boot will go  as  follows.   On  power-up,  the
         KA820   will   do   self-test,   power-up  initialization,  processor
         initialization, system initialization and then run boot code from the
         packet  buffer that was copied from the EEPROM.  This code would then

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 32
   BOOTING                                                           24 Jan 86


         read in the VMB boot code from the RX50 floppy  disk  or  the  system
         disk.



         5.1.5.2  ASYMMETRIC MULTIPROCESSOR SYSTEM (BI BOOT). -


     TTY    .----------. boot            .-----------. halt            
      `-----|    A     | console enabled |     B     | console enabled 
            |  KA820   | console: UART0  |   KA820   | console:        
            `----+-----'                 `-----+-----'    BI node A    
                 |                             |                       
        ---------+----------+------------------+---+------------ BI
                            |                      |
                   .--------+-------.        .-----+-----. halt 
                   |       Disk     |        |     C     | console enabled
                   `----------------'        |   KA820   | console:
                                             `-----------'    BI node A

         In this configuration, A is the primary processor, and B  and  C  are
         called  attached  processors.   When  power  is  applied,  all  three
         processors go through their normal powerup sequence.   A,  B,  and  C
         each  do  a  self-test,  followed  by power-up, processor, and system
         initialization.  The three processors all load  starting  and  ending
         addresses for BI memory using the same algorithm.  B and C then go to
         console mode and try  to  send  the  '>>>'  prompt  to  processor  A.
         Processor A then boots the operating system by first using the EEPROM
         macro code (copied to the packet buffer) to  read  in  the  VMB  boot
         program  off  the  disk.   Once  up and running, A then boots B and C
         using the special RXCD MTPR and MFPR  instructions  to  send  console
         commands and receive console responses.



   6.0  EEPROM CONTENTS

|  The first revision of the KA820 (rev A1) contained a single 8K X 8  EEPROM,
|  and  subsequent  revisions  contain  two  EEPROMs.   They are used to store
|  changeable data such as  option  information,  VAX  macro  boot  code,  and
|  control store patches.  The modules with a single EEPROM are constrained to
|  having a little over 1000 bytes available for  boot  code.   Those  modules
|  that  have  two  EEPROMs  use  this  space  in  the first EEPROM for a boot
|  dispatcher, and the boot code for each device is in the second EEPROM.
|  
|  Other than not containing actual bootcode,  the  primary  EEPROM  in  later
|  modules  contains  essentially the same information as the single EEPROM in
|  rev A1 modules.
|  
|  Physical address bit  <0>  is  not  used  in  addressing  the  EEPROM,  and
|  consequently  only  even  addresses  are  used.   i.e.   The  first byte is
|  addressed at location 2009 8000(hex), the second byte at 2009 8002  and  so
|  on,  through  2009 BFFE for the first EEPROM.  Those modules that contain 2
|  EEPROMs have 8K bytes of additional space from 2009 C000 to 2009 FFFE.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 33
   EEPROM CONTENTS                                                   24 Jan 86


|  A summary of the EEPROM contents  is  shown  in  fig.   6.1,  and  this  is
|  followed  by  a  bit  level  description of the EEPROM contents on the next
|  page.  Note also that there is a significant amount of information that was
|  for the NI which is no longer used.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 34
   EEPROM CONTENTS                                                   24 Jan 86


   Abbreviations used in the EEPROM Map include:

   II: RCX50 ENABLE                        //: UNUSED
   BI: BI logical console node number      00: UNUSED = 0
   UA: UART0 BAUD RATE                     LD SA: LOAD SERVER ADDRESS
   OP: OPTIONS (FCHIP, BTB, CACHE)         IN RV: EEPROM INIT REV

     1E 1C 1A 18 16 14 12 10 0E 0C 0A 08 06 04 02 00   <--Address offset of
       |  |  |  |  |  |  |  |  |  |  |  |  |  |  |        each byte
   +-------------------------------------------------+
   | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 FF | 20098000
   +------------+-----------------------------+------+         
|  |   ld sa    |    module serial number     |00 00 | 20098020
|  +------------+-----------------------------+------+         
|  |        14 bytes unused/ all 0s           |ld sa | 20098040
|  +------------------------------------------+------+         
|  ~          48 bytes unused/ all 0s                ~ 20098060
|  +------------------------+------------------------+         
|  | 8 bytes Reserved / CSS | 8 bytes unused/ all 0s | 200980C0
|  +---------+-----+--------+------------------------+         
|  |3 unused |in rv|boot inf| 8 bytes unused/ all 0s | 200980E0
   +---------+-----+--------+------------------------+         
   |               Boot Message                      | 20098100
   +------------------------+------------------------+         
   | 8 bytes reserved /users|    Boot Message        | 20098120
   +------------------------+-----------+------------+         
|  | BI timeout |// AA|// //|// // // //| 00 00 00 00| 20098140  
|  +------------+--+--+-----+-----+-----+------------+
|  |OP UA 00 BI |II|// // //| REV |01 05| // // // //| 20098160  
   +------------+--+--------+-----+-----+------------+
   | Boot B addr|Boot B name|Boot A addr|Boot A name | 20098180
   +------------+-----------+-----------+------------+
   | Boot D addr|Boot D name|Boot C addr|Boot C name | 200981A0
   +------------+-----------+-----------+------------+
|  | CHECKSUM CS w/patches  | 8 bytes unused/ all 0s | 200981C0
   +------+----------------+-------------------------+
   | 01 33|        14 bytes reserved for DEC         | 200981E0
   +------+-----------------------------+------------+
   |       VAX Boot code                |  CHECKSUM  | 20098200
   +------------------------------------+------------+
   ~                                                 ~
   +-------------------------------------------------+
   |       VAX Boot code                             | 200984E0
   +---------------------------+-----+--+------------+
   |    Microcode Patches      |  #  |CA|  CHECKSUM  | 20098A00
   +---------------------------+-----+--+------------+
   ~                                                 ~
   +-------------------------------------------------+
   |       Microcode Patches                         | 2009BFF0
   +-------------------------------------------------+   


                 figure 6.1 EEPROM Summary


   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 35
   EEPROM CONTENTS                                                   24 Jan 86


   *****************************************************************************
   *               TABULAR SUMMARY OF EEPROM CONTENTS                          *
   *****************************************************************************

      2009 8000       FF Constant used in EEPROM test
      2009 8002       55 Constant used in EEPROM test
      2009 8004       14 BYTES MBZ
    
|     2009 8020       2 bytes unused (=0)
|     2009 8024       10 Bytes Module Serial number
|                          2 chars=plant code (SG, NI or GA)
|                          3 char numeric date code YWW Y=year WW=week
|                          5 char numeric serial module serial number
|  
|     2009 8038       6  byte Load Server Address (For DEBNT - ie. the AIE)
|     2009 8044       70 bytes unused and = 0
|     2009 80D0       8  bytes unused; RESERVED FOR DEC CSS
|     2009 80E0       8  bytes unused (=0)
|     2009 80F0       1 bytes = number of bytes to compare in the boot message
|     2009 80F2       1 byte = location of 1st PARAMETER field in the boot message
|                       expressed as offset from the start of the receive buffer
|     2009 80F4       1 byte = location of 2nd PARAMETER field in the boot message
|     2009 80F6       2 bytes EEPROM initialization file revision number
|     2009 80FA       3 bytes unused

            BOOT MESSAGE 

      2009 8100       24 bytes = the expected boot message
      2009 8130       8 bytes unused; RESERVED FOR USERS
      2009 8140       4 bytes unused = 0 
|     2009 8148       4 bytes unused
      2009 8150       2 bytes unused.
      2009 8154       1 byte = AA, the constant that is used in the EEPROM test
      2009 8156       1 byte unused
      2009 8158       4 bytes for the BI selftest timeout constant
                        Incremental value = .2 useconds/increment
|     2009 8160       4 byte unused 
           BI DEVICE TYPE DATA
     
      2009 8168       2 bytes BI device type for module = 0105 (HEX) for KA820
                     
      2009 816C       2 bytes BI Rev level for module
                        bits <15:11>  CPU REV
                        bits <10:1>   PATCH REV
                        bit  <0>      SECONDARY PATCHES NOT NEEDED default=1
     
      2009 8170       3 bytes unused
     
      2009 8176       1 byte for RCX50 SELFTEST DISABLE.
|                     Bit <3>:  Previously LANCE DISABLE  - MUST BE 1 (Disabled)
                      Bit <4>: RCX50 SEFLTEST DISABLE (0 = enable, 1 = disable)
                      Bits <7:5,2:0> = 0

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 36
   EEPROM CONTENTS                                                   24 Jan 86


            CONSOLE SOURCE DATA
     
      2009 8178       1 BYTE
                      Bits <3:0> BI node number of logical console (default=2)
|                     4 bits MBZ
|     2009 817A       1 byte MBZ (previoulsy NI Reboot Enable)
      2009 817C       1 byte UART0 baud rate - default=1200 baud
                      bits <7:0> = Baud rate as follows:
      
                      30 --- 150 baud         34 --- 2400 baud
                      31 --- 300 baud         35 --- 4800 baud
                      32 --- 600 baud         36 --- 9600 baud
                      33 --- 1200 baud        37 --- 19200 baud
     
      2009 817E       Fchip, BTB, and CACHE disable bits
                      bit <0> (1 = Fchip disabled; 0 = Fchip enabled) 
|                     bit <1> BTB disable - MBZ  (ALWAYS ENABLED)
                      bit <2> (1 = cache disabled; 0 = cache enabled)default=enabld
|                     bits <7:3> MBZ
    
|       BOOT DEVICE DATA  ****UNUSED AND = 0 ON NEW REV MODULES WITH 2 EEPROMS****
      2009 8180       4 bytes --- ASCII code for boot device A /(=0)
      2009 8188       4 bytes starting address of device A boot code /(=0)
      2009 8190       4 bytes --- ASCII code for boot device B /(=0)
      2009 8198       4 bytes starting address of device B boot code /(=0)
      2009 81A0       4 bytes --- ASCII code for boot device C /(=0)
      2009 81A8       4 bytes starting address of device C boot code /(=0)
      2009 81B0       4 bytes --- ASCII code for boot device D /(=0)
      2009 81B8       4 bytes starting address of device D boot code /(=0)
    
|     2009 81C0       8 bytes unused (=0)
      2009 81D0       8 bytes: 40 bit checksum of control store with primary 
                        patches installed.
      2009 81E0       Unused, RESERVED FOR DEC
      2009 81FC       1 byte; constant 33 used in EEPROM test         
      2009 81FE       1 byte; constant 01 used in EEPROM test
    
     
           EEPROM BOOTCODE SECTION
     
      2009 8200       4 bytes of checksum for 1020 bytes (DEC)
                      of bootcode 
     
      2009 8208       1020 bytes avail for VAX boot code.
      to               In new rev module will contain only the boot dispatcher
      2009 87FE

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 37
   EEPROM CONTENTS                                                   24 Jan 86


           EEPROM PATCH SECTION
     
      2009 8A00       4 bytes of checksum for all the patches 
     
      2009 8A08       1 byte for the starting CAM address 
      2009 8A0A       2 bytes showing the number of patches
     
      2009 8A0E       Start of patches,
      up to             7 bytes per patch....
      2009 BFFE        up to 984 patches (base 10) 

    



|  *************************************************************************
|  *      LAYOUT OF THE 2ND 8K EEPROM (only on module revs above A1)       *
|  *************************************************************************
|  
|          Note:: addressing is the same as for 1st EEPROM with bit 14 being
|                 set to select the 2nd EEPROM
|  
|  2009 C000       Default boot device designation of form DDnu (4 bytes)
|  2009 C008       Default T/M boot device designation of form DDnu (4 bytes)
|  2009 C010       Bootcode descriptor A (8 bytes)
|  2009 C020       Bootcode descriptor B (8 bytes)
|  2009 C030       Bootcode descriptor C (8 bytes)
|  2009 C040       Bootcode descriptor D (8 bytes)
|  2009 C050       Bootcode descriptor E (8 bytes)
|  2009 C060       Bootcode descriptor F (8 bytes)
|  2009 C070       Bootcode descriptor G (8 bytes)
|  2009 C080       Bootcode descriptor H (8 bytes)
|  2009 C090       Bootcode descriptor I (8 bytes)
|  2009 C0A0       Bootcode descriptor J (8 bytes)
|  2009 C0B0           BOOTCODE - including chksum
|     :                  :  :
|     :                  :  :  8104 bytes (base 10)
|     :                  :  :
|  2009 FFF6           BOOTCODE
|  2009 FFF8       67 last 4 bytes used for EBKAX diagnostic
|  2009 FFFA       69  "       "             "         "
|  2009 FFFC       56  "       "             "         "
|  2009 FFFE       52  "       "             "         "

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 38
   EEPROM CONTENTS                                                   24 Jan 86


   6.1  CHECKSUM ALGORITHM FOR EEPROM DATA

   A checksum constant is stored as the first 4 bytes  of  both  the  bootcode
   section of the EEPROM, and the patch section.  The checksum is generated by
   a 32-bit unsigned add, ignoring overflows, of the data in the section  plus
   this  data that's stored in the first longword.  The first longword is used
   to force the result of the checksum to be 6969 6969 hex.

         checksum = 6969 6969 hex =   (longword checksum) 
                                   + (longword sum of data in section)

   The 40 bit checksum that's stored within the EEPROM for the  control  store
   with patches installed is whatever number the checksum comes out to be.



   6.2  READING AND WRITING THE EEPROM

   The EEPROM  is  normally  loaded  by  the  EEPROM/BI  Configurator  utility
   program.   This  is  used to examine, modify, and update the EEPROM, and is
   the way that primary patches get loaded from floppy disk distribution media
   in the field.

|  NOTE:  The console (D)eposit command may  be  used  to  change  any  EEPROM
|  location as long as the physical I/O address is used.

   A limited number of locations within the EEPROM can also  be  changed  with
   the  console  Deposit command, using the /E qualifier.  These locations are
   the 24 customer configurable locations which include:

      EEPROM         TYPED       
      ADDRESS       LOCATION     CONFIGURATION USE
                     (hex)
      2009 8170
      to 
      2009 8174       00-02      Reserved for future use.
      2009 8176       03         RX50 disable
      2009 8178       04         unused
      2009 817A       05         unused
      2009 817C       06         UART0 baud rate
      2009 817E       07         Fchip, BTB, and cache disables
|     2009 8180       08-17      Boot devices and addresses
|     to                   *** Unused on boards above rev A1 (=0) ***
|     2009 81B8

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 39
   CONSOLE                                                           24 Jan 86


   7.0  CONSOLE

   KA820 console functions are  implemented  in  microcode,  and  the  console
   supports  the  VAX  Midrange  Console  subset  as  specified in Chapter 11,
   'VAX-11 Console and System Bootstrapping', of the SRM,  Rev  7.   The  only
   command not supported is .  Console I/O is supported from UART0 and
   also from a remote console  via  the  BI.   In  this  section  the  console
   sources,  selection of the Console, and the V-11 supported Console commands
   and syntax are covered.



     7.1  CONSOLE SOURCES

     There are two possible console sources.  A physical console connected  to
|    UART0  and  a  logical  console  over the BI.  A backpanel signal selects
|    between a physical and a logical console.  PNL CNSL LOG H is held low  on
|    the  primary  processor which selects a physical console.  This signal is
|    high on any attached processors to select a logical console.  Console I/O
|    of  the logical console is to the primary processor BI node, as specified
|    by a location within the attached processor's EEPROM.



       7.1.1  UART0 - The characteristics of UART0 are

       1.  No parity.

       2.  Baud rates 150, 300, 600, 1200, 2400,  4800,  9600,  19200  can  be
           used.  Default baud rate is obtained from the EEPROM.

       3.  The Baud rate can be changed using   while  in  console  I/O
           mode, see the description of "CONSOLE AUTOBAUD".




|      7.1.2  BI NODE AS A CONSOLE - The purpose of  using  a  BI  node  as  a
|      console  source  is  to  control multi-processor Scorpio systems from a
|      single  physical  console.   The  console  Z  command,  and   MFPR/MTPR
|      instructions  are  normally used to communicate via the logical console
|      over the BI.
|  
|      Console communication over the BI is performed using the VAXBI  RECEIVE
|      CONSOLE  DATA  REGISTER, called the "RXCD" register.  The RXCD register
|      is located in BI Node Register address space, and it  is  addressed  by
|      microcode at the base address of the node's BI nodespace + 200.
|  
|      To send a character to BI node N,  node  N's  RXCD  register  is  first
|      written  with  the character.  Node N then reads the character from its
|      own RXCD register.  An unmaskable interrupt  is  generated  within  the
|      KA820  processor  each  time  a  new  character  is written to its RXCD
|      register.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 40
   CONSOLE                                                           24 Jan 86


       As an example, consider a two-processor system consisting of a  Primary
       Processor (PP) and an Attached Processor (AP):

        ------+-----------------------+-------------------- BI
              |                       |                
        +------------+          +------------+
        |  | RXCD |  |          |   |RXCD|   |
        |  +------+  |          |   +----+   |
        | KA820 (PP) |          | KA820 (AP) |   ...    (other nodes)
        |            |          |            |
        | BI node 0  |          | BI node 4  |
        | +--------+ | Console  |            |  LOGICAL console NODE 0.
        | | UART-0 | | Enabled  |            |  Console enabled.
        +------------+          +------------+
              |
            LA120

       The operator can start a console command dialogue with the PP by typing
       P  on  the  LA120 (if the console is enabled).  With the PP in
       console mode  (halted),  the  operator  can  start  a  console  command
       dialogue  with  the  AP  by  typing  Z 4 to select the AP, and then
       typing P.  Upon receiving the P, the  AP  enters
       console  mode  and  accepts  further  console  commands.   The  console
       microcode uses the scheme described in the  next  section,  and  the  Z
       command is described in the section on Console Commands.

       System software running in the PP can also  create  a  console  command
|      dialogue  with  an  AP,  through  a  half-duplex  path between the RXCD
|      registers of the two KA820s:

                 An MTPR executed on the PP, can be used  to  a
                 character  to  the  RXCD  register  of the AP,
                 which the  AP  will  interpret  as  a  console
                 command  character.   The  AP  will respond by
                 sending  a  console  response  to   the   RXCD
                 register  of the PP, which can then be read by
                 the PP with an MFPR.

       The VAX instructions MTPR and MFPR used for this purpose are  described
       in a later section.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 41
   CONSOLE                                                           24 Jan 86


         7.1.2.1  CONSOLE COMMUNICATION OVER THE  BI - The  console  microcode
         uses the following scheme to communicate over BI.

         The characters are  written  one  at  a  time  over  the  BI  to  the
         destination BI node's RXCD using the format:

             RXCD register format:    

          31                        16 15 14    12 11      8 7              0
         ,----------------------------+--+--------+---------+----------------,
         |             MBZ            |B |   MBZ  |from node|     data       |
         `----------------------------+--+--------+---------+----------------'


         RXCD Bit <15>: 'BUSY' bit. 
                       The receiving node changes this bit from 1 --> 0
                                when the read is done.
                       Other BI nodes only change this bit from 0 --> 1 
                                when writing to the RXCD.

         Bits <11:8>: sender's BI node #.

         Bits <7:0>: console character

         To write to the RXCD, a BI node performs a 'READ' to  the  I/O  space
         address  corresponding to the destination BI node's RXCD and examines
         bit <15>.

         BIT<15> = 0: Write the word containing the data, 
                      BI node #, and bit <15> = 1;

         Bit<15> = 1: Remote node is busy. 

         The receiving BI node performs a READ - WRITE  sequence  to  its  own
         'RXCD'  register  to read the character and to change BIT <15> from 1
         to 0.
|  
|  
|                                        NOTE
|  
|            Because of hardware restrictions, the microcode does not  use
|            interlocked  read  and  writes when in console mode or during
|            MTPR/MFPR instructions.  If macro  software  uses  interlocks
|            when  accessing  the  RXCD,  it can use modify or interlocked
|            instructions with the virtual address  of  the  RXCD.   These
|            will  work fine with other interlocked instructions, but they
|            won't  lock  out  console  generated  commands  or  MTPR/MFPR
|            instructions.
|  
|  

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 42
   CONSOLE                                                           24 Jan 86


           7.1.2.2  MFPR, MTPR INSTRUCTIONS FOR RXCD REGISTER -
           MFPR    #REMOTE_CONSOLE_RECEIVE, dst.wl

           Purpose:
                   Read from the Remote console receive register in 
                   the portcontroller.

           Operation:
                 If PSL NEQ 0, Then {reserved instruction 
                                                   fault}
                 dst<--READ [remote console receive register]


                  If NOT dst <15> then  
                       begin
                             set PSL ;  ! no character received
                             Exit;
                       end;

                   Clear PSL;           ! character received
                   WRITE [remote console receive register] <-- 0;
                   
           Condition codes:
                           N <- received longword LSS 0
                           Z <- received longword EQL 0
                           V <- SET if character not received
                                Cleared if character received
                           C <- C

           NOTE:  dst.wl contains RXCD <15:0>

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 43
   CONSOLE                                                           24 Jan 86


           MTPR    data, #REMOTE_CONSOLE_TRANSMIT

           *Where "data" is:

            31                       12 11       8 7         0
            .--------------------------+----------+-----------.
            |     MBZ                  |  TO NODE |   Char    |
            `--------------------------+----------+-----------'

           Purpose:
                   Write to an abitrary BI nodes remote console 
                   receive register.
                           

           Operation: 

                If PSL NEQ 0 Then {reserved instruction 
                                                  fault}
                temp1<--READ [remote console receive register of 
                                 destination]

                    If temp1<15> then  
                       begin
                             set PSL; (failure in writing data)
                             Exit;
                       end;

                    Clear PSL;  (success writing data)
                    WRITE [remote console receive register of destination] <-- 

                     31                 16 15  12 11      8 7        0
                    ,---------------------+------+---------+----------, 
                    |          0          | 1000 |FROM NODE|   char   |
                    `---------------------+------+---------+----------'
                           
           Condition codes:
                           N <- received longword LSS 0
                           Z <- received longword EQL 0
                           V <- 1 if character sent / 0 if character not sent.
                           C <- C

           NOTE:  If the destination's RXCD is not busy, it  is  written  with
           the busy bit set to 1.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 44
   CONSOLE                                                           24 Jan 86


     7.2  CONSOLE I/O MODE ENTRY

     V-11 console I/O mode can be entered in one of the following ways:

     1. FROM PROGRAM I/O MODE
|       a). Console is ENABLEd and _^P was received from UART0 of
|           the PP's physical console, or from the PP's BI node 
|           if the it is an AP.  A flowchart of this process is 
|           shown below.
        b). A VAX ERROR HALT occurred or a VAX HALT instruction was 
            executed in kernel mode and the HALT/RESTART switch is 
            in the HALT position, or the switch is in the RESTART 
            position and a cold restart failed.

     2. POWER-UP: (see POWER-UP BOOT FLOW CHART, Section 1.0)

         a). The slow self test failed,

         b). The HALT/RESTART switch is in the HALT position or

         c). The HALT/RESTART switch is in the RESTART position 
             and a cold start failed.

     The Console I/O mode to Program I/O mode transition occurs in response to
     console  commands  B,  C, N, S and T/M.  From the N(ext) command, console
     I/O mode is re-entered after executing one VAX instruction.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 45
   CONSOLE                                                           24 Jan 86



                                                                                                                                       
                        .--------------------.                                                                           
                        |   PROGRAM IO MODE  |                                                                           
                        | 32 LEVEL INTERRUPT |------------------------------------------.                                
                        `----------+---------'          RXCD INTERRUPT                  |                                
                                   |                                                    |                                
                 UART0 INTERRUPT   V                                                    V                                
                          .------------------.              NO                   .-------------.                         
                          |  Char = ^P ?     |-------->----->|<-----------<------| CHAR = ^P ? |                         
                          `--------+---------'               |                   `------+------'                         
                                   |                         |                          |
                                   V YES                     |                          V                                
                         .------------------------.          | SECURE     .---------------------------.                  
                         | console enable/secure ?|---->---->|<----<------|  CONSOLE ENABLE/SECURE ?  |                  
                         `---------+--------------'          V            `-------------+-------------'                  
                                   |                         |                          |
                                   V ENABLE                  |                          V ENABLE                         
                         .-----------------------. LOGICAL   |  PHYSICAL   .------------------------.                    
                         |   physical/logical ?  |----->---->|<----<-------|   PHYSICAL/LOGICAL ?   |                    
                         `---------+-------------'           |             `------------+-----------'                    
                                   |  PHYSICAL               |                          |                                
                                   V                         |                          |  
                           .------------------.              |                          |
                           | CONSOLE I/O MODE |              |                          |
                           |                  |              |                          |                                
                           |                  |              |                          V                                
                           `------------------'              |                .------------------.
                                                             V                | CONSOLE I/O MODE |                       
                                                  .-------------------.       `------------------'                       
                                                  | REQUEUE INTERRUPT |                                                  
                                                  |   AT BR4 LEVEL    |                                                  
                                                  `-------------------'                                                  
                                                                                                                         
                             Figure 7.1   CONSOLE MODE ENTRY FOR  P
                                                                                                                                        



     7.3  SCORPIO CONSOLE COMMANDS AND SYNTAX

     The SCORPIO Console implements  the  subset  commands  specified  in  the
     'Vax-11  Console  and System Bootstrapping', Chapter 7 of the SRM, Rev 7,
     with the  exception  of  the    command.   There  are  also  some
     additional   commands  which  facilitate  VAX  macro  instruction  single
     stepping, and the Z command for forwarding console commands to another BI
     Node.   A  complete  list of commands, error messages, and command syntax
     are detailed in the following sections.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 46
   CONSOLE                                                           24 Jan 86


       7.3.1  SCORPIO MRCS SUPPORTED COMMANDS - The SCORPIO  Midrange  console
       supports the following single letter commands (abbreviated to the first
       letter of the command):


       NOTE: SCORPIO Console supports only one letter commands; 
             Command words are not supported.

                  B - BOOT                N - NEXT

                  C - CONTINUE            S - START 

                  D - DEPOSIT             T - TEST

                  E - EXAMINE             X - XFER 

                  H - HALT                Z - Z (BI FORWARD)

                  I - INITIALIZE          ! - ! (comment)

                  CONTROL CHARACTERS control-P, control-S, control-Q, 
                  control-U 

                  CR (CARRIAGE RETURN), , and .

       The Z command and the characters  and  are unique to 
       the KA820 and are not specified in the VAX SRM.

       The commands F (Find) and U (Unjam), and the characters  
       and  are not recognized and are echoed as .




       7.3.2  SCORPIO COMMAND SYNTAX - The  syntax  of  each  Scorpio  console
       command  is  detailed in the following sections.  The following are the
       general rules:

        o  All commands must be abbreviated to the first letter  and  must  be
           the first character after the prompt(>>>).

        o  All unsupported commands and illegal characters are echoed as 
           and ignored.

        o  Commands are parsed as they are typed;  if an unexpected  character
           is typed the console echoes  and it is otherwise ignored.

        o  For all commands no action is taken on a command line  until  after
           it  is  terminated by a carriage return.  Carriage return is echoed
           as .

        o  Both upper case and lower case letters are accepted.   The  console
           uses only upper case letters in its responses.

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 47
   CONSOLE                                                           24 Jan 86


        o  Exactly one space is required as a delimiter  to  separate  command
           letters  or  qualifiers  from  addresses,  data or count.  Multiple
           spaces and tabs in the place of a space are not valid.  The Console
           responds with  for multiple spaces and tabs.

        o  All numbers (addresses, data, count) are  in  hexadecimal  in  both
           commands and responses.

        o  Legal qualifiers can be typed after the  command  letter,  address,
           data, or count.

        o  The symbolic address PSL must be abbreviated to P.

        o  No range checking is performed on addresses and data.   Values  too
           big  are  truncated,  and values too small are extended on the left
           with zeros.

        o  All  unrecognized  control  characters  are  echoed  as    and
           ignored.

        o  Unless specified otherwise, commands can be aborted by control-U or
           control-P,   responses   can  be  aborted  by  control-P,  and  the
           transmission  of  responses  can  be  stopped  by   control-S   and
           re-enabled by control-Q.

       In the following section the syntax  for  each  individual  command  is
       given.

       NOTE: Items enclosed in square brackets ([ ]) are optional.



         7.3.2.1  BOOT Command -

                         B[] []

         The B(oot) command loads the  GPR's  (R3  and  R5),  initializes  the
         system  (processor and Bus), searches for a 64K block of good memory,
         and if a 64K Block of good memory is found it starts running VAX boot
         code from the Packet Buffer RAMs.

         Qualifier: /R5:
                    The  is loaded into GPR 5. 
                    The qualifier is optional. If not specified, 
                    GPR 5 is loaded with zero.

          The device specification for BOOT command is of the form:  
          'DDXN', where

                 'DD'  the device mnemonic, 
                 'X'   the BI node number, 
                 'N'   the unit number 

         The device specification is optional,  and  if  specified,  all  four

   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 48
   CONSOLE                                                           24 Jan 86


         characters  must  be  typed;   otherwise  the console appends leading
         zeros and attempts to execute the command.  The device  specification
         typed,  with  all  letters converted to upper case, is passed through
         GPR 3.  If the device specification is  not  typed,  then  0000  0000
         (HEX)  is  loaded  into  GPR3 and the default device specification is
         used.


         In addition the microcode performs system initialization and searches
         for  a page aligned 64K block of good memory;  if a 64K block of good
         memory is found, its starting address plus 200 (hex) is  loaded  into
         the  SP and control is transferred to VAX boot code in the Packet RAM
         at 2009 0104(hex).  (The VAX boot code is copied to the Packet RAM as
         part of Processor Initialization).

         If no page aligned 64K block of good memory  is  found,  the  console
         responds  with an error message code 44 (hex), corresponding to 'cant
         find 64k Block of good memory', and prompts for the next command.

         The GPR's are loaded with data as specified in section 4.2.
         Examples:
         >>>B                (Boot using the default device,
                                   R3 is loaded with 0000 0000 (hex) and
                                   R5 is loaded with 0)

         >>>B/R5:10 dda2         (ASCII equivalent of 'DDA2' 
                                   (4444 4132) (hex) is loaded into GPR 3. 
                                   Data 10 (hex) is loaded into GPR 5.)



         7.3.2.2  CONTINUE COMMAND -
                         C           

         The C command begins instruction execution at the  address  specified
         by the PC (Program Counter).


   KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION          Page 49
   CONSOLE                                                           24 Jan 86


         7.3.2.3  DEPOSIT COMMAND -

            D[] 
[] [] The D command deposits the data into the address specified. The qualifiers can be typed at any position shown above, and they specify the data size and the address space. The following qualifiers are legal: Data Size: /B - the data size is byte. /W - the data size is word. /L - the data size is longword. Address Space: /P - the address space is physical memory; size qualifiers B, W or L can be used. /V - the address space is virtual memory. If memory mapping is not enabled virtual address is treated as physical address; size qualifiers B, W or L can be used. /I - the address space is the set of internal processor registers that can be addressed by MTPR and MFPR instructions. For this qualifier the size is always Long and default size is set to Long; any specified size qualifier is ignored. /G - the address space is general purpose register set R0 through R15. For this qualifier the size is always Long and default size is set to Long; any specified size qualifier is ignored. /E - the address space is the options section of the EEPROM. Using the /E qualifier, 24 locations within the EEPROM can be accessed. The specified address must be in the range of 0 to | 17 (hex), or an error message code (49 hex) is typed. The 24 | bytes that can be accessed are: 00-02 Reserved for future use. | 03 RX50 disable | 04 unused | 05 unused 06 UART0 baud rate 07 Fchip, BTB, and cache disables | 08-17 Boot devices and addresses (Rev A1 modules only; unused | on modules with 2 EEPROMS) For this qualifier, the data size is Byte and default size is set to Byte; any specified size qualifier is ignored. /M - the address space is the set of CPU internal registers (64 in number) in the Mchip. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 50 CONSOLE 24 Jan 86 | This qualifier is only legal with the E(xamine) command. It can't be | used with the D(eposit) command. For this qualifier the size is always Long and default size is set to Long. Any specified size qualifier is ignored. Access to these registers is provided only as a debugging facility. A list of Mchip CPU registers and their addresses can be found in the 'M-CHIP FUNCTIONAL SPEC'. NOTE The action of the Console when certain CPU registers are accesssed in the Mchip using the /M qualifier is UNPREDICTABLE. For all other qualifiers the console responds with a and ignores the qualifier character. The qualifiers are optional. If no qualifiers are specified the default address space is physical memory, address is 0000 0000, and data size is Long under the following conditions; after processor initialization, immediately after entering console mode, and after N(next) commands. Otherwise the defaults are the last address space and data size used in the last D or E command (the address and data must be specified for the D command). For the D command both address and data must be specified, otherwise | the console responds with an error message code 44(hex) corresponding | to 'UNRECOGNIZED COMMAND' and prompts for another command. The
can be the symbolic address 'P' for PSL. When the symbolic address 'P' is used, the data size is long and the default data size is set to long; any specified data size qualifier is ignored. The default address is set to PSL for a subsequent E command. When the symbolic address 'P' is used, specification of any address space qualifier is illegal and the console response is UNPREDICTABLE. NOTE The data deposited to the PSL is not checked for any context and may leave the processor in an UNPREDICTABLE state if program I/O mode is entered. When the address space is specified as EEPROM locations (/E qualifier), after depositing the data (byte) at the specified EEPROM location, the console microcode waits for 10 milliseconds to allow KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 51 CONSOLE 24 Jan 86 completion of the EEPROM write operation by the hardware. Note that if the front panel switch is not in the EEPROM 'UPDATE' position, the EEPROM is not written. Console microcode detects this situation by reading the same EEPROM location and comparing against the write | data. If data read from the EEPROM location does not match the write | data, an error code 47(hex) is printed on the console. 7.3.2.4 EXAMINE COMMAND - E[] [
][] The E command reads from the
, using the address space and size qualifiers, and then prints the address space letter, address, and data. The 'qualifiers' shown above can be typed in any order. The 'qualifiers' and their defaults are the same as for the D(eposit) command. When the address space is specified as virtual memory (/V), if memory mapping is enabled, the translated physical address is printed. The
is optional. The default address is the last address size used plus the last data size used in the last D or E command. It is plus 0 after processor initialization, N(next) commands, and after immediately entering console mode. After a processor 'double error' halt, the command E/M
can be used to obtain a copy of the stack stored in the CPU's Mchip registers. The contents of these registers for various conditions of machine check are provided in the Machine Check Section. NOTE For an E/M command with an address of 2C(hex), the console responds with the Mchip's copy of the PSL, which contains zeroes for PSL Condition Codes and TP. EXAMPLES: 1. >>>E/L/P 1234 Console response for an address of 1234(hex) containing data 1234 5678 (hex), P 00001234 12345678 >>> 2. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 52 CONSOLE 24 Jan 86 >>>E 1234/W/P CONSOLE RESPONSE: P 00001234 5678 >>> 3. >>>E/P 1234/B CONSOLE RESPONSE: P 00001234 78 >>> 4. Assuming the Virtual address 0001 1234(hex) is mapped to physical address 1234(hex) and memory mapping is enabled, for >>>E/L/V 11234 the Console Response is: P 00001234 12345678 >>> 5. >>>E P CONSOLE RESPONSE: 03C00004 >>> 6. >>>E/G 7 CONSOLE RESPONSE: G 00000007 12345678 >>> 7.3.2.5 HALT COMMAND - H The halt command does not affect the processor. The P typed to enter console mode from program I/O mode halts the processor and this command is a 'NOP' for backward compatibility with other VAXes. No action other than printing the contents of the PC is taken. EXAMPLE: >>>H Console Response: KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 53 CONSOLE 24 Jan 86 PC = 00000204 >>> 7.3.2.6 INITIALIZE COMMAND - I The initialize command causes the Processor initialization. The I command doesn't affect any other BI nodes. A detailed list of processor resources initialized is given in the initialization section. 7.3.2.7 NEXT COMMAND - N The N command executes one VAX macroinstruction at the address currently contained in the PC and prompts. EXAMPLE: >>>N Console response after the execution of one VAX instruction: PC = 00001240 >>> 7.3.2.8 START COMMAND - S [
] The S command starts execution of macro instructions at the specified address. No Initialization is performed. The S command is equivalent to a D(eposit) to the PC followed by a C(ontinue). The
is optional. The default macroinstruction address is whatever may be currently in the PC. 7.3.2.9 TEST COMMAND - T[qualifier] qualifier: /M - menu driven Customer Runnable Diagnostics (CRD). The T command executes the slow self-test. In response to the T command, the console microcode sets RESET in the PCNTL CSR to assert BI RESET L. This starts an ACLO - DCLO powerdown/up sequence KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 54 CONSOLE 24 Jan 86 and forces the microaddress to 0000. The results of the selftest are printed on the console. For a complete description of the selftest see Selftest section. If the selftest fails, an error code 40(hex) meaning 'self-test failed' is printed on the console. If the self-test is successful, the following additional steps are performed: 1. Load Patches from the EEPROM. 2. Powerup (system) Initialization 3. Load BI memory starting and ending addresses And the console then prompts for the next command. A sample output to the console during selftest is given in the last sub-section of this section. T/M is the command to load the menu driven CRD supervisor. This command is equivalent to typing B/R5:11. See the boot comand sub-section. During a T/M command, the console loads 11(hex) into R5, 0 into R3, performs a system initialization, searches for a page aligned 64K block of good memory, and passes control to the VAX boot code in the packet RAM at physical address 2009 0104 (hex). No KA810 module selftest is performed during the T/M command. 7.3.2.10 XFER COMMAND - X[]
The X command reads or writes the specified number of bytes to physical memory starting at the specified address. Qualifiers: /P - is an optional qualifier since physical memory is also the default. It is used for backward software compatability NOTE Writes to the EEPROM are not supported by the X command. The result of writing to the EEPROM using the X command is UNPREDICTABLE. Twenty four customer configurable locations in the EEPROM can be written however, by using the D command with the /E qualifier, as explained by the /E qualifier of the Deposit Command Section. The default address qualifier is physical memory. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 55 CONSOLE 24 Jan 86
: starting physical memory address or control store address. : number of bytes to read or write, as indicated by bit <31> of the count: bit <31> = 0 write. bit <31> = 1 read. The remaining bits are treated as a positive number. : command checksum. NOTE When the operation is a write, i.e. bit <31> = 0, the input data bytes are not echoed. The console accepts the command upon receiving the carriage return, . The next byte the console receives is the command checksum, which is not echoed. The command checksum is verified by adding all command characters, including the terminating carriage return and the checksum, into an 8 bit checksum register which is initialized to zero. If the result is zero the checksum is correct. If the | checksum is correct the console prompts and sends data or receives | data. If the command checksum is incorrect, error code 48(hex) corresponding to "BINARY TRANSFER CHECKSUM ERROR" is sent. X command for accessing physical memory: If the qualifier is /P or if none is specified, the access is to physical memory. If bit <31> of is clear, it is a write to physical memory. If the command checksum is correct, the console responds with the input prompt and accepts the specified number of bytes to deposit into the physical memory and an additional byte of received data checksum. Note that the data being deposited and the checksum byte are not echoed. The received data is verified by adding all the data bytes and the data checksum into an 8 bit register that is initially set to zero. If the result is non-zero the data or checksum is incorrect. If the data checksum is correct the console prompts for | the next command. If the data checksum is incorrect the console | responds with an error code 48(hex) and prompts as shown: ?4A >>> If bit <31> of is set, the operation is a read from physical memory. The console responds with the prompt followed by the specified number of bytes from physical memory, starting from the specified address and an additional byte of data checksum. The data checksum is obtained by adding each byte being sent into an 8 bit KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 56 CONSOLE 24 Jan 86 register that is initially set to zero; the 2's complement of the contents of the 8 bit register is the checksum. After transmitting the data checksum, the console prompts for the next command. During a binary read from physical memory, control characters P, S and Q can be used to control the console response. Console microcode does not interpret the characters received during command checksum input and during write to physical memory or microcode memory, so control characters ^S, ^Q, ^P, ^U have no effect. 7.3.2.11 Z (BI FORWARD) COMMAND - Z : BI node number, one HEX digit 0 to F, to which characters are to be forwarded. If more than one Hex digit is typed, only the last hex digit is used. NOTE If the specified node does not implement an RXCD register, a BI error occurs. The console prints an error code 4C(hex) and prompts. The Z command is a V-11 specific command and is not specified in the VAX SRM. The Z command is meant for forwarding characters to another BI console. The console accepts the command upon receiving and enters the 'forwarding mode'. In this mode, characters typed at the console, with the exception of P and , are forwarded to | the specified BI node. The specified node echoes all the characters | that it receives. The receiving node can receive characters from a | third node, but it always echoes to the node specified within its | EEPROM. The console treats the two characters, P and in a special manner. Unless immediately preceded by an character, P is not forwarded and causes the local console to terminate the forwarding mode and prompt for the next command. The character provides a means of forwarding a P to the specified BI node. When an is typed, the local console forwards the next character typed - even if it is a P or another . Thus, for the input sequence: KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 57 CONSOLE 24 Jan 86 <^P> - ^P is forwarded. - the first causes the second to be forwarded A flow chart of the execution of Z command is shown in fig. 7.2. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 58 CONSOLE 24 Jan 86 .---------------. |Z COMMAND EXEC | At the Primary Processor `-------+-------' .---->------------------->| | V | NO .------------------------------. | .<-----| CHAR FROM PHYS. CONSOLE ? | | | `----------+-------------------' | | | YES | | .-------+-------. YES | | | CHAR = ^P ? |----------------->------------------. | P| `-------+-------' | | O| | | | L| V NO | | L| .----------------. YES | | | | CHAR = ? |--------------->-. | | F| `--------+-------' .---------+-----------. | | O| V NO |GET NEXT CHAR TO FWRD| | | R| | `---------+-----------' | | | |<------------------------' | | C| .----------+---------. | | H| | SET 1 SECOND TIMER | | | A| | START TO FWRD CHAR | | | R| `---------+----------' | | | | | | F| .--------+--------. | | R| | READ DEST. RXCD | | | O| `--------+--------' REPOLL EVERY 1 MSEC | | M| |<---------------------------------------. | | | .-----+----. NO .-----------------. | | | | R| | READY ? |----------->| 1 SECOND OVER ? +----' | | | E| `-----+----' `--------+--------' | | | M| YES |<-------------------------' YES | | | O| V | | | T| .-------+-----------. | | | E| | WRITE DEST. RXCD | | | | | `---------+---------' | | | N| | | | | O| .-------+-------. | | | D`--------->| READ OWN RXCD | POLLING FOR RESPONSE | | | E `-------+-------' OR ECHO | | | | | | | NO .---+----. | | |<--------------------| CHAR? | BUSY BIT SET? | | | `---+----' | | | | YES V | | .---------------------. .-----------. | | |PRINT CHAR ON CONSOLE| | PROMPT | | | `---------+-----------' `-----------' `<------------------------' FIG. 7.2 CONSOLE Z COMMAND EXECUTION FLOW. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 59 CONSOLE 24 Jan 86 The specified BI node can be put into console mode by typing . After receiving the prompt from the specified node's console, other console command characters can be forwarded. | NOTE: If the console microcode detects that the remote node is busy, | (BUSY = 1) for more than 1 second while attempting to forward a | character, console microcode overwrites the character in the remote | node's RXCD with the new character. 7.3.2.12 ! (COMMENT) - ![ ..] The comment command echoes the characters typed after !. No Other action is taken by the console. 7.3.2.13 CONTROL CHARACTERS AND CR (CARRIAGE RETURN) - The SCORPIO console supports control characters P, S, Q, and (carriage return) when in console mode. All other control characters are echoed as and ignored. 1. P is echoed as "^P". P causes the console to abort the processing of the current command. P typed during a 'Z' command aborts the forwarding mode and prompts for the next command. P also clears a prior S. When typed as a part of a command line, the console deletes the command line as it does with U. 2. S stops all console transmission to the console terminal until Q is typed. Additional input between S and Q is not buffered and is thrown away. Any additional S' before the Q are ignored. S is not echoed. 3. Q re-enables the output stopped by a S. Additional Qs are ignored. Q is not echoed. 4. U deletes the entire command line and prompts for the next command. U is echoed as "^U". When typed on an empty line, U is echoed and is ignored. The console then prompts for the next command. 5. Carriage return terminates a command line. No action is taken on the command line until it is terminated by the . Carriage return is echoed as (carraige return, line-feed). on an empty line causes the console to reprompt. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 60 CONSOLE 24 Jan 86 NOTE Control characters P, S and Q have no effect during the binary load of an X command. They can however be used to control the console output during the binary unload of an X command. 6. is used in the Z command to forward the next typed character without interpretation. In all other cases is not used. is not echoed during a Z command; in all other cases it is echoed as . 7.3.2.14 - CONSOLE AUTOBAUD - When the processor is in console mode, the key can be used to correct the baud rate of the physical console's serial line, which is UART0 in the Mchip. This feature is V-11 specific and is not specified in the VAX SRM. For each character that's typed, console microcode increments the programmable baud rate to the next higher speed, (150, 300, .. 19200, 150 .. etc.) In order to give a visual indication that the command was received, the RUN light is turned on momentarily, for about 250 milliseconds. This verifies the input path to UART0. In addition, console microcode prints the following output on the console terminal: >>> This output provides a visual check for the baud rate. If the above characters appear garbled, then the baud rate does not yet match; when the output appears as shown above the baud rate matches that of the console terminal. NOTE: 1. This feature can be used only for UART0 when the Processor is in Console mode. 2. The console aborts the input of a command line, parsing a command or execution of a command upon detecting a . 3. The baud rates are: 150, 300, 600, 1200, 2400, 4800, 9600, and 19200. 4. Both transmit and receive baud rates are set to the same value. 5. Note that the default baud rate in the EEPROM is not modified. 6. can not be forwarded to a remote BI console. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 61 CONSOLE 24 Jan 86 7.3.3 SCORPIO CONSOLE RESPONSES - The SCORPIO console terminal is used to print information during: 1. Restart to indicate the reason (Halt codes), 2. Console mode for Error reporting and command responses. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 62 CONSOLE 24 Jan 86 7.3.3.1 HALT CODES - Except when the halt was requested by a console Halt command or Next command, the console responds with "?" followed by a halt message in the form of the following halt codes with the contents of the PC (program counter). HALT CODE MEANING --------- ------- ?00 Not used (Never generated) ?01 NOT USED ?02 CPU halted A control-P was received from the enabled source (UART0 or BI node) while the processor was in program I/O mode and the console was enabled, which halted the processor. ?03 Power fail restart NOTE: this code is not printed; it is passed on to the Operating System. ?04 Interrupt Stack not valid - in attempting to push state onto the interrupt stack during an interrupt or exception, the processor discovered that the interrupt stack was mapped as NO ACCESS or NOT VALID. ?05 CPU Double Error - the processor attempted to report a machine check to the operating system, and a second machine check occurred. ?06 Halt executed - the processor executed a halt instruction while in kernel mode. ?07 Invalid SCB vector - the vector had bits <1:0> set. ?08 No user WCS - there is no user WCS on SCORPIO. ?09 Not used. ?0A CHM from interrupt stack - a change mode instruction was executed when PSL was set. ?0B CHM to Interrupt stack - the exception vector for a change mode instruction had bit <0> set. ?0C SCB read error - a hard memory error occurred while the processor was trying to read an exception or interrupt vector. ?0D A BOOT message was received over the NI. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 63 CONSOLE 24 Jan 86 EXAMPLE: Upon executing a HALT instruction in kernel mode with the console switch in the HALT position, the following information is printed on the console: ?06 PC = 00000200 >>> 7.3.3.2 RESPONSES FROM CONSOLE MODE - The console prompt is ">>>". All responses of the console use uppercase letters and hexadecimal digits. Several examples of console responses to commands can be found in their descriptions. In this section, the error codes the console uses are given. The SCORPIO Console uses two digit codes for error reporting. The error codes are preceded by a ?. EXAMPLE: When the console encounters a command that it can't recognize, the error message code corresponding to "UNRECOGNIZED COMMAND" is printed as: ?44 >>> The various error messages are provided in the following table. SCORPIO CONSOLE ERROR CODES AND MESSAGES ERROR CODE(HEX) MEANING ------- ------------------------------------------ | | ?40 Selftest failed at Power-up. | | ?41 ACLO timeout. | | ?42 Restart/Cold Boot failed; cold start flag was set. | | ?43 Can't find 64K block good memory while attempting | a Cold restart in response to a B command, or when | the Warm start failed | | ?44 Unrecognized Command, the console can not execute | the command as typed, or there is an invalid boot | device specicification. | | ?45 Memory reference not allowed. An A, D, or E command | required a memory reference and a TNV (translation | not valid) or ACV (access violation) occurred. | | ?46 Illegal Access of an IPR. The specified IPR of the | D or E command can not be accessed. | | ?47 The address specified by the D/E or E/E command was KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 64 CONSOLE 24 Jan 86 | outside the valid range of 0 to 17 (hex), | or, | a write to the EEPROM was inhibited. The read-check- | after-write, in response to a D(eposit) to the EEPROM | failed. | | ?48 Incorrect Checksum of command or data during an X | command. | | ?4A Error while loading the primary patches from the EEPROM. | | ?4B Checksum error on the boot file in the second EEPROM, | (only possible in modules with 2 EEPROMs). | | ?4C Hardware Error which can be caused by a MIB or DAL | parity error, or a detected BI Error, or from non- | existent memory or device. | 7.4 APT SUPPORT There are no specific commands, microcode, or hooks in the Scorpio console for APT, but there is nothing that should preclude the use of APT in manufacturing. The following commands and setup can be used for APT: 1. UART0 is the physical console and APT can be connected to UART0. On power-up the console uses the default baud rate from the EEPROM; since APT requires a 19200 baud rate, the default baud rate can be set in the EEPROM to 19200. 2. The commands C, D, E, I, S and X can be used for communication by APT. 3. The console always echoes legal characters. 4. During an X command load, input data bytes and data checksum are not echoed. 5. An APT software driver would be required in order to use APT for the Scorpio system. 7.5 CONSOLE OUTPUT DURING BOOTING This section summarizes the outputs to expect from the various boot paths. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 65 CONSOLE 24 Jan 86 EXAMPLE 1) Power-up Slow selftest enabled and no errors. BI Nodes 0,1,2,3, and 5 have devices. BI memory of 00800000 hex bytes. Reboot enabled. Good memory in system. #ABCDEFGHIJKLMN# 0 1 2 3 . 5 . . . . . . . . . . 00800000 EXAMPLE 2) power-up Slow self-test enabled and no errors. BI Nodes 0,1,2,3, and 5 have devices. BI node 5 is broken. BI memory of 00800000 hex bytes. REBOOT enabled Good memory in system. #ABCDEFGHIJKLMN# 0 1 2 3 . -5 . . . . . . . . . . 00800000 EXAMPLE 3) power-up Slow self-test enabled and IE CHIP. #A- ?40 PC = aaaaaaaa ! current PC >>> EXAMPLE 4) FAST selftest enabled. BI Nodes 0,1,2,3, and 5 have devices. BI memory of 00800000 hex bytes. Reboot Enabled ## 0 1 2 3 . 5 . . . . . . . . . . 00800000 KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 66 CONSOLE 24 Jan 86 EXAMPLE 5) VAX error halt or HALT instruction. REBOOT enable Good memory in system. ?xx ! reason for halt PC = aaaaaaaa ! current PC EXAMPLE 6) VAX error halt or HALT instruction REBOOT enabled but fails. ?xx !reason for error halt PC = aaaaaaaa ! current PC ?42 ! restart/reboot failed. PC = aaaaaaaa ! current PC >>> EXAMPLE 7) VAX error halt or HALT instruction REBOOT disabled. ?xx ! reason for error halt PC = aaaaaaaa ! current PC >>> EXAMPLE 8) P from ENABLED console source. ?02 ! halt because control-P PC = aaaaaaaa ! current PC >>> KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 67 CONSOLE 24 Jan 86 EXAMPLE 9) "T" console command. Slow self-test with no errors. BI Nodes 0,1,2,3, and 5 have devices. BI memory of 00800000 hex bytes. #ABCDEFGHIJKLMN# 0 1 2 3 . 5 . . . . . . . . . . 00800000 ?01 PC = aaaaaaaa ! current PC >>> EXAMPLE 10) "T" console command. Slow selftest with an IEchip error. BI Nodes 0,1,2,3, and 5 have devices. BI memory of 00800000 hex bytes. #A- ?40 ! Self-test failed. PC = aaaaaaaa ! current PC >>> KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 68 MACHINE CHECK SPECIFICATION 24 Jan 86 8.0 MACHINE CHECK SPECIFICATION The purpose of this part of the document is to describe how the KA820 microcode handles serious hardware and microcode related error conditions. These conditions include: 1. TB and Cache Tag Parity Errors 2. BI Errors | 3. Cache Data Parity Errors | | 4. MIB Parity Errors 5. Impossible situations in microcode 6. Unidentified IPL interrupts 7. CPU Double Error HALT 8. Errors from console mode and powerup | 9. PCntl Timeout | Like other exceptions, Machine Check Exception is taken independently of the IPL. The IPL is raised to 1F. A length parameter, an error code, and the contents of several registers, and a status word is pushed onto the stack as longwords. Software determines, on the basis of the information presented, whether to abort the current process, if the machine check was | the result of the current process. The cache is invalidated during all | microcode machine checks. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 69 MACHINE CHECK SPECIFICATION 24 Jan 86 8.1 MACHINE CHECK CONDITIONS 8.1.1 CACHE TAG PARITY ERRORS - A cache tag parity error can occur on reads to the cache. The microcode invalidates the cache block in question, and then takes the machine check. The Microcode then disables the cache. It is up to the software's machine check service routine to re-enable it for the purposes of determining whether it is a hard error, or just a transient error. The MAR register on the stack is valid after these errors. 8.1.2 BTB TAG PARITY ERRORS - A BTB tag parity error can occur in one of two ways. The microcode was either doing a READ PTE operation (done in the memory management microcode to load the BTB so a virtual to physical address translation may take place), or it was in an MTB miss cycle which requires a PTE to be read from the BTB. When the error occurs, the entry in the BTB is invalidated. The machine check will then be invoked. The microcode will NOT disable the BTB. The MAR is also valid during these errors. | | | | 8.1.3 CACHE DATA PARITY ERRORS - Data parity errors are flagged after | the operation that detected the error. Therefore, the address | information is suspect. 8.1.4 BI ERRORS - BI errors are the detection of errors from the system devices on the BI, which includes BI memory. The PCNTL determines when there is a BI error by decoding the BI Event lines. These BI event codes are saved to indicate the cause of the error. The MAR may or may not contain the address that detected the error. Since BI write transactions are pipelined, a memory write error isn't detected until the MAR may have been updated with the following transaction address. A bit in the PCntl is saved to indicate when the error was due to a write. For errors in I/O space, the address information is valid. 8.1.5 MIB PARITY ERRORS - MIB PARITY ERRORS can be control store parity, or transmission errors. Since these conditions may be transient, the microcode will perform a 'NOP' loop for 200 microseconds before proceeding. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 70 MACHINE CHECK SPECIFICATION 24 Jan 86 8.1.6 IMPOSSIBLE MICROCODE SITUATIONS - The microcoder believes that a set of conditions cannot happen and it has just happened (i.e. alu.n and alu.z are both set as a result of an alu operation). The parameter sent to machine check is a reference to the condition. 8.1.7 INTERRUPT AT AN UNIDENTIFIED IPL - The VAX architecture provides a range of IPLs, and the KA820 uses a subset of these. If an interrupt occurs at one of the levels not used, the VAX CAN'T RESTART bit is cleared, and a machine check is taken. 8.1.8 CONSOLE AND POWERUP ERRORS - Powerup microcode must perform operations to determine the state of the machine (i.e. determine the size of memory, if a BI memory board or other device is broken, search for a valid RPB, etc.), and errors can occur during these operations. Similarly, when the CPU is in console mode, errors can occur during the execution of console commands, such as Examine and Deposit. The machine cannot go through normal error handling routines, as there won't be any error recovery software to handle the problem, nor an SCB set up. During powerup and various console operations, an internal state bit is set. This bit acts as an escape back to the console/powerup code, preventing a VAX machine check exception. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 71 MACHINE CHECK SPECIFICATION 24 Jan 86 8.2 MACHINE CHECK EXCEPTION Machine check microcode must perform operations in which additional errors may occur. To prevent indefinitely looping through an error handling routine, in which another error causes it to loop again, a hardware fault state bit is used by the machine check microcode. 8.2.1 HARDWARE FAULT STATE BIT - When the hardware detects an error this bit is set. When set this bit prevents subsequent error detection. The status of hardware fault state bit is visible as a red LED on the KA820 module. Once the parameters for the stack are gathered, this bit is cleared, such that if there is another hard error, machine check microcode will be be re-entered to handle the new error. 8.2.2 MACHINE CHECK CONDITION - The MACHINE CHECK CONDITION flag performs for the software the same function that the Hardware fault state bit performs for the microcode. This is to prevent indefinite loops within machine check microcode that have machine check exceptions occur. All of the various error handling microcode first checks if the MACHINE CHECK CONDITION flag is set. If set, it was already processing a machine check, and control is transferred to the CPU Double Error Halt handling microcode. When entering the error handling microcode, the MACHINE CHECK CONDITION flag is set, which indicates that it is processing a machine check. The microcode will also attempt to turn OFF the RUN light on the front panel. On a CPU DOUBLE ERROR the microcode will enter console mode, display the proper error code as described in the console section, and leave the run light off. NOTE It is up to the machine check macro software to clear the MACHINE CHECK CONDITION via an MTPR to the MCESR register. If the software clears this flag incorrectly, it is possible to generate an infinite loop. If the first VAX instruction of the software's machine check handler fails, a machine check trap is taken again, which eventually clears the bit, again trys to execute the first VAX instruction, takes another machine check, etc... KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 72 MACHINE CHECK SPECIFICATION 24 Jan 86 8.3 ERROR RECOVERY When an error occurs during the execution of a VAX MACROinstruction, there is a status word that is pushed onto the stack. This status word contains information important for restarting the MACROinstruction. NOTE The definition of 'restartability' of VAX instructions may be found in the VAX SRM, Rev. 7, page 8-7. 8.3.1 ERROR RECOVERY SOFTWARE CONSIDERATIONS - Once the machine check exception is taken, it is up to the operating system or MACRO software to determine what to do next. The items that get pushed onto the stack are intended to be an aid to the error handler programmer. The important thing is to try to recover only when there is no chance of producing catastrophic results, such as wrong answers or corrupting the system's database. The microcode for REI is written such that the only error that may extend to another process is a MIB PARITY ERROR. | 8.3.2 USE OF VAX CAN'T RETRY BIT - The VAX CAN'T RETRY BIT implies | that an instruction cannot be retried. This bit may be incorrect for | some BI errors, or when the FPD (First Part Done) bit is set. | For BI errors, some BI EVENT CODES say that the error was caused by this process. These are re-tryable because the address information is valid. However, for writes to memory or other BI EVENT CODES, the state of the address information is unknown. It is unwise to attempt a restart in these cases. If the FPD bit is clear, it should have produced the same result as if the instruction was executed for the first time. If the FPD bit is set, then the instruction was packed up via it's own packup routine, so it can begin execution from the 'middle' of the instruction. If a MIB parity error occurs, the microcode state is incomplete, therefore the packup routine could produce an incorrect result. The following is an attempt to summarize all of this. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 73 MACHINE CHECK SPECIFICATION 24 Jan 86 FPD= FIRST PART DONE bit; VCR = VAX CAN'T RETRY bit. FPD = 0, VCR = 0; Depending upon the error, the instruction may be retried. FPD = 0, VCR = 1 or FPD = 1, VCR = 1; This means that either memory or a GPR was modified. Retrying the instruction may produce the wrong results. The operating system must not continue this process. FPD = 1, VCR = 0; This means that this pass thru the instruction hasn't changed any state and the instruction may be retried, depending upon the error. 8.4 STACK CONTENTS DURING MACHINE CHECK The microcode provides this information to the software's machine check handler: Data available Location Location in the Mchip's in memory internal registers ---------------- --------- ------------------- Byte count (20 hex) (SP) Not needed... Mcheck type code (SP)+4 Parameter 1 (SP)+8 MTEMPB VA (SP)+12 MTEMP13 VA Prime (SP)+16 MTEMP.PSL.TEMP MAR (SP)+20 MTEMP9 Status Word (SP)+24 MTEMPC PC at failure (SP)+28 MTEMPF UPC at failure (SP)+32 MTEMP10 PC (SP)+36 PSL (SP)+40 KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 74 MACHINE CHECK SPECIFICATION 24 Jan 86 8.4.1 BYTE COUNT - (SP) - This location tells the number of bytes that were pushed onto the stack. 8.4.2 MACHINE CHECK TYPE - (SP)+4 - This is where the error type bits are stored by the microcode, to provide information to the software as to the source of the error. More than one bit may be set. 31 7 6 5 4 3 2 1 0 +-------------------------+------+------+------+------+------+------+------+ | |cache | BTB | BI | data | MIB |ucode | IPL | | UNUSED | tag | tag |error |parity|parity|error | BAD | | |parity|parity| | error| error| | | +-------------------------+------+------+------+------+------+------+------+ The only mutually exclusive errors are CACHE TAG PARITY and BTB TAG PARITY 8.4.3 PARAMETER - (SP)+8 - If UCODE ERROR is set, this is a reference to the microcode condition. If cache tag or BTB tag parity are set, this is the corresponding tag. 8.4.4 VA <31:0> - (SP)+12 - This is the virtual address register. It may contain the virtual address that caused the error. It is included for microcode debugging only. 8.4.5 VA PRIME <31:0> (SP)+16 - This is also a virtual address register. It may contain the virtual address that caused the error. It is also included for microcode debugging only. 8.4.6 MAR <31:0> (SP)+20 - This is the memory address register. It may contain the physical address that caused the error. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 75 MACHINE CHECK SPECIFICATION 24 Jan 86 8.4.7 STATUS WORD <31:0> (SP)+24 - This status word contains useful status bits. | | | 30 29 23 22 21 20 16 15 14 12 4 3 2 1 0 | +---+---------+---+---+-----------+---+---+ +--+ +---+---+---+---+---+ | |VCR|reserved |BI |WRT| BI Event | |CA | | P| |BTB|MTB| C |PC |MAR| | | | for SW |ERR|MEM| Codes | |DAT| | T| |TAG|MIS|TAG|ERR|LCK| | | | | | | | |PAR| | O| |PAR| |PAR| | | | +---+---------+---+---+-----------+---+---+ +--+ +---+---+---+---+---+ | | All other bits are unused | o Bit <30> VAX CAN'T RETRY BIT - This bit is to be used by software in determining if a VAX instruction is restartable. The bit is CLEARed at the beginning of each instruction's execution, or at the beginning of an instruction's restart from FPD (FIRST PART DONE). The bit is SET by hardware when one of the following takes place: ANY REFERENCE TO AN I/O SPACE ADDRESS ANY SUCCESSFUL WRITE TO MEMORY ANY SUCCESSFUL WRITE TO A GPR THAT WAS NOT AUTO-INCREMENTED/DECREMENTED. If the microcode specifically does not want the VAX instruction to be retried, it sets this bit. If the bit is set, macro software should NOT attempt to retry the instruction. o Bit <22> BI ERROR - This bit identifies that the BI EVENT CODE and write memory bit are valid and pertinent. o Bit <21> WRITE MEMORY BIT - The bit is used to identify that the BI EVENT CODE is due to a write to memory space. o Bits <20:16> BI EVENT CODE - This field represents the status of the previous BI transaction. | o Bit <14> CACHE DATA PARITY ERROR - This bit is used to identify | that the PCNTL has detected a data parity error when reading from | the cache. This is the only information available about the parity | error. | | o Bit <12> PTO - This bit is used to indicate that the PCntl has | timed out, which implies that it sent out a request to the BI or to | one of the PCI devices, and it didn't receive a response. After | 12.6 msec, it times-out, clears itself, and aborts that | transaction. | | o Bit <4> BTB TAG PARITY ERROR - A tag parity occurred while reading a BTB ENTRY. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 76 MACHINE CHECK SPECIFICATION 24 Jan 86 o Bit <3> MTB MISS - The BTB read was the result of an MTB Miss operation. o Bit <2> CACHE TAG PARITY ERROR - A tag parity error occurred while reading a cache location. o Bit <1> PCNTL DETECTED ERROR - BI ERROR and/or CACHE/BTB DATA PARITY ERROR is valid and pertinent. o Bit <0> MAR IS LOCKED - This implies that status word bits <22:0> are valid and pertinent. 8.4.8 PC At Failure <31:0> - (SP)+28 - This is the VAX PROGRAM COUNTER when the error occurred. 8.4.9 UPC At Failure <31:0> - (SP)+32 - This is the micro PROGRAM COUNTER when the error occurred. 8.4.10 PC <31:0> - (SP)+36 - This is the contents of the macro Program Counter 8.4.11 PSL <31:0> - (SP)+40 - This is the Processor Status Longword 8.4.12 BI EVENT CODES - This section provides a list of all possible BI event codes, which are all described in detail in the BIIC Spec. Anytime that error handling microcode puts error information on the stack, these bits are included in the status word (bits <20:16>) at (SP)+24. The only time that they are pertinent however, is when the BI error bit is also set (bit <22> of the status word). If the BI error bit isn't set, the microcode reads these bits anyway, which would reflect whatever is happening on the BI at that particular time. This information wouldn't be pertinent to the error at hand. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 77 MACHINE CHECK SPECIFICATION 24 Jan 86 BI EVENT CODE TABLE EVENT CODE BI EVENT ----- ------------------------------------ 0 No event (nev) 1 Master Port Transaction Complete (mcp) 2 ACK Received for Slave Read Data (akrsd) 3 BIIC Transaction Bus Timeout (bto) 4 Self-Test Passed (stp) 5 RETRY CNF Received For Master Port Command (rcr) 6 Internal Register Written (irw) 7 Advanced RETRY CNF Received (arcr) 8 NOACK Or Illegal CNF Received For INTR (nici) 9 NOACK Or Illegal CNF Received For IP INTR (nicip) A ACK CNF Received For Error Vector (akre) B IDENT ARB Lost (ial) C EX VECTOR Level 4 Selected (evs4) D EX VECTOR Level 5 Selected (evs5) E EX VECTOR Level 6 Selected (evs6) F EX VECTOR Level 7 Selected (evs7) 10 Stall Timeout On Slave Transaction (sto) 11 Bad Parity Received During Slave Transaction (bps) 12 Illegal CNF Received For Slave Data (icrsd) 13 Slave Transaction Aborted By Master (sabm) 14 ACK CNF Received For Non-Error Vector At Level 4 (akrne4) 15 ACK CNF Received For Non-Error Vector At Level 5 (akrne5) 16 ACK CNF Received For Non-Error Vector At Level 6 (akrne6) 17 ACK CNF Received For Non-Error Vector At Level 7 (akrne7) 18 Read Data Substitute or RESERVED Status Code Received (rdsr) 19 Illegal CNF Received For Master Command (icrmc) 1A NOACK CNF Received For Master Command (ncrmc) 1B Bad Parity Received (bpr) 1C Illegal CNF Received By The Master For Data Cycle (icrmd) 1D Master Port Transaction Retry Timeout (rto) 1E Bad Parity Received During Master Transaction (bpm) 1F Master Transmit Check Error (mtce) This field represents the status of a previous BI transaction, and the above list shows all possible BI Error codes. The PCntl latches these codes on every cycle, but it only locks them into its CSR when certain master transaction codes are detected. The following detailed descriptions are for only those errors for which the BI Error bit will be set 1. EVENT CODE = 03; BIIC Transaction Bus Timeout (BTO) - BI ERROR is set. The master BI transaction is hung. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 78 MACHINE CHECK SPECIFICATION 24 Jan 86 2. EVENT CODE = 18; Read Data Substitute or RESERVED Status Code Received (RDSR) - BI ERROR is set. The master BI Read transaction has failed because the BI memory has returned data that had more than a single bit error, making it uncorrectable. The MAR contains the physical address of the transaction. 3. EVENT CODE = 19; Illegal CNF Received For Master Command (ICRMC) - BI ERROR is set. The master transaction has failed because the CNF code was incorrect. The MAR contains the physical address of read transactions and any type of I/O transactions, but for memory write transactions the MAR contains unreliable address bits. 4. EVENT CODE = 1A; NOACK CNF Received For Master Command (NCRMC) - BI ERROR is set. The master transaction was NO ACKed. It may be for trying to access a non-existent memory location or an invalid I/O space address. The MAR contains the physical address of a memory read transaction or any type of I/O transaction, but for a memory write transaction the MAR contains unreliable address bits. 5. EVENT CODE = 1C; Illegal CNF Received By The Master For Data Cycle (ICRMD) - BI ERROR is set. The master transaction has failed because of an illegal CNF CODE received. The MAR contains the physical address of memory read transactions or any type of I/O transactions, but for memory write transactions the MAR contains unreliable address bits. 6. EVENT CODE = 1D; Master Port Transaction Retry Timeout (RTO) - BI ERROR is set. The master transaction has failed because a Retry timeout has occurred, caused by 4096 consecutive retry confirmations. 7. EVENT CODE = 1E; Bad Parity Received During Master Transaction (BPM) - BI ERROR is set. The master transaction has failed because of a transmission parity error. The MAR contains the physical address of memory read transactions or any type of I/O transactions, but for memory write transactions the MAR contains unreliable address bits. 8. EVENT CODE = 1F; Master Transmit Check Error (MTCE) - BI ERROR is set. The master transaction has failed because the master node verifies that the data on the BI doesn't match the data that it transmitted when it was the only driver. The MAR contains the physical address of memory read transactions or any type of I/O transactions, but for memory write transactions the contents of the MAR contains unreliable address bits. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 79 SYSTEM CONTROL BLOCK VECTORS 24 Jan 86 9.0 SYSTEM CONTROL BLOCK VECTORS The following vectors are used by the KA820 System Control Block: EXCEPTION IPL USE VECTORS 00 14-17 Unibus/BI interrupt 04 1F Machine check abort 08 1F Kernel Stack not valid abort 0C 1E Powerfail interrupt 10 Reserved or privileged instruction fault 14 Customer reserved instruction fault 18 Reserved operand exception 1C Reserved addressing mode fault 20 Access control violation fault 24 Translation not valid fault 28 Trace pending fault 2C Breakpoint fault 30 Not used 34 Arithmetic exception 38 Not used 3C Not used 40 CHMK 44 CHME 48 CHMS 4C CHMU INTERRUPT VECTORS IPL USE * 50 14 BI Bus error interrupt 54 1A Corrected read data 58 14 RXCD (Receive data register) 5C-7C Not used 80 14 Interprocessor interrupt 84-BC 1-F Software interrupts C0 16 Interval timer interrupt C4 14 Not used C8 14 Serial line #1 RX interrupt CC 14 Serial line #1 TX interrupt D0 14 Serial line #2 RX interrupt D4 14 Serial line #2 TX interrupt D8 14 Serial line #3 RX interrupt DC 14 Serial line #3 TX interrupt E0-EC Not used F0 14 Console storage device (RCX-50) F4 14 F8 14 Console terminal RX interrupt FC 14 Console terminal TX interrupt 100-3FFC 14-17 BI defined loaded by software | * The microcode checks for BI interrupt vectors that may be erroneously | within the range of 04 to 4C, and changes them to vector = 50. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 80 SYSTEM CONTROL BLOCK VECTORS 24 Jan 86 The following shows the interrupt levels of the KDZ11. Hex Level Interrupt Source 1 - F Software interrupts, level 1 - 15 10 - 13 Not used 14 BI INTR4, RXCD, IPINTR, NI, RX50, UART0, UART1, UART2, UART3 15 BI INTR5 16 BI INTR6, ICCS - Interval timer 17 BI INTR7 18 Not used 19 Not used 1A CRD - Corrected read data 1B - 1D Not used 1E ACLO 1F Used by software, machine check, ksnv, startup For interrupts at the same level the priority order is as listed (i. e. for IPL 14 BI INTR4 highest AND UART3 LOWEST). The non-programmer visible watchdog timer (explained in the boot spec), the NI interrupt, the RXCD console interrupt, and the UART0 receive interrupts are unmaskable by the IPL. With the exception of the watchdog timer, they are are rescheduled by ucode to level 14. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 81 PCNTL CSR 24 Jan 86 10.0 PCNTL CSR This CSR within the PCntl is used for storing status information, for providing control to the CPU, and for interfacing to the front panel. It is accessed via I/O address 2008 8000. Some of its contents are written on the machine check stack during microcode error handling routines for use by machine check software. This register is also accessable to software, and although software can read or write the same bits as microcode, most of the bits in the high order word are only used by microcode. The bits used by software are mainly in the low order word. I/O ADDRESS: 2008 8000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 | +------+------+------+------+------+------+------+------++------+------+------+------+------+------+------+------+ | |RSTRT | CNSL | CNSL | BI | BI | ENB | SELF | || WWPE | EVNT |WRITE | EVNT | EVNT | EVNT | EVNT | EVNT | | | HLT | LOG | ENB |RESET | STF | APT | TEST | RUN || | LOCK | MEM | 4 | 3 | 2 | 1 | 0 | | | | | | | | | PASS | || | | | | | | | | | +------+------+------+------+------+------+------+------++------+------+------+------+------+------+------+------+ | | 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 | +------+------+------+------+------+------+------+------++------+------+------+------+------+------+------+------+ | | |PARITY| ENB | PCNTL| CSR | CNSL | CLR | CNSL || RX | CLR | RX | CLR | IP | CRD | CLR | CRD | | | WWPO | ERR H| PIPE | TIME | 11 | INTR | CNSL | INTR || INTR | RX | INTR | IP | INTR | INT | CRD | INTR | | | | | | OUT | | ENBL | INTR | || ENBL | INTR | | INTR | | ENBL | INTR | | | +------+------+------+------+------+------+------+------++------+------+------+------+------+------+------+------+ In the following descriptions, 1 represents a logical high (3 volts) and is read as 1 by software or microcode. 0 represents a logical low (0 volts), and is read as 0 by software or microcode. * BIT<31> RSTRT HLT (Restart/Halt Powerup Option Bit) 1 = HALT, 0 = RESTART or AUTOBOOT. Read Only bit by microcode. Boot microcode checks the status of this bit to determine whether to boot or go to console mode at powerup or after an error halt condition. Set by front panel Powerup Mode Keyswitch under operator control. The status of this bit is only available to the primary CPU. Since the panel switch only goes to the primary CPU the default position (1) selects HALT on any attached processors in the system. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 82 PCNTL CSR 24 Jan 86 * BIT<30> CNSL LOG (Physical/Logical Console Selection Bit) 1 = LOGICAL, 0 = PHYSICAL. Read Only bit by microcode. Initialization microcode reads this bit to determine the console source. Set by KA820's position in the BI backplane; held low to the primary processor by the system control module. The 0 state of this bit is only available to the primary processor to select UART 0 as a console source. The default position (1) selects a logical console for any attached processors in the system. These two consoles, physical and logical, are explained further in the Console Section. * BIT<29> CNSL ENB (Console Secure/Enabled Selection Bit) 1 = CONSOLE ENABLED, 0 = CONSOLE SECURE. Read Only bit by microcode. This bit is read by microcode when a P is sent by the console to determine if console mode is enabled. This allows locking the console so that operator intervention from the console is inhibited. Set by the Console Secure/Enable Keyswitch on the front panel. This signal only goes to the primary processor to enable or disable its console based upon the position of the keyswitch. The default position is high on any attached processors in the system which always enables their logical consoles. * BIT<28> BI RESET (System Reset Control Bit) Read/Write bit by microcode or software. Cleared by DCLO at powerup or by DCLO as a result of the bit being set. Written with a 1 by console microcode during the console T (selftest) Command. Can also be written with a 1 by software to completely reset the system. Setting this bit creates a power up sequencing of the BI ACLO and DCLO signals by the system control module. Writing with a 0 clears this bit, but it has no effect because whenever it gets set, the resulting DCLO clears it. This bit is buffered by an external open collector driver which drives BI Reset L when it is written with a 1. This signal goes KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 83 PCNTL CSR 24 Jan 86 to the system control module and generates a power off/power up sequence by driving the ACLO and DCLO signals. This in turn causes the entire system to get reset by DCLO, including BI memory. The self test and powerup initialization is then initiated when DCLO is deasserted. * BIT<27> BUF BI STF (Selftest Fast/Slow Selection Bit) 1 = FULL SELF TEST, 0 = FAST SELF TEST. Read Only bit by microcode. Read by selftest microcode to determine whether to run the full selftest or just an initialization routine. State is controlled by BI STF L. This bit is a buffered version of the BI STF L (Self Test Fast) line that is set by a switch on the system control module. The purpose of this bit is to allow bypassing a 10 second powerup selftest due to a power glitch in a real time system. * BIT<26> ENB APT (APT Connection Status Bit) 1 = APT NOT CONNECTED, 0 = APT LINE CONNECTED. Read Only bit by microcode. Can be grounded by an APT line when connected to serial line 0; default position is high when nothing is connected. Currently this bit is designed into the PCntl as a contingency so that microcode can read the bit to determine if an APT line is connected. It is made available for grounding when an APT line is connected to UART0. * BIT<25> SELFTEST PASS H (Selftest Status Bit) 1 = SELFTEST PASSED, 0 = SELFTEST FAILED, OR STILL IN PROGRESS. Read/Write bit by microcode. Written with a 1 by self test microcode at the end of a successful self test, either at powerup or from the console T (Test) command. Cleared by DCLO at powerup. Not written to a 0 by microcode. This bit also has as complimentary outputs from the PCntl, SELFTEST PASS H and BI BAD H. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 84 PCNTL CSR 24 Jan 86 When cleared by DCLO the BI Bad H output drives an external open collector buffer that asserts BI Bad L. Selftest Pass H is simultaneously deasserted which turns of the LED driver for the 2 yellow Self Test Passed LEDs on the module. When written to a 1 at the conclusion of selftest, BI Bad L is deasserted and Selftest Pass H is asserted which turns on the LED driver for the the 2 yellow Self Test Pass LEDs. * BIT<24> RUN L (Program Mode Run Bit) 1 = PROGRAM MODE, 0 = CONSOLE MODE. Read/Write bit by microcode, not normally read however. Cleared by DCLO at powerup. Written with a 1 by microcode to indicate when the CPU is in program mode. Written with a 0 by microcode when going into console mode. It is also buffered on the module and when asserted it drives PNL RUN LED L to light the RUN indicator on the front panel. Note: This bit is read as a 1 when written to a 1, and read as a 0 when written to a 0. Its output voltage is opposite in polarity however, to drive the LED. (i.e. Writing the bit to a 1 causes the output voltage to be low, and vice versa). As an aid in troubleshooting a "dead" console terminal (i.e. no printouts or characters echoed); the console microcode toggles this bit each time it recognizes an ASCII T character (T = console Test command). In turn the RUN light flashes to indicate that at least input characters are being received and recognized by the CPU. This implies that the problem is somewhere in the output path to the terminal or in the terminal itself. | | * BIT<23> WWPE (Write Wrong Parity, Even bytes) | | 1 = FORCED WRONG PARITY GENERATION, AND PARITY CHECKING DISABLED | ON THE EVEN DATA BYTES (bytes 0 and 2) OF THE CP DAL LINES. | | 0 = NORMAL PARITY GENERATION, AND PARITY CHECKING ENABLED ON THE | EVEN DATA BYTES. | | Read/Write bits by microcode or software. | | Cleared by DCLO at powerup. | | Selftest microcode writes 1 to this bit to write bad parity | and/or disable parity checking by the even byte data path gate | array. Diagnostic software can do the same. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 85 PCNTL CSR 24 Jan 86 | Selftest microcode writes 0 to this bit to re-enable normal | parity generation and parity checking by the even data path | gate array. Diagnostic software can do the same. | | Written with a 1 by diagnostic microcode or software to force | writing bad parity to either the cache or BTB parity RAMs on write | operations. This also disables the even data path gate array of | the PCntl from generating a parity error signal to the control | gate array. | | Written with a 0 to resume normal parity generation and checking | by the even data path gate array. Note: The equivalent odd byte | Write Wrong Parity bit <15> is written at the same time to enable | parity across the whole longword * BIT<22> EVENT LOCK (Event Code Error Bit) Read/(Write 1 to clear) bit by microcode and software. Cleared by DCLO at powerup. Set to a 1 whenever an error condition is detected by the PCntl on the Event Lines from the BIIC. Once set bits <20:16> are latched and don't reflect the state of the BIIC Event Lines until this bit is written with a 1 to clear it. Written with a 1 to unlock the latched event codes in CSR bits <20> through <16>. It also unlocks the latched Write Memory bit <21>. Writing with a 0 has no effect. * BIT<21> WRITE MEMORY (Memory Write Transaction Status Bit) 1 = ERROR IN WRITE OPERATION, 0 = ERROR IN-NON WRITE OPERATION. Read Only bit by microcode. Not initialized by DCLO. Error detection microcode reads this bit, along with bits <20:16>, to write to the Machine Check Stack after detecting an error. This bit is used for associating BI errors with pipelined BI memory write transactions, since the error may not be detected until the PCntl is involved with a subsequent transaction. It is set by the PCntl during memory write transactions, two cycles after RAK (Request Acknowledge) is asserted by the BIIC. This allows getting past any errors that may occur due to any prior BI transactions. It remains set as long as memory write transactions are performed, and is only cleared when another type KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 86 PCNTL CSR 24 Jan 86 of BI transaction is initiated. As with the Event codes that follow, this bit is locked any time an error code is detected from the BIIC so it can be read by error handling microcode. * BITS<20:16> EV4 through EV0 (BI Transaction Event Code Bits) Read Only Bits by microcode. Error detection microcode reads these bits, along with bit <21>, and then writes them to the stack after detecting an error. Bit 21 indicates that a write to memory was in progress when the error occurred. Bits <20:16> are decoded as follows: 03 BI bus timeout 18 Read data substitute or reserved read status received on a BI memory read 19 Illegal CNF code received for master command 1A NOACK CNF code received for master command 1C Illegal CNF code received by master for data cycle 1D Master port transaction retry timeout 1E Bad parity received during master transaction 1F Master transmit check error These bits are latched from the BIIC by the PCntl whenever an error code is detected. PCntl error is then asserted to the Mchip which in turn generates Merr (Memory Error) to the I/Echip. This causes a microtrap to error detection microcode which writes the contents of this entire register onto the stack for machine check software. After being latched, the status of these bits won't change until CSR bit <22> is written with a 1 to clear the lock. * BIT<15> WWPO (Write Wrong Parity, Odd bytes) 1 = FORCED WRONG PARITY GENERATION, AND PARITY CHECKING DISABLED ON THE ODD DATA BYTES (bytes 1 and 3) OF THE CP DAL LINES. 0 = NORMAL PARITY GENERATION, AND PARITY CHECKING ENABLED ON THE ODD DATA BYTES. Read/Write bit by microcode or software. Cleared by DCLO at powerup. Selftest microcode writes 1 to this bit to write bad parity and/or disable parity checking by the odd byte data path gate array. Diagnostic software can do the same. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 87 PCNTL CSR 24 Jan 86 Selftest microcode writes 0 to this bit to re-enable normal parity generation and parity checking by the odd data path gate array. Diagnostic software can do the same. Written with a 1 by diagnostic microcode or software to force writing bad parity to either the cache or BTB parity RAMs on write operations. This also disables the odd data path gate array of the PCntl from generating a parity error signal to the control gate array. Written with a 0 to resume normal parity generation and checking by the odd data path gate array. Note: The equivalent even byte Write Wrong Parity bit <7> is written at the same time to enable parity across the whole longword. * BIT<14> PARITY ERROR (Parity Error Status Bit) 1 = PARITY ERROR DETECTED BY PCNTL, 0 = NO PARITY ERROR DETECTED. Read/Write 1 to clear bit by microcode. Cleared by DCLO at powerup. Cleared by microcode by writing with a 1. Set to a 1 by PCntl hardware whenever a parity error is detected on data read from the cache RAMs or BTB RAMs. Read by error handling microcode and put on the stack along with bits <21:16>. Cleared later by this same microcode. When set by the PCntl, PCntl Error L is simultaneously driven to the Mchip to cause an MERR (memory error) microtrap. * BIT<13> ENBL PIPE H (Enable BI Pipeline Mode Control Bit) 1 = ENABLE PIPELINE MODE, 0 = DISABLE PIPELINE MODE. Read/Write bit by microcode. Cleared by DCLO at powerup. Written with a 1 by initialization microcode to allow pipelining BI transactions. Pipeline mode keeps the PCntl from waiting until the current transaction is completed, and confirmation received, before posting the next BI transaction to the BIIC. During writes to I/O space the PCntl disables pipelining, despite the state of this bit, to assure that the transaction either completes or an error is detected, before starting the next KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 88 PCNTL CSR 24 Jan 86 transaction. This is done for error recovery purposes. Memory write transactions are always pipelined for performance. | * BIT<12> PCNTL TIMEOUT | | 1 = PCntl timeout error occured; 0 = normal state | | Read/Write 1 to clear bit by microcode or software. | | Cleared by DCLO at powerup. | | Set to a 1 by hardware when the PCntl doesn't receive a response | to a request from the BI or from any of the PCI devices. After | each request is initiated, a timer is started which is cleared | when the request receives a response. After 12.6 msec without | receiving a response, this bit is set and the PCntl clears itself | and aborts the transaction. | | Machine check microcode normally clears this bit. | | * BIT<11> CSR 11 | | 1 = SET STATE; 0 = NORMAL CLEARED STATE | | Normally pulled high by hardware and read as a 0. | | Read only bit by microcode or software. | | Pin C11 on the DC348 (CSR 11 L) can be grounded and read as a 1. | This is an extra status bit for future use which allows grounding | to indicate some event. It can only be cleared by ungrounding. * BIT<10> CNSL INTR ENBL (RXCD Logical Console Interrupt Enable Control Bit) 1 = ENABLE INTERRUPTS FROM RXCD (RECEIVE CONSOLE DATA REGISTER) 0 = DISABLE RXCD INTERRUPTS. Read/write by microcode or software. Cleared by DCLO at powerup. Powerup Initialization microcode sets this bit by writing to a 1 after selftest completion to enable interrupts from the logical console. Written with a 1 by software to enable an interrupt to be generated to the Mchip when the Busy bit is set in the RXCD (Receive Console Data) register. Written with a 0 by software to disable interrupts from the RXCD. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 89 PCNTL CSR 24 Jan 86 The RXCD is a logical console register that is used in multiprocessor configurations; it is explained in more detail in the Console section of this document. * BIT<09> CLEAR CNSL INTR (Clear RXCD Console Interrupt Bit) Write only bit (always read as 0) by microcode. Written with a 1 by interrupt handling microcode to clear CSR bit <8>, the console interrupt bit. Writing with a 0 has no effect. The logical console is covered in more detail in the console section. * BIT<08> CNSL INTR (RXCD Console Interrupt Bit) 1 = RXCD INTERRUPT PENDING, 0 = NO RXCD INTERRUPT PENDING. Read only by microcode. When set this bit generates Cnsl Intr L to the Mchip and doesn't normally need to be read. Cleared by DCLO at powerup. Cleared by interrupt handling microcode by writing a 1 to CSR bit <9>. Set by the PCntl hardware when the Logical console is enabled and the RXCD Busy bit is written from a 0 to a 1. This indicates that a byte of data has been received. | * BIT<07> RX INTR ENBL (RX Floppy Drive Interrupt Enable Control | Bit) | | 1 = ENABLE INTERRUPTS FROM RX50 | | 0 = DISABLE RX50 INTERRUPTS. | | Read/write by microcode or software. | | Cleared by DCLO at powerup. | | Powerup Initialization microcode sets this bit by writing to a | 1 after selftest completion to enable interrupts from the RX50 | floppy drive. | | Written with a 1 by software to enable an interrupt to be | generated to the Mchip when the RX50 is used. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 90 PCNTL CSR 24 Jan 86 | Written with a 0 by software to disable interrupts from the | RX50. | * BIT<06> CLR RX INTR (Clear RX50 Interrupt Request Bit) Write only bit (always read as 0) by microcode. Writing with a 1 clears bit <05>, the RX50 Interrupt Request bit. Writing with a 0 has no effect. Normally written by interrupt handling microcode to clear the RX50 interrupt request. * BIT<05> RX INTR (RX50 Interrupt Request Bit) 1 = RX50 INTERRUPT REQUEST PENDING, 0 = NO RX50 INTERRUPT REQUEST PENDING. Read only bit by microcode. This interrupt request is ORed with IPINTR and with BI INTR4 by the PCntl, and then sent to the MChip as BI INTR4 L. A BI INTR4 request therefore requires the microcode interrupt handler to read this bit to determine if it is an RX50 Interrupt Request. Cleared by DCLO at powerup. Cleared by microcode by writing a 1 to CSR bit <06>. Set by the PCntl hardware whenever RX INTRA or RX INTRB pulses are received from the RCX50 floppy disk controller. RX INTRA is sent at the completion of each operation, and RX INTRB is sent when the drive status changes. This bit is normally cleared by interrupt handling microcode. * BIT<04> CLEAR IP INTR (Clear Interprocessor Interrupt Request Bit) Write only bit (always read as 0) by microcode. Writing with a 1 clears bit <03>, the Interprocessor Interrupt Request bit. Written with a 1 by interrupt handling microcode to clear bit <3>, the IP INTR bit. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 91 PCNTL CSR 24 Jan 86 * BIT<03> IP INTR (Interprocessor Interrupt Request Bit) 1 = INTERPROCESSOR INTERRUPT REQUEST PENDING, 0 = NO IPINTR REQUEST PENDING. Read only bit by microcode. Cleared by DCLO at powerup. Cleared by interrupt handling microcode by writing a 1 to CSR bit <04>. This is done after reading the CSR to determine the source of the interrupt. Set by PCntl hardware when an IPINTR request is received from the BI. It is ORed with the RX IRQ and with BI INTR4 L. A BI INTR4 request therefore requires the microcode interrupt handler to read this bit to determine if it is an IPINTR Request. * BIT<02> CRD INTR ENBL (Corrected Read Data Interrupt Enable Control Bit) 1 = CRD INTERRUPT ENABLED, 0 = CRD INTERRUPT DISABLED. Read/Write bit by microcode or software. Cleared (CRD INTR disabled) by DCLO at powerup. Written with a 0 by software to disable CRD Interrupts. Written with a 1 by software to enable CRD Interrupts. Corrected Read Data Interrupts are generated by the KA820's BIIC when single bit errors occur in the BI Memory Array and the data has been corrected by the memory. This is normally used by soft error logging software. * BIT<01> CLEAR CRD INTR (Clear CRD Interrupt Bit) Write only bit (always read as 0) by microcode. | Must be written with a 1 by interrupt handling software to | clear bit <0>, the CRD Interrupt Pending bit. Writing with a 0 has no effect. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 92 PCNTL CSR 24 Jan 86 * BIT<00> CRD INTR (CRD Interrupt Bit) 1 = CRD INTERRUPT PENDING, 0 = NO CRD INTERRUPT PENDING. Read only by microcode. Cleared by DCLO at powerup. Cleared by interrupt handling microcode by writing a 1 to CSR bit <01>. Set by the PCntl hardware whenever the BIIC indicates that it has received Corrected Read Data and CRD INTR is enabled. (Bit <02> written to a 1). When set, CRD Intr L is asserted to the Mchip which generates an interrupt to the I/Echip. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 93 SERIAL LINES 24 Jan 86 11.0 SERIAL LINES 11.1 RXCS1, RXCS2, RXCS3 - RECEIVE CSR REGISTERS These 3 IPR registers are the control and status registers used in conjunction with the UARTs for receiving characters from the serial lines. When enabled, a received character generates an interrupt at IPL 20 in the Mchip and sets the DON bit in the appropriate RXCS register. This implies that the UART is done receiving the character and its ready to be read. This results in the Mchip asserting the FPD interrupt request line to the I/Echip. Microcode then determines whether to back out of the current instruction, continue until completion, or continue until the FPD bit is set, which allows interrupting in the middle of the current instruction. Interrupt handling microcode then determines the source of the interrupt, clears it, changes stacks, saves current state on the interrupt stack, and gets the appropriate vector address (as shown above for each serial line) from the system control block (SCB), to load into the memory address register for accessing the appropriate VAX software interrupt handler. The VAX software driver then performs an MFPR from the RXDB register to read the character. This instruction includes microcode which clears the DON bit. (R/W) RXCS1 IPR ADDRESS 50 Vector address C8 (R/W) RXCS2 IPR ADDRESS 54 Vector address D0 (R/W) RXCS3 IPR ADDRESS 58 Vector address D8 31 13 12 11 8 7 6 5 0 | +-----------------------------------+--+----------+--+--+--------------+ | | |L | |D |I | | | | Unused |P | Unused |O |E | Unused | | | | | |N | | | | +-----------------------------------+--+----------+--+--+--------------+ Bits <31:14> - Unused, Read as 0's, Ignored on writes Bit <13> LP (Loopback bit) Read/Write bit used for diagnostic purposes to set up an internal loopback of the UART within the Mchip. In the receiver, the UART input is switched from the serial line input pin to the loopback bus. All 4 serial lines can have their receive loopback bits set at one time. If one of the Transmitters is also in loopback mode, data that is transmitted to that TXDB register is returned to the RXDB register(s) that have their LP bits set. The Done bit also gets set when the looped character is received. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 94 SERIAL LINES 24 Jan 86 Cleared by initialization microcode at powerup. Write with a 1 to turn on loopback mode. Read as a 1 when loopback mode is enabled. Write with a 0 to disable loopback mode, reconnects transmitter to serial line output. Read as 0 when loopback mode is not enabled. Bits <12:8> - Unused, Read as 0's, Ignored on writes Bit <7> - DON (Done bit) Read Only bit that is set whenever a character is received by the corresponding RXDB register. Cleared by initialization microcode at powerup Cleared to a 0 during the MFPR instruction when a received character is read from the corresponding RXDB register. Read as a 1 when a received character hasn't been read from the corresponding RXDB register. Read as a 0 after the received character has been read by an MFPR instruction. Bit <6> IE (Interrupt Enable) Read/Write bit used to enable an interrupt to be generated when a character is received by the corresponding RXDB register. If the IE bit is set and a character is received, or if a character was received and then the IE bit is set, an interrupt is generated at IPL 20. Cleared by initialization microcode at powerup Written with a 1 to enable interrupts from associated serial line. Read as a 1 when interrupts are enabled. Written with a 0 to disable interrupts from being generated. Read as a 0 when interrupts are disabled. Bits <5:0> - Unused, Read as 0's, Ignored on writes KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 95 SERIAL LINES 24 Jan 86 11.2 RXDB1, RXDB2, RXDB3 - RECEIVE DATA REGISTERS These 3 IPRs are used for receiving data from serial lines 1, 2, and 3. A software generated MFPR to read received data from these priviledged registers results in microcode reading the equivalent UART data register and clearing the Done bit in the appropriate RXCS register. (RO) RXDB1 IPR ADDRESS 51 (RO) RXDB2 IPR ADDRESS 55 (RO) RXDB3 IPR ADDRESS 59 31 16 15 14 13 8 7 0 +-----------------------------------+--+--+-------------+--------------+ | |E |B | | | | Unused |R |R | Unused | Data | | |R |K | | | +-----------------------------------+--+--+----------------------------+ These registers are read only, and are illegal to write. Bits <31:16> - Unused, Read as 0's. Bit <15> ERR (Error on received character) The Error bit is set if the received data has an overrun, or framing error. This bit is cleared by the Mchip upon reading this register. Cleared by initialization microcode at powerup. Cleared when register is read. Read as a 1 if an error has occurred on reception of data in low byte. Read as a 0 if the data in low byte was received without error. Bit <14> BRK (Break bit) Read as a 1 when a Break is received, the error bit is set to 0 during a Break. A Break is when the UART Receiver detects the 0 state for longer than 1 character transmission time. The Break bit is also cleared by the Mchip when reading this register. Cleared by initialization microcode at powerup. Cleared when register is read. Read as a 1 when a break is received. Bits <13:8> - Unused, Read as 0's, Ignored on writes KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 96 SERIAL LINES 24 Jan 86 11.3 TXCS1, TXCS2, TXCS3 - TRANSMIT CSR REGISTERS These 3 IPRs are used as the control and status registers for transmitting data via serial lines 1, 2, or 3. Whenever the associated UART transmitter in the Mchip isn't busy, the RDY bit is set. This indicates that the associated TXDB register is ready for another character to be transmitted. If the Interrupt Enable bit is set when the RDY bit is set, or if the RDY bit is set and the IE bit subsequently gets set, an interrupt is generated at IPL 20. The Mchip asserts the FPD interrupt request to the I/Echip, and microcode determines whether to back out of the current instruction, continue until completion, or continue until the FPD bit is set, which allows interrupting in the middle of the current instruction. Interrupt handling microcode then determines the source of the interrupt, clears it, changes stacks, saves current state on the interrupt stack, and gets the appropriate vector address (as shown above for each serial line) from the system control block (SCB) to load into the memory address register for accessing the appropriate VAX software interrupt handler. Software can then do an MTPR to the associated TXDB register, to transmit the next character. This results in the RDY bit being cleared until the character is actually transmitted, at which time the RDY bit is set again. (R/W) TXCS1 IPR ADDRESS 52 Vector Address CC (R/W) TXCS2 IPR ADDRESS 56 Vector Address D4 (R/W) TXCS3 IPR ADDRESS 5A Vector Address DC 31 13 12 11 9 8 7 6 5 0 +--------------------------------------+--+--+------+--+--+--+---------+ | |L |B | BAUD |B |R |I | | | MBZ |P |R | RATE |R |D |E | MBZ | | | |K | |E |Y | | | +--------------------------------------+--+--+------+--+--+--+---------+ Bit <13> LP (Loopback) The LP bit is a write only bit that is written to a 1 to enable internal loopback mode on the UART transmitter. This is used for diagnostics, and it disconnects the UART's output from the serial line output pin and connects it to the loopback bus. Note: Only one of the 4 TXCS (console SLU 0 also included) registers in the Mchip should have their LP bit set at one time. This is to prevent garbled data to the receiving RXDB register(s). From 1 to 4 RXCS registers may have their LP bits set at one time. This allows from 1 to 4 of the RXDB registers to receive the loopbacked characters. Cleared by initialization microcode at powerup Written to a 1 by software to enable loopback mode. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 97 SERIAL LINES 24 Jan 86 Always read as 0. Written to a 0 by software to disable loopback mode. Bit <12> BRK (Break) Write only bit that is written with a 1 to start a Break, and written with a 0 to end the break. A Break results in the transmitter outputting a continuous low level, for a duration of more than a full character transmission time. Software can control the time duration of the Break. Cleared by initialization microcode at powerup. Written to a 1 to start a Break. Always read as a 0. Written to a 0 to end a Break. Bits <11:9> Baud Rate Write only bits that are used to set the baud rate for that particular UART, both receiver and transmitter. The following is a table of the available baud rates that may be selected by setting the BRE bit and loading <11:9> with one of the following: Bits <12:10> Baud rate ---- ------ ---- ---- 000 150 001 300 010 600 011 1200 100 2400 101 4800 110 9600 111 19200 Initialized to 1200 by powerup initialization microcode. Written as shown above, BRE bit must also be written to a 1. Always read as 0's. Bit <8> BRE (Baud rate enable) Write only bit that is set when the contents of bits <11:9> are written with a new baud rate, for both transmit and receive for this Uart. Written with a 1 when setting the baud rate to the value written into bits <11:9>. If written with a 0, baud rate bits <11:9> are ignored. Always read as 0. Bit <7> RDY (Ready) KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 98 SERIAL LINES 24 Jan 86 Read only bit that is set to a 1 when the UART is ready to transmit a character. Read as a 1 when the TXDB register is ready to accept another character. Read as a 0 when the TXDB register is still trying to transmit the character previously written to it. Bit <6> IE (Interrupt Enable) Read/Write bit used to enable an interrupt to be generated when the corresponding TXDB register is ready for a character to transmit. If the IE bit is set and the RDY bit gets set, or if the RDY bit was set and the IE bit gets set, an interrupt is generated at IPL 20. Cleared by powerup initialization microcode. Written to a 1 to enable the UART transmitter to interrupt the CPU. Read as a 1 when the TXCS is enabled. Written to a 0 to disable the UART from generating a transmit interrupt. 11.4 TXDB1, TXDB2, TXDB3 - TRANSMIT DATA REGISTERS (RO) TXDB1 IPR ADDRESS 53 (RO) TXDB2 IPR ADDRESS 57 (RO) TXDB3 IPR ADDRESS 5B 31 12 11 8 7 0 +--------------------------------------------+---------+---------------+ | | ID | | | UNUSED | FIELD | DATA | | | | | +--------------------------------------------+---------+---------------+ These 3 IPRs are write only data buffer registers that are used to transmit data via serial lines 1, 2, and 3. When the RDY bit is set in the TXCS register, an MTPR instruction is used by software to write a character to the equivalent TXDB register. It will then be transmitted by the appropriate serial line. Bits <11:8> ID FIELD Write only bits that are written by microcode to distinguish between data and console commands. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 99 SERIAL LINES 24 Jan 86 Written to 0000 by microcode when sending data. Written to 1111 by microcode when sending console commands. Illegal to read. Bits <7:0> DATA Write only field used to write the character to be transmitted. Written by software with transmission data, when the RDY bit is set in the TXCS register Illegal to read. Written by console microcode as follows at the same time the ID bits are written to 1111. 2 = Boot command 3 = Clear warm start flag 4 = Clear cold start flag KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 100 BI PROGRAMMING 24 Jan 86 12.0 BI PROGRAMMING 12.1 BI RESET The BI has a Reset line called BI RESET L that can be driven by the KA820. It is initiated by software writing a 1 to the PCntl CSR bit <28>, at I/O address 2008 8000. This bit drives the BI Reset line to each BI device in the system. The KA820 doesn't respond to the BI Reset line, since it can only drive the line. 12.2 BI STOP COMMAND This command can be generated by the KA820. It is generated when operating system software writes a mask (indicating which nodes are to receive the STOP command) to the BISTOP privileged register (IPR 5F). Each BI device should have the STOPEN bit of their BCI control register set in order to receive this command. The BI Architecture Spec describes what each node should do when it receives this command. The KA820 doesn't respond to the STOP command, and therefore initialization microcode doesn't set the STOPEN bit in the BCI Control register. 12.3 BIIC REGISTERS The BIIC is programmed by the operating system software to handle user interrupts, error interrupts, and interprocessor interrupts. It also has a device register and 2 control registers which are programmed. This section explains the various BIIC registers that get initialized by microcode and/or programmed by the operating system software. 12.3.1 REGISTER ADDRESSES - The internal BIIC registers are accessible to software being run on the KA820 by the I/O addresses shown in fig 12.1. The microcode then uses Loopback Read and Write transactions to access these registers. The software can also address these registers via the BI, using the first 256 bytes of the KA820's Nodespace. This portion of its Nodespace is termed BIIC CSR Space. NOTE Software running on another processor cannot access these registers via the I/O addresses, it must use the BI node space addresses. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 101 BI PROGRAMMING 24 Jan 86 Not all of the 256 bytes of the BIIC CSR Space actually contain registers. Most of the locations are unused. However, the BIIC responds normally to the unused locations. When a read command accesses the unused locations, 0's are read. When a write command addresses the unused locations, the BIIC accepts the command, but the data is ignored. In the register descriptions below, "bb" refers to the base address of this node, i.e. the address of the first location of the Nodespace. Figure 12.1 shows a mapping of all the BIIC's internal registers, and the following sections describe the functionality and use of the control registers. The BIIC does not support lock functionality for BIIC Internal Registers. INTLK READ and UNLOCK WRITE MASK commands to internal registers are accepted by the BIIC and treated the same as normal READ and WRITE MASK commands, respectively. The WRITE MASK command is fully supported for BIIC Internal Registers. Transactions to BIIC Internal Registers (i.e. BIIC CSR Space) are limited to a maximum length of Longword. In the register descriptions that follow, bit characteristic codes are used to define the nature of the register file bits. These codes are contained in parentheses following the bit mnemonic. If all defined bits in a register are the same type then the bit characteristics for all register bits are shown in parentheses following the register name. "0's" in the register diagram designate bits that are not implemented. These bits are Read-only locations that always return "0". The register bit characteristics are described by the following codes: DCLOC - Cleared following a successful Self-test, initiated by the deassertion of BI DC LO L. DCLOL - Loaded on the deassertion of BCI DC LO L DCLOS - Set following a successful Self-test, initiated by the deassertion of BI DC LO L. DMW - Diagnostic Mode Writable STOPC - Cleared by an STOP command directed to this Node STOPS - Set by an STOP command directed to this Node SC - Special Case, operation defined in detailed description RO - Read-only Bit R/W - Normal Read/Write Bit W1C - Write-1-to-clear Bit (User cannot set this bit) KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 102 BI PROGRAMMING 24 Jan 86 BI Node Adrs I/O Adrs 31 24 23 16 15 08 07 00 +-------------+-------------+-------------+-------------+ bb+00 | Device Register | 2008 0000 +-------------+-------------+-------------+-------------+ bb+04 | Reserved | BI Control/Status Register| 2008 0004 +-------------+-------------+-------------+-------------+ bb+08 | Bus Error Register | 2008 0008 +-------------+-------------+-------------+-------------+ bb+0C | Error Interrupt Control | Error Vector | 2008 000C +-------------+-------------+-------------+-------------+ bb+10 | Reserved | Interrupt Destination | 2008 0010 +-------------+-------------+-------------+-------------+ bb+14 |IP Interrupt Mask Register | Reserved | 2008 0014 +-------------+-------------+-------------+-------------+ bb+18 | Reserved | IP Interrupt Destination | 2008 0018 +-------------+-------------+-------------+-------------+ bb+1C | IP Interrupt Source | Reserved | 2008 001C +-------------+-------------+-------------+-------------+ bb+20 | Starting Address | Unused | 2008 0020 +-------------+-------------+-------------+-------------+ bb+24 | Ending Address | Unused | 2008 0024 +-------------+-------------+-------------+-------------+ bb+28 | Unused | BCI Control Register | 2008 0028 +-------------+-------------+-------------+-------------+ bb+2C | Write Status Register | 2008 002C +-------------+-------------+-------------+-------------+ bb+30 | | 2008 0030 to . Unused . bb+3C | | 2008 003C +-------------+-------------+-------------+-------------+ bb+40 | User Interrupt Control | Vector | 2008 0040 +-------------+-------------+-------------+-------------+ bb+44 | | 2008 0044 to . Unused . bb+EC | | 2008 00EC +-------------+-------------+-------------+-------------+ bb+F0 | General Purpose Register 0 | 2008 00F0 +-------------+-------------+-------------+-------------+ bb+F4 | General Purpose Register 1 | 2008 00F0 +-------------+-------------+-------------+-------------+ bb+F8 | General Purpose Register 2 | 2008 00F8 +-------------+-------------+-------------+-------------+ bb+FC | General Purpose Register 3 | 2008 00FC +-------------+-------------+-------------+-------------+ FIGURE 12.1 BIIC INTERNAL REGISTERS KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 103 BI PROGRAMMING 24 Jan 86 12.3.2 DEVICE REGISTER (R/W,DMW,DCLOL) - 31 24 23 16 15 08 07 00 +--------------+--------------+--------------+--------------+ 2008 0000| Revision Code | Device Type | +--------------+--------------+--------------+--------------+ The Device type field is used to identify the type of BI Node. The KA820'S device register has a 0105 in this 16 bit field. The revision field is broken up as follows: CPU Rev ------------------ bits <31:27> microcode patch rev ------ bits <26:17> secondary patches loaded-- bit <16> 12.3.3 BI CONTROL And STATUS REGISTER - This register is only written by the KA820 microcode during initialization, to clear the BROKE bit after a successful selftest. The operating system should set the Hard and Soft Error Interrupt Enable bits during its initialization routine, to enable error interrupts to be generated. It also has responsibility for the Arb field, which is set to round robin mode at powerup by each BIIC. 31 24 23 16 15 10 08 07 03 00 +---------------+---------------+-+-+-+-+-+-+-+-+-+-+---+-------+ bb+04| 0's | BIIC Type | | | | | | |0| | | |ARB|NODE ID| +---------------+---------------+|+|+|+|+|+|+-+|+|+|+---+-------+ | | | | | | | | | HES ---+ | | | | | | | | SES -----+ | | | | | | | INIT ------+ | | | | | | BROKE -------+ | | | | | STS -----------+ | | | | SST -------------+ | | | UWP -----------------+ | | HEIE ------------------+ | SEIE --------------------+ BIIC Type (RO)--This field indicates the type of BI interface chip that is used. This field is Read-only and is always read as 000001 in this implementation. HES (RO)--Hard Error Summary. This bit indicates that one or more of the hard error bits (except TDF) in the Bus Error Register are set. SES (RO)--Soft Error Summary. This bit indicates that one or more of the soft error bits in the Bus Error Register are set. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 104 BI PROGRAMMING 24 Jan 86 INIT (W1C,DCLOS,STOPS)--INIT Bit. This bit is not used by the KA820. BROKE (W1C,DCLOS)-- The BROKE bit indicates that the KA820 has not successfully completed its self-test. This bit is cleared by microcode when the self-test has been passed. STS (R/W,DCLOC)-- The Self-Test Status bit indicates the result of the BIIC's internal self-test. This bit is set to a '1' if the self-test passes, and it directly enables the BIIC's BI drivers. Since this is a normal R/W bit, it can be altered by a Write-command directed at this register. SST (SC)-- Start Self-Test. Writing a '1' to this bit location forces the initiation of the BIIC Selftest, as well as assertion of BCI DCLO L which initiates a selftest to the rest of the KA820. Reads to this bit location always return a '0'. The STS bit is reset by the BIIC at the same time the SST bit is set, in order to allow proper recording of the self-test results. | UWP (W1C,DCLOC,STOPC) -- The Unlock Write Pending bit is set when the | KA820 issues a Read/Lock transaction, and it is cleared when the | subsequent Write/Unlock is generated. Since a VAX instruction that | causes microcode to generate a Read/Lock also generates a Write/Unlock, | this bit should always be read as a 0 by instructions executed by the | KA820, except if a machine check is generated that breaks up this | sequence. HEIE (R/W,DCLOC,STOPC)--The Hard Error Interrupt Enable bit is normally set by the operating system software so that an error interrupt is generated when HES is asserted. SEIE (R/W,DCLOC,STOPC)--The Soft Error Interrupt Enable bit is set by the operating system software to allow an error interrupt to be generated when SES is asserted. ARB (R/W,DCLOC)--The two Arbitration Control Bits determine the mode of arbitration to be used by the KA820 as follows: ARB 1 0 Meaning --- ----------------------------- 0 0 Round Robin Arbitration 0 1 Fixed High Priority 1 0 Fixed Low Priority 1 1 Disable Arbitration (see explanation below) These bits are controlled by operating system software, and are normally written to 0's. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 105 BI PROGRAMMING 24 Jan 86 NODE ID (RO,DMW,DCLOL)-- This field is Read-only and indicates the Node ID assigned to this Node. This information is loaded from the BCI I<3:0> H lines during the last cycle in which BCI DC LO L is asserted, and it reflects the encoded node ID plug that is plugged onto this slot of the BI backplane. Node 2 is the normal node ID assigned to the Scorpio primary processor, according to DEC convention. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 106 BI PROGRAMMING 24 Jan 86 12.3.4 BUS ERROR REGISTER (W1C,DCLOC) - This register, as weel as the equivalent register of other BI nodes can be read by software following a BI error to determine the cause of the error. Any time that an error interrupt is generated, the BIIC that generated the error sets the appropriate bit in its Bus Error register. In order for each BIIC to generate these interrupts, the operating system should set the hard and soft error interrupt enable bits of each BI node in the system. This is done by writing to the BICSR of each node, as was described in the description of that register. The operating system has the responsibility of clearing the error bits in the BER after reading the register. The procedure required is to re-read the BER after clearing the appropriate bit to assure that another wasn't set in the meantime. Alternatively it can read the hard and soft error summary bits in the appropriate BI CSR to determine if another error bit has been set. During initialization the operating system can write 3FFF 0007 to the BERs of each BIIC to clear all error bits. 31 24 23 16 15 08 07 03 00 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---------------+-------+-+-+-+-+ bb+08|0| | | | | | | | | | | | | | | | 0's | | | | | | +-+-+|+|+|+|+|+|+|+|+|+|+|+|+|+|+---------------+-------+|+|+|+|+ | | | | | | | | | | | | | | | | | | | NMR-+ | | | | | | | | | | | | | | | | | | MTCE--+ | | | | | | | | | | | | | | | | | CTE ----+ | | | | | | | | | | | | | | | | MPE ------+ | | | | | | | | | | | UPEN ----+ | | | ISE --------+ | | | | | | | | | | IPE -------+ | | TDF ----------+ | | | | | | | | | CRD ---------+ | IVE ------------+ | | | | | | | | NPE -----------+ CPE --------------+ | | | | | | | SPE ----------------+ | | | | | | RDS ------------------+ | | | | | RTO --------------------+ | | | | STO ----------------------+ | | | BTO ------------------------+ | | NEX --------------------------+ | ICE ----------------------------+ SOFT ERROR BITS |<------ HARD ERROR BITS ------>| |<--->| <31:16> <2:0> NOTE Unless otherwise noted all BER Bits can be set during BI Transactions (meaning transactions from the BIIC that actually are transmitted on the BI Bus) as well as Loopback Requests KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 107 BI PROGRAMMING 24 Jan 86 (which do not actually go out on the BI but instead are "looped-back" internally to the BIIC). HARD ERROR BITS ---- ----- ---- NMR (W1C,DCLOC)-- NO ACK to multi-responder command received. This bit is set if a NO ACK command confirmation is received for an INVAL, STOP, INTR, or IPINTR command. MTCE (W1C,DCLOC)--Master Transmit Check Error. During cycles of a transaction in which the KA820 is the only source of data on the BI D, I and P lines, the BIIC verifies that the transmitted data matches the received data from the BI, or else this bit is set. This check is not performed on the assertion of its encoded ID on the I lines, during the Imbedded ARB Cycle. CTE (W1C,DCLOC)--Control Transmit Error. This bit is set when there is an assertion of the NO ARB, BSY, or the CNF<2:0> Control Lines, and the BIIC detects the deasserted state. MPE (W1C,DCLOC)--Master Parity Error. This bit is set during a master transaction if a parity error is detected on the bus during a data cycle of a transaction that has an ACK confirmation on the CNF<2:0> lines. | ISE (W1C,DCLOC)--Interlock Sequence Error. This bit is set if the | KA820 attempts to generate a Write/Unlock transaction without having | done a prior Read/Lock transaction. TDF (W1C,DCLOC)--Transmitter during fault. This bit is set if the BIIC was driving the BI D and I Lines (or only the I Lines during the Imbedded ARB Cycle) during a cycle that resulted in a parity error. This bit is also set during slave transactions if the BIIC detects a parity error on Read Data that it transmits. Diagnostic Software that reads this register should interpret a set TDF without a set MPE, CPE, or IPE as an indication that the BIIC detected a parity error on its own transmitted Read Data. IVE (W1C,DCLOC)--IDENT vector error. This bit is set by the BIIC if anything but an ACK confirmation is received from an IDENTing Master after an Interrupt Vector has been sent out. This would only occur when the KA820 is used as an I/O controller, such that it generated an interrupt. CPE (W1C,DCLOC)--Command Parity Error. This bit is set when the BIIC detects a parity error during a command/address cycle. This can be from a BI Transaction or a Loopback Request C/A Cycle. SPE (W1C,DCLOC)--Slave Parity Error. This bit is set by the BIIC when it detects a parity error during the Data Cycle of a Write transaction KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 108 BI PROGRAMMING 24 Jan 86 directed at the KA820's RXCD or BIIC registers. RDS (W1C,DCLOC)--Read Data Substitute. This bit is set if a Read Data Substitute or RESERVED Status Code is received during a Read-type or IDENT (for Vector status) transaction. The BIIC logic also requires a successful parity check for the data cycle that contains the RDS Code, in order for this bit to be set. This bit gets set even if the transaction is aborted some time after the receipt of the RDS or RESERVED Code. RTO (W1C,DCLOC)--Retry Timeout. This bit is set if the KA820 receives 4096 consecutive RETRY responses from the Selected Slave for the same transaction. STO (W1C,DCLOC)--Stall Timeout. This bit is normally set by the BIIC if STALL is asserted on the RS<1:0> Lines for 128 consecutive cycles, but the PCntl never asserts the STALL code on these lines. BTO (W1C,DCLOC)--Bus Timeout. This bit is set if the BIIC is unable to start at least one pending transaction (out of possibly several that are pending) before 4096 cycles have elapsed. NEX (W1C,DCLOC)--Non-Existent Address. This bit is set when a NOACK response is received for a Read-type or Write-type command sent by the BIIC. Note that this bit is set only if the Master Transmit Check of the Command/Address cycle was successful and that this bit is not set for NOACK responses to other commands. ICE (W1C,DCLOC)--Illegal Confirmation Error. A reserved or illegal CNF<2:0> code has been received during a transaction. This bit can be set during either Master or Slave transactions. Note that NO ACK is not considered an Illegal response for Command Confirmation. PARITY MODE ------ ---- UPEN (RO)--User Parity Enabled. This is a Read-Only Bit that indicates the BIIC Parity Mode. It should always be read a '0' indicating that the BIIC provides the Parity Generation, rather than the PCntl. SOFT ERROR BITS ---- ----- ---- IPE (W1C,DCLOC)--ID Parity Error. A parity error is detected on the encoded ID that is asserted when the KA820 is the current BI master, during an Imbedded ARB cycle. This also sets the TDF Bit. CRD (W1C,DCLOC)--Corrected Read Data. A corrected read data status code was received from BI memory during a Read transaction. This bit gets set even if the transaction aborts after the CRD Status Code has KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 109 BI PROGRAMMING 24 Jan 86 been received. NPE (W1C,DCLOC)--Null Bus Parity Error. Odd parity was detected on the bus during the second cycle of a two-cycle sequence during which NOARB and BUSY were unasserted. 12.3.5 ERROR INTERRUPT CONTROL REGISTER - This register is programmed for controlling error interrupts that are generated by the KA820's BIIC. 31 24 23 19 16 15 13 08 07 02 00 +-------------+-+-+-+-+-+-------+---+-----------+-----------+---+ bb+0C| 0's | | |0| | | LEVEL |0 0| Vector |0 0| +-------------+|+|+-+|+|+-------+---+-----------------------+---+ | | | | INTAB ---+ | | | INTC ------+ | | SENT ----------+ | FORCE -----------+ The Error Interrupt Control Register controls the operation of interrupts initiated by a BIIC detected BUS error (which sets a bit in the Bus Error Register) or by the setting of a FORCE bit in this register. In the description that follows an error interrupt request is the "OR" of the FORCE Bit and all Bus Error Register Bits (assuming the error interrupt enables are set in the BI Control and Status Register). INTAB (W1C,DCLOC,SC)-- The Interrupt Abort bit is set if an INTR command, sent under the control of this register, is aborted (i.e. a NOACK or illegal confirmation code is received). INTAB is a status bit that is set by the BIIC and can only be reset by the User. It has no effect on the ability of the BIIC to send or respond to further INTR or IDENT transactions. INTC (W1C,DCLOC,SC)--The Interrupt Complete bit is set when the vector for an error interrupt has been successfully transmitted, or if an INTR command sent under the control of this register has aborted. Removal of the error interrupt request automatically resets this bit. No interrupts are generated by this register when the INTC bit is set. SENT (W1C,DCLOC,STOPC,SC)--The SENT bit indicates that an INTR command for this interrupt has been sent, and that an IDENT command is expected. This bit is cleared during an IDENT command following the detection of a Level and Master ID match. This allows the interrupt to be re-sent if this Node loses the INTR ARB, or if it wins but the vector transmission fails. Note also that de-assertion of the error interrupt request causes the KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 110 BI PROGRAMMING 24 Jan 86 SENT bit to be cleared. FORCE (R/W,DCLOC,STOPC)-- When set, this bit forces an error interrupt request in the same way that a bit getting set in the Bus Error Register does. LEVEL (R/W,DCLOC)--The LEVEL field determines the level(s) at which INTR commands are transmitted under the control of this register. Normally only one of the 4 level bits is set. The LEVEL field also helps determine whether this control register will respond to IDENT commands. If any level bits of the received IDENT command match the LEVEL field in this register, then this register will arbitrate for the IDENT, assuming that there is also a match in the destination mask. This functionality makes it possible to operate IDENT commands either to match the LEVEL exactly, or to match levels on a "greater-than-or-equal" basis. Note that the BIIC does not transmit an Error Interrupt if none of the LEVEL Bits are set. VECTOR (R/W, DCLOC)-- The Vector field contains the vector used during error interrupt sequences. It is transmitted when this Node wins an IDENT ARB cycle on an IDENT transaction that matches the conditions in the Error Interrupt Control Register. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 111 BI PROGRAMMING 24 Jan 86 12.3.6 BCI CONTROL REGISTER - 31 24 23 18 17 15 13 11 9 8 7 6 5 4 0 +---------------+-----------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-----+ bb+28| 0's 0's | | | | | | | | | | | | | | | | 0's | +---------------+-----------+|+|+|+|+|+|+|+|+|+|+|+|+|+|+|+-----+ | | | | | | | | | | | | | | | BURSTEN ----------+ | | | | | | | | | | | | | | IPINTR/STOP FORCE---+ | | | | | | | | | | | | | MSEN -----------------+ | | | | | | | | | | | | BDCSTEN ----------------+ | | | | | | | | | | | STOPEN -------------------+ | | | | | | | | | | RESEN ----------------------+ | | | | | | | | | IDENTEN ----------------------+ | | | | | | | | INVALEN ------------------------+ | | | | | | | WINVALEN -------------------------+ | | | | | | UCSREN -----------------------------+ | | | | | BICSREN ------------------------------+ | | | | INTREN ---------------------------------+ | | | IPINTREN ---------------------------------+ | | PNXTEN -------------------------------------+ | RTOEVEN --------------------------------------+ | | | NOTE | | Following the successful completion of selftest, this register | contains 0000 0710. When VAX code is ready to accept | interrupts and IP Interrupts, a value of 0000 0770 should be | written to this register by software. Following the Bit name in the following Bit Descriptions are the Bit Characteristics (as described at the beginning of the Register Section) and to the right of the dash(-) are a set of further designations for the BCICSR Bits, that describe the effect of the Enable Bit on BIIC Operation. These designations are defined as follows: o DS: Disables Selection. When a bit of this type is reset, the BIIC suppresses the appropriate SEL/SC Assertion and also doesn't respond in any way to transactions corresponding to that Enable Bit. For instance, if the INTREN Bit is reset, then the BIIC won't be selected for any INTR Transactions that are received from the BI. Most of the Enable Bits are in this class. o SC: Special Case. This covers the special cases that do not simply disable participation. See the specific Bit description for details on how the Bit actually operates. o NA: Not Applicable. This category includes all bits within this register that have no effect on Slave selection. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 112 BI PROGRAMMING 24 Jan 86 BURSTEN (R/W,DCLOC - NA)-- BURST Enable. When set, this bit causes BI NO ARB L to be asserted continuously after the next successful arb until the BURSTEN bit is reset or BCI MAB L is asserted. | | | NOTE | | Burst mode is not used by microcode and it is not recommended | that VAX code ever set this bit. | | | IPINTR/STOP FORCE (R/W,DCLOC - NA)-- IP Interrupt or Stop Force bit. | This bit is used by microcode during an MTPR to the IPIR or BISTOP | register. It causes the BIIC to arbitrate for the bus and transmit an | IP INTR command, depending upon which IPR is written. Microcode writes | the appropriate command to the Force Bit IPINTR/STOP Command register, | the destination to the Destination register, and then sets this bit in | the BCI Control register to initiate an IPINTR or a BI STOP command. | | Software can generate an IPINTR or BI STOP by simply doing a write of | the targetted node(s) to either the IPIR or BI STOP processor | registers. MSEN (R/W,DCLOC - DS)-- Multicast Space Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the receipt of a Read-type or Write-type command directed at "Broadcast Space" (as defined in the BI Spec). This bit is normally left cleared so that the KA820 doesn't respond to multicast space commands. BDCSTEN (R/W,DCLOC - DS)-- BROADCAST Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the receipt of a BROADCAST command. This bit is normally left cleared so that the KA820 doesn't respond to broadcast commands. STOPEN (R/W,DCLOC - DS)-- STOP Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the | receipt of a STOP command. This bit should be left cleared because the | KA820 doesn't respond to the STOP command. RESEN (R/W,DCLOC - SC)-- Reserved Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the receipt of a reserved command code (see RESERVED COMMANDS in the BIIC Transaction Operation Section). IDENTEN (R/W,DCLOC - SC)-- IDENT Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the receipt of an IDENT command. This bit affects only the output of SEL and the IDENT SC code. Therefore, the BIIC always participates in IDENT Transactions that select this Node even if this enable bit is reset. INVALEN (R/W,DCLOC - DS)-- INVAL Enable. When set, this bit causes the KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 113 BI PROGRAMMING 24 Jan 86 BIIC to assert SEL and the appropriate SC<2:0> code following the receipt of an INVAL command. This bit is set by initialization microcode to enable BI invalidates to get forwarded by the PCntl to the Mchip's cache tag array. WINVALEN (R/W,DCLOC - SC)-- Write Invalidate Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the receipt of a Write-type command whose address has D<29> = 0 (i.e. not I/O space). This bit is set by initialization microcode to enable the BIIC to forward BI write addresses to the PCntl, so that it in turn can send invalidate requests to the Mchip's cache tag array. UCSREN (R/W,DCLOC - DS)-- User CSR Space Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the receipt of Read-type or Write-type command directed at this node's User CSR Space. This bit is set by initialization microcode to enable access to the KA820's User CSR address space. BICSREN (R/W,DCLOC - SC)-- BIIC CSR Space Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code | following the receipt of a Read-type or Write-type command to its BIIC | CSR Space. This bit is not set by initialization microcode, and there | should be no reason for software to set it. INTREN (R/W,DCLOC - DS)-- INTR Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the | receipt of an INTR command. This bit would normally be set by the | operating system software, since initialization microcode leaves it in | the cleared state. IPINTREN (R/W,DCLOC - SC)-- IP INTR Enable. When set, this bit causes the BIIC to assert SEL and the appropriate SC<2:0> code following the receipt of an IP INTR command that matches the IP Interrupt Mask Register. This bit only enables the IPINTR SEL/SC Code, and selection by IP INTR commands directed at this Node is unaffected by the state of | this enable. This bit would normally be set by the operating system | software, since initialization microcode leaves it in the cleared | state. In order to disable selection for all IP INTR Commands at this Node the operating system software should clear the IP INTR MASK Register. This assures that no IP INTR Commands can select this Node. PNXTEN (R/W,DCLOC - NA)-- Pipeline NXT Enable. When set, this bit causes the BIIC to provide an extra BCI NXT L cycle (i.e one more than the number of longwords transferred) during WRITE Transactions. This extra BCI NXT L cycle occurs after the last NXT L cycle for Write data, and is used to increment the Write-SILO address counter to the address of the C/A data for the next transaction. This bit is set by initialization microcode, along with the pipeline enable bit in the PCntl CSR, to enable pipeline mode for memory write transactions. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 114 PROGRAMMING THE WATCH CHIP 24 Jan 86 13.0 PROGRAMMING THE WATCH CHIP The battery backed up watch chip is used to keep time of year information when the Scorpio system is powered off. Its battery is spec'd to keep it running for 100 hours without the system being powered on. System software then reads this time after each powerup, and uses it to load the Time of Day Register (TODR) in the Mchip at IPR 1B. The watch chip is accessed by software with I/O addresses. I/O addresses 200B 8000 through 200B 801A are used to read the contents of the watch chip each time the CPU is powered on. Since the watch chip provides time in terms of months, hours, etc, instead of a 32 bit count, the operating system must make a conversion to the correct 32 bit count to load into the TODR clock register within the Mchip. In order to read the watch chip internal registers, about 600 ns is required by the hardware for each read, best case. In the event the NI LANCE chip is simultaneously using the PCI bus, and a packet is being received, up to 4.8 microseconds could be required to read one byte of data, worst case. This, coupled with execution time of the instruction implies that reading one register of the watch chip will require from 2 to 6 usec. Five registers within the watch chip must be read, along with two CSR registers to get the complete time of the year, so 14 to 42 usecs could be required to obtain all the data to set the TODR in the Mchip. (If an update is in progress within the chip, up to another 2 msec could be required). The chip consists of 64 eight bit registers, 10 of which contain time of day data, 4 of which are CSRs, and the remaining 50 provide 50 bytes of battery backed-up RAM locations. They are addressed as follows: KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 115 PROGRAMMING THE WATCH CHIP 24 Jan 86 Address Function Comments 200B 8000 seconds 200B 8002 second alarm not used 200B 8004 minutes 200B 8006 minute alarm not used 200B 8008 hours 200B 800A hour alarm not used 200B 800C day of week not used 200B 800E date of month 200B 8010 month 200B 8012 year 200B 8014 CSR A BUSY bit 200B 8016 CSR B OFF (start and stop) bit 200B 8018 CSR C not used 200B 801A CSR D VALID (valid time) bit 200B 801C 1st byte of RAM not currently used . . . . . . 200B 807E 50th byte of RAM . The following shows an example of what is read from the chip and how it's interpreted. ADDRESS UNITS DECIMAL HEX RANGE HEX RANGE RANGE (at chip) (at CP DAL) 200B 8000 seconds 0 - 59 00 - 3B 00 - 76 200B 8004 minutes 0 - 59 00 - 3B 00 - 76 200B 8008 hours 0 - 23 00 - 17 00 - 2E 200B 800E day of mo. 1 - 31 01 - 1F 02 - 3E 200B 8010 month 1 - 12 01 - 0C 02 - 18 | 200B 8012 year 0 - 99 00 - 63 00 - C6 AN EXAMPLE SHOWING DATA AS READ FROM THE CHIP AND AS IT APPEARS DUE TO BIT 7 BEING READ AS BIT 0: CHIP OUTPUT DATA AS READ BY SOFTWARE binary byte hex DAL byte 0 hex 21 seconds [0001 0101] 15 [0010 1010] 2A 58 minutes [0011 1010] 3A [0111 0100] 74 5:00 hours [0000 0101] 05 [0000 1010] 0A 15th date [0000 1111] 0F [0001 1110] 1E Feb month [0000 0010] 02 [0000 0100] 04 * undefined data KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 116 PROGRAMMING THE WATCH CHIP 24 Jan 86 13.1 CSR DEFINITIONS The following CSR definitions have bit 7 moved to bit position 0, and the rest of the bits shifted to the right one position to reflect the way they'll be read from the CP DAL by the I/Echip. Software should read or write this register with a MOVB or MOVW instruction to assure that the data is in byte 0. CSR A: I/O Address 200B 8014 15 8 7 6 5 1 0 +--------------------------------+-----+-----+-------------------+-----+ | UNDEFINED | MBZ | 1 | MBZ | BUSY| +--------------------------------+-----+-----+-------------------+-----+ Bits <15:8> Not used, and if read are undefined. Bits <7:1> (Miscellaneous setup bits) | | | NOTE | | These bits must always be written as shown | whenever the chip is initialized or the time | is changed. Failure to do so will result in | the watch chip to not keep accurate time. | | Read/Write bits by software, that must be written as shown when setting the time in the watch chip. These bits are not changed by the chip, and are not affected by the chip going into or out of battery backup mode, as long as the battery voltage remains within spec. (This is determined by reading the Valid Time bit at I/O address 200B 801A. Bit <0> BUSY Read only bit that is read by software prior to accessing the time registers. This bit must be = 0 in order to read the time. 1 = Chip busy, time registers undefined. 0 = Chip not busy, OK to read the time registers. If BUSY = 1: The maximum time required for the internal update is about 2 ms. Software can either time out, or continue reading this bit until it is read as a 0. If BUSY = 0: there are a minimum of 244 usec available prior to the next update cycle. (To completely read the 5 time registers should require about 40 Usec, worst case). KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 117 PROGRAMMING THE WATCH CHIP 24 Jan 86 The update to the time registers occurs once per second. (Statistically this will occur once per 500 attempts to read the watch chip). CSR B: I/O Address 200B 8016 15 8 7 4 3 2 1 0 +----------------------------------+-----------+-----+-----+-----+-----+ | UNDEFINED | MBZ | 1 | 1 | MBZ | OFF | +----------------------------------+-----------+-----+-----+-----+-----+ Bits <15:8> Not used, and if read are undefined. Bits <7:1> (Miscellaneous setup bits) | | | NOTE | | These bits must always be written as shown whenever the chip is | initialized or the time is changed. Failure to do so will | result in the watch chip to not keep accurate time. | | Must be written as shown above by software, anytime there's a powerup from a condition where the BBU failed. This would probably be part of the routine for setting the time into the chip, since that is done each time the BBU fails, or goes out of spec. This register is not affected by the chip going into or out of the normal BBU mode, where the battery voltage remains within spec. Bit <0> OFF (used to turn chip on and off when setting the time) Read/write bit. Written with a 1 to stop the watch chip, so that software may load the time registers. This bit must be set prior to setting the time. If the chip is in the middle of an update, setting this bit aborts the update. Written with a 0 to start the watch chip after setting the time registers. The internal time then starts to update every second. CSR C: I/O Address 200B 8018 This interrupt status register is read only, and if read is undefined. It is not used, since the interrupt functionality of the watch chip isn't used on the KA810. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 118 PROGRAMMING THE WATCH CHIP 24 Jan 86 CSR D: I/O Address 200B 801A 15 8 7 1 0 +---------------------------------+------------------------------+-----+ | UNDEFINED | Read as zeros |VALID| +---------------------------------+------------------------------+-----+ This register is read only, and is read by the macrocode, before reading the time registers, to verify the validity of the time. Bits <15:8> Not used, and if read are undefined. Bits <7:1> Read as 0's and not used. Bit <0> VALID time Read only bit, that is set to 1 when read by software. VALID = 1; the time represented in the chip's registers is valid. VALID = 0; indicates that the battery voltage went below spec during the BBU mode when AC power to the system was turned off. If the battery backup voltage goes out of spec, this bit is set to 0 by the battery backup sensing circuitry during powerup to indicate that the time registers are undefined. This bit is automatically set to a 1 when this register is read. After reading this bit as a 0, the invalid time registers must be updated immediately. Since this bit was just set to a 1 by the read, it can no longer be used to indicate that the chip contains a valid time setting. 13.2 OPERATING SYSTEM SOFTWARE The operating system software can run into two different conditions at powerup time. They are when the battery backup has stayed within spec, and when it has gone out of spec. The latter can occur due to the battery being removed, or the battery voltage dropping below its spec'd value, when power was removed from the system. The following two sections describe what the operating system powerup software must do. 13.2.1 NORMAL POWERUP, VALID BBU - The sequence of events for the powerup software is to first read the BUSY bit in CSR A, to assure that an update isn't in progress. If this bit is read as a 1 the watch chip is doing an update, and the data is invalid until it is through. In this case the software must try at a later time to access this CSR. The maximum time for the update is 1984 usec, assuming that it just started. If this bit is read as a 0, then the chip's time/date registers can be read and used by the software. KA820-AA SPEC - PART II - USER AND PROGRAMMING INFORMATION Page 119 PROGRAMMING THE WATCH CHIP 24 Jan 86 The first thing that the software does, before reading the 5 time/date registers, is to read the VALID bit in CSR D, to assure that the time data within them is accurate. Since this bit gets set to 1 by the chip upon being read, it can only be read once. If this bit is read as 1 the software reads the 5 registers and converts the data into a 32 bit count. It then loads this count into the TODR register. 13.2.2 POWERUP - BBU FAILURE - If the VALID bit is read as a 0, the software must prompt for the time and date from the operator, convert it to the proper binary format for the TODR register in the Mchip, and then load it, using the TODR IPR. It must also convert the time and date to the proper binary format for each of the 5 time registers within the watch chip. It then loads each of them with the correct count as follows. Before writing to the watch chip, the OFF bit in CSR B must be written with a 1 to stop the chip. Even if the chip is in the middle of an update, setting this bit will abort the rest of the cycle so that the | new time can be entered. At this time CSR A and B must also be | initialized with the data as shown above. Following the loading of the 5 bytes of data and the 3 CSR registers, the OFF bit in CSR B is written with a zero, which turns on the watch chip to start updating the time. When writing this bit, bits <7:0> must also be written as shown above.