Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_SRC_3_19910112 - stanford/5-swskit/kl873.mem
There are 6 other files named kl873.mem in the archive. Click here to see a list.


                              PDM #:    ???-???-???-??
                              File:     <PORCHER>KL873.MEM
                              Author:   Tom Porcher
                              Date:     25 January 1977
                              Subject:  KL10 BM873 Bootstrap ROMs





                          Specification for:

                      KL10 BM873 Bootstrap ROMs





                       Copyright (C) 1976, 1977
            Digital Equipment Corporation, Maynard, Mass.

This software is furnished under a license for use only  on  a  single
computer system and may be copied only with the inclusion of the above
copyright notice.  This software, or any other copies thereof, may not
be provided or otherwise made available to any other person except for
use on such system and to one  who  agrees  to  these  license  terms.
Title  to  and  ownership of the software shall at all times remain in
DEC.

The information in this document is subject to change  without  notice
and  should  not  be  construed  as  a commitment by Digital Equipment
Corporation.

DEC assumes no responsibility  for  the  use  or  reliability  of  its
software on equipment which is not supplied by DEC.
KL10 BM873 Bootstrap ROMs                                       Page 2


1.0  INTRODUCTION

This specification describes the functionality of all the revisions of
the BM873 Bootstrap ROM for KL10 based PDP-11 Front-Ends.

The following BM873 ROMs are covered by this specification:

     1.  BM873-YD -- obsolete 1080 console

     2.  BM873-YF -- 2040 console

     3.  BM873-YG -- DN87 communications

     4.  BM873-YH -- 10xx/20xx console

     5.  BM873-YJ -- 10xx/20xx console/communications


All numbers in this specification are decimal unless otherwise noted.



1.1  References

     1.  KL10 Bootstrap ROM,  D.   Rosenberg,  PDM  #  200-205-014-01,
         <DOC-FRONT-END>ROM11.M0

     2.  KL10  Bootstrap  ROM,  T.   Porcher,  PDM  #  200-205-014-02,
         <DOC-FRONT-END>ROM11.MEM

     3.  Front-End   Bootstap   procedures,   T.    Porcher,   PDM   #
         200-205-039-00, <DOC-FRONT-END>FEBOOT.MEM




2.0  BM873 HARDWARE

The BM873 ROM board  provides  for  256  words  of  read-only  memory,
located at UNIBUS addresses 773000-773777(8).

There are 4 jumper-selectable entry vectors,  each  of  which  may  be
activated by an external contact closure.

The BM873 gains control of the processor when a "button" is  activated
by using a simulated power fail/power restart sequence.  To facilitate
this, power fail vectors must exist in the ROM at locations  773024(8)
and  773224(8),  with  the start of the ROM (773000(8)) as the new PC,
and priority 7 (340(8)) as the new PS.

The 4 buttons have been allocated the following meanings for the KL10:

        Button #1 -- Switch Register.  Read the console  switches  and
        perform a specified action or bootstrap.
KL10 BM873 Bootstrap ROMs                                       Page 3


        Button #2 -- Disk.  Bootstrap from RP04/05/06 unit 0.

        Button #3 -- Floppy/DECtape/DL11.  Bootstrap from  unit  0  of
        RX11 Floppy Disk or TC11 DECtape or DL11 Asynchronous Line, as
        available  in  ROM  capabilities  and  existence   in   system
        configuration.

        Button #4 -- Electronic Finger.  Dump and  bootstrap  via  the
        associated DTE20, which invoked this button.



3.0  GENERAL ROM CAPABILITIES

This section details the major functionality found in any of the  KL10
ROMs.



3.1  Switch Register

The "Switch Register" button (#1) causes the ROM to read  the  console
switches  and  perform  a specified action.  The interpretation of the
switch register is as follows:

        Bits    Usage

        15      Infinite  Retry.   If  set,  the  ROM  will   continue
                retrying  a bootstrap operation on error until aborted
                by manual intervention.  If clear, the ROM will  retry
                only a finite number of times.

        14-11   (software) Console Line Number.  This selects the line
                number  within  a DH11 or DL11 group to be used as the
                CTY.

        10-8    Boot Unit or (software) Console Unit Number.  If  bits
                6-3  are  in  the  range 0-2(8), then this is the unit
                number of the bootstrap device selected  (by  bit  7).
                If  bits  6-3  are  in  the  range  3-17(8),  then the
                bootstrap  unit  number  is  0,   and   the   software
                interprets  this  field as the DH11 unit number of the
                CTY.  Implemented by software in RSX-20F, TOPS-10, and
                TOPS-20.

        7       Bootstrap Device.  If set,  use  the  RP04/05/06  unit
                selected.   If  clear,  use  as  available one of RX11
                Floppy, TC11 DECtape, or DL11 Async Line.

        6-3     (software) Console Speed and Fill Class.  The ROM uses
                bootstrap  unit number 0 if this field is in the range
                3-17(8).  This  field  selects  the  device  type  and
                speed/fill  class  of the console as specified by bits
                14-11 and bits 10-8.  Value 0(8)  means  use  whatever
                console  device was built into the software and ignore
KL10 BM873 Bootstrap ROMs                                       Page 4


                bits 14-11.  Values 1-2(8) are fill  classes  for  the
                DL11  line selected by bits 14-11.  Values 3-17(8) are
                speed/fill class values for the DH11 line selected  by
                bits  14-11 and bits 10-8.  Implemented by software in
                RSX-20F, TOPS-10, and TOPS-20.

        2-1     (software) Load Select.  This  field  selects  one  of
                four possible load conditions:

                00      Complete reload.  Do all that is necessary  to
                        bring up TOPS-10 or TOPS-20.

                01      Load RSX-20F only.  KL10 is assumed down.

                10      Load RSX-20F only.  KL10 is assumed up.

                11      Ask dialogue questions to control loading.

                Implemented  by  software  in  RSX-20F,  TOPS-10,  and
                TOPS-20.

        0       Switch  Enable.   If  set,  interpret  bits  15-1   as
                specified  above.  If clear, interpret bits 15-0 as an
                address, and transfer to that address after saving the
                registers R0-R7 in memory locations 40-56(8).

Available on:  YD, YF, YH, YJ

Differences:

     1.  YD:  Registers are not saved if bit 0 is clear.

     2.  YD, YF:  Bits 6-3 in the range 16-17(8) imply bootstrap  unit
         selected by bits 10-8.

     3.  YJ:   Processor  halts   before   reading   Switch   Register
         (dependent on vector jumpers).




3.2  RP04/05/06 Disk Bootstrap

The RP04/05/06 disk bootstrap reads cylinder 0, track 0, sector 0 (512
bytes)  from  the  selected  RP04/05/06  in  18-bit  mode  into memory
starting at location 0, then transfers control to the loaded  code  at
location 0.  Using the "Disk" button (#2) selects unit 0.

Available on:  YD, YF, YH, YJ

Differences:

     1.  YD:  Uses cylinder 406, sector 0, track 0.
KL10 BM873 Bootstrap ROMs                                       Page 5


     2.  YD:  Checks for "NOP" 240(8) as first word of bootstrap.

     3.  YH, YJ:  16-bit format disks can also be read.




3.3  RP04/05/06 Disk Dump

The RP04/05/06 dump writes 28K words onto unit 0 starting at  cylinder
409,  track  13,  sector  8  in  18-bit  format.   The processor halts
displaying 0 in R0 on successful completion of the dump.

Available on:  YD, YF

Differences:

     1.  YD:  Saves R0-R7 in 40-56(8) before dump.




3.4  RX11 Floppy Disk Bootstrap

The RX11 bootstrap reads track  1,  sector  1  (128  bytes)  from  the
selected  diskette  into memory starting at location 0, then transfers
control to the loaded code at location 0.  Using the  "Floppy"  button
(#3) selects unit 0.

Available on:  YF, YH, YJ

Differences:

     1.  YF:  Reads track 1, sectors 1, 3, 5, 7 (512 bytes --  logical
         block 0).




3.5  RX11 Floppy Disk Dump

The RX11 dump routine writes 28K words to unit 0,  starting  at  track
59,  sector  1,  sequentially  by physical sector (i.e.  1, 2, 3, ...,
26), sequentialy by track.  The processor halts displaying 0 in R0  on
successful completion of the dump.

Available on:  YF
KL10 BM873 Bootstrap ROMs                                       Page 6


3.6  TC11 DECtape Bootstrap

The TC11 bootstrap reads block 0 (512 bytes) from  the  selected  unit
into  memory starting at location 0, then transfers to the loaded code
at location 0.  Using the "DECtape" button (#3) selects unit 0.

Available on:  YD, YH, YJ

Differences:

     1.  YD:  Checks for "NOP" 240(8) as first word of bootstrap.




3.7  TC11 DECtape Dump

The TC11 dump routine saves R0-R7 in locations 40-56(8),  then  writes
28K  words  from  memory  to  DECtape unit 0, starting at the trailing
end-zone (block 576) and writing  in  reverse.   The  processor  halts
displaying 0 in R0 on successful completion of the dump.

Available on:  YD



3.8  DTE20 Bootstrap And Dump

The DTE20 bootstrap and dump is initiated only by the internal  button
(#4)  which  is  connected  to  the DTE20.  The -10 has the ability to
"push" this button under program control of the DTE20.   This  routine
performs the following functions:

     1.  Saves R0-R7 in memory locations 40-56(8).

     2.  Finds the DTE20 which "pushed" the button (it has the to  -11
         doorbell set and the to -10 byte count = 1365(8)).

     3.  Saves the first  12  DTE20  registers  DLYCNT  to  TO11DT  in
         locations 130-162(8).

     4.  Optionally dumps up to 28K of  -11  memory  using  Word  Mode
         DTE20 transfers.

     5.  Loads 512 bytes into -11 memory starting at location 0  using
         a single Word Mode transfer.

     6.  Transfers control to the loaded code at location 0.

The procedure by which the -10 dumps and  bootstraps  the  -11  is  as
follows:

     1.  Clear the DTE20 and press reload -11 button #4.
         CONO [SR11B!CL11PT!CLTO11!CLTO10!PILDEN]
KL10 BM873 Bootstrap ROMs                                       Page 7


     2.  Wait for -11 power fail.
         CONI [DEAD11]=1

     3.  Wait for -11 power recover.
         CONI [DEAD11]=0

     4.  Wait another 300ms.

     5.  Set to -10 byte count to a special code 1365(octal).
         DATAO [1365]

     6.  Ring the -11's doorbell and clear reload -11 button.
         CONO [CR11B!TO11DB]

     7.  Wait for -11 doorbell to be answered by the -11.
         CONI [TO11DB]=0

     8.  Enable the DTE20 to use PI 0 interrupts.
         CONO [PILDEN!P10ENB]

     9.  If no dump of -11 memory is desired, go to stop 16.

    10.  Set up to -10 byte pointer in EPT for dump of -11 memory.

    11.  Set up byte count for 3.5K and start transfer.
         DATAO [<-7000>&7777]

    12.  Wait for "To -10 Done" or "To -10 Error".
         CONI [TO10DN!TO10ER]=1

    13.  Note if there was an error.
         CONI [TO10ER]=1

    14.  Clear "To -10 Done" and "To -10 Error".
         CONO [CLTO10]

    15.  If no errors and not end of 28K, go to step 11.

    16.  Set up to -11 byte pointer in EPT to 256 word bootstrap  code
         to be loaded into -11 memory starting at location 0.

    17.  Ring the -11's doorbell.
         CONO [TO11DB]

    18.  Wait for doorbell to be answered by the -11.
         CONI [TO11DB]=0

    19.  Wait for "To -11 Done" or "To -11 Error".
         CONI [TO11DN!TO11ER]=1

    20.  If there is an error, the  entire  process  must  be  started
         again from step 1.
         CONI [TO11ER]=1
KL10 BM873 Bootstrap ROMs                                       Page 8


    21.  Ring the -11's doorbell and clear "To -11 Done" and  "To  -11
         Error".
         CONO [TO11DB!CLTO11]

    22.  The -11 is loaded and executing the loaded code  starting  at
         location  0.   The  -10  should  now communicate with the -11
         following the protocol of this code.  


Available on:  YD, YF, YG, YH, YJ

Differences:

     1.  YD:  This code does not work.

     2.  YF, YG:  Waits for and clears the to -11 doorbell  after  the
         transfer of the 512 byte bootstrap.

     3.  YH,  YJ:   Loaded  code  is  started  as  soon  as   transfer
         completes.




3.9  DL11 Asynchronous Line Bootstrap

The DL11 bootstrap loads a program into memory starting at location  0
from  the  console  DL11  in 8-bit bytes, then transfers to the loaded
code at location 0.  Using  the  "DL11"  button  (#3)  initiates  this
bootstrap.

The format of the received data is as follows:

<DLE><cc1><cc2><fill><fill><fill><fill><fill><data>

where

<DLE>   is 220(8).

<cc1>   is the low-order 8 bits of byte count.

<cc2>   is the high-order 6 bits of byte count.  The 2 high-order bits
        of this byte are ignored.

<fill>  is 1 byte of ignored data.

<data>  is the data to be loaded into memory, with the number of bytes
        specified by <cc2><cc1>.

Available on:  YG, YJ

Differences:
KL10 BM873 Bootstrap ROMs                                       Page 9


     1.  YG:  Invoked by button #1.

     2.  YG:  Uses  a  completely  different  format  (see  diagnostic
         documentation).




3.10  Error Retry

If an error occurs during an I/O  operation,  the  operation  will  be
retried 16 times.  If the error persists, the processor will halt.  If
the "Switch Register" button was pushed and "Infinite Retry" (bit  15)
was  selected,  then  the  operation  will be retried until aborted by
manual intervention.

This affects only the RP04/05/06 Disk,  RX11  Floppy  Disk,  and  TC11
DECtape.

Available on:  YD, YF, YH, YJ

Differences:

     1.  YD:  Retries 20 times.

     2.  YF:  Retries 10 times.

     3.  YH:  Retries 12 times.

     4.  YF, YH:  Displays error or drive status register in  R0  when
         it halts.




3.11  Bootstrap Parameters In Registers

Some parameters are passed in the registers to  the  loaded  bootstrap
code.  These are listed below.

        Register        Usage

        R0      Bootstrap unit number.

        R1      Address of  control/status  or  command  register  for
                bootstrap device.

        R5      Bootstrap condition  word.   If  bit  0  is  set,  the
                "Switch Register" button was pushed and this is a copy
                of the Switch Register.   If  bit  0  is  clear,  then
                either  the "Disk" or "Floppy/DECtape/DL11" button was
                pushed.  In this case, bits 15-8 will be zero,  bit  7
                will  indicate  which  button was pushed, and bits 6-0
                will be zero.   Bits  15-1  of  this  word  should  be
                interpreted as described above under "Switch Register"
KL10 BM873 Bootstrap ROMs                                      Page 10


                in both cases.

Only R1 is supplied by the DTE20 bootstrap.

Only R1 and R5 are supplied by the DL11 bootstrap.

Available on:  YD, YF, YG, YH, YJ

Differences:

     1.  YD:  R0 is never supplied.   Unit  number  can  be  found  in
         device unit select register.

     2.  YD:  R5 will be  zero  if  either  "Disk"  or  "DECtape"  was
         pushed, in which case R4 will determine which one it was.

     3.  YF, YH:  RX11 returns read  function  with  unit  select  bit
         set/clear  in  R0.   Note that this is distinguishable from a
         unit number by the secondary bootstrap.

     4.  YG:  DL11 bootstrap supplies no parameters.




3.12  Parameter Entry

If the ROM is started at location 773034(8), it will interpret  R0  as
described  under  "Switch  Register"  above  and perform the specified
action or bootstrap.  Bit 0 is ignored.

Available on:  YF, YH, YJ



3.13  PDP11/34 Support

Due to the lack of fatal stack violation traps in the 11/34 and  other
differences  in stack operations, most of the ROMs require an 11/40 or
greater processor.  This support allows use on the 11/34  as  well  as
the 11/40.

Available on:  YJ



4.0  SPECIFIC ROMS

This section describes the capabilities of each specific ROM.

Notes:

    Features are described in detail above.
KL10 BM873 Bootstrap ROMs                                      Page 11


    All addresses are in octal.

    To start at a given entry location,  you  can  set  the  specified
    address  in  the  console switches and press the "Switch Register"
    button.  This will save R0-R7 in locations 40-56(8), then start at
    the  selected  address  in all ROMs except the YD.  This is useful
    for the Dump functions of the YF ROM.



4.1  BM873-YD

4.1.1  First Used On - DECsystem-1080 Console Front End.



4.1.2  Current Usability - None.



4.1.3  Summary Of Features - 

    - Switch Register
    - RP04/05/06 Disk Bootstrap
    - RP04/05/06 Disk Dump
    - TC11 DECtape Bootstrap
    - TC11 DECtape Dump
    - DTE20 Bootstrap and Dump
    - Error Retry
    - Bootstrap Parameters



4.1.4  Button Addresses - 

    #1  773000  Switch Register
    #2  773304  Disk
    #3  773014  DECtape
    #4  773534  DTE20



4.1.5  Other Entry Locations - 

773506  RP04/05/06 Disk Dump.  Saves registers.

773516  RP04/05/06 Disk Dump.  Does not save registers.

773216  TC11 DECtape Dump.  Saves registers.

773234  TC11 DECtape Dump.  Does not save registers.
KL10 BM873 Bootstrap ROMs                                      Page 12


4.2  BM873-YF

4.2.1  First Used On - DECsystem-2040 Console Front End.



4.2.2  Current Usability - DECsystem-20xx Console Front End.



4.2.3  Summary Of Features - 

    - Switch Register
    - RP04/05/06 Disk Bootstrap
    - RP04/05/06 Disk Dump
    - RX11 Floppy Disk Bootstrap
    - RX11 Floppy Disk Dump
    - DTE20 Bootstrap and Dump
    - Error Retry
    - Bootstrap Parameters
    - Parameter Entry



4.2.4  Button Addresses - 

    #1  773000  Switch Register
    #2  773030  Disk
    #3  773020  Floppy
    #4  773574  DTE20



4.2.5  Other Entry Locations - 

773550  RP04/05/06 Disk Dump.

773342  RX11 Floppy Disk Dump.



4.3  BM873-YG

4.3.1  First Used On - DN87 Communications Front End.



4.3.2  Current Usability - DN87 Communications Front End.
KL10 BM873 Bootstrap ROMs                                      Page 13


4.3.3  Summary Of Features - 

    - DTE20 Bootstrap and Dump
    - DL11 Asynchronous Line Bootstrap
    - Bootstrap Parameters



4.3.4  Button Addresses - 

    #1  773000  DL11
    #2  (unused)
    #3  (unused)
    #4  773574  DTE20



4.3.5  Other Entry Locations - 



4.4  BM873-YH

4.4.1  First Used On - DECsystem-10xx Console Front End.



4.4.2  Current Usability - DECsystem-10xx    Console    Front     End,
DECsystem-20xx Console Front End.



4.4.3  Summary Of Features - 

    - Switch Register
    - RP04/05/06 Disk Bootstrap
    - RX11 Floppy Disk Bootstrap
    - TC11 DECtape Bootstrap
    - Error Retry
    - Bootstrap Parameters
    - Parameter Entry



4.4.4  Button Addresses - 

    #1  773000  Switch Register
    #2  773030  Disk
    #3  773020  Floppy/DECtape
    #4  773554  DTE20
KL10 BM873 Bootstrap ROMs                                      Page 14


4.4.5  Other Entry Locations - 

773300  TC11 DECtape Bootstrap.  Used if DECtape  bootstrap  (unit  0)
        desired and RX11 Floppy exists in configuration.



4.5  BM873-YJ

4.5.1  First Used On - DECsystem-20xx Communications Front End.



4.5.2  Current Usability - DECsystem-10xx    Console    Front     End,
DECsystem-20xx  Console Front End, DECsystem-10xx Communications Front
End, DECsystem-20xx Communications Front End.



4.5.3  Summary Of Features - 

    - Switch Register
    - RP04/05/06 Disk Bootstrap
    - RX11 Floppy Disk Bootstrap
    - TC11 DECtape Bootstrap
    - DTE20 Bootstrap and Dump
    - DL11 Asynchronous Line Bootstrap
    - Error Retry
    - Bootstrap Parameters
    - Parameter Entry
    - PDP11/34 Support



4.5.4  Button Addresses - 

    #1  773220  Switch Register (halts)
    #1  773000  Switch Register (does not halt)
    #2  773030  Disk
    #3  773020  Floppy/DECtape/DL11
    #4  773230  DTE20



4.5.5  Other Entry Locations - 

773214  TC11 DECtape Bootstrap.  Used if DECtape  bootstrap  (unit  0)
        desired and RX11 Floppy exists in configuration.

773530  DL11 Asynchronous Line  Bootstrap.   Used  if  DL11  bootstrap
        desired  and either RX11 Floppy Disk or TC11 DECtape exists in
        configuration.
KL10 BM873 Bootstrap ROMs                                      Page 15


[End of KL873.MEM]