• Please review our updated Terms and Rules here

Is there an RX01 Emulator?

Maybe someday I'll figure it out. I was surprised that XXDP would not run with the smaller card. At this point I'm just thrilled to see it work so I can move onto the next part of the project.

len

Earlier versions of XXDP (like v1) would run in as little as 8KW (16KB) of memory, but that later increased to 16KW (32KB) minimum for the XXDPv2 SM, and 32KW and an MMU for the XXDPv2 XM.

Don
 
Maybe someday I'll figure it out. I was surprised that XXDP would not run with the smaller card. At this point I'm just thrilled to see it work so I can move onto the next part of the project.

len

Congrats.

I would double check the 28Kw (32Kw?) card that you have.

RT11SJ should boot on either with 28Kw or 128Kw. If its only working on the latter is not a sign it requires extended memory, but that the former card has some issues.



Jerry
 
Congrats.

I would double check the 28Kw (32Kw?) card that you have.

RT11SJ should boot on either with 28Kw or 128Kw. If its only working on the latter is not a sign it requires extended memory, but that the former card has some issues.

Jerry

I agree if indeed that is an M8044-DE that you have, that should be a 32KW (64KB) memory card, which is enough memory to run any XXDP version, or RT11SJ or RT11FB.

It may very well be that there is some issue with that card that prevents it from being detected as full capacity.

Don
 
I finally re-assembled my 8/M which has been lying in pieces since last autumn and gave the emulator a whirl. Everything looked good at first but I soon realized I was in a situation similar to what Don described last October - RXA0: seems to work well but RXA1: is non-responsive/unreachable. DIR RXA1: results in "ERROR READING INPUT DIRECTORY". ZERO RXA1: fails as does any other attempt to access that drive.

I should also note that if mode is set to RX02, the emulator hangs. It works fine (on RXA0:) when set to RX01 mode. I've adjusted T from 0 to 2 with no change. I've always understood that the only difference between an RK8E and an RK28 is the type of drive attached to the M8357 controller. Is my assumption correct? I'm not aware of any other settings on the M8357 besides the base address (set at the default 75).

I have two emulators (arduino + shield), one at emulator software rev 1.5/IDE 1.6.0 and one at rev 1.8/IDE 1.8.3. I get the same result with both boards. I've also swapped files between "drive" 0 and 1 - files that I can read in drive 0 don't show up in drive 1.

I haven't run the M8357 diagnostics in a while, but I'm pretty sure I've used this controller with RX02 drives in the past. Where do the drive select and density functions reside? Any thoughts? Time to pull out the printset and the MAINDECs.

Jack
 
I finally re-assembled my 8/M which has been lying in pieces since last autumn and gave the emulator a whirl. Everything looked good at first but I soon realized I was in a situation similar to what Don described last October - RXA0: seems to work well but RXA1: is non-responsive/unreachable. DIR RXA1: results in "ERROR READING INPUT DIRECTORY". ZERO RXA1: fails as does any other attempt to access that drive.

I should also note that if mode is set to RX02, the emulator hangs. It works fine (on RXA0:) when set to RX01 mode. I've adjusted T from 0 to 2 with no change.

For this the contents of the debug window would be necessary, so see which command and what parameters were passed. The only place I could see a hang occurring is in a fill/empty buffer command and the program does not attempt to transfer all the necessary words requested.

I've always understood that the only difference between an RK8E and an RK28 is the type of drive attached to the M8357 controller. Is my assumption correct? I'm not aware of any other settings on the M8357 besides the base address (set at the default 75).

That is correct. RX8E and RX28 are the exact same interface module M8357; the only difference is how the drive responds (whether it returns the RX02 status bit set, or not).

I have two emulators (arduino + shield), one at emulator software rev 1.5/IDE 1.6.0 and one at rev 1.8/IDE 1.8.3. I get the same result with both boards. I've also swapped files between "drive" 0 and 1 - files that I can read in drive 0 don't show up in drive 1.

That is very strange ... I have no idea why this might be. I have never seen behavior like this.

I haven't run the M8357 diagnostics in a while, but I'm pretty sure I've used this controller with RX02 drives in the past. Where do the drive select and density functions reside? Any thoughts? Time to pull out the printset and the MAINDECs.

Jack

Drive select and density are two bits in registers that are sent over in the command word.

What version(s) of OS8 are you using? I found that the issue I was seeing was related to being in the wrong mode (RX01/02) vs OS8 version.
I distributed OS8 disk images OS8V3D.RX2 (RX02 mode) and OS8V3Q.RX1 (RX01 mode) that both booted successfully and could access drive 1 ok (as long as the drive 1 disk was the same size as the drive 0 disk, RX01 vs RX02).

Admittedly I have not done extensive OS8 based testing but the earlier issue I had was related to having an RX02 sized media mounted on an RX01/RX8E configuration, which caused the OS8 disk access errors. It was basically an operator error on my part. However I do appreciate any feedback on the operation of the device, particularly on the PDP8 under OS8, which has had the least amount of testing done. The PDP11 side has been much more extensively tested (by both DEC diagnostics and my own home grown ones, as well as under XXDP and RT11 operating systems).

I have written a diagnostic for the PDP-8 that checks operation in both RX01 and RX02 mode, with both densities, and in both 8b and 12b interface operation. Here is the SIMH log, runs the same on the real hardware (my PDP-8m with an M8357 RX82/28 interface board).

Code:
 rxtest.sh
+ pdp8 rx8esd.ini

PDP-8 simulator V4.0-0 Beta        git commit id: af54a5c8
RX: creating new file
RX: buffering file in memory
RX: creating new file
RX: buffering file in memory
RX      RX8E, devno=75, 2 units
  RX0   256KB, attached to rx0.dsk, write enabled
        single density
  RX1   256KB, attached to rx1.dsk, write enabled
        single density
PASS=0001 ERRORS=0000 UNIT=0 MODE=0 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=0 MODE=0 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=0 MODE=0 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=0 MODE=1 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=0 MODE=1 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=0 MODE=1 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=1 MODE=0 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=1 MODE=0 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=1 MODE=0 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=1 MODE=1 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=1 MODE=1 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=1 MODE=1 DENS=0 TYPE=0
HALT instruction, PC: 01237 (JMP I 1377)
Goodbye
RX: writing buffer to file
RX: writing buffer to file
+ pdp8 rx28sd.ini

PDP-8 simulator V4.0-0 Beta        git commit id: af54a5c8
RX: creating new file
RX: buffering file in memory
RX: creating new file
RX: buffering file in memory
RX      RX28, devno=75, 2 units
  RX0   256KB, attached to rx0.dsk, write enabled
        single density
  RX1   256KB, attached to rx1.dsk, write enabled
        single density
PASS=0001 ERRORS=0000 UNIT=0 MODE=0 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=0 MODE=0 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=0 MODE=0 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=0 MODE=1 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=0 MODE=1 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=0 MODE=1 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=1 MODE=0 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=1 MODE=0 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=1 MODE=0 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=1 MODE=1 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=1 MODE=1 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=1 MODE=1 DENS=0 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)
Goodbye
RX: writing buffer to file
RX: writing buffer to file
+ pdp8 rx28dd.ini

PDP-8 simulator V4.0-0 Beta        git commit id: af54a5c8
RX: creating new file
RX: buffering file in memory
RX: creating new file
RX: buffering file in memory
RX      RX28, devno=75, 2 units
  RX0   512KB, attached to rx0.dsk, write enabled
        double density
  RX1   512KB, attached to rx1.dsk, write enabled
        double density
PASS=0001 ERRORS=0000 UNIT=0 MODE=0 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=0 MODE=0 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=0 MODE=0 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=0 MODE=1 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=0 MODE=1 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=0 MODE=1 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=1 MODE=0 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=1 MODE=0 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=1 MODE=0 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0001 ERRORS=0000 UNIT=1 MODE=1 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0002 ERRORS=0000 UNIT=1 MODE=1 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)

PASS=0003 ERRORS=0000 UNIT=1 MODE=1 DENS=1 TYPE=1
HALT instruction, PC: 01237 (JMP I 1377)
Goodbye
RX: writing buffer to file
RX: writing buffer to file
+ rm -f rx0.dsk rx1.dsk

The switches get set like this for testing:

Code:
    9             / +---+---+---+---+---+---+---+---+---+---+---+---+
   10             / | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
   11             / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12             /   |                           |   |   |   |   |
   13             /   |                           |   |   |   |   +------> 0=SD ....... 1=DD
   14             /   |                           |   |   |   +----------> 0=12b ...... 1=8b
   15             /   |                           |   |   +--------------> 0=Unit0 .... 1=Unit1
   16             /   |                           |   +------------------> 0=WriteAll . 1=NoWrite
   17             /   |                           +----------------------> 0=ReadAll .. 1=NoRead
   18             /   +--------------------------------------------------> 0=RUN ...... 1=HALT/EOP

where in the printout above: UNIT=SW<9> MODE=SW<10> DENS=SW<11> TYPE=[RX01/RX8E=0,RX02/RX28=1]

The WriteAll and ReadAll switches enable all sectors to be written/read with data patterns in the expected density.
 
Last edited:
Did some testing today on my PDP-8m using the OS8V3D.RX2 image on unit 0, and an empty/new image TMP1.RX2 I mounted on unit 1.

Booted OS8, get to command line prompt.

ZERO RXA1:
and
COPY RXA1:<RXA0:

copies all the files across. I then did:

ZERO RXA1:
and
DUPLIC RXA1:<RXA0: /N
to image RXA0 to RXA1, and then
DUPLIC RXA1:<RXA0: /M
to compare RXA0: to RXA1: sector by sector

All the commands completed successfully (some took up to about 5min or so to execute, as they read/wrote the whole disk).
 
I spent a while yesterday messing around with DIRXAC and checked out my M8357 which is fine. I also tried a second M8357 and got both the same successful interface test and the same problems accessing RXA1:. I also loaded DIRXBD and saw lots of reads/writes to disk 1 in the Arduino terminal window even though my PDP/8 didn't seem to see it.

I had been doing all my testing with OS/8 V3Q; after reading your note above I booted into OS/8 V3T and everything ran perfectly - I was able to reproduce your results with ZEROing and DUPLIcating both to and from RXA0: and RXA1: with no errors. In both instances, RESORC shows RXA0 and RXA1 as available, so I have no idea what caused the problems I saw in V3Q. I suppose at some point I might reBUILD the V3Q system to see if the handlers have been corrupted but that's not likely.

Of passing interest, error messages in V3Q are all caps, while in V3T they include lower case. Also, in V3T, DIR accepts the /P flag before _or_ after the search value, while in V3Q, /P _must_ follow the search parameters. Strange and stranger.

Regardless, given the correct environment, your RX emulator works just fine in Chicago (at least in rx01 mode; it still fails to read .rx01 files in RX02 mode, though I haven't yet tried .rx02 files in RX02 mode, but as Lou points out, that really isn't a problem).

Thanks again for a fine addition to the PDP world!

Jack
 
Last edited:
Where did you get an OS8 V3T distribution from? I have a V3D RX01 floppy set, and a V3Q on an RX02. I have not seen a V3T variation.

... I'll answer my own question on this one ...

Operator error ... when I went and checked my OS8V3D.RX2 disk image version under OS8, I get this:
Code:
.DIR

LIB8  .RL  29               FLOAT .RL   5               POWERS.RL   3
INTEGR.RL   2               IPOWRS.RL   2               SQRT  .RL   2
TRIG  .RL   2               ATAN  .RL   2               RWTAPE.RL   2
IOPEN .RL   2               GENIOX.RL   3               DIRECT.SV   7
RXCOPY.SV   9               CREF  .SV  13               SRCCOM.SV   5
MCPIP .SV  13               PIP10 .SV  17               PAL8  .SV  19
BITMAP.SV   5               CAMP  .SV  13               EPIC  .SV  14
ABSLDR.SV   6               BUILD .SV  37               BOOT  .SV   5
FOTP  .SV   8               PIP   .SV  11               RESORC.SV  14
CCL   .SV  31               LOADER.SV  12               SABR  .SV  24
FORT  .SV  25               LIBSET.SV   5               IOH   .RL   7
UTILTY.RL   3               BRTS  .SV  15               BASIC .SV   9
BCOMP .SV  17               BLOAD .SV   8               BASIC .AF   4
BASIC .SF   4               BASIC .FF   4               BASIC .UF   4
RESEQ .BA   6               SET   .SV  14               GENIOX.SB  14
BATCH .SV  10               HELP  .SV   8               MSBAT .SV  23
TECO  .SV  22               FUTIL .SV  27               HELP  .HL  55
BPAT  .BN   1               EABRTS.BN  24               F4    .SV  20
PASS2 .SV  20               PASS2O.SV   5               PASS3 .SV   8
RALF  .SV  19               FORLIB.RL 170               FRTS  .SV  26
EDIT  .SV  10               LOAD  .SV  16               LIBRA .SV  11
FPAT  .BN   1

   0 FREE BLOCKS

[B].VER
OS/8 - KBM V3T - CCL V3A[/B]

.

So the V3D disk image I have is really V3T...
 
Last edited:
Just for fun I throw out another option I am pursuing but have not actually done yet. You can get one of David Gesswein's mfm drive emulators for a little over $200 and an RQDX controller to talk to it. Might be a little less pricey.
 
Back
Top