Trailing-Edge
-
PDP-10 Archives
-
AP-4178E-RM
-
swskit-documentation/rom11.fnc
There are no other files named rom11.fnc in the archive.
+---------------+
! d i g i t a l ! I N T E R O F F I C E M E M O R A N D U M
+---------------+
TO: KL10 Front End Group
DATE: 23 Jun 75
FROM: T. Porcher
DEPT: DEC10 S. E. Dept.
LOC: MB-2 EXT: 6877
FILE: [DOC-FRONT-END]
ROM11.SPC
PDM #: 200-205-014-02
DISTRIBUTED:
REVIEWED:
SUBJ: Functional Specification for KL10 Bootstrap ROM
This document supercedes and replaces PDM# 200-205-014-01.
BM873 Hardware
The BM873 is a hardware bootstrap ROM with 256 words of -11
code starting at location 773000. Associated with the ROM are
four "push-buttons" which start the ROM code at hard-wired
locations. These "push-buttons" may be either external contact
closures or internal logic. Starting of the ROM code is
implemented by simulating power-fail. Two power fail vectors
are required in the ROM: one at 773024 (for power-fail) and
one at 773224 (for power-up with volatile memory). the
programmed ROM for the KL-10 front-end bootstrap is designated
BM873-YK.
Functions of KL-10 Front-End Bootstrap ROM
The basic functions of the BM873-YD ROM are as follows:
1. To bootstrap the -11 (and subsequently the -10) from
the RX11 Floppy Disk or the RP04 Disk at the push of a
button.
2. To dump the first 28K of -11 memory to either the RX11
or the RP04.
3. To (optionally) dump -11 memory to the -10 through the
to: KL10 Front End Group Page 2
Subj: Functional Specification for KL10 Bootstrap ROM
DTE20, then bootstrap the -11 through the DTE20, at the
request of the -10.
4. To do any bootstrap operation, with different
parameters, selected in the Switch Register.
Button 1 -- Examine Switch Register
The interpretation of the switch register is given in Appendix
A. Bit 0 of the switch register is tested; if it is zero, the
general registers are saved in locations 40-56 and control is
transferred to the address specified in the switches. This is
to allow starting of dump routines easily. Otherwise, bit 7
selects the bootstrap device (0= RX11, 1= RP04) and bits 10-8
select the unit number. Bit 15 on means to retry indefinitely
on encountering an error.
Button 2 -- Bootstrap from RP04 Disk
Pressing this button does a bootstrap from the RP04 with a
default unit number of zero. This is the same operation that
would occur if bit 7 were set in the switches when button 1 was
pressed.
Button 3 -- Bootstrap from RX11 Floppy Disk.
Pressing this button does a bootstrap from the RX11 with a
default unit number of zero. This is the same operation that
would occur if bit 7 was not set in the switches when button 1
was pressed.
Button 4 -- Reload -11 from -10.
This is not a true "button" but invoked by the DTE20 when the
-10 sets the Reload -11 bit SR11B. This can be set by any of
the four DTE20's connected to the -11. The general registers
are saved in locations 40-56, then which DTE20 pressed the
reload button is found by locating the first DTE20 which has
both rung the -11's doorbell and has the value 1365 (octal) in
it's To -10 Byte Count register TO10BC. The first 12 DTE20
registers DLYCNT to TO11DT are saved starting at location 130.
The -11 memory is optionally dumped to the -10, then a 256 word
bootstrap is loaded into the first 256 words of -11 memory and
control is transferred to the loaded bootstrap at location 0.
The protocol of this operation is described in Appendix B.
Bootstrap operations
Bootstrapping from any device implies loading 256 words from
to: KL10 Front End Group Page 3
Subj: Functional Specification for KL10 Bootstrap ROM
the device (usually the first 256 words available) into the
first 256 words of -11 memory, starting at location 0. Control
is transferred to location 0 on successful completion of
loading. A parameter word is passed to the secondary bootstrap
in R5, which indicates how the bootstrap was invoked and from
which device. R5 contains one of the following:
Bit 0= 1 Bootstrap initiated by pressing button 1. R5
contains a copy of the switch register. See
Appendix A for a description of remaining bits.
Bit 7= 0 Bootstrap from RX11 Floppy Disk (button 3
pressed if bit 0= 0).
Bit 7= 1 Bootstrap from RP04 Disk (button 2 pressed if
bit 0= 0).
Bit 15= 1 (only if bit 0= 0) Bootstrap through DTE20,
button 4 pressed.
R1 will be left pointing to the contol and status register of
the bootstrap device. R0 will contain the unit number in
position for the device's unit select register.
Bootstrap from RX11 Floppy Disk
Logical block 0, which consists of track 1, sectors 1, 3, 5, 7,
is read into the first 256 words of -11 memory. If any errors
occur, the entire operation is retried 10 times (or
indefinitely if bit 15 of the switch register was on when
button 1 was pressed). With no errors, control is transferred
to location 0.
Bootstrap from RP04 Disk
Block 0 (track 0, sector 0, cylinder 0) is read into the first
256 words of -11 memory. If any errors occur, the entire
operation is retried 10 times (or indefinitely if bit 15 of the
switch register was on when button 1 was pressed). With no
errors, control is transferred to location 0.
Dump Operations
Dump routines exist in the ROM and are invoked by setting the
address of the desired dump routine in the switch register and
pressing button 1. This saves the general registers in
locations 40-56 and transfers control to the specified routine.
On successful completion of a dump, the -11 halts displaying
zero in R0.
Dump to RX11 Floppy Disk
to: KL10 Front End Group Page 4
Subj: Functional Specification for KL10 Bootstrap ROM
The first 28k of the -11 memory is written onto the diskette in
unit 0, starting with track 59, sector 1, in every sector.
Note that no interleaving of sectors or skewing of tracks is
done. A scratch diskette should be used to avoid destroying
the system files. If any errors occur, the entire operation is
retried 10 times. After completion of the dump, the -11 halts.
Dump to RP04 Disk
The first 28K of the -11 memory is written onto unit 0,
cylinder 409, track 13, sector 8. If any errors occur, the
entire operation is retried 10 times. After completion of the
dump, the -11 halts.
Errors on Bootstrap and Dump Operations
If a hard error occurs the -11 halts displaying an error
indication in R0. From the RX11, the Error Register is
displayed. From the RP04, the Drive Status Register RPDS is
displayed..
to: KL10 Front End Group Page 5
Subj: Functional Specification for KL10 Bootstrap ROM
APPENDIX A
The PDP11 front panel switch register is intended to be
interpreted as follows:
Bit 0 UNIBUS address or encoded flags
0 = the switch register contains a UNIBUS
address. Jump to that address instead of
interpreting it as described below.
1 = the switch register contains encoded flags
which are to be interpreted as described
below.
Bits 1, 2 Operator dialog or automatic load
00 = load default system (no dialog)
01 = load 1080 system (no dialog)
10 = load 2010 system (no dialog)
11 = ask dialog questions to control loading
Bits 3-6 The initial console line speed or interface
number
00-02,16,17 = The console terminal is
interfaced through the associated
DL11. Use the contents of bits
8-10 as the bootstrap device unit
number and use the contents of
bits 11-14 as a code for the fill
class for the console terminal.
03-15 = The console terminal is interfaced
through a DH11. Use the contents of
this field as the speed setting (and
fill class) for the console terminal.
Bootstrap from unit number zero. Use
the contents of bits 8-10 as the DH11
controller number and use the contents
of bits 11-14 as the line number on
that DH11.
Bit 7 The bootstrap device
0 = RX11 Floppy Disk (controller at address
777170
1 = RH11/RP04 (controller at address 776700)
Bits 8-10 The console terminal DH11 number or bootstrap
unit number
If the contents of bits 3-6 is in the range
3-15 (octal), this is the number of the DH11 to
to: KL10 Front End Group Page 6
Subj: Functional Specification for KL10 Bootstrap ROM
which the console terminal is connected. If
the contents of bits 3-6 is not in the range
3-5 (octal) this is the unit number for the
bootstrap device.
Bits 11-14 The console terminal line number or fill class
If the contents of bits 3-6 is in the range
3-15 (octal), this is the line number (on the
DH11 designated by bits 8-10) of the console
terminal. If the contents of bits 3-6 is not
in the range 3-15 (octal), this is the fill
class for the console terminal.
Bits 15 What to do upon detecting an error
0 = Halt on errors after at least ten
unsuccessful retries
1 = Retry (indefinitely) on errors
to: KL10 Front End Group Page 7
Subj: Functional Specification for KL10 Bootstrap ROM
APPENDIX B
Button 4 - Bootstrap and Dump through DTE20
The following is the procedure by which the ROM code dumps and
bootstraps the -11 through the DTE20.
1. Save R0 to R7 in -11 memory locations 40 to 56.
2. Find the DTE which is both ringing the -11's doorbell and
has 1365 in the to -10 byte count.
3. Save the first 12 DTE registers, DLYCNT to TO11DT, in -11
memory locations 130 to 156.
4. Clear the DTE20 and stop doorbell from ringing
5. Set delay count to maximum (zero).
6. Set to -10 address to 0 to start transfer of -11 memory to
-10.
7. Wait for doorbell.
8. Stop doorbell from ringing.
9. Set to -11 address to 0.
10. Set to -11 byte count to -256 words to start transfer.
11. Wait for doorbell.
12. Stop doorbell from ringing.
13. Set R5 to bit 15=1, bit 0=0 to indicate button 4 pressed.
14. Go to location 0.
The following is the procedure by which the -10 dumps and
bootstraps the -11 through the DTE20.
1. Clear the DTE20 and press reload -11 button 4.
CONO [SR11B!CL11PT!CLTO11!CLTO10!PILDEN]
2. Wait for -11 power fail.
CONI [DEAD11]=1
3. Wait for -11 power recover.
CONI [DEAD11]=0
4. Wait another 150ms.
5. Set to -10 byte count to a special code 1365(octal).
DATAO [1365]
to: KL10 Front End Group Page 8
Subj: Functional Specification for KL10 Bootstrap ROM
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 l