• Please review our updated Terms and Rules here

PDP11 - LSI11/02 and RQDX3

The trouble is that there is much more to the MSCP protocol than a simple bootstrap I am afraid.

You wouldn't just enter an RQDX3 bootstrap via ODT I am afraid - hence the more complex bootstraps ended up in CPU bootstrap EPROMs.

Dave
I boot a RQDX3 using ODT. The MSCP boot code is 65 words.
I can't find the code online at the moment. I know it's out there...
 
I guess it is similar to what I have just located. In that case, I don't need to do any work if we can find it!

Dave
 
I have been looking around for DU-device boot ROMs.

Unfortunately, the only ones I can find are 16KW - and your bootstrap board only has 4KW of EPROM space by the looks of it.

I also haven't been able to find any source code (other than the file I found - but that is not a true bootstrap) for a stand-alone DU bootstrap.

I could try and build a set of bootstraps for our own PDP-11 software and see how small I can get it - but (from what I remember) you need an MRV11-C or an MRV11-D to hold it.

Somewhere, I have the MSCP protocol manual. I am going away on a business trip in a couple of weeks - A DU bootstrap would be a useful project whilst sitting in the hotel!

EDIT: Online at: https://vt100.net/dec/aa-l619a-tk.pdf.

Dave
I figured out where I got the MSCP boot. I ripped it out of SIMH.
SIMH boots by loading a bootstrap image into memory then executing it. So that image can be loaded via ODT
 
I figured out where I got the MSCP boot. I ripped it out of SIMH.
SIMH boots by loading a bootstrap image into memory then executing it. So that image can be loaded via ODT
That sounds great! Thanks for digging.... in case we speak really only about around 65 words this should be even compatible to my ROM board (which has 2kW capacity).
Looking forward to!
 
Lessee...if you switch an MXV11 for the DLV11, you get a console port and sockets for boot ROMs, as well as some memory. As far as a bootstrap goes, how about this one? https://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/bootstraps/mscp_rt11.txt

It would be long to toggle in, but could be burned to a ROM on the MXV11. Since it's MSCP, it should boot a floppy just like it would a larger disk.
These boards are not so easy to find these days. Assuming I would get my hands on one for an acceptable price, what will my non MMU system do whem there is additional kWords .... I already have a 32kW Ram board installed?

Thanks a lot for finding the link! You think that bootstrap will work out of the box or does this need some adaptation?

Regards
Stephan
 
These boards are not so easy to find these days. Assuming I would get my hands on one for an acceptable price, what will my non MMU system do whem there is additional kWords .... I already have a 32kW Ram board installed?

Thanks a lot for finding the link! You think that bootstrap will work out of the box or does this need some adaptation?

Regards
Stephan
You can disable the memory on the MXV11, or remove the memory card and use the MXV memory. Another MXV advantage - it provides two DL11 ports, so one is the console and the other can be used with a TU58 emulator. I have a two card RT11 system in a BA11-VA, with an 11/02 processor and an MXV11 providing console port, memory, boot roms, and a TU58 port for storage. In any case, MXV or no, I'm pretty sure that boostrap will work. I haven't used it as a bootstrap, but have used most of it in a project I worked on to provide MSCP support. You would need to modify the instruction at START: to point to another unit number, if you aren't using unit 0.
 
I had the same type of question and I found this on the web;


The following is MSCP.MAC, the code for the toggle-in bootstrap for DU0 as
listed (almost) in the RT-11 5.6 manuals. When this is assembled, the .SAV
image at 76000 will match that of the boot.

The first set of comments on the right are the (octal) location and
contents of the bootstrap, should you actually need to toggle it in. I am
indebted to Jim Crapuchettes for deducing the missing word in the manual
listing, and for providing the comments as to what the code is doing.
[MSCP is a pretty mysterious protocol. Suffice to say that you build
instruction packets in PDP-11 memory, then tell the controller to execute
them.]

Note that I have used this code, as ODT instructions, to "ram" the
bootstrap over a serial line to an 11/73 which had no DU boot. The 11/73
came up in ODT, so all I had to do was to fire up VTCOM and send the
ODT-like instructions over the serial line (ending, of course, with
76000G). To my surprise, it worked!


;------------------------------------------------------------------------------
;This is the MSCP bootstrap as listed in the RT-11 5.6 INS manual ...
; along with its disassembly (by hand!). Additional comments and
; attempts to make "nicer" assembly by
; Bob Schor bschor@vms.cis.pitt.edu (412) 647-2116 (w)
;
;Missing word (at 76102) and most of the explanation supplied by
; Jim Crapuchettes jimc@netcom.com 408-732-0569
;
.asect

. = 42

.word 1000 ;-; Set stack pointer for RT-11 - don't "toggle" in

. = 76000

; The contents of R0 must be the MSCP unit number. Although it is set to 0
; below, it could be manually set to some other value and then execution
; started at 76002.

start: clr r0 ;76000/5000 ;; Preset register to 0 (unit)
mov #172150, r1 ;76002/12701 ;; Point to IP register
;76004/172150
1$: mov #itabl, r4 ;76006/12704 ;; Point to init/cmd params
;76010/76156
mov #4000, r5 ;76012/12705 ;; Set init step to 1
;76014/4000

; Do 4-step controller initialization. Begin by writing any value to IP to
; reset the controller; all the rest of initialization is done through SA.

mov r1, r2 ;76016/10102 ;; Copy IP address, write to
mov r0, (r2)+ ;76020/10022 ;; IP to init & bump to SA
2$: tst (r2) ;76022/5712 ;; Test for error bit in SA
bmi 1$ ;76024/100770 ;; Error = start init again
bit (r2), r5 ;76026/31205 ;; Test step bit in SA
br 3$ ;76030/401 ;; ????, appears to skip next
bic (r1)+, (r5)+ ;76032/42125 ;; ????, seems to be skipped
3$: beq 2$ ;76034/1772 ;; Wait for next step ready
mov -(r4),(r2) ;76036/14412 ;; Next init param to SA
asl r5 ;76040/6305 ;; Move to next init step
bpl 2$ ;76042/100367 ;; Loop thru 4 steps

; Bring unit on-line, read bootstrap (block 0) from the disk and start it up.

4$: tstb -(r4) ;76044/105744 ;; Point to next cmd byte
bne 5$ ;76046/1002 ;; Loop thru commands
mov pc, r4 ;76050/10704 ;; Point r4 to "clr pc" and
clr pc ;76052/5007 ;; go start at location 0

5$: clr r2 ;76054/5002 ;; Init for clearing memory
6$: clr (r2)+ ;76056/5022 ;; Clear memory from loc 0
cmp r2, #17204 ;76060/20227 ;; thru loc 17202
;76062/17204
blo 6$ ;76064/103774 ;; Loop until done
incb @#17101 ;76066/105237 ;; Packet length = 400 bytes
;76070/17101
mov r0, @#17110 ;76072/10037 ;; Set unit number = 0
;76074/17110
movb (r4), @#17114 ;76076/111437 ;; Move command to cmd pkt
;76100/17114
movb -(r4), @#17121 ;76102/114437 ;; Set parameter from table
;76104/17121
mov #17004, (r2)+ ;76106/12722 ;; Set response packet de-
;76110/17004 ;; scriptor: low 16 address
mov r5, (r2)+ ;76112/10522 ;; bits & PortOwn bit
mov #17104, (r2)+ ;76114/12722 ;; Set command packet de-
;76116/17104 ;; scriptor: low 16 address
mov r5, (r2) ;76120/10512 ;; bits & PortOwn bit
cmp -(r2),-(r2) ;76122/24242 ;; Point back to resp desc
tst (r1) ;76124/5711 ;; Poll controller to start
7$: tst (r2) ;76126/5712 ;; Wait for resp desc PO bit
bmi 7$ ;76130/100776 ;; => 0 == response received
tst @#17016 ;76132/5737 ;; Status byte = success (0)?
;76134/17016
beq 4$ ;76136/1742 ;; Yes, go to next command
stop: halt ;76140/0 ;; No, stop here...

; NOTE: This table MUST be - immediately preceeded by a zero byte (the HALT
; instruction) because it is the "end-of-table" marker; and immediately
; precede the Initialization Step Parameter table since a single register
; points first to the IStep Params (1 word each) and then to the commands
; (1 byte for the command, 1 byte for the parameter), passing through them
; in reverse.

.byte 2 ;; Set byte count to 1000 for OP.RD
.byte 41 ;; OP.RD = ReaD
.byte 0 ;; 0 parameter for OP.ONL
.byte 11 ;; OP.ONL = ON Line
;; .word 20402 ;76142/20402
;; .word 4400 ;76144/4400

.word 1 ;76146/1 ;; IS4: GO bit
.word 0 ;76150/0 ;; IS3: Ring base high address
.word 17204 ;76152/17204 ;; IS2: Ring base low address
.word 100000 ;76154/100000 ;; IS1: bits-
;; [15] = 1, [14] (WR) = 0, [13:11] (cmd ring
;; size) = 0, [10:8] (resp ring size) = 0, [7]
;; (IE) = 0, [6:0] (int vect/4) = 0 :: command
;; and response rings = 1 element, no inter-
;; rupts and no interrupt vector.
itabl =: . ;need pointer to end of table

;76000g to start ODT

.end stop ;For RT-11 only, don't "toggle" in
 
Back
Top