TMSCP bootstrap

Lyle Bickley lbickley at bickleywest.com
Sun Aug 14 11:05:33 CDT 2005


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

-- 
Lyle Bickley
Bickley Consulting West Inc.
Mountain View, CA
http://bickleywest.com

"Black holes are where God is dividing by zero"



More information about the cctalk mailing list