Great find! Thanks Al.
Lyle
On Saturday 13 August 2005 22:23, Al Kossow wrote:
Until a MU prom can be found, this may help.
--
In article <33299DEC.2DB7 at ix.netcom.com>,
Bill Hockridge <beh_inc at ix.netcom.com> wrote:
I'm looking for the bootstrap loader code to
boot a PDP-11/70 from a
TU-81 plus tape drive (M8739 controller card).
Does anyone have access to the loader code or know where I can find it?
Below are some responses that Robin Birch collected and then forwarded
to me when I asked a similar question. These form the very first
entries in an archive of bootstraps that is available at
http://sunsite.unc.edu/pub/academic/computer-science/history/pdp-11/
bootstraps
The original attributions for the bootstraps below belong with
BSD 2.x (through Steven Schultz) and RT-11 (through Bob Schor).
Tim. (shoppa at triumf.ca)
----------------cut here---------
Here's the TMSCP togglein routine. You start depositing at
location 01000.
The source is included.
as -o a.out tk.s
strip a.out
dd if=a.out of=b.out bs=16 skip=1
od b.out
The 'dd' is needed to removed the a.out header.
Enjoy.
Steven
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
# b.od
# tk.s
# This archive created: Sun Jan 21 14:06:24 1996
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'b.od'
then
echo shar: "will not over-write existing file 'b.od'"
else
cat << \SHAR_EOF > 'b.od'
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
0001000 005701 001002 012701 174500 005021 012704 004000 005002
0001020 105022 020204 103775 010705 062705 000234 005711 100002
0001040 005741 000762 030411 001772 012511 006304 100367 012737
0001060 000400 002102 012737 000044 002100 010037 002110 012737
0001100 000011 002114 012737 020000 002116 012702 002004 012722
0001120 002020 010203 010422 012722 002104 010422 014102 005713
0001140 100776 105737 002032 001320 012702 002114 012722 000045
0001160 012722 020002 005022 005022 005022 010413 010437 002012
0001200 011102 005713 100776 105737 002032 001276 012702 002114
0001220 012722 000041 012722 020000 012722 001000 005022 005022
0001240 010413 010437 002012 011102 005713 100776 105737 002032
0001260 001253 005007 100000 002004 000000 000001
0001274
SHAR_EOF
fi
if test -f 'tk.s'
then
echo shar: "will not over-write existing file 'tk.s'"
else
cat << \SHAR_EOF > 'tk.s'
. = .+ 01000
/ TMSCP bootrom code.
/ R0 = Unit to boot from
/ R1 = CSR of controller (0 if default 174500 to be used)
start:
tst r1
bne rewind
mov $174500,r1
rewind:
clr (r1)+ / start tk init sequence
/ move pointer to tksa register
mov $4000,r4 / state test bit to step 1
clr r2 / clear bottom 4000(8) bytes
1:
clrb (r2)+
cmp r2,r4
blo 1b
mov pc,r5 / position independent address
add $cmdtbl-.,r5 / of init seq table
2:
tst (r1) / error ?
bpl 1f / no - skip the backup
tst -(r1) / put CSR back to entry value
br rewind / might as well go try again
1:
bit r4,(r1) / current step done ?
beq 2b / no
mov (r5)+,(r1) / yes, load next step info from table
asl r4 / change state test bit to next step
bpl 2b / if all steps not done, go back
/ r4 now = 100000, TK_OWN bit
mov $400,*$cmdhdr+2 / tape VCID = 1
mov $36.,*$cmdhdr / command packet length
/ don't set response packet length,
/ little shakey but it works.
mov r0,*$unit / set unit in packet
mov $11,*$tkcmd+8. / on-line command opcode
mov $20000,*$tkcmd+10. / set clear serious exception
mov $ring,r2 / initialize cmd/rsp ring
mov $tkrsp,(r2)+ / address of response packet
mov r2,r3 / save address "ring+2"
mov r4,(r2)+ / set TK owner
mov $tkcmd,(r2)+ / address of command packet
mov r4,(r2)+ / set TK owner
mov -(r1),r2 / start TK polling
3:
tst (r3) / wait for response (ring+2)
bmi 3b
tstb *$tkrsp+10.
bne rewind
mov $tkcmd+8.,r2
mov $45,(r2)+ / reposition opcode
mov $20002,(r2)+ / set rewind & clear serious exception
clr (r2)+ / clear record/object count
clr (r2)+ / zzz2
clr (r2)+ / clear tape mark count
mov r4,(r3) / set TK owner of response (ring+2)
mov r4,*$ring+6 / set TK owner of command
mov (r1),r2 / start TK polling
1:
tst (r3) / wait for response (ring+2)
bmi 1b
tstb *$tkrsp+10. / does returned status = SUCCESS ?
bne rewind / no, hang
mov $tkcmd+8.,r2
mov $41,(r2)+ / read opcode
mov $20000,(r2)+ / set clear serious exception
mov $512.,(r2)+ / byte count
clr (r2)+ / zzz2
clr (r2)+ / buffer address is 0
mov r4,(r3) / set TK owner of response (ring+2)
mov r4,*$ring+6 / set TK owner of command
mov (r1),r2 / start TK polling
1:
tst (r3) / wait for response (ring+2)
bmi 1b
tstb *$tkrsp+10. / does returned status = SUCCESS ?
bne rewind / no, hang
clr pc
cmdtbl:
100000 / TK_ERR, init step 1
ring / address of ringbase
0 / hi ringbase address
1 / TK go bit
end:
cmdint = 2000 / TMSCP stuff starts at 1kb
rspint = cmdint+2.
ring = rspint+2.
rsphdr = ring+8.
tkrsp = rsphdr+4.
cmdhdr = tkrsp+48.
tkcmd = cmdhdr+4.
unit = tkcmd+4
SHAR_EOF
fi
exit 0
# End of shell archive
------------------------------------------------------------------------
----
TMSCP Bootstrap
RT-11 Installation Guide (AA-H376F-TC)
Toggle the following instructions into memory, starting at address
076026 (the last instruction goes into 076176). When done, check to
make
sure all addresses have the correct content, then start running from
076026. Note that this asssumes that a bootable tape is loaded in the
MU:
device.
076100 100077
076102 105237
076104 100075
076106 010037
076110 100104
076112 112437
076114 100115
076116 112437
076120 100110
076122 010522
076124 010522
076026 005000 076126 012722
076030 012701 076130 100100
076032 174500 076132 010512
076034 012704 076134 024242
076036 076160 076136 005711
076040 012705 076140 005712
076042 004000 076142 100776
076044 010102 076144 005737
076046 012422 076146 100012
076050 005712 076150 001331
076052 100770 076152 105704
076054 031205 076154 100344
076056 001774 076156 005007
076060 012412 076160 046525
076062 006305 076162 100000
076064 100371 076164 100200
076066 010502 076166 000000
076070 005022 076170 000001
076072 105702 076172 004400
076074 100375 076174 020476
076076 105237 076176 020402