• Please review our updated Terms and Rules here

Looking for RQDX3 programming examples

leegleason

Experienced Member
Joined
Jan 20, 2014
Messages
140
I am working on writing a minimal monitor for the MicroVAX1. I need to add the capability for it to read and write disks and diskettes connected by an RQDX3. I've found the couple or three DEC documents related to RQDX3s and MSCP, that are available online and have located the sources for assorted UNIX drivers that control the RQDX3. This material is a little...recondite. I'm wondering if anyone else has figured out how to drive the card on VAXes or PDP11s and could provide me with some simple examples.
 
Here is the listing of a simple functional diagnostic test for an MSCP controller I have (UNIBUS Emulex UC17/18 series). Also works on a RQx (UDA50) device under SIMH.

Does simple init and setup tests, and then some read-only accesses to available devices.

Listing here: https://www.ak6dn.com/PDP-11/DIAGNOSTICS/mscp.lst

Don

FYI the enclosing directory is here: https://www.ak6dn.com/PDP-11/DIAGNOSTICS/

and download the diagnostics.tar.gz file to get the sources and makefile to recreate the binary. You will need the macro11 assembler.
 
Last edited:
In addition, you should read through the UDA50 documentation.
http://www.bitsavers.org/pdf/dec/disc/uda50/
Especially, looking at the Unibus port description. And you can make a guess what the four reserved "QQQQ" bits might mean... ;-)
Don't forget. For normal operations, the RQDX3 is just another MSCP controller. All MSCP controllers work the same when it comes to the disk communication. The biggest issues are just figuring out the local port handling. But the RQDX controllers are just like the KDA50 and pretty much the same as the UDA50, except that Unibus only have 18-bit addressing.
 
Thanks for pointing out that UDA50 info is useful - there's lots more of that than RQDX3.
 
Thanks for pointing out that UDA50 info is useful - there's lots more of that than RQDX3.

Yeah. Basically, the UDA50 documentation contains everything you ever need in order to use an RQDX3. With the exception of if you want to do bad block replacing, or formatting. That information, unfortunately, DEC decided to never publish. And that bit do differ between different controllers and disks.
But otherwise, Unibus and Qbus controllers are similar enough that the documentation is useful for either, and if you have software (like any OS), they actually use the same device drivers for all MSCP controllers.
(But if you were to hit CI or VAXBI, then the port interface for those controllers are different, so that limits the usefulness of the UDA50 documentation.)
 
Here's a relatively simple PDP-11 driver that might help. I recommend first getting a simple bootstrap
level driver going. The code at .DRBOT in the driver does that. There are three main tasks:

1. Perform the handshake code with MSCP device.

2. Setup the MSCP ring structure

3. Fill in the ring variables for the I/O operation and wait

The source:

https://github.com/rust11/rust/blob/.../p/drs/dup.mac

Definitions are mostly here:

https://github.com/rust11/rust/blob/...drs/drvmac.mac


Note, my driver works with real MSCP hardware but has problems with simulators.

Coincidentally, I'm just writing a bit of code to adapt the XXDP DU: driver to accept port and partition
information.
 
Back
Top