> 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 > [email protected] > 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. _______________________________________________ Simh mailing list [email protected] http://mailman.trailing-edge.com/mailman/listinfo/simh
