I apologize if this has been asked before, but has anyone used a UNIBONE on a real KS10/2020? Does it work? I think the only emulations that would be useful on a 2020 are the RH11 for disk and tape, and maybe some DZ11 terminals. There are a whole slew of potential issues, such as using the two parity bits as extra data bits, plus just a different UBA and a completely different OS and drivers.
Thanks,
Bob
The one rule was (keeping your formatting): "This is the UniBone mantra: The whole device emulation logic shall be done in Linux user processes."
Since the 2020 was only ever going to need the RH11s of a single device type on each bus, I moved the RH11 emulation and the massbus-side drive registers into the PRU, leaving just the actual storage parts of the disk and tape drives in Linux. I also dumped all of the C++ code and kept only the bits I needed for communicating with the PRU. The rest I wrote in straight C. I was only ever going to emulate the RH11 and the stuff attached to it, so the vast majority of the Unibone user-space code was just overhead in my case. The Chaosnet interface was only a 5 registers and an interrupt latch, so it was done at the very end of things, using the remaining code space in the second Unibone. I wound up with just a handful of bytes of free PRU code space on both sides, and it's not pretty, but it runs.
My priorities were to keep speed up and latency down over all other concerns. I didn't use SimH compatible disk images at all, the disk images are stored in PRU register layout so words can be dumped directly to or from the PRU registers with no shuffling. Sector headers are stored as formatted instead of generated on the fly so I didn't have to spend time generating them when a "read headers and data" command was given (and because ITS uses the "spare" header words for pack identification data). Disk images are mmap()'d on the Linux side so I don't have to issue seek requests in the image file; writes are committed at the end of a (possibly multi-sector) transaction. I don't bother implementing the disk address prediction register because only twenex uses it. The implementation doesn't pass DEC's diagnostics. And so on. I only wanted to run ITS with as little speed penalty as possible.
I also did away with passing bus grants because it used up too much time - The software assumes the Unibone is the last (or only) device on the bus, which is where the RH11 and Chaosnet would normally go anyway.
> pbi...@gmail.com wrote:
> The Living Computer Museum published their designs for Massbus device emulation,>but I don't have the links handy.
Very true – I know it well.
https://github.com/livingcomputermuseum/MDE2
You will need a PC with Windows, PCI slots, and one or two PLX PCI FPGA cards to make this work, though. Not sure what happened to the PLX people, but you might still be able to find one of their cards. The UNIBONE is much more straightforward option if it can be made to work.
AFAIK the LCM never tried this with an RH11 or a 2020, but it certainly worked with the RH20 in a KL, and with the RH70 in Miss Piggy. It would probably work with the 2020.
Bob
--
You received this message because you are subscribed to the Google Groups "UniBone" group.
To unsubscribe from this group and stop receiving emails from it, send an email to unibone+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/unibone/15dced80-176e-4a74-967f-441260fe7bd6n%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "UniBone" group.
To unsubscribe from this group and stop receiving emails from it, send an email to unibone+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/unibone/004a01d8c2c8%2492460620%24b6d21260%24%40com.
To view this discussion on the web visit https://groups.google.com/d/msgid/unibone/b16b418f-dab3-4a51-a2e1-966d3651d597n%40googlegroups.com.