> On Sep 6, 2018, at 2:32 PM, Timothe Litt <l...@ieee.org> wrote:
> 
> 
> On 05-Sep-18 22:13, Bob Supnik wrote:
>> Apparently, the GT40 does this. So... problems. 
> The KDP (KMC/DUP) and KDZ (KMC/DZ) also do this.   Once the KMC11 was 
> available, this became a fairly popular method to off-load character 
> processing & turn character interrupts into DMA.  When I did the KDP 
> emulation, Mark & I negotiated a private API rather than emulate NPR to the 
> DUP.  See pdp11_kmc.c.  (In the hardware, the KMC ucode runs the dup (or dz) 
> with interrupts disabled & polls the DUP/DZ CSRs often enough to catch 
> individual characters.  It then DMAs validated messages into memory.  The 
> polling would have been pretty expensive to emulate.)
> 
> I can't speak to whether any Qbus device does DMA to the IO page - off-hand, 
> I can't think of a DEC device that would have done that.  
> 
> It's certainly true that if CPU internal registers were accessible to DMA 
> writes, bad things could happen.  However, it may not be necessary to fence 
> them off in the emulator.  In the hardware, I'd expect such
> a device to get a NXM (bus timeout).  Or maybe the write is ignored.  So 
> unless a device exists that expects that behavior, which seems doubtful, the 
> issue can probably be ignored.  Of course, having said that, there'll 
> probably be some diagnostic that tests NPR timeouts that way :-(  
> 
> (Even more evil would be that some early (unibus) 11's had the GPRs in I/O 
> space -- I think an implementation artifact, but it was handy to be able to 
> read them directly off the switches for debugging.)

GPRs in the I/O space is, for the most part, something visible only to console 
switches, not even the program in the CPU let alone I/O devices.  But there is 
one famous example, the 11/05, which can execute code from the GPRs.  And in 
that case, the PC increments by 1 rather than 2 because the GPR addresses are 1 
apart rather than 2.  This allows very short "is this CPU working" tests on an 
11/05 without any functioning memory.

For SIMH, it would be sufficient to make non-CPU I/O space addresses visible to 
DMA.  But as you said, if, say, the MMU addresses were to answer to DMA 
requests, that would probably be ok because existing programs are not going to 
do such a thing.

        paul


_______________________________________________
Simh mailing list
Simh@trailing-edge.com
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to