Various InterPro changes:
* fixed cpu/mmu ssw bug
* added preliminary nscsi support
* added preliminary mmu address translation
* expanded memory maps for several devices
* improved irq and dma handling (still not working properly)
* stubbed out more sga registers, added srarb
For the following, I don't really know what I'm doing, so please check carefully:
* WARNING: includes a naïve addition of ncr53c94 support to ncr5390.cpp
* WARNING: adds a start/stop unit command to t10spc.cpp
After these changes, ip2800 boots to FDM prompt with a ton of memdiag test failures, but not much else is visibly improved.
* move rarely-used output and pty interfaces out of emu.h
* consolidate and de-duplicate forward declarations, also remove some obsolete ones
* clean up more #include guard macros
* scope down a few more things
(nw) Everyone, please keep forward declarations for src/emu in src/emu/emufwd.h -
this will make it far easier to keep them in sync with declarations than having
them scattered through all the other files.
(nw) This is a pretty minimal change. The point where the root device is added has been moved
from the MACHINE_CONFIG_START macro to the constructor of the machine configuration class (made
possible by giving drivers their own device types). This isn't the final change in this area.
The root device is still being handled specially in that its configuration comes from the game
driver structure. This needs to be harmonised with regular devices. But that's a job for
another day.
* Make -listxml instantiate slot devices in slots rather than under the machine root
* Use dynamic_cast rather than static_cast or downcast on parent device in TI-99 slot/card devices
(nw) There are still very real issues present. When -listxml, -listroms, -verifyroms, etc.
instantiate individual devices, they don't have the information necessary to instantiate the
expected parent device. So slots won't be children of the bus they expect to be attached to,
and cards won't be in their usual slots. It's unsafe to use static_cast<> on owner at the
best of times, and doing anything with the result is likely to cause silent memory corruption
during listxml (this was previously happening with the TI-99 peripheral box slot device).
You can't use downcast<> at configuration complete time either, as that degenerates to a
static_cast<> in release builds anyway, and it will cause a crash in -listxml in debug builds
as we had before. The choices are to use a dynamic_cast and check the result before doing
anything with it before device start time, or wait for device start time and use downcast<>
at that point.