Setting up a Strobe Data Osprey
I was lucky enough a few years back to pick up an ISA PDP11 hard simulator produced by Strobe Data, pictured below. They made a few of these, most of them with Xilinx FPGAs, but this one has a genuine DEC J11 CPU!
Getting these set up is not too difficult, but there is a bit of backstory needed.
When I originally acquired this card, I set about getting it running as normal but eventually ran into a strange “Windows keylock” error. A bit of digging in Ghidra and I was able to determine that this was part of a series of checks to determine (via a keyfile and/or EEPROM) which features were enabled, one of which was Windows support. I was similarly unable to get the card working under DOS, with drivers installed and the options it was failing on manually specified. I decided to eventually reach out to Strobe Data, and discovered that the company had folded some time ago and most everyone involved had retired or moved on save a skeleton crew. They were not even sure if the PC used to generate keys existed anymore. Eventually the holiday season came around and the thread died, and with some life changes I did not have the bandwidth to keep chasing.
Recently (actually, as of the day this was written, 01-FEB-2024) a fellow retrocomputing enthusiast and far more talented reverse engineer took a crack at it and was able to produce a few quick patches that can easily be done in a hex editor. I have reached out to Strobe Data's support address to seek their approval to publish a patched osprey.exe
or steps to do so, if I am able to secure that I will update this page.
UPDATE 26-JUL-2024: I have not heard back from Strobe Data despite repeated prodding about this specific request, so I am going to assume that they are dead and do not care if this information is published. To patch the Osprey binary, open it up in a hex editor and make the following changes:
65E0: C0 75 -> C0 74 8810: C0 75 -> C0 74 EF70: C0 75 -> C0 74 4B310: C0 75 -> C0 74
This will allow the NT application to function properly with all features enabled.
Host PC and installation
Your host PC should be a decently spec'd x86 box, Strobe Data recommend a much nicer one than mine (PII 450MHz, 160MB RAM, 16GB IDEDOM) but my use case is not mission critical :)
Of course you will need at least one PCI or full-length ISA slot depending on your card. If you have a J11 Osprey like me a case with ISA card guides is ideal as the CPU and RAM are heavy and cause a bit of sag. Airflow directly over the card is also ideal as the J11 does get warm under load. You can run NT4 or Win2k, I recommend 2k as it is honestly less of a headache.
You will want to use the Complete Osprey/Windows™ installation software for all boards (5Mb) (osnt50403.exe
) installer. Once you are done with the software installation install the driver via the hardware wizard, the oemsetup.inf
file is where you installed the Osprey software. Do not worry about the highly specific 3Com NICs, those aren't needed as DEQNA emulation works with WinPcap similar to SIMH. You also don't need to hunt down WinPcap for 2k- just go to Start > Programs > Osprey > Install WinPcap.
License fuckery
TBD, hopefully. For now, if you own an Osprey and are stuck, reach out to me at system AT rsx11m DOT io
.
OSPREY.CNF
OSPREY.CNF
is the main config file for the Osprey board. You can make copies of this file and run it with the /C:filename
flag via a shortcut, or alternatively the .CNF extension will be registered to the Osprey software by default, so you can just make shortcuts to your configs to your desktop and run them from there. Below are the config files I am using for RSX11M+ and RT11ZM:
RSX11
;++++++++++++++++++++++++++++++++++++ ; osprey config for rsx11m+ ;++++++++++++++++++++++++++++++++++++ ; 4mb memory, 11/70 speeds ;++++++++++++++++++++++++++++++++++++ ; 1x mscp, 4x disks ; 1x rlv12, 2x rl02 ; 1x fwv11, 2x rx01 + 2x rx02 ; deqna ethernet controller ;++++++++++++++++++++++++++++++++++++ Include WHICHBIN.CNF BoardName = Osprey0 NumlockKey = F12 MemorySize = 4MB CON = Console Startup = 0 StrobeODT = ODT CPU = KDJ11-E /SWR:000000 /Line:60 Performance = 11/70 J11File = OSPREY.J11 ; mscp disks File /Name:Images\rsx11\osprey-rsx11-sys.ra92 = MSCP /Unit:0 File /Name:Images\rsx11\osprey-rsx11-data.ra92 = MSCP /Unit:1 File /Name:Images\rsx11\osprey-rsx11-rtem.rd53 = MSCP /Drive:RD53 /Unit:2 ; rl02s ;File /Name:Images\rsx11\foo.rl02 = RLV12 /Drive:RL02 /Unit:0 ;File /Name:Images\rsx11\bar.rl02 = RLV12 /Drive:RL02 /Unit:1 ; rx01s ;File /Name:Images\rsx11\foo.rx01 = FWV11 /Drive:RX01 /Unit:0 ;File /Name:Images\rsx11\bar.rx01 = FWV11 /Drive:RX01 /Unit:1 ; rx02s ;File /Name:Images\rsx11\foo.rx02 = FWV11 /Drive:RX02 /Unit:0 ;File /Name:Images\rsx11\bar.rx02 = FWV11 /Drive:RX02 /Unit:1 ; peripherals Ethernet = DEQNA
For an RSX11M+ sysgen, use a J11 CPU type. All CSR and vector addresses are default, the DY: device is what covers the FWV11.
RT11:
;++++++++++++++++++++++++++++++++++++ ; osprey config for rt11zm ;++++++++++++++++++++++++++++++++++++ ; 4mb memory, 11/70 speeds ;++++++++++++++++++++++++++++++++++++ ; 1x mscp, 4x disks ; 1x rlv12, 2x rl02 ; 1x fwv11, 2x rx01 + 2x rx02 ; deqna ethernet controller ;++++++++++++++++++++++++++++++++++++ Include WHICHBIN.CNF BoardName = Osprey0 NumlockKey = F12 MemorySize = 4MB CON = Console Startup = 0 StrobeODT = ODT CPU = KDJ11-E /SWR:000000 /Line:60 Performance = 11/70 J11File = OSPREY.J11 ; disks File /Name:Images\rt11\osprey-rt11-sys.ra80 = MSCP /Unit:0 File /Name:Images\rt11\tcpip.rx33 = MSCP /Drive:RX33 /Unit:1 ; rl02s ;File /Name:Images\rsx11\foo.rl02 = RLV12 /Drive:RL02 /Unit:0 ;File /Name:Images\rsx11\bar.rl02 = RLV12 /Drive:RL02 /Unit:1 ; rx01s ;File /Name:Images\rsx11\foo.rx01 = FWV11 /Drive:RX01 /Unit:0 ;File /Name:Images\rsx11\bar.rx01 = FWV11 /Drive:RX01 /Unit:1 ; rx02s ;File /Name:Images\rsx11\foo.rx02 = FWV11 /Drive:RX02 /Unit:0 ;File /Name:Images\rsx11\bar.rx02 = FWV11 /Drive:RX02 /Unit:1 ; peripherals Ethernet = DEQNA
If you desire, setting CPU = KB11-C
will force the Osprey into 11/70 mode rather than just throttling down performance, but obviously this requires you to adapt your sysgen/kernel and configs.
Take note of the J11File
variable- by default, this is set to OSPREY.CHK
which is a diagnostic image and cannot boot an OS. If you have an FPGA Osprey this is probably OSPREY.X86
. When you start the application you will be dropped into the Osprey's ODT and presented with a menu of device handlers, and can boot the system from there. CSRs and vectors will be default unless you have a weird setup.
If you have a slow NIC and are averse to file transfers, you can use the “Container File Builder” to generate disks locally.
Simulating muxes and connecting terminals
Of course, to satisfy the terminals sitting in your office somewhere that still have the occasional user, the Osprey is capable of simulating pretty much any mainstream DEC serial mux or line card. Most people will probably want a DHV11. To hang a simulated DHV11 off of COM1 and COM2:
COM /Port:1 = DHV11 /Unit:0 COM /Port:2 = DHV11 /Unit:1
As long as your serial ports are enabled you can connect a terminal and log in as normal.
More?
TBD