[Simh] More on DMA to IO page

Bob Supnik bob at supnik.org
Thu Sep 6 15:59:51 EDT 2018


Looking at the DEC ChipKit documentation, it seems fairly clear that a 
device implemented with the DC003/5/6/10/21 series of chips never drives 
BBS7. BBS7 is an input to the address matching logic implemented in the 
DC005, but that's it.

On the other hand, the DEC Standard for the LSI11 bus says that devices 
are allowed to do DMA to the IO page, and that testing with the 
mandatory 'missing words' (the first 8 words are reserved) is a standard 
diagnostic technique for testing the NXM logic on a DMA device.

On the other, other hand, Qbus configuration standards also say that the 
last 8KB of physical address space must not be implemented as memory. So 
if the IO page doesn't respond to DMA requests, then the device will 
<still> get an NXM, because there's no memory.

I've looked through the available Qbus DMA device schematics (there 
aren't many), and I see no evidence of devices doing the 9b AND to 
detect IO space and assert BBS7. However, many devices use complex gate 
arrays, and who knows what's going on inside them?

So my tentative conclusion stands: the LSI11 bus did not do DMA to IO 
space, even if it was theoretically possible.

Next, chips. I reread the J11 specification. As I thought, there's no 
way to access any of the registers implemented inside the chipset itself 
from outside. The J11 has no "snoop" function.

On the other hand, there is a small space of "system" registers which 
are expected to be implemented, if at all, in the surrounding CPU logic, 
which was always a gate array. I suspect, but can't prove, that the gate 
arrays didn't respond to DMA requests on these registers either, only on 
DMA requests to real memory. That was certainly true of the first J11 
module, the KDJ11A.

Now, as to bus maps. The 11/70 bus map has a jumper-adjustable upper 
limit for what parts of Unibus address space go through the map, and 
what parts are resolved on the Unibus itself. The maximum value is 
760000; that is, the IO page can never be mapped to memory. The 11/44 
bus map has a jumper adjustable upper and lower limit of unmapped Unibus 
space in addition to the IO page, which is always off limits. The 11/84 
bus map is similar, but the jumpers have been replaced by configuration 
registers.

So my conclusion is that IO mapped PDP11s (which are, of course, always 
Unibus) do support DMA to IO space, so you could put a GT40 (in theory) 
on a Unibus J11, and it would work.

Okay, here's the bottom line, then.

1. There's no need to support DMA to IO space on Qbus systems. It wasn't 
done.
2. Therefore, the ba limit test can be for the 18b Unibus limit on 
Unibus systems, that is,

if (UNIBUS && (ba >= unibus_io_base_page)) {then read/write IO space}

3. It's still necessary to keep DMA access away from the CPU and system 
registers, with all the hair that implies.

Personally, I like Tim's solution of a private interface between 
consenting devices. That would certainly work for the GT40 and its ROM too.

/Bob








More information about the Simh mailing list