[Simh] Simulating the PDP-15/76 Unichannel

E. Groenenberg quapla at xs4all.nl
Tue Mar 17 02:27:58 EDT 2015


> This has been on the wish list for a decade.
>
> The 15/76 Unichannel was a big PDP-15 that used a PDP-11/05 as an IO
> processor to get access to inexpensive Unibus peripherals, particularly
> the RK11-E/RK05, which supported 18b data, the LP11, the CR11, and
> various plotters (not supported in SimH). XVM/DOS and XVM/RSX supported
> the Unichannel, and standard DOS probably did as well.
>
> The 15 and the 11 are crosscoupled through shared memory. Except for
> 4K-12K(W) of local memory, all of Unibus address space is mapped into
> the 15's main memory. DMA transfers from the RK11-E could transfer 18b
> data (using the Unibus parity lines for extra data lines); programmed IO
> transfers from the IO processor transferred 16b data, zeroing out bits
> 0-1 on the 15.
>
> Control is done by a DR15-C parallel interface cross-connected to two
> DR11-C's in the 11. The 15 created task blocks in shared memory and
> transfers an 18b pointer to the 11 via the DR15/11 parallel connection.
> The 11's IO program, called PIREX, executes the directive and sends an
> API interrupt back when done.
>
> Booting is awkward but didn't happen often; both machines had core
> memory that preserved program images.
>
> The method for simulating multiple processors was demonstrated ten years
> ago, but it assumed a from-the-ground-up implementation. Mashing two
> simulator sources together creates serious global variable collisions
> that cannot be resolved without extensive edits to one or the other
> (probably the 11). This is why the HP 2100 Access dual system
> configuration is simulated on two separate simulator instances that
> communicate by TCP/IP. This is not practical for the 11/76 Unichannel,
> because of the shared memory.
>
> Before I venture on a detailed design of a "merged" 15/11 simulator, I
> had one other thought. On today's multi-cores, it's perfectly practical
> to have two simulators running side-by-side, controlled from separate
> terminal windows. However, the two processes would need to share memory.
> Is there some simple way to do this on both Windows and Linux? I'm sure
> there's no portable solution.
>
> /Bob
> _______________________________________________
> Simh mailing list
> Simh at trailing-edge.com
> http://mailman.trailing-edge.com/mailman/listinfo/simh

Bob,

Any current & reasonably seasoned Unix or derivative has shmat() & shmdt()
(or equivalent) calls for attaching & detaching a segment of a given size.

Also MS$ has this
(https://msdn.microsoft.com/en-us/library/windows/desktop/ms686958%28v=vs.85%29.aspx)
so a common API for SIMH would be fairly easy.

Linux   : shmat() / shmdt()
SunOs   : shmat() / shmdt()
BSD     : mmap()  / munmap()
FreeBSD : shm_open() / shm_unlink()
NetBSD  : shm_open() / shm_unlink()

With this feature, it would probably also easy to realize a PDP-11/74
with 4 instances of SIMH.

Regards,

Ed
-- 
Dit is een HTML vrije email / This is an HTML free email.
Zeg NEE tegen de 'slimme' meter.



More information about the Simh mailing list