Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Patrick Mackinlay 2017-07-05 18:15:03 +07:00
commit 98070ae9a3
717 changed files with 7164 additions and 3742 deletions

View File

@ -48,7 +48,7 @@ Fedora Linux
You'll need a few prerequisites from your distro. Make sure you get SDL2 2.0.3 or 2.0.4 as earlier versions are buggy.
**sudo yum install gcc gcc-c++ SDL2-devel SDL2_ttf-devel libXinerama-devel qt5-qtbase-devel qt5-qttools expat-devel fontconfig-devel**
**sudo dnf install gcc gcc-c++ SDL2-devel SDL2_ttf-devel libXinerama-devel qt5-qtbase-devel qt5-qttools expat-devel fontconfig-devel alsa-lib-devel**
Compilation is exactly as described above in All Platforms.

View File

@ -9,40 +9,57 @@ creating address spaces, to which address maps can be associated.
It's used for any device that provides a (logically) address/data bus
other devices can be connected to. It's mainly, but not only, cpus.
The interface allows for up to four address spaces, numbered 0-3, with
symbolic names associated to them in emumem.h for historical reasons.
The interface allows for an unlimited set of address spaces, numbered
with small positive values. The IDs should stay small because they
index vectors to keep the lookup fast. Spaces number 0-3 have an
associated constant name:
+------------+-------------+----------------------+
| Numeric ID | Symbolic ID | Symbolic name |
+============+=============+======================+
| 0 | AS_0 | AS_PROGRAM |
+------------+-------------+----------------------+
| 1 | AS_1 | AS_DATA |
+------------+-------------+----------------------+
| 2 | AS_2 | AS_IO |
+------------+-------------+----------------------+
| 3 | AS_3 | AS_DECRYPTED_OPCODES |
+------------+-------------+----------------------+
+----+---------------+
| ID | Name |
+====+===============+
| 0 | AS_PROGRAM |
+----+---------------+
| 1 | AS_DATA |
+----+---------------+
| 2 | AS_IO |
+----+---------------+
| 3 | AS_OPCODES |
+----+---------------+
Spaces 0 and 3, e.g. AS_PROGRAM and AS_OPCODE, are special for the
debugger and some CPUs. AS_PROGRAM is use by the debugger and the
cpus as the space from with the cpu reads its instructions for the
disassembler. When present, AS_OPCODE is used by the debugger and
some cpus to read the opcode part of the instruction. What opcode
means is device-dependant, for instance for the z80 it's the initial
byte(s) which are read with the M1 signal asserted. For the 68000 is
means every instruction word plus the PC-relative accesses. The main,
but not only, use of AS_OPCODE is to implement hardware decrypting
instructions separately from the data.
2. Setup
--------
| const address_space_config *\ **memory_space_config**\ (address_spacenum spacenum) const
| std::vector<std::pair<int, const address_space_config *>>\ **memory_space_config**\ (int spacenum) const
The device must override that method to provide a vector of pairs
comprising of a space number and its associated
**address_space_config** describing its configuration. Some examples
to look up when needed:
* Standard two-space vector: v60_device
* Conditional AS_OPCODE: z80_device
* Inherit config and add a space: m6801_device
* Inherit config and patch a space: tmpz84c011_device
The device must override that method to provide, for each of the four
address spaces, either an **address_space_config** describing the
space's configucation or **nullptr** if the space is not to be
created.
| bool **has_configured_map**\ () const
| bool **has_configured_map**\ (int index) const
| bool **has_configured_map**\ (address_spacenum index) const
The **has_configured_map** method allows to test in the
**memory_space_config** method whether an **address_map** has been
associated with a given space. That allows to implement optional
memory spaces, such as AS_DECRYPTED_OPCODES in certain cpu cores. The
parameterless version tests for AS_PROGRAM/AS_0.
memory spaces, such as AS_OPCODES in certain cpu cores. The
parameterless version tests for space 0.
3. Associating maps to spaces
-----------------------------
@ -71,29 +88,28 @@ derivative.
| address_space &\ **space**\ () const
| address_space &\ **space**\ (int index) const
| address_space &\ **space**\ (address_spacenum index) const
Returns a given address space post-initialization. The parameterless
version tests for AS_PROGRAM/AS_0. Aborts if the space doesn't exist.
| bool **has_space**\ () const
| bool **has_space**\ (int index) const
| bool **has_space**\ (address_spacenum index) const
Indicates whether a given space actually exists. The parameterless
version tests for AS_PROGRAM/AS_0.
5. Weird/to deprecate stuff
---------------------------
5. MMU support for disassembler
-------------------------------
| bool **translate**\ (address_spacenum spacenum, int intention, offs_t &address)
| bool **read**\ (address_spacenum spacenum, offs_t offset, int size, UINT64 &value)
| bool **write**\ (address_spacenum spacenum, offs_t offset, int size, UINT64 value)
| bool **readop**\ (offs_t offset, int size, UINT64 &value)
| bool **translate**\ (int spacenum, int intention, offs_t &address)
These methods override how the debugger accesses memory for a cpu.
Avoid them if you can. Otherwise, prepare for heavy-duty spelunking in
complicated code.
Does a logical to physical address translation through the device's
MMU. spacenum gives the space number, intention the type of the
future access (TRANSLATE_(READ|WRITE|FETCH)(|_USER|_DEBUG)) and
address is an inout parameter with the address to translate and its
translated version. Should return true if the translation went
correctly, false if the address is unmapped.
If really required, should probably be part of cpu_device directly.
Note that for some historical reason the device itself must override
the virtual method **memory_translate** with the same signature.

View File

@ -5344,6 +5344,22 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="batlches">
<description>Battle Chess</description>
<year>1988</year>
<publisher>Interplay</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Battle Chess (1988)(Interplay)(Disk 1 of 2)[cp codebook].dsk" size="737280" crc="21763440" sha1="680ebdcd55b52910df9bd92792f12df5e80d9412" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Battle Chess (1988)(Interplay)(Disk 2 of 2)[cp codebook].dsk" size="737280" crc="8c0a720f" sha1="9a0b9b8adda97a65da4b2a1490c31f605dfef4a8" offset="0"/>
</dataarea>
</part>
</software>
<software name="bivouac">
<!-- Dumped via Kryoflux, shows as good and unmodified -->
<description>Bivouac</description>
@ -5356,6 +5372,28 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="bladestl">
<description>Blades of Steel</description>
<year>1990</year>
<publisher>Konami</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Blades of Steel (1990)(Konami).dsk" size="737280" crc="9e2ecf8b" sha1="9339e576516b1f36a93a9fb7c0e9c8b3e1f7dabb" offset="0"/>
</dataarea>
</part>
</software>
<software name="bdashkit" supported="no">
<description>Boulder Dash Construction Kit</description>
<year>1987</year>
<publisher>Epyx</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Boulder Dash Construction Kit (1987)(Epyx).dsk" size="368640" crc="7edab8e9" sha1="d2654da37cedc62e723bc516f6b8aa04698faaee" offset="0"/>
</dataarea>
</part>
</software>
<software name="bublbobl">
<description>Bubble Bobble</description>
<year>1989</year>
@ -5414,6 +5452,17 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="cvania">
<description>Castlevania</description>
<year>1990</year>
<publisher>Konami</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="CastleVania (1990)(Konami).dsk" size="737280" crc="85d15847" sha1="31d2fae8cd7036c73500c31812b6c7abf2733b08" offset="0"/>
</dataarea>
</part>
</software>
<software name="caveugh">
<description>Caveman Ugh-Lympics</description>
<year>1988</year>
@ -5583,6 +5632,17 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="cycles">
<description>The Cycles</description>
<year>1989</year>
<publisher>Accolade</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Cycles, The (1989)(Accolade).dsk" size="737280" crc="7912f6ea" sha1="372e3ecb424556bd3dea4723138e66f952117cad" offset="0"/>
</dataarea>
</part>
</software>
<software name="dmnstomb">
<description>Demon's Tomb - The Awakening</description>
<year>1989</year>
@ -5682,6 +5742,31 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="ddribble">
<description>Double Dribble</description>
<year>1990</year>
<publisher>Konami</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Double Dribble (1990)(Konami).dsk" size="737280" crc="bec01cfc" sha1="308fb5a352c667ed191cfae93ad8964beee6ff05" offset="0"/>
</dataarea>
</part>
</software>
<software name="earlweav">
<description>Earl Weaver Baseball</description>
<year>1989</year>
<publisher>Electronic Arts</publisher>
<info name="developer" value="Mirage Graphics" />
<info name="version" value="1.5" />
<part name="flop1" interface="floppy_3_5">
<feature name="disk_serial" value="338802" />
<dataarea name="flop" size = "737280">
<rom name="Earl Weaver Baseball [Electronic Arts] [1989] [3.5].img" size="737280" crc="8fa1a0bf" sha1="70f584be42d2b7687b0c24f4d7f11e8e27ed1def" offset="0"/>
</dataarea>
</part>
</software>
<software name="ferrarf1">
<description>Ferrari Formula One</description>
<year>1989</year>
@ -5710,6 +5795,38 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="futurwar">
<description>Future Wars - Adventures in Time</description>
<year>1990</year>
<publisher>Interplay</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Future Wars - Adventures in Time (1990)(Interplay)(Disk 1 of 3).dsk" size="368640" crc="c87b4f53" sha1="3b3f301a197e2eac53a52168f5ce86876886b74b" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Future Wars - Adventures in Time (1990)(Interplay)(Disk 2 of 3).dsk" size="368640" crc="b5a7f0af" sha1="278554294174dc14c7b96cdf9780d6790ae25b93" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Future Wars - Adventures in Time (1990)(Interplay)(Disk 3 of 3).dsk" size="368640" crc="2f54bdc2" sha1="33fd871aa3607bcb1bad4c3939edf6c06045c29e" offset="0"/>
</dataarea>
</part>
</software>
<software name="gedgsamp">
<description>Gamer's Edge Sampler - Catacomb and Dangerous Dave</description>
<year>1991</year>
<publisher>Softdisk</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Gamer's Edge Sampler - Catacomb and Dangerous Dave (1991)(Softdisk).dsk" size="737280" crc="9fb65c57" sha1="f41ef17bc493fcd950b36d0cd3179430b23a0a94" offset="0"/>
</dataarea>
</part>
</software>
<software name="goldrush">
<description>Gold Rush (Version 2.01, 5.25")</description>
<year>1988</year>
@ -5806,14 +5923,43 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="armorik">
<description>Les 8 Conquêtes d'Armorik le Viking</description>
<year>1988</year>
<publisher>Infogrames</publisher>
<info name="developer" value="Frédéric Sénégas" />
<software name="hardbal2">
<description>Hardball 2</description>
<year>1989</year>
<publisher>Accolade</publisher>
<part name="flop1" interface="floppy_5_25">
<feature name="part_id" value="Disk 1"/>
<dataarea name="flop" size = "368640">
<rom name="Armorik le Viking (Fr).img" size="368640" crc="3445e3da" sha1="c3496901029e162c0e59a028a28e3c6286ca987f" offset="0"/>
<rom name="Hardball 2 [Accolade] [1989] [5.25] [1].img" size="368640" crc="9fa0cbd1" sha1="049fa2adfd77f47f0c64e75874bdd769c2653a9e" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<feature name="part_id" value="Disk 2"/>
<dataarea name="flop" size = "368640">
<rom name="Hardball 2 [Accolade] [1989] [5.25] [2].img" size="368640" crc="566ac0a8" sha1="206f75810db32bc33c570f4bd199ed180ee467b0" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<feature name="part_id" value="Data Disk"/>
<dataarea name="flop" size = "368640">
<rom name="Hardball 2 [Accolade] [1989] [5.25] [Data].img" size="368640" crc="4add75f6" sha1="bc58b7c0dfda0fe94d0f84f75b0a8fa8c1ec46b9" offset="0"/>
</dataarea>
</part>
</software>
<software name="herolanc">
<description>Heroes of the Lance</description>
<year>1991</year>
<publisher>SSI</publisher>
<info name="version" value="1.0" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Heroes of the Lance (1991)(SSI)(Disk 1 of 2).dsk" size="737280" crc="7b01edba" sha1="e34f64f9059c0631f41c871bad786e5b3086c359" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Heroes of the Lance (1991)(SSI)(Disk 2 of 2).dsk" size="737280" crc="a11712fe" sha1="45ac0bd7f42e30f0ebd0ebd1c6455afb477ff563" offset="0"/>
</dataarea>
</part>
</software>
@ -5831,6 +5977,18 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="armorik">
<description>Les 8 Conquêtes d'Armorik le Viking</description>
<year>1988</year>
<publisher>Infogrames</publisher>
<info name="developer" value="Frédéric Sénégas" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Armorik le Viking (Fr).img" size="368640" crc="3445e3da" sha1="c3496901029e162c0e59a028a28e3c6286ca987f" offset="0"/>
</dataarea>
</part>
</software>
<software name="huntred">
<!-- 1994 Slash Corporation re-release -->
<description>The Hunt for Red October</description>
@ -5946,6 +6104,18 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="madden">
<description>John Madden Football</description>
<year>1989</year>
<publisher>Electronic Arts</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="disk_serial" value="347102" />
<dataarea name="flop" size = "737280">
<rom name="John Madden Football [Electronic Arts] [1989] [3.5].img" size="737280" crc="6d70c5cd" sha1="9acae820477eda9606487eacfb2c1aa2a3e20a68" offset="0"/>
</dataarea>
</part>
</software>
<software name="jordbird">
<description>Jordan vs. Bird: One on One</description>
<year>1988</year>
@ -5985,6 +6155,18 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="kbounty">
<!-- Dumped via Kryoflux, track 0 shows as modified -->
<description>King's Bounty</description>
<year>1991</year>
<publisher>New World Computing</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="king's bounty.img" size="737280" crc="267624e2" sha1="763a5014008f46f93a13c822377c41965c09a1f8" offset="0" status="baddump" />
</dataarea>
</part>
</software>
<software name="kingqst4_35" cloneof="kingqst4">
<!-- Dumped via Kryoflux, shows as good and unmodified -->
<description>King's Quest IV: The Perils of Rosella (Version #2.2, 3.5")</description>
@ -6082,6 +6264,18 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="lakecelt">
<description>Lakers vs Celtics and the NBA Playoffs</description>
<year>1989</year>
<publisher>Electronic Arts</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="disk_serial" value="361302" />
<dataarea name="flop" size = "737280">
<rom name="Lakers Versus Celtics [Electronic Arts] [1989] [3.5].img" size="737280" crc="250b9754" sha1="ddabfc228055d876ba249407235ac7fe3b2b5d1c" offset="0"/>
</dataarea>
</part>
</software>
<software name="lasrsurg">
<description>Laser Surgeon - The Microscopic Mission</description>
<year>1987</year>
@ -6173,6 +6367,54 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="links">
<description>Links - The Challenge of Golf v1.10</description>
<year>1990</year>
<publisher>Access Software</publisher>
<info name="usage" value="VGA or MCGA required" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Links - The Challenge Of Golf v1.10 (1990)(Access Software)(Disk 1 of 5).dsk" size="368640" crc="ee45b24c" sha1="1f94381f287555e018eb9f760a980372ced8f783" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Links - The Challenge Of Golf v1.10 (1990)(Access Software)(Disk 2 of 5).dsk" size="368640" crc="b1b3956d" sha1="200f051820833203ea20633ed5a6c94df5e71ec4" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Links - The Challenge Of Golf v1.10 (1990)(Access Software)(Disk 3 of 5).dsk" size="368640" crc="04c91f40" sha1="529c1df6c7668d827cec1f040086a6038fdb35db" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Links - The Challenge Of Golf v1.10 (1990)(Access Software)(Disk 4 of 5).dsk" size="368640" crc="0a8090f9" sha1="0622d2b227179480691a46a44e36a5c49bf468f7" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Links - The Challenge Of Golf v1.10 (1990)(Access Software)(Disk 5 of 5).dsk" size="368640" crc="26c18083" sha1="8ff9414b9ca0365a124fd6407025eece4f1ab25d" offset="0"/>
</dataarea>
</part>
</software>
<software name="linksbnt">
<description>Links - Championship Course - Bountiful Golf Course</description>
<year>1991</year>
<publisher>Access Software</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Links - Championship Course - Bountiful Golf Course (1991)(Access Software)(Disk 1 of 2).dsk" size="368640" crc="71c17070" sha1="93b32aed3d000011f38066e0c6e3d1b201a0fc96" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Links - Championship Course - Bountiful Golf Course (1991)(Access Software)(Disk 2 of 2).dsk" size="368640" crc="0c9664aa" sha1="a6977e88cf98a673164d9ac9698585edc01e3dc8" offset="0"/>
</dataarea>
</part>
</software>
<software name="lurkingh">
<description>The Lurking Horror</description>
<year>1987</year>
@ -6184,6 +6426,53 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="mortviel">
<description>Le Manoir de Mortevielle</description>
<year>1988</year>
<publisher>Lankhor</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="[PC] Le Manoir de Mortevielle [5.25].img" size="368640" crc="4eebc049" sha1="1f9a8fe4978b76bf14c674a8f681c58e18fa4443" offset="0"/>
</dataarea>
</part>
</software>
<software name="meanst">
<description>Mean Streets</description>
<year>1989</year>
<publisher>Access Software</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Mean Streets (1989)(Access Software)(Disk 1 of 6).dsk" size="368640" crc="28e7ee39" sha1="ad1f8353a683497905b7cbcb304a2833f8d56252" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Mean Streets (1989)(Access Software)(Disk 2 of 6).dsk" size="368640" crc="8ce01fcc" sha1="3858059b7c22ac659e011303328246e58c4aa9a6" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Mean Streets (1989)(Access Software)(Disk 3 of 6).dsk" size="368640" crc="59121149" sha1="6bac84c2b7037ba1ba65fe6770875f731cd1c45d" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Mean Streets (1989)(Access Software)(Disk 4 of 6).dsk" size="368640" crc="e953194f" sha1="c831ea1ff6333f45a8575e3959e321e551667b87" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Mean Streets (1989)(Access Software)(Disk 5 of 6).dsk" size="368640" crc="060cc1ea" sha1="1f4a85965f99914e6cb902c56b2ba32dad7d73cc" offset="0"/>
</dataarea>
</part>
<part name="flop6" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Mean Streets (1989)(Access Software)(Disk 6 of 6).dsk" size="368640" crc="081590ba" sha1="1a56175e7c17706a9d66fb4e18becbe99b2df38c" offset="0"/>
</dataarea>
</part>
</software>
<software name="megaman">
<description>Mega Man</description>
<year>1990</year>
@ -6250,6 +6539,80 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="monopoly">
<description>Monopoly v2.00 (Shareware)</description>
<year>1989</year>
<publisher>TEGL Systems Corporation</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Monopoly v2.00 (1989-09-03)(TEGL Systems Corporation)[shareware].dsk" size="368640" crc="8e9dd1fb" sha1="7fe3f54b9b2acf7903033ec3763708a37fc5afcf" offset="0"/>
</dataarea>
</part>
</software>
<software name="montypyt">
<description>Monty Python's Flying Circus</description>
<year>1990</year>
<publisher>Virgin Games</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Monty Python's Flying Circus (1990)(Virgin Games)(Disk 1 of 2).dsk" size="368640" crc="a5f227b5" sha1="e3b23a09ceed2681c504b78071660dc378051839" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Monty Python's Flying Circus (1990)(Virgin Games)(Disk 2 of 2).dsk" size="368640" crc="c1c40d8c" sha1="b724017f7a314cac625463d1aa106eaeac669288" offset="0"/>
</dataarea>
</part>
</software>
<software name="ngaiden2">
<description>Ninja Gaiden II - The Dark Sword of Chaos</description>
<year>1991</year>
<publisher>GameTek</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Ninja Gaiden II - The Dark Sword of Chaos (1991)(GameTek).dsk" size="737280" crc="f69da21d" sha1="d9a8bc1d5a9d4314c3b4df078fdd7aa7d92a7b6c" offset="0"/>
</dataarea>
</part>
</software>
<software name="nova9">
<description>Nova 9 - Return of Gir Draxon</description>
<year>1991</year>
<publisher>Sierra</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Nova 9 - Return of Gir Draxon (1991)(Sierra On-Line)(Disk 1 of 6).dsk" size="737280" crc="de0b75ae" sha1="31590a0c27972a3a956ac853276bc2da770ffef8" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Nova 9 - Return of Gir Draxon (1991)(Sierra On-Line)(Disk 2 of 6).dsk" size="737280" crc="b3756c77" sha1="a818d399fa8b9a77a09217bb6a99f18cbf42acfd" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Nova 9 - Return of Gir Draxon (1991)(Sierra On-Line)(Disk 3 of 6).dsk" size="737280" crc="19411f94" sha1="1580aa2a51991b8463fc3179612c9d96341f03d9" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Nova 9 - Return of Gir Draxon (1991)(Sierra On-Line)(Disk 4 of 6).dsk" size="737280" crc="a69a0ec3" sha1="84c32577287f9a581f2ec0fbebe354d27da9a7c5" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Nova 9 - Return of Gir Draxon (1991)(Sierra On-Line)(Disk 5 of 6).dsk" size="737280" crc="1c283926" sha1="b077201788af23bc55af4a76ba55e00495717827" offset="0"/>
</dataarea>
</part>
<part name="flop6" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Nova 9 - Return of Gir Draxon (1991)(Sierra On-Line)(Disk 6 of 6).dsk" size="737280" crc="095ea434" sha1="16a443f8f8d3471908b1c5dc4850b4b266081ab9" offset="0"/>
</dataarea>
</part>
</software>
<software name="opwolf">
<description>Operation Wolf</description>
<year>1989</year>
@ -6267,6 +6630,28 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="overnet">
<description>Over the Net</description>
<year>1991</year>
<publisher>Genias</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Over the Net (1991)(Genias).dsk" size="737280" crc="71e8f2d0" sha1="e2b758f7484e602d6ac5b7375b46591f5f7230ee" offset="0"/>
</dataarea>
</part>
</software>
<software name="ppursuit">
<description>Pharaoh's Pursuit</description>
<year>1990</year>
<publisher>Lone Star Micro</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Pharaoh's Pursuit (1990)(Lone Star Micro).dsk" size="368640" crc="0118fdf4" sha1="23b212ad4defaf5a150ef4aba369d4a804632238" offset="0"/>
</dataarea>
</part>
</software>
<software name="ptomb">
<description>Pharaoh's Tomb</description>
<year>1990</year>
@ -6515,6 +6900,17 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="silvblad">
<description>Secret of the Silver Blades</description>
<year>1990</year>
<publisher>SSI</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Secret of the Silver Blades (1990)(SSI).dsk" size="737280" crc="fac4327b" sha1="05c4a640183fb83d7c539eefb4f82cb213ebaa9f" offset="0"/>
</dataarea>
</part>
</software>
<software name="agidemos">
<description>Sierra Demo</description>
<year>1987</year>
@ -6586,6 +6982,22 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="spdball2">
<description>Speedball II - Brutal Deluxe</description>
<year>1990</year>
<publisher>Imageworks</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Speedball II - Brutal Deluxe (1990)(Imageworks)(Disk 1 of 2).dsk" size="368640" crc="7076b522" sha1="80e4d60ebe4c948f13897fb74c403b22a2acfceb" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Speedball II - Brutal Deluxe (1990)(Imageworks)(Disk 2 of 2).dsk" size="368640" crc="09fc221a" sha1="a71468919cb0d32706de00dae2cc14ca0b471a62" offset="0"/>
</dataarea>
</part>
</software>
<software name="stargoos">
<description>Star Goose!</description>
<year>1989</year>
@ -6652,6 +7064,38 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="sfightmn">
<description>Street Fighting Man</description>
<year>1989</year>
<publisher>Mastertronic</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Street Fighting Man (1989)(Mastertronic)(Disk 1 of 2).dsk" size="368640" crc="949cdf13" sha1="89d6b45d0ec0a0ca46a90c27ad9376b827cf68a1" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Street Fighting Man (1989)(Mastertronic)(Disk 2 of 2).dsk" size="368640" crc="2e02db73" sha1="17bd0ca7c558e9908a9cb8de19024ade0ef70c24" offset="0"/>
</dataarea>
</part>
</software>
<software name="superc">
<description>Super C</description>
<year>1990</year>
<publisher>Konami</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Super C (1990)(Konami)(Disk 1 of 2).dsk" size="368640" crc="704de33b" sha1="1a3d942382efb6a7bd03a9dffd13f69b2fa87d77" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Super C (1990)(Konami)(Disk 2 of 2).dsk" size="368640" crc="c52c1b46" sha1="3e3f341b074e291c6847670409617b23764b3554" offset="0"/>
</dataarea>
</part>
</software>
<software name="superman">
<description>Superman - The Man of Steel</description>
<year>1989</year>
@ -6669,6 +7113,55 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="sshockey">
<description>Superstar Ice Hockey</description>
<year>1987</year>
<publisher>Mindscape</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Superstar Ice Hockey (1987)(Mindscape).dsk" size="368640" crc="1bf48493" sha1="269b6a48ac11705497ce0e94d61430b63fa88ad3" offset="0"/>
</dataarea>
</part>
</software>
<software name="ssindsoc">
<description>Superstar Indoor Soccer</description>
<year>1991</year>
<publisher>Mindscape</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Superstar Indoor Soccer (1991)(Mindscape).dsk" size="368640" crc="eb4ba702" sha1="9418cb562a635337c1fbdb770c15f4d6a923ac49" offset="0"/>
</dataarea>
</part>
</software>
<software name="ssindspo">
<description>Superstar Indoor Sports</description>
<year>1987</year>
<publisher>Mindscape</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Superstar Indoor Sports (1987)(Mindscape)(Disk 1 of 2).dsk" size="368640" crc="ea6d5fda" sha1="2860445cf86b5fbb9505cc6b2d4f941af3c79046" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Superstar Indoor Sports (1987)(Mindscape)(Disk 2 of 2).dsk" size="368640" crc="83dccd51" sha1="52725b2fdb02b2a4b313f7bd7d981d6a79578735" offset="0"/>
</dataarea>
</part>
</software>
<software name="ssoutsoc">
<description>Superstar Outdoor Soccer</description>
<year>1991</year>
<publisher>Mindscape</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Superstar Outdoor Soccer (1991)(Mindscape).dsk" size="368640" crc="e4e0f70f" sha1="48fcb5a65edd641abc7f9c0451e37c00ba94850a" offset="0"/>
</dataarea>
</part>
</software>
<software name="term2">
<description>Terminator 2: Judgment Day</description>
<year>1991</year>
@ -6697,7 +7190,7 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="tetris35">
<software name="tetris35" cloneof="tetris">
<description>Tetris (3.5")</description>
<year>1987</year>
<publisher>Spectrum Holobyte</publisher>
@ -6708,6 +7201,32 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="topgold2">
<description>Top 10 Solid Gold Volume II</description>
<year>1991</year>
<publisher>US Gold</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Top 10 Solid Gold Volume II (1991)(US Gold)(Disk 1 of 4).dsk" size="368640" crc="a51f8fb4" sha1="9cad7c597d1025fbb066b8f40c879e01bdede8e5" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Top 10 Solid Gold Volume II (1991)(US Gold)(Disk 2 of 4).dsk" size="368640" crc="5b46b6ca" sha1="6b157e8384822874f5fa7a6b8a918fc2a98add67" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Top 10 Solid Gold Volume II (1991)(US Gold)(Disk 3 of 4).dsk" size="368640" crc="48a77034" sha1="53220db6fff4a0165bdd44baac86a374544e3030" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Top 10 Solid Gold Volume II (1991)(US Gold)(Disk 4 of 4).dsk" size="368640" crc="56440dfb" sha1="564bf308941f3fb3a64e7498c4a14c734b6507d4" offset="0"/>
</dataarea>
</part>
</software>
<software name="turbdriv" supported="no">
<description>Turbo Driver</description>
<year>1987</year>
@ -6768,6 +7287,17 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="wingfury">
<description>Wings of Fury</description>
<year>1989</year>
<publisher>Brøderbund Software</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Wings of Fury (1989)(Broderbund Software).dsk" size="737280" crc="6bd8681a" sha1="43d1e493afb80b25949c5208cd1f7085b40529ef" offset="0"/>
</dataarea>
</part>
</software>
<software name="wclead">
<description>World Class Leader Board</description>
<year>1988</year>
@ -6834,6 +7364,17 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="zool">
<description>Zool</description>
<year>1993</year>
<publisher>Gremlin Graphics</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Zool (1993)(Gremlin Graphics).dsk" size="737280" crc="43856c04" sha1="714f5b4d7049b98a1aca94b80a1f32bb1c9da049" offset="0"/>
</dataarea>
</part>
</software>
<!-- Demoscene -->
<software name="8088mph" supported="partial">

View File

@ -1188,6 +1188,49 @@ Missing files come here
</part>
</software>
<software name="pcdos405v">
<description>IBM Personal Computer DOS (Version J4.05/V) (Japanese)</description>
<year>1990</year>
<publisher>IBM</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<!-- converted from name="DOS405V.DDI" size="1128960" crc="2a5e4089" sha1="9845e15010889f2f2dbee8a3faf37f13766743cc" -->
<rom name="dos405v.img" size="1228800" crc="1127683f" sha1="a6988935b93b7c2403140aad4f51e42f2733a8d5" offset="0"/>
</dataarea>
</part>
</software>
<software name="pcdos5v" supported="no">
<description>IBM Personal Computer DOS (Version J5.00/V) (Japanese)</description>
<year>1991</year>
<publisher>IBM</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk01.img" size="1474560" crc="c3699994" sha1="f5d5f6350d0609f1de4aecca1a2ff302d3ad5225" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "1228800">
<rom name="disk02.img" size="1228800" crc="43f22565" sha1="e7351387944ecfbbda9efbad9d567896a870a770" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size = "1228800">
<rom name="disk03.img" size="1228800" crc="714a4d26" sha1="b4e8407368bd1d1f23de38a545096e4a0a8b84e8" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk04.img" size="1474560" crc="571bc8aa" sha1="f223bc7b84ff066c423eddc9dfa60778f82f0a89" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk05.img" size="1474560" crc="e24329ac" sha1="fe7c389be39f5461bcb2adf7cf80e5b7b4cbd2b0" offset="0"/>
</dataarea>
</part>
</software>
<software name="pcdos61">
<description>IBM DOS (Version 6.1)</description>
<year>1993</year>
@ -1576,6 +1619,67 @@ Missing files come here
</part>
</software>
<software name="pcdos70jaau" supported="no">
<description>PC DOS 7.00A/V Update (Japanese)</description>
<year>1995</year>
<publisher>IBM</publisher>
<info name="version" value="J7.00A/V" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk01.img" size="1474560" crc="d13e5b29" sha1="0ccb7a4ddb0a2405eb3012b6564ea27394422e36" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk02.img" size="1474560" crc="cfc0372f" sha1="65997b0bf6b88cea92d8a8ed4d212543889f7f18" offset="0"/>
</dataarea>
</part>
</software>
<software name="pcdos70jabu" supported="no">
<description>PC DOS 7.00B/V Update (Japanese)</description>
<year>1995</year>
<publisher>IBM</publisher>
<info name="version" value="J7.00B/V" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk01.img" size="1474560" crc="2b80c78a" sha1="91a8f4c9b8c79d9fddc96309a41dbcc867271bb9" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk02.img" size="1474560" crc="6882daea" sha1="dcf3b3e98717c112e69cae5738169068c6eaeb85" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk03.img" size="1474560" crc="1e8af204" sha1="a0d1f88a4f4a07df11004b3783e62d3be3fccaa2" offset="0"/>
</dataarea>
</part>
</software>
<software name="pcdos70jacu" supported="no">
<description>PC DOS 7.00C/V Update (Japanese)</description>
<year>1995</year>
<publisher>IBM</publisher>
<info name="version" value="J7.00C/V" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk01.img" size="1474560" crc="6325f1dd" sha1="8ce2ff548841ec655493b90353de7868c68e7355" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk02.img" size="1474560" crc="9f44b8a7" sha1="b30646ce4b96d95db3a64c5168de23986c759f1f" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk03.img" size="1474560" crc="15a43440" sha1="70b387dd45a58a5b70d2979f7f425ba67b7508e6" offset="0"/>
</dataarea>
</part>
</software>
<software name="pcdos2k">
<description>IBM PC DOS 2000</description>
<year>1998</year>
@ -1970,6 +2074,43 @@ Missing files come here
</part>
</software>
<software name="msdos62v" cloneof="msdos62" supported="no">
<description>MS-DOS (Version 6.2/V) (Japanese)</description>
<year>1993</year>
<publisher>Microsoft</publisher>
<info name="version" value="6.2/V" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk1v.img" size="1474560" crc="5827f2b3" sha1="d625f629b3302cff83ec34bab3a3d02d2f133a04" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk2v.img" size="1474560" crc="dd60e0ef" sha1="c9612d65d9b15e8b432ce50797d8f502845cb77a" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk3v.img" size="1474560" crc="275f622f" sha1="3dff00f6e08f2cdafc99c0b9ba5769a675bc5731" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk4v.img" size="1474560" crc="e0be2d2f" sha1="866b288ab0f844c0fa6260aa05204541449c39ea" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk5v.img" size="1474560" crc="3ff5cdba" sha1="15c5e5d9165bcd33ea9238b2dd4cb2a5a51d100e" offset="0"/>
</dataarea>
</part>
<part name="flop6" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="disk6v.img" size="1474560" crc="8c4c0ac7" sha1="a56ec288e014bc2d2d9c06a10e9a69eaced811fb" offset="0"/>
</dataarea>
</part>
</software>
<software name="msdos621">
<description>MS-DOS (Version 6.21)</description>
<year>1994</year>
@ -2029,29 +2170,6 @@ Missing files come here
</part>
</software>
<software name="msdos622g" cloneof="msdos622">
<!-- KryoFlux dump from original disks, shows as unmodified -->
<description>MS-DOS (Version 6.22, German)</description>
<year>1994</year>
<publisher>Microsoft</publisher>
<info name="version" value="6.22" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="MS_DOS_6.22_German_disk1.img" size="1474560" crc="59641924" sha1="df473043d61524d74a8391c4649e7362858b6d81" offset="0" />
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="MS_DOS_6.22_German_disk2.img" size="1474560" crc="600c5a02" sha1="2b1b7e938cb8eb7bb4eac35a36bd9415fbfe31d3" offset="0" />
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="MS_DOS_6.22_German_disk3.img" size="1474560" crc="95f32c5d" sha1="ed1358083d1c56105356e4b029e2beca6d6211da" offset="0" />
</dataarea>
</part>
</software>
<software name="msdos622a" cloneof="msdos622">
<!-- from Acer CPR 1.2 recovery CD-ROM -->
<description>MS-DOS (Version 6.22, Alt)</description>
@ -2151,6 +2269,60 @@ Missing files come here
</part>
</software>
<software name="msdos622de" cloneof="msdos622">
<!-- KryoFlux dump from original disks, shows as unmodified -->
<description>MS-DOS (Version 6.22, German)</description>
<year>1994</year>
<publisher>Microsoft</publisher>
<info name="version" value="6.22" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="MS_DOS_6.22_German_disk1.img" size="1474560" crc="59641924" sha1="df473043d61524d74a8391c4649e7362858b6d81" offset="0" />
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="MS_DOS_6.22_German_disk2.img" size="1474560" crc="600c5a02" sha1="2b1b7e938cb8eb7bb4eac35a36bd9415fbfe31d3" offset="0" />
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="MS_DOS_6.22_German_disk3.img" size="1474560" crc="95f32c5d" sha1="ed1358083d1c56105356e4b029e2beca6d6211da" offset="0" />
</dataarea>
</part>
</software>
<software name="msdos622ptbr" cloneof="msdos622">
<description>MS-DOS (Version 6.22, Brazilian Portuguese)</description>
<year>1994</year>
<publisher>Microsoft</publisher>
<info name="version" value="6.22" />
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Installation Disk" />
<dataarea name="flop" size = "1474560">
<rom name="MS-DOS 6.22 [BR] - Disk 1 of 4 - Installation Disk (Bootable).img" size="1474560" crc="0bd427df" sha1="9bee890cbd06d10d5b751700df17e48b6f516cc4" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Tools Disk (1)" />
<dataarea name="flop" size = "1474560">
<rom name="MS-DOS 6.22 [BR] - Disk 2 of 4 - Tools Disk (1).img" size="1474560" crc="9744e974" sha1="3459d87140b035515255bcde19df03e0c4310495" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<feature name="part_id" value="Tools Disk (2)" />
<dataarea name="flop" size = "1474560">
<rom name="MS-DOS 6.22 [BR] - Disk 3 of 4 - Tools Disk (2).img" size="1474560" crc="f92b43b8" sha1="8db7f62bd89130abda581433173b0e329a90e2b7" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<feature name="part_id" value="Supplemental Disk" />
<dataarea name="flop" size = "1474560">
<rom name="MS-DOS 6.22 [BR] - Disk 4 of 4 - Supplemental Disk.img" size="1474560" crc="491b3f2c" sha1="1b288096d3d59af039c591d68bf1490fbe1929e0" offset="0"/>
</dataarea>
</part>
</software>
<software name="msdos622sup" cloneof="msdos622">
<!-- Added Bad_Dump status, as questions remains on how they were dumped -->
<!-- Missing from this group: the 360kb Disk set-->
@ -5443,6 +5615,32 @@ Missing files come here
</part>
</software>
<software name="b17">
<description>B-17 Flying Fortress</description>
<year>1992</year>
<publisher>MicroProse</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="B-17 Flying Fortress (1992)(MicroProse)(Disk 1 of 4).dsk" size="1474560" crc="5520ba43" sha1="f9667ee9e1bb355eea027fe1b7bce0c3b8d70e85" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="B-17 Flying Fortress (1992)(MicroProse)(Disk 2 of 4).dsk" size="1474560" crc="d6133a8f" sha1="52ca52b88bf4f37bc1c2fc6d29fbc726fbe98013" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="B-17 Flying Fortress (1992)(MicroProse)(Disk 3 of 4).dsk" size="1474560" crc="ccedd1f0" sha1="fb7ad5f0c3a02dc96e17b888143dde8c0fb6b5e8" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="B-17 Flying Fortress (1992)(MicroProse)(Disk 4 of 4).dsk" size="1474560" crc="cc028485" sha1="68ade93d34ae98167d1fe25f237f17328e847a76" offset="0"/>
</dataarea>
</part>
</software>
<software name="bibadv">
<description>Bible Adventures</description>
<year>1992</year>
@ -5482,6 +5680,17 @@ Missing files come here
</part>
</software>
<software name="bodyblow">
<description>Body Blows</description>
<year>1993</year>
<publisher>Team 17</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Body Blows (1993)(Team 17)[cp manual].dsk" size="1474560" crc="c0b04cc0" sha1="08219a0cb4ce9d6a0766bb1d1820bc1e25876178" offset="0"/>
</dataarea>
</part>
</software>
<software name="boppin">
<description>Boppin' (Super Ultimate, v1.1)</description>
<year>1994</year>
@ -5660,6 +5869,17 @@ Missing files come here
</part>
</software>
<software name="corncob">
<description>Corncob Deluxe</description>
<year>1992</year>
<publisher>Personal Companion Software</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Corncob Deluxe (1992)(Personal Companion Software).dsk" size="737280" crc="1020897e" sha1="800e3adc74674d7433f1519b906dd35f3d996567" offset="0"/>
</dataarea>
</part>
</software>
<software name="cosmo">
<description>Cosmo's Cosmic Adventure - Forbidden Planet</description>
<year>1992</year>
@ -6070,6 +6290,22 @@ Missing files come here
</part>
</software>
<software name="dune">
<description>Dune</description>
<year>1992</year>
<publisher>Virgin Games</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="Dune (1992)(Virgin Games)(Disk 1 of 2).dsk" size="1228800" crc="373be931" sha1="484f3e25773caf433616f12c6b56984425270d64" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="Dune (1992)(Virgin Games)(Disk 2 of 2).dsk" size="1228800" crc="20804491" sha1="602d01255eb53183f59e32b4c0a1a338c6837230" offset="0"/>
</dataarea>
</part>
</software>
<software name="dune2">
<description>Dune II - The Battle for Arrakis</description>
<year>1993</year>
@ -6185,7 +6421,7 @@ Missing files come here
<software name="eschell">
<description>Escape From Hell</description>
<year>1990</year>
<publisher>Electronic Arts, Inc.</publisher>
<publisher>Electronic Arts</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="368640">
<rom name="disk1.img" size="368640" crc="74856caa" sha1="fab7f8e551bcf735952b95237d2531e6d1bbb645" offset="0" />
@ -6219,10 +6455,37 @@ Missing files come here
</part>
</software>
<software name="gconqust">
<description>Global Conquest</description>
<year>1992</year>
<publisher>Microplay</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Global Conquest (1992)(Microplay)(Disk 1 of 2).dsk" size="737280" crc="cc34328c" sha1="a575e663a0ef14458c6d956da6e741f47b10176e" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Global Conquest (1992)(Microplay)(Disk 2 of 2).dsk" size="737280" crc="30f85fa1" sha1="315ebf4f20a17c9f532c22e9f61d4fe58e98bc7b" offset="0"/>
</dataarea>
</part>
</software>
<software name="gconqstg">
<description>Global Conquest Official Strategy Guide</description>
<year>1992</year>
<publisher>Microplay</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Global Conquest Official Strategy Guide (1992)(Microplay).dsk" size="737280" crc="53a53988" sha1="71da5ea2a930191c77e4fb1825febe21e7a917b4" offset="0"/>
</dataarea>
</part>
</software>
<software name="goblins">
<description>Gobliiins (US - VGA release)</description>
<year>1992</year>
<publisher>Sierra On-Line, Inc.</publisher>
<publisher>Sierra</publisher>
<info name="version" value="1.000 09/11/92" />
<info name="developer" value="Coktel Vision, M.D.O." />
<part name="flop1" interface="floppy_3_5">
@ -6240,7 +6503,7 @@ Missing files come here
<software name="goblins2">
<description>Gobliins 2: The Prince Buffoon</description>
<year>1993</year>
<publisher>Sierra On-Line, Inc.</publisher>
<publisher>Sierra</publisher>
<info name="version" value="1.000.000 02/10/93" />
<info name="developer" value="Coktel Vision, M.D.O." />
<part name="flop1" interface="floppy_3_5">
@ -6258,7 +6521,7 @@ Missing files come here
<software name="goblins3">
<description>Goblins Quest 3</description>
<year>1993</year>
<publisher>Sierra On-Line, Inc.</publisher>
<publisher>Sierra</publisher>
<info name="version" value="1.00" />
<info name="developer" value="Coktel Vision" />
<part name="flop1" interface="floppy_3_5">
@ -6556,14 +6819,117 @@ Missing files come here
</part>
</software>
<software name="kbounty">
<!-- Dumped via Kryoflux, track 0 shows as modified -->
<description>King's Bounty</description>
<year>1991</year>
<publisher>New World Computing</publisher>
<software name="kingqst5">
<description>King's Quest V - Absence Makes the Heart Go Yonder!</description>
<year>1990</year>
<publisher>Sierra</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="king's bounty.img" size="737280" crc="267624e2" sha1="763a5014008f46f93a13c822377c41965c09a1f8" offset="0" status="baddump" />
<feature name="part_id" value="Startup Disk" />
<dataarea name="flop" size = "1474560">
<!-- has a saved configuration file -->
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (1990)(Sierra On-Line)(Disk 1 of 8).dsk" size="1474560" crc="f5ba7763" sha1="17308670441b68975e62e43fd5e62e450b63aa39" offset="0" status="baddump"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size = "1474560">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (1990)(Sierra On-Line)(Disk 2 of 8).dsk" size="1474560" crc="64301d2a" sha1="42b88d1f42166159933ab6732842794592edb4a5" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<feature name="part_id" value="Disk 2" />
<dataarea name="flop" size = "1474560">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (1990)(Sierra On-Line)(Disk 3 of 8).dsk" size="1474560" crc="a4a83cf3" sha1="b9e93420475e20333735bc45eed5035aebd304cd" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<feature name="part_id" value="Disk 3" />
<dataarea name="flop" size = "1474560">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (1990)(Sierra On-Line)(Disk 4 of 8).dsk" size="1474560" crc="9471702d" sha1="b7d86ed264c382a6dd5c273665950282f62a7fa1" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_3_5">
<feature name="part_id" value="Disk 4" />
<dataarea name="flop" size = "1474560">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (1990)(Sierra On-Line)(Disk 5 of 8).dsk" size="1474560" crc="a7db36ba" sha1="71e8917cb7b416cfc550328ef0b4f9dfc5585a39" offset="0"/>
</dataarea>
</part>
<part name="flop6" interface="floppy_3_5">
<feature name="part_id" value="Disk 5" />
<dataarea name="flop" size = "1474560">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (1990)(Sierra On-Line)(Disk 6 of 8).dsk" size="1474560" crc="3eb4d622" sha1="624c19c35a5614f81972d3ef461114462211a4b3" offset="0"/>
</dataarea>
</part>
<part name="flop7" interface="floppy_3_5">
<feature name="part_id" value="Disk 6" />
<dataarea name="flop" size = "1474560">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (1990)(Sierra On-Line)(Disk 7 of 8).dsk" size="1474560" crc="c6d32a66" sha1="bf4ad8019fa543046c46cc06002f8b4185fe38b2" offset="0"/>
</dataarea>
</part>
<part name="flop8" interface="floppy_3_5">
<feature name="part_id" value="Disk 7" />
<dataarea name="flop" size = "1474560">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (1990)(Sierra On-Line)(Disk 8 of 8).dsk" size="1474560" crc="474c2cc7" sha1="8847d6dc07c49dcc2022c46fb1086c77155c7f47" offset="0"/>
</dataarea>
</part>
</software>
<software name="kingqst5_525" cloneof="kingqst5">
<description>King's Quest V - Absence Makes the Heart Go Yonder! (Re-release)</description>
<year>1990</year>
<publisher>Sierra</publisher>
<part name="flop1" interface="floppy_5_25">
<feature name="part_id" value="Startup Disk" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 9).img" size="1228800" crc="6f17c558" sha1="1a357f90580470d2afd905657087b45eba4beba0" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 1).img" size="1228800" crc="ce59191c" sha1="0f02214a7c4358075e49d553c3865be5d6847f8c" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<feature name="part_id" value="Disk 2" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 2).img" size="1228800" crc="12977d48" sha1="09b3d3d33c854458249dc1568fe02174646f4ff6" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<feature name="part_id" value="Disk 3" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 3).img" size="1228800" crc="56ea7dd6" sha1="6a8910ba2a9c6e07accd09e7636dea43d16c7282" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_5_25">
<feature name="part_id" value="Disk 4" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 4).img" size="1228800" crc="37d3bd46" sha1="0cec3d03ac78aaa063cde53a44f5a5b6b9afee6a" offset="0"/>
</dataarea>
</part>
<part name="flop6" interface="floppy_5_25">
<feature name="part_id" value="Disk 5" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 5).img" size="1228800" crc="2427f41f" sha1="66bac67e2c5c4daa98cf95b6efbeb81d33ee218c" offset="0"/>
</dataarea>
</part>
<part name="flop7" interface="floppy_5_25">
<feature name="part_id" value="Disk 6" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 6).img" size="1228800" crc="62792b08" sha1="ced1e2c11067f29c16fe5ca7e744cb984d68f77d" offset="0"/>
</dataarea>
</part>
<part name="flop8" interface="floppy_5_25">
<feature name="part_id" value="Disk 7" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 7).img" size="1228800" crc="3769b33b" sha1="fa322e80edb7b17a4541d69ca6648a0d3c88dec1" offset="0"/>
</dataarea>
</part>
<part name="flop9" interface="floppy_5_25">
<feature name="part_id" value="Disk 8" />
<dataarea name="flop" size = "1228800">
<rom name="King's Quest V - Absence Makes the Heart Go Yonder! (USA) (Re-release) (Disk 8).img" size="1228800" crc="99a71113" sha1="3d68e348c5412b78174c54c558a4cca11de053ef" offset="0"/>
</dataarea>
</part>
</software>
@ -6624,6 +6990,30 @@ Missing files come here
</part>
</software>
<software name="lightspd">
<description>Lightspeed</description>
<year>1990</year>
<publisher>MicroProse</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk A" />
<dataarea name="flop" size = "737280">
<rom name="Lightspeed (1990)(MicroProse)(Disk 1 of 3).dsk" size="737280" crc="ccd5011e" sha1="34287faea30e4b8c589f8a18cc9e511d528e439e" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Disk B" />
<dataarea name="flop" size = "737280">
<rom name="Lightspeed (1990)(MicroProse)(Disk 2 of 3).dsk" size="737280" crc="27c65967" sha1="bd4e23ea6f2c64d0f216bb5bab888e6bf558f42d" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<feature name="part_id" value="Disk C" />
<dataarea name="flop" size = "737280">
<rom name="Lightspeed (1990)(MicroProse)(Disk 3 of 3).dsk" size="737280" crc="b4eea9dc" sha1="fd90aad687eb9a5b248abf4ced745a6286c82f92" offset="0"/>
</dataarea>
</part>
</software>
<software name="tleodoom">
<description>The Lost Episodes of Doom (Companion Disk)</description>
<year>1995</year>
@ -7392,6 +7782,37 @@ Missing files come here
</part>
</software>
<software name="trek25th">
<description>Star Trek - 25th Anniversary</description>
<year>1992</year>
<publisher>Interplay</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="Star Trek - 25th Anniversary (1992)(Interplay)(Disk 1 of 5).dsk" size="1228800" crc="cb4848bc" sha1="f3c14bc156b2e2cda22cd5441d48ab4b330cf418" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="Star Trek - 25th Anniversary (1992)(Interplay)(Disk 2 of 5).dsk" size="1228800" crc="6818afba" sha1="85d33b6a6c5f7c3c01bef633727021e08157c499" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="Star Trek - 25th Anniversary (1992)(Interplay)(Disk 3 of 5).dsk" size="1228800" crc="54341517" sha1="15249e3179068a41536ba0106a393dc779d1a230" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="Star Trek - 25th Anniversary (1992)(Interplay)(Disk 4 of 5).dsk" size="1228800" crc="8f53295d" sha1="53c5feb83716b24a3afe79a7f746acb4c00e2b24" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="Star Trek - 25th Anniversary (1992)(Interplay)(Disk 5 of 5).dsk" size="1228800" crc="cb1a3a83" sha1="aa3c3fe165e8171d3dcf83dde922d64e2131b425" offset="0"/>
</dataarea>
</part>
</software>
<software name="swxwing">
<description>Star Wars - X-Wing - Space Combat Simulator</description>
<year>1993</year>

View File

@ -22838,6 +22838,7 @@ a contest among doujin programmers... -->
<description>Chourensha 68k (v1.01)</description>
<year>1995</year>
<publisher>&lt;doujin&gt;</publisher>
<info name="alt_title" value="超連射68K" />
<info name="developer" value="Famibe no Yosshin" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="1261824">
@ -22846,10 +22847,24 @@ a contest among doujin programmers... -->
</part>
</software>
<software name="chorensa100" cloneof="chorensa">
<description>Chourensha 68k (v1.00)</description>
<year>1995</year>
<publisher>&lt;doujin&gt;</publisher>
<info name="alt_title" value="超連射68K" />
<info name="developer" value="Famibe no Yosshin" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "1261824">
<rom name="chourensha 68k v1.00.dim" size="1261824" crc="7ffdadb8" sha1="8bf616f9fead4a776afa9ebc3c8c14f79f69a35f" offset="0"/>
</dataarea>
</part>
</software>
<software name="chorensa045" cloneof="chorensa">
<description>Chourensha 68k (v0.45)</description>
<year>1995</year>
<publisher>&lt;doujin&gt;</publisher>
<info name="alt_title" value="超連射68K" />
<info name="developer" value="Famibe no Yosshin" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="1261824">
@ -22862,6 +22877,7 @@ a contest among doujin programmers... -->
<description>Chourensha 68k (v0.35)</description>
<year>1995</year>
<publisher>&lt;doujin&gt;</publisher>
<info name="alt_title" value="超連射68K" />
<info name="developer" value="Famibe no Yosshin" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="1261824">
@ -22874,6 +22890,7 @@ a contest among doujin programmers... -->
<description>Chourensha 68k (v0.10)</description>
<year>1995</year>
<publisher>&lt;doujin&gt;</publisher>
<info name="alt_title" value="超連射68K" />
<info name="developer" value="Famibe no Yosshin" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="1261824">

View File

@ -1,5 +1,5 @@
-- converter for simple cheats
-- simple cheats are single address every frame ram, rom or gg,ar cheats in one file called cheat.simple
-- simple cheats are single/linked address every frame ram, rom or gg,ar cheats in one file called cheat.simple
--
-- ram/rom cheat format: <set name>,<cputag|regiontag>,<hex offset>,<b|w|d|q - size>,<hex value>,<desc>
-- only program address space is supported, comments are prepended with ;
@ -9,6 +9,7 @@
-- gg for game genie -- nes, snes, megadriv, gamegear, gameboy
-- ar for action replay -- nes, snes, megadriv, gamegear, sms
--
-- use "^" as description to link to previous cheat
-- set name is <softlist>/<entry> like "nes/smb" for softlist items
-- Don't use commas in the description
@ -22,10 +23,30 @@ function simple.filename(name)
end
local codefuncs = {}
local currcheat
local function prepare_rom_cheat(desc, region, addr, val, size, banksize, comp)
local cheat = { desc = desc, region = { rom = region } }
cheat.script = { off = "if on then rom:write_u" .. size .. "(addr, save) end" }
local cheat
if desc:sub(1,1) ~= "^" then
currcheat = { desc = desc, region = { rom = region } }
currcheat.script = { off = string.format([[
if on then
for k, v in pairs(addrs) do
rom:write_u%d(v.addr, v.save)
end
end]], size),
on = string.format([[
addrs = {
--flag
}
on = true
for k, v in pairs(addrs) do
v.save = rom:read_u%d(v.addr)
rom:write_u%d(v.addr, v.val)
end]], size, size) }
cheat = currcheat
end
if banksize and comp then
local rom = manager:machine():memory().regions[region]
local bankaddr = addr & (banksize - 1)
@ -43,17 +64,17 @@ local function prepare_rom_cheat(desc, region, addr, val, size, banksize, comp)
error("rom cheat compare value not found " .. desc)
end
end
cheat.script.on = string.format([[
on = true
addr = %d
save = rom:read_u%d(addr)
rom:write_u%d(addr, %d)]], addr, size, size, val)
currcheat.script.on = currcheat.script.on:gsub("%-%-flag", string.format("{addr = %d, val = %d},\n--flag", addr, val), 1)
return cheat
end
local function prepare_ram_cheat(desc, tag, addr, val, size)
local cheat = { desc = desc, space = { cpup = { tag = tag, type = "program" } } }
cheat.script = { run = "cpup:write_u" .. size .. "(" .. addr .. "," .. val .. ", true)" }
local cheat
if desc:sub(1,1) ~= "^" then
currcheat = { desc = desc, space = { cpup = { tag = tag, type = "program" } }, script = { run = "" } }
cheat = currcheat
end
currcheat.script.run = currcheat.script.run .. " cpup:write_u" .. size .. "(" .. addr .. "," .. val .. ", true)"
return cheat
end
@ -75,7 +96,7 @@ function codefuncs.nes_gg(desc, code)
elseif #code == 8 then
addr = ((value >> 12) & 7) | ((value >> 16) & 0x78) | ((value >> 20) & 0x80) | (value & 0x700) | ((value >> 4) & 0x7800)
newval = ((value >> 28) & 7) | (value & 8) | ((value >> 20) & 0x70) | ((value >> 24) & 0x80)
comp = ((value >> 4) & 7) | ((value >> 8) & 8) | ((value << 4) & 0x70) | ((value << 1) & 0x80)
comp = ((value >> 4) & 7) | ((value >> 8) & 8) | ((value << 4) & 0x70) | (value & 0x80)
-- assume 8K banks, 32K also common but is an easy multiple of 8K
return prepare_rom_cheat(desc, ":nes_slot:cart:prg_rom", addr, newval, 8, 8192, comp)
else
@ -292,6 +313,7 @@ function simple.conv_cheat(data)
end
end
end
currcheat = nil
return cheats
end

View File

@ -847,6 +847,19 @@ if (BUSES["IMI7000"]~=null) then
end
---------------------------------------------------
--
--@src/devices/bus/intellec4/intellec4.h,BUSES["INTELLEC4"] = true
---------------------------------------------------
if (BUSES["INTELLEC4"]~=null) then
files {
MAME_DIR .. "src/devices/bus/intellec4/intellec4.cpp",
MAME_DIR .. "src/devices/bus/intellec4/intellec4.h",
}
end
---------------------------------------------------
--
--@src/devices/bus/intv/slot.h,BUSES["INTV"] = true

View File

@ -3148,6 +3148,7 @@ files {
MAME_DIR .. "src/mame/includes/kopunch.h",
MAME_DIR .. "src/mame/video/kopunch.cpp",
MAME_DIR .. "src/mame/drivers/lindbergh.cpp",
MAME_DIR .. "src/mame/drivers/sderby2.cpp",
MAME_DIR .. "src/mame/machine/segabb.cpp",
MAME_DIR .. "src/mame/machine/segabb.h",
MAME_DIR .. "src/mame/machine/megadriv.cpp",

View File

@ -663,6 +663,7 @@ BUSES["HPHIL"] = true
BUSES["HPDIO"] = true
BUSES["IEEE488"] = true
BUSES["IMI7000"] = true
BUSES["INTELLEC4"] = true
BUSES["INTV"] = true
BUSES["INTV_CTRL"] = true
BUSES["IQ151"] = true

View File

@ -60,6 +60,7 @@ MACHINES["TTL7474"] = true
MACHINES["RIOT6532"] = true
MACHINES["PIT8253"] = true
MACHINES["Z80CTC"] = true
MACHINES["Z80PIO"] = true
MACHINES["68681"] = true
MACHINES["BANKDEV"] = true
MACHINES["GEN_LATCH"] = true

View File

@ -66,7 +66,7 @@ const tiny_rom_entry *cbm2_hrg_device::device_rom_region() const
// ADDRESS_MAP( hrg_a_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hrg_a_map, AS_0, 8, cbm2_hrg_a_device )
static ADDRESS_MAP_START( hrg_a_map, 0, 8, cbm2_hrg_a_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x7fff) AM_RAM
ADDRESS_MAP_END
@ -76,7 +76,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( hrg_b_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hrg_b_map, AS_0, 8, cbm2_hrg_b_device )
static ADDRESS_MAP_START( hrg_b_map, 0, 8, cbm2_hrg_b_device )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x3fff) AM_RAM
ADDRESS_MAP_END
@ -96,7 +96,7 @@ MACHINE_CONFIG_MEMBER( cbm2_hrg_a_device::device_add_mconfig )
MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_a_map)
MCFG_DEVICE_ADDRESS_MAP(0, hrg_a_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x512);
@ -112,7 +112,7 @@ MACHINE_CONFIG_MEMBER( cbm2_hrg_b_device::device_add_mconfig )
MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_b_map)
MCFG_DEVICE_ADDRESS_MAP(0, hrg_b_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x256);

View File

@ -32,12 +32,12 @@ DEFINE_DEVICE_TYPE(COMPIS_UHRG, compis_uhrg_device, "compis_uhrg", "Compis UHRG"
// ADDRESS_MAP( upd7220_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hrg_map, AS_0, 16, compis_hrg_device )
static ADDRESS_MAP_START( hrg_map, 0, 16, compis_hrg_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x00000, 0x7fff) AM_RAM AM_SHARE("video_ram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( uhrg_map, AS_0, 16, compis_uhrg_device )
static ADDRESS_MAP_START( uhrg_map, 0, 16, compis_uhrg_device )
ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram")
ADDRESS_MAP_END
@ -85,7 +85,7 @@ MACHINE_CONFIG_MEMBER( compis_hrg_device::device_add_mconfig )
MCFG_SCREEN_UPDATE_DEVICE(UPD7220_TAG, upd7220_device, screen_update)
MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, 2252500) // unknown clock
MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_map)
MCFG_DEVICE_ADDRESS_MAP(0, hrg_map)
MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_hrg_device, display_pixels)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
@ -103,7 +103,7 @@ MACHINE_CONFIG_MEMBER( compis_uhrg_device::device_add_mconfig )
MCFG_SCREEN_UPDATE_DEVICE(UPD7220_TAG, upd7220_device, screen_update)
MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, 2252500*2) // unknown clock
MCFG_DEVICE_ADDRESS_MAP(AS_0, uhrg_map)
MCFG_DEVICE_ADDRESS_MAP(0, uhrg_map)
MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_uhrg_device, display_pixels)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)

View File

@ -113,7 +113,7 @@ public:
protected:
dio16_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
void install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler);
void install_space(int spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler);
// device-level overrides
virtual void device_start() override;

View File

@ -0,0 +1,105 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
#include "emu.h"
#include "intellec4.h"
#include <algorithm>
DEFINE_DEVICE_TYPE_NS(INTELLEC4_UNIV_SLOT, bus::intellec4, univ_slot_device, "intlc4univslot", "INTELLEC 4/MOD 40 Universal Slot")
DEFINE_DEVICE_TYPE_NS(INTELLEC4_UNIV_BUS, bus::intellec4, univ_bus_device, "intlc4univbus", "INTELLEC 4/MOD 40 Universal Bus")
namespace bus { namespace intellec4 {
univ_slot_device::univ_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, INTELLEC4_UNIV_SLOT, tag, owner, clock)
, device_slot_interface(mconfig, *this)
{
}
void univ_slot_device::set_bus_tag(device_t &device, char const *tag)
{
}
void univ_slot_device::device_start()
{
}
univ_bus_device::univ_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, INTELLEC4_UNIV_BUS, tag, owner, clock)
, m_stop_out_cb(*this)
, m_test_out_cb(*this)
, m_reset_4002_out_cb(*this)
, m_user_reset_out_cb(*this)
, m_stop(0U)
, m_test(0U)
, m_reset_4002(0U)
, m_user_reset(0U)
{
std::fill(std::begin(m_cards), std::end(m_cards), nullptr);
}
WRITE_LINE_MEMBER(univ_bus_device::sync_in)
{
// FIXME: distribute to cards
}
WRITE_LINE_MEMBER(univ_bus_device::test_in)
{
if (state)
m_test &= ~u16(1U);
else
m_test |= 1U;
// FIXME: distribute to cards
}
WRITE_LINE_MEMBER(univ_bus_device::stop_in)
{
if (state)
m_stop &= ~u16(1U);
else
m_stop |= 1U;
// FIXME: distribute to cards
}
WRITE_LINE_MEMBER(univ_bus_device::stop_acknowledge_in)
{
// FIXME: distribute to cards
}
WRITE_LINE_MEMBER(univ_bus_device::cpu_reset_in)
{
// FIXME: distribute to cards
}
WRITE_LINE_MEMBER(univ_bus_device::reset_4002_in)
{
if (state)
m_reset_4002 &= ~u16(1U);
else
m_reset_4002 |= 1U;
// FIXME: distribute to cards
}
void univ_bus_device::device_start()
{
m_stop_out_cb.resolve_safe();
m_test_out_cb.resolve_safe();
m_reset_4002_out_cb.resolve_safe();
m_user_reset_out_cb.resolve_safe();
}
} } // namespace bus::intellec4
SLOT_INTERFACE_START(intellec4_univ_cards)
SLOT_INTERFACE_END

View File

@ -0,0 +1,195 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
/*
INTELLEC® 4/MOD 40 Universal Slot
1 2 /TEST
GND 3 4 GND
NC 5 6 NC
NC 7 8 NC
NC 9 10 NC
MA0 11 12 MA1
MA2 13 14 MA3
MA4 15 16 MA5
MA6 17 18 MA7
C0 19 20 C1
21 22 NC
/MDI0 23 24 NC
/MDI1 25 26
/MDI3 27 28
/MDI2 29 30
/MDI5 31 32
/MDI4 33 34
/MDI7 35 36
/MDI6 37 38
39 40
/OUT 41 42 /ENABLE MON PROM
-10V 43 44 -10V
/CPU RESET 45 46 /USER RESET
/CM-RAM2 47 48 /CM-RAM3
/CM-RAM0 49 50 /CM-RAM1
I/O 1 51 52 I/O 0
I/O 2 53 54 /IN
F/L 55 56 I/O 3
57 58
59 60
61 62
63 64
65 66
67 68
69 70
71 72 /D3
/STOP ACKNOWLEDGE 73 74 /STOP
75 76 /D2
77 78
/SYNC 79 80 /D1
81 82 /PROM SEL
/D0 83 84
85 86
87 88 /RESET-4002
89 90
91 92
/CM-ROM 93 94 C3
W 95 96 C2
PHASE 2 97 98 PHASE 1
+5V 99 100 +5V
NC Not connected on backplane
GND Common ground
+5V Power supply
-10V Power supply
PHASE1 5.185MHz/7 clock phase 1
PHASE2 5.185MHz/7 clock phase 2
/SYNC CPU /SYNC output (instruction cycle synchronisation)
/TEST CPU /TEST input, wired-or (cards should pull low to assert)
/STOP CPU /STP input, wired-or (cards should pull low to assert)
/STOP ACKNOWLEDGE CPU /STP ACK output (stop/halt acknowledge)
/CM-ROM CPU /CM-ROM0 output (ROM chip select)
/CM-RAM0.../CM-RAM3 CPU /CM-RAM outputs (RAM chip select)
/D0.../D3 CPU data bus
MA0...MA7 A outputs from 4289 on CPU board (low ROM address/SRC address)
C0...C3 C outputs from 4289 on CPU board (high ROM address/I/O chip select)
W PM output from 4289 on CPU board (program memory enable)
F/L FL output from 4289 on CPU board (program memory nybble select)
I/O 0...I/O 3 I/O lines to 4289 on CPU board (bidirectional I/O data)
/MDI0.../MDI7 OPR/OPA multiplexer inputs on CPU board (ROM data when onboard monitor PROM is not selected)
/IN IN output from 4289 on CPU board (I/O read strobe)
/OUT OUT output from 4289 on CPU board (I/O write strobe)
/CPU RESET CPU/4289 reset output from control board
/RESET-4002 Open collector output from control board
/ENABLE MON PROM Output from control board
/PROM SEL Output from control board
/USER RESET Input to control board, edge sensitive, wired or (cards should pull low to assert)
other pins connected between universal slots but not connected to CPU or control cards
*/
#ifndef MAME_BUS_INTELLEC4_INTELLEC4_H
#define MAME_BUS_INTELLEC4_INTELLEC4_H
#pragma once
#define MCFG_INTELLEC4_UNIV_SLOT_ADD(bus_tag, slot_tag, clock, slot_intf, def_slot) \
MCFG_DEVICE_ADD(slot_tag, INTELLEC4_UNIV_SLOT, clock) \
MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) \
bus::intellec4::univ_slot_device::set_bus_tag(*device, bus_tag);
#define MCFG_INTELLEC4_UNIV_SLOT_REMOVE(slot_tag) \
MCFG_DEVICE_REMOVE(slot_tag)
#define MCFG_INTELLEC4_UNIV_BUS_STOP_CB(obj) \
bus::intellec4::univ_bus_device::set_stop_out_cb(*device, DEVCB_##obj);
#define MCFG_INTELLEC4_UNIV_BUS_TEST_CB(obj) \
bus::intellec4::univ_bus_device::set_test_out_cb(*device, DEVCB_##obj);
#define MCFG_INTELLEC4_UNIV_BUS_RESET_4002_CB(obj) \
bus::intellec4::univ_bus_device::set_reset_4002_out_cb(*device, DEVCB_##obj);
#define MCFG_INTELLEC4_UNIV_BUS_USER_RESET_CB(obj) \
bus::intellec4::univ_bus_device::set_user_reset_out_cb(*device, DEVCB_##obj);
namespace bus { namespace intellec4 {
class univ_slot_device;
class univ_bus_device;
class device_univ_card_interface;
class univ_slot_device : public device_t, public device_slot_interface
{
public:
// configuration helpers
static void set_bus_tag(device_t &device, char const *bus_tag);
univ_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
protected:
// device_t implementation
virtual void device_start() override;
};
class univ_bus_device : public device_t
{
public:
// configuration helpers
template <typename Obj> static devcb_base &set_stop_out_cb(device_t &device, Obj &&cb)
{ return downcast<univ_bus_device &>(device).m_stop_out_cb.set_callback(std::forward<Obj>(cb)); }
template <typename Obj> static devcb_base &set_test_out_cb(device_t &device, Obj &&cb)
{ return downcast<univ_bus_device &>(device).m_test_out_cb.set_callback(std::forward<Obj>(cb)); }
template <typename Obj> static devcb_base &set_reset_4002_out_cb(device_t &device, Obj &&cb)
{ return downcast<univ_bus_device &>(device).m_reset_4002_out_cb.set_callback(std::forward<Obj>(cb)); }
template <typename Obj> static devcb_base &set_user_reset_out_cb(device_t &device, Obj &&cb)
{ return downcast<univ_bus_device &>(device).m_user_reset_out_cb.set_callback(std::forward<Obj>(cb)); }
univ_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
// input lines
DECLARE_WRITE_LINE_MEMBER(sync_in);
DECLARE_WRITE_LINE_MEMBER(test_in);
DECLARE_WRITE_LINE_MEMBER(stop_in);
DECLARE_WRITE_LINE_MEMBER(stop_acknowledge_in);
DECLARE_WRITE_LINE_MEMBER(cpu_reset_in);
DECLARE_WRITE_LINE_MEMBER(reset_4002_in);
// output lines
DECLARE_READ_LINE_MEMBER(stop_out) const { return (m_stop & ~u16(1U)) ? 0 : 1; }
DECLARE_READ_LINE_MEMBER(test_out) const { return (m_test & ~u16(1U)) ? 0 : 1; }
DECLARE_READ_LINE_MEMBER(reset_4002_out) const { return (m_reset_4002 & ~u16(1U)) ? 0 : 1; }
DECLARE_READ_LINE_MEMBER(user_reset_out) const { return (m_user_reset & ~u16(1U)) ? 0 : 1; }
protected:
// device_t implementation
virtual void device_start() override;
private:
// output line callbacks
devcb_write_line m_stop_out_cb;
devcb_write_line m_test_out_cb;
devcb_write_line m_reset_4002_out_cb;
devcb_write_line m_user_reset_out_cb;
// cards
device_univ_card_interface *m_cards[15];
// packed line states
u16 m_stop, m_test, m_reset_4002, m_user_reset;
};
class device_univ_card_interface : public device_slot_card_interface
{
};
} } // namespace bus::intellec4
DECLARE_DEVICE_TYPE_NS(INTELLEC4_UNIV_SLOT, bus::intellec4, univ_slot_device)
DECLARE_DEVICE_TYPE_NS(INTELLEC4_UNIV_BUS, bus::intellec4, univ_bus_device)
SLOT_INTERFACE_EXTERN( intellec4_univ_cards );
#endif // MAME_BUS_INTELLEC4_INTELLEC4_H

View File

@ -129,13 +129,13 @@ isa8_device::isa8_device(const machine_config &mconfig, const char *tag, device_
isa8_device::isa8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_program_config("ISA 8-bit program", ENDIANNESS_LITTLE, 8, 24, 0, nullptr),
m_mem_config("ISA 8-bit mem", ENDIANNESS_LITTLE, 8, 24, 0, nullptr),
m_io_config("ISA 8-bit I/O", ENDIANNESS_LITTLE, 8, 16, 0, nullptr),
m_program16_config("ISA 16-bit program", ENDIANNESS_LITTLE, 16, 24, 0, nullptr),
m_mem16_config("ISA 16-bit mem", ENDIANNESS_LITTLE, 16, 24, 0, nullptr),
m_io16_config("ISA 16-bit I/O", ENDIANNESS_LITTLE, 16, 16, 0, nullptr),
m_maincpu(nullptr),
m_iospace(nullptr),
m_prgspace(nullptr),
m_memspace(nullptr),
m_out_irq2_cb(*this),
m_out_irq3_cb(*this),
m_out_irq4_cb(*this),
@ -153,18 +153,38 @@ isa8_device::isa8_device(const machine_config &mconfig, device_type type, const
m_dma_eop[i] = false;
}
m_nmi_enabled = false;
m_iowidth = m_prgwidth = 0;
m_iowidth = m_memwidth = 0;
m_allocspaces = false;
}
READ8_MEMBER(isa8_device::prog_r)
std::vector<std::pair<int, const address_space_config *>> isa8_device::memory_space_config() const
{
return m_prgspace->read_byte(offset);
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_ISA_MEM, &m_mem_config),
std::make_pair(AS_ISA_IO, &m_io_config),
std::make_pair(AS_ISA_MEMALT, &m_mem16_config),
std::make_pair(AS_ISA_IOALT, &m_io16_config)
};
}
WRITE8_MEMBER(isa8_device::prog_w)
std::vector<std::pair<int, const address_space_config *>> isa16_device::memory_space_config() const
{
m_prgspace->write_byte(offset, data);
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_ISA_MEM, &m_mem16_config),
std::make_pair(AS_ISA_IO, &m_io16_config),
std::make_pair(AS_ISA_MEMALT, &m_mem_config),
std::make_pair(AS_ISA_IOALT, &m_io_config)
};
}
READ8_MEMBER(isa8_device::mem_r)
{
return m_memspace->read_byte(offset);
}
WRITE8_MEMBER(isa8_device::mem_w)
{
m_memspace->write_byte(offset, data);
}
READ8_MEMBER(isa8_device::io_r)
@ -206,17 +226,17 @@ void isa8_device::device_start()
if (m_allocspaces)
{
m_iospace = &space(AS_IO);
m_prgspace = &space(AS_PROGRAM);
m_iospace = &space(AS_ISA_IO);
m_memspace = &space(AS_ISA_MEM);
m_iowidth = m_iospace->data_width();
m_prgwidth = m_prgspace->data_width();
m_memwidth = m_memspace->data_width();
}
else // use host CPU's program and I/O spaces directly
{
m_iospace = &m_maincpu->space(AS_IO);
m_iowidth = m_maincpu->space_config(AS_IO)->m_databus_width;
m_prgspace = &m_maincpu->space(AS_PROGRAM);
m_prgwidth = m_maincpu->space_config(AS_PROGRAM)->m_databus_width;
m_memspace = &m_maincpu->space(AS_PROGRAM);
m_memwidth = m_maincpu->space_config(AS_PROGRAM)->m_databus_width;
}
}
@ -229,20 +249,20 @@ void isa8_device::device_reset()
}
void isa8_device::install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler)
void isa8_device::install_space(int spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler)
{
int buswidth;
address_space *space;
if (spacenum == AS_IO)
if (spacenum == AS_ISA_IO)
{
space = m_iospace;
buswidth = m_iowidth;
}
else if (spacenum == AS_PROGRAM)
else if (spacenum == AS_ISA_MEM)
{
space = m_prgspace;
buswidth = m_prgwidth;
space = m_memspace;
buswidth = m_memwidth;
}
else
{
@ -277,24 +297,24 @@ void isa8_device::install_space(address_spacenum spacenum, offs_t start, offs_t
void isa8_device::install_memory(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler)
{
install_space(AS_PROGRAM, start, end, rhandler, whandler);
install_space(AS_ISA_MEM, start, end, rhandler, whandler);
}
void isa8_device::install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler)
{
install_space(AS_IO, start, end, rhandler, whandler);
install_space(AS_ISA_IO, start, end, rhandler, whandler);
}
void isa8_device::install_bank(offs_t start, offs_t end, const char *tag, uint8_t *data)
{
m_prgspace->install_readwrite_bank(start, end, 0, tag );
machine().root_device().membank(m_prgspace->device().siblingtag(tag).c_str())->set_base(data);
m_memspace->install_readwrite_bank(start, end, 0, tag );
machine().root_device().membank(m_memspace->device().siblingtag(tag).c_str())->set_base(data);
}
void isa8_device::unmap_bank(offs_t start, offs_t end)
{
m_prgspace->unmap_readwrite(start, end);
m_memspace->unmap_readwrite(start, end);
}
void isa8_device::install_rom(device_t *dev, offs_t start, offs_t end, const char *tag, const char *region)
@ -304,22 +324,22 @@ void isa8_device::install_rom(device_t *dev, offs_t start, offs_t end, const cha
uint8_t *dest = machine().root_device().memregion("isa")->base() + start - 0xc0000;
memcpy(dest,src, end - start + 1);
} else {
m_prgspace->install_read_bank(start, end, 0, tag);
m_prgspace->unmap_write(start, end);
machine().root_device().membank(m_prgspace->device().siblingtag(tag).c_str())->set_base(machine().root_device().memregion(dev->subtag(region).c_str())->base());
m_memspace->install_read_bank(start, end, 0, tag);
m_memspace->unmap_write(start, end);
machine().root_device().membank(m_memspace->device().siblingtag(tag).c_str())->set_base(machine().root_device().memregion(dev->subtag(region).c_str())->base());
}
}
void isa8_device::unmap_rom(offs_t start, offs_t end)
{
m_prgspace->unmap_read(start, end);
m_memspace->unmap_read(start, end);
}
bool isa8_device::is_option_rom_space_available(offs_t start, int size)
{
m_maincpu = machine().device<cpu_device>(m_cputag);
for(int i = 0; i < size; i += 4096) // 4KB granularity should be enough
if(m_prgspace->get_read_ptr(start + i)) return false;
if(m_memspace->get_read_ptr(start + i)) return false;
return true;
}
@ -465,7 +485,7 @@ void isa16_device::device_start()
void isa16_device::install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler)
{
int buswidth = m_prgwidth;
int buswidth = m_iowidth;
switch(buswidth)
{
case 16:
@ -490,14 +510,14 @@ void isa16_device::install16_device(offs_t start, offs_t end, read16_delegate rh
}
}
READ16_MEMBER(isa16_device::prog16_r)
READ16_MEMBER(isa16_device::mem16_r)
{
return m_prgspace->read_word(offset<<1, mem_mask);
return m_memspace->read_word(offset<<1, mem_mask);
}
WRITE16_MEMBER(isa16_device::prog16_w)
WRITE16_MEMBER(isa16_device::mem16_w)
{
m_prgspace->write_word(offset<<1, data, mem_mask);
m_memspace->write_word(offset<<1, data, mem_mask);
}
READ16_MEMBER(isa16_device::io16_r)
@ -510,21 +530,21 @@ WRITE16_MEMBER(isa16_device::io16_w)
m_iospace->write_word(offset<<1, data, mem_mask);
}
READ16_MEMBER(isa16_device::prog16_swap_r)
READ16_MEMBER(isa16_device::mem16_swap_r)
{
uint16_t rv;
mem_mask = (mem_mask<<8) | (mem_mask>>8);
rv = m_prgspace->read_word(offset<<1, mem_mask);
rv = m_memspace->read_word(offset<<1, mem_mask);
return (rv<<8) | (rv>>8);
}
WRITE16_MEMBER(isa16_device::prog16_swap_w)
WRITE16_MEMBER(isa16_device::mem16_swap_w)
{
mem_mask = (mem_mask<<8) | (mem_mask>>8);
data = (data<<8) | (data>>8);
m_prgspace->write_word(offset<<1, data, mem_mask);
m_memspace->write_word(offset<<1, data, mem_mask);
}
READ16_MEMBER(isa16_device::io16_swap_r)

View File

@ -186,6 +186,14 @@ class isa8_device : public device_t,
public device_memory_interface
{
public:
enum
{
AS_ISA_MEM = 0,
AS_ISA_IO = 1,
AS_ISA_MEMALT = 2,
AS_ISA_IOALT = 3
};
// construction/destruction
isa8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
@ -203,17 +211,7 @@ public:
template <class Object> static devcb_base &set_out_drq3_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq3_cb.set_callback(std::forward<Object>(cb)); }
// for ISA8, put the 8-bit configs in the primary slots and the 16-bit configs in the secondary
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
switch (spacenum)
{
case AS_PROGRAM: return &m_program_config;
case AS_IO: return &m_io_config;
case AS_DATA: return &m_program16_config;
case AS_3: return &m_io16_config;
default: fatalerror("isa: invalid memory space!\n");
}
}
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler);
template<typename T> void install_device(offs_t addrstart, offs_t addrend, T &device, void (T::*map)(class address_map &map), int bits = 8)
@ -228,6 +226,7 @@ public:
void install_rom(device_t *dev, offs_t start, offs_t end, const char *tag, const char *region);
void install_memory(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler);
void unmap_device(offs_t start, offs_t end) const { m_iospace->unmap_readwrite(start, end); }
void unmap_bank(offs_t start, offs_t end);
void unmap_rom(offs_t start, offs_t end);
bool is_option_rom_space_available(offs_t start, int size);
@ -244,8 +243,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( drq3_w );
// 8 bit accessors for ISA-defined address spaces
DECLARE_READ8_MEMBER(prog_r);
DECLARE_WRITE8_MEMBER(prog_w);
DECLARE_READ8_MEMBER(mem_r);
DECLARE_WRITE8_MEMBER(mem_w);
DECLARE_READ8_MEMBER(io_r);
DECLARE_WRITE8_MEMBER(io_w);
@ -258,12 +257,12 @@ public:
virtual void set_dma_channel(uint8_t channel, device_isa8_card_interface *dev, bool do_eop);
const address_space_config m_program_config, m_io_config, m_program16_config, m_io16_config;
const address_space_config m_mem_config, m_io_config, m_mem16_config, m_io16_config;
protected:
isa8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
void install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler);
void install_space(int spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler);
// device-level overrides
virtual void device_start() override;
@ -273,8 +272,8 @@ protected:
cpu_device *m_maincpu;
// address spaces
address_space *m_iospace, *m_prgspace;
int m_iowidth, m_prgwidth;
address_space *m_iospace, *m_memspace;
int m_iowidth, m_memwidth;
bool m_allocspaces;
devcb_write_line m_out_irq2_cb;
@ -370,17 +369,7 @@ public:
void install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler);
// for ISA16, put the 16-bit configs in the primary slots and the 8-bit configs in the secondary
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
switch (spacenum)
{
case AS_PROGRAM: return &m_program16_config;
case AS_IO: return &m_io16_config;
case AS_DATA: return &m_program_config;
case AS_3: return &m_io_config;
default: fatalerror("isa: invalid memory space!\n");
}
}
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
DECLARE_WRITE_LINE_MEMBER( irq10_w );
DECLARE_WRITE_LINE_MEMBER( irq11_w );
@ -397,13 +386,13 @@ public:
void dack16_w(int line,uint16_t data);
// 16 bit accessors for ISA-defined address spaces
DECLARE_READ16_MEMBER(prog16_r);
DECLARE_WRITE16_MEMBER(prog16_w);
DECLARE_READ16_MEMBER(mem16_r);
DECLARE_WRITE16_MEMBER(mem16_w);
DECLARE_READ16_MEMBER(io16_r);
DECLARE_WRITE16_MEMBER(io16_w);
// byte-swapped versions of 16-bit accessors
DECLARE_READ16_MEMBER(prog16_swap_r);
DECLARE_WRITE16_MEMBER(prog16_swap_w);
DECLARE_READ16_MEMBER(mem16_swap_r);
DECLARE_WRITE16_MEMBER(mem16_swap_w);
DECLARE_READ16_MEMBER(io16_swap_r);
DECLARE_WRITE16_MEMBER(io16_swap_w);

View File

@ -14,7 +14,7 @@
DEFINE_DEVICE_TYPE(ISA8_NUM_9_REV, isa8_number_9_rev_device, "number_9_rev", "Number Nine Revolution 512x32/1024x8")
static ADDRESS_MAP_START( upd7220_map, AS_0, 16, isa8_number_9_rev_device )
static ADDRESS_MAP_START( upd7220_map, 0, 16, isa8_number_9_rev_device )
AM_RANGE(0x00000, 0x3ffff) AM_NOP
ADDRESS_MAP_END
@ -61,7 +61,7 @@ MACHINE_CONFIG_MEMBER( isa8_number_9_rev_device::device_add_mconfig )
MCFG_PALETTE_ADD("palette", 4096)
MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_4_433619MHz/2) // unknown clock
MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map)
MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map)
MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(isa8_number_9_rev_device, hgdc_display_pixels)
MCFG_VIDEO_SET_SCREEN("screen")
MACHINE_CONFIG_END

View File

@ -182,7 +182,8 @@ void southbridge_device::device_start()
spaceio.install_readwrite_handler(0x0000, 0x001f, read8_delegate(FUNC(am9517a_device::read),&(*m_dma8237_1)), write8_delegate(FUNC(am9517a_device::write),&(*m_dma8237_1)), 0xffffffff);
spaceio.install_readwrite_handler(0x0020, 0x003f, read8_delegate(FUNC(pic8259_device::read),&(*m_pic8259_master)), write8_delegate(FUNC(pic8259_device::write),&(*m_pic8259_master)), 0xffffffff);
spaceio.install_readwrite_handler(0x0040, 0x005f, read8_delegate(FUNC(pit8254_device::read),&(*m_pit8254)), write8_delegate(FUNC(pit8254_device::write),&(*m_pit8254)), 0xffffffff);
spaceio.install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(southbridge_device::at_keybc_r),this), write8_delegate(FUNC(southbridge_device::at_keybc_w),this), 0xffffffff);
spaceio.install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(at_keyboard_controller_device::data_r), &(*m_keybc)), write8_delegate(FUNC(at_keyboard_controller_device::data_w), &(*m_keybc)), 0x000000ff);
spaceio.install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(southbridge_device::at_portb_r), this), write8_delegate(FUNC(southbridge_device::at_portb_w), this), 0x0000ff00);
spaceio.install_readwrite_handler(0x0064, 0x0067, read8_delegate(FUNC(at_keyboard_controller_device::status_r),&(*m_keybc)), write8_delegate(FUNC(at_keyboard_controller_device::command_w),&(*m_keybc)), 0xffffffff);
spaceio.install_readwrite_handler(0x0070, 0x007f, read8_delegate(FUNC(ds12885_device::read),&(*m_ds12885)), write8_delegate(FUNC(ds12885_device::write),&(*m_ds12885)), 0xffffffff);
spaceio.install_readwrite_handler(0x0080, 0x009f, read8_delegate(FUNC(southbridge_device::at_page8_r),this), write8_delegate(FUNC(southbridge_device::at_page8_w),this), 0xffffffff);
@ -458,27 +459,6 @@ WRITE8_MEMBER( southbridge_device::at_dma8237_2_w )
m_dma8237_2->write( space, offset / 2, data);
}
READ8_MEMBER( southbridge_device::at_keybc_r )
{
switch (offset)
{
case 0: return m_keybc->data_r(space, 0);
case 1: return at_portb_r(space, 0);
}
return 0xff;
}
WRITE8_MEMBER( southbridge_device::at_keybc_w )
{
switch (offset)
{
case 0: m_keybc->data_w(space, 0, data); break;
case 1: at_portb_w(space, 0, data); break;
}
}
WRITE8_MEMBER( southbridge_device::write_rtc )
{
if (offset==0) {

View File

@ -121,8 +121,6 @@ private:
DECLARE_WRITE8_MEMBER(ide2_write_cs1_w);
DECLARE_READ8_MEMBER(at_dma8237_2_r);
DECLARE_WRITE8_MEMBER(at_dma8237_2_w);
DECLARE_READ8_MEMBER(at_keybc_r);
DECLARE_WRITE8_MEMBER(at_keybc_w);
DECLARE_WRITE8_MEMBER(write_rtc);
DECLARE_READ8_MEMBER(pc_dma_read_byte);
DECLARE_WRITE8_MEMBER(pc_dma_write_byte);

View File

@ -866,7 +866,7 @@ msx_cart_keyboard_master_device::msx_cart_keyboard_master_device(const machine_c
}
static ADDRESS_MAP_START( vlm_map, AS_0, 8, msx_cart_keyboard_master_device )
static ADDRESS_MAP_START( vlm_map, 0, 8, msx_cart_keyboard_master_device )
AM_RANGE(0x0000, 0xffff) AM_READ(read_vlm)
ADDRESS_MAP_END
@ -876,7 +876,7 @@ MACHINE_CONFIG_MEMBER( msx_cart_keyboard_master_device::device_add_mconfig )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("vlm5030", VLM5030, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map)
MCFG_DEVICE_ADDRESS_MAP(0, vlm_map)
MACHINE_CONFIG_END

View File

@ -29,7 +29,7 @@ msx_cart_moonsound_device::msx_cart_moonsound_device(const machine_config &mconf
}
static ADDRESS_MAP_START( ymf278b_map, AS_0, 8, msx_cart_moonsound_device )
static ADDRESS_MAP_START( ymf278b_map, 0, 8, msx_cart_moonsound_device )
AM_RANGE(0x000000, 0x1fffff) AM_ROM
AM_RANGE(0x200000, 0x3fffff) AM_RAM // 2MB sram for testing
ADDRESS_MAP_END
@ -39,7 +39,7 @@ MACHINE_CONFIG_MEMBER( msx_cart_moonsound_device::device_add_mconfig )
// The moonsound cartridge has a separate stereo output.
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ymf278b", YMF278B, YMF278B_STD_CLOCK)
MCFG_DEVICE_ADDRESS_MAP(AS_0, ymf278b_map)
MCFG_DEVICE_ADDRESS_MAP(0, ymf278b_map)
MCFG_YMF278B_IRQ_HANDLER(WRITELINE(msx_cart_moonsound_device, irq_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)

View File

@ -69,7 +69,7 @@ const tiny_rom_entry *cbm8000_hsg_device::device_rom_region() const
// ADDRESS_MAP( hsg_a_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hsg_a_map, AS_0, 8, cbm8000_hsg_a_device )
static ADDRESS_MAP_START( hsg_a_map, 0, 8, cbm8000_hsg_a_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x7fff) AM_RAM
ADDRESS_MAP_END
@ -79,7 +79,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( hsg_b_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hsg_b_map, AS_0, 8, cbm8000_hsg_b_device )
static ADDRESS_MAP_START( hsg_b_map, 0, 8, cbm8000_hsg_b_device )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x3fff) AM_RAM
ADDRESS_MAP_END
@ -99,7 +99,7 @@ MACHINE_CONFIG_MEMBER( cbm8000_hsg_a_device::device_add_mconfig )
MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_a_map)
MCFG_DEVICE_ADDRESS_MAP(0, hsg_a_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x512);
@ -115,7 +115,7 @@ MACHINE_CONFIG_MEMBER( cbm8000_hsg_b_device::device_add_mconfig )
MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_b_map)
MCFG_DEVICE_ADDRESS_MAP(0, hsg_b_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x256);

View File

@ -205,6 +205,13 @@ SLOT_INTERFACE_END
DEFINE_DEVICE_TYPE(VME, vme_device, "vme", "VME bus")
std::vector<std::pair<int, const address_space_config *>> vme_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_a32_config)
};
}
// static_set_cputag - used to be able to lookup the CPU owning this VME bus
void vme_device::static_set_cputag(device_t &device, const char *tag)
{

View File

@ -142,14 +142,8 @@ public:
static void static_set_cputag(device_t &device, const char *tag);
static void static_use_owner_spaces(device_t &device);
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
switch (spacenum)
{
case AS_PROGRAM: return &m_a32_config;
default: return nullptr;
}
}
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
const address_space_config m_a32_config;
void add_vme_card(device_vme_card_interface *card);

View File

@ -83,7 +83,7 @@ const tiny_rom_entry *wangpc_tig_device::device_rom_region() const
// UPD7220_INTERFACE( hgdc0_intf )
//-------------------------------------------------
static ADDRESS_MAP_START( upd7220_0_map, AS_0, 16, wangpc_tig_device )
static ADDRESS_MAP_START( upd7220_0_map, 0, 16, wangpc_tig_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_RAM // frame buffer
AM_RANGE(0x4000, 0x7fff) AM_RAM // font memory
@ -98,7 +98,7 @@ UPD7220_DRAW_TEXT_LINE_MEMBER( wangpc_tig_device::hgdc_draw_text )
// UPD7220_INTERFACE( hgdc1_intf )
//-------------------------------------------------
static ADDRESS_MAP_START( upd7220_1_map, AS_0, 16, wangpc_tig_device )
static ADDRESS_MAP_START( upd7220_1_map, 0, 16, wangpc_tig_device )
ADDRESS_MAP_GLOBAL_MASK(0xffff)
AM_RANGE(0x0000, 0xffff) AM_RAM // graphics memory
ADDRESS_MAP_END
@ -123,12 +123,12 @@ MACHINE_CONFIG_MEMBER( wangpc_tig_device::device_add_mconfig )
MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
MCFG_DEVICE_ADD(UPD7720_0_TAG, UPD7220, XTAL_52_832MHz/28)
MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_0_map)
MCFG_DEVICE_ADDRESS_MAP(0, upd7220_0_map)
MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(wangpc_tig_device, hgdc_draw_text)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADD(UPD7720_1_TAG, UPD7220, XTAL_52_832MHz/28)
MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_1_map)
MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map)
MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(wangpc_tig_device, hgdc_display_pixels)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MACHINE_CONFIG_END

View File

@ -47,6 +47,14 @@ n8x300_cpu_device::n8x300_cpu_device(const machine_config &mconfig, const char *
{
}
std::vector<std::pair<int, const address_space_config *>> n8x300_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}
void n8x300_cpu_device::set_reg(uint8_t reg, uint8_t val)
{
switch(reg)

View File

@ -60,15 +60,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
{
switch (spacenum)
{
case AS_PROGRAM: return &m_program_config;
case AS_IO: return &m_io_config;
default: return nullptr;
}
}
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }

View File

@ -649,26 +649,29 @@ void adsp21xx_device::device_reset()
// the space doesn't exist
//-------------------------------------------------
const address_space_config *adsp2100_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> adsp2100_device::memory_space_config() const
{
return (spacenum == AS_PROGRAM) ? &m_program_config :
(spacenum == AS_DATA) ? &m_data_config :
nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config)
};
}
const address_space_config *adsp2101_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> adsp2101_device::memory_space_config() const
{
return (spacenum == AS_PROGRAM) ? &m_program_config :
(spacenum == AS_DATA) ? &m_data_config :
nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config)
};
}
const address_space_config *adsp2181_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> adsp2181_device::memory_space_config() const
{
return (spacenum == AS_PROGRAM) ? &m_program_config :
(spacenum == AS_DATA) ? &m_data_config :
(spacenum == AS_IO) ? &m_io_config :
nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config),
std::make_pair(AS_IO, &m_io_config)
};
}

View File

@ -494,7 +494,7 @@ protected:
virtual uint32_t execute_input_lines() const override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// interrupts
virtual bool generate_irq(int which, int indx) override;
@ -517,7 +517,7 @@ protected:
virtual uint32_t execute_input_lines() const override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// interrupts
virtual bool generate_irq(int which, int indx) override;
@ -538,7 +538,7 @@ protected:
virtual uint32_t execute_input_lines() const override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// interrupts
virtual bool generate_irq(int which, int indx) override;

View File

@ -203,6 +203,13 @@ alpha8301_cpu_device::alpha8301_cpu_device(const machine_config &mconfig, const
{
}
std::vector<std::pair<int, const address_space_config *>> alpha8201_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}
/* Get next opcode argument and increment program counter */
unsigned alpha8201_cpu_device::M_RDMEM_OPCODE()

View File

@ -75,7 +75,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -794,15 +794,13 @@ static const prom_load_t pl_madr_a91 =
// device_memory_interface overrides
//-------------------------------------------------
const address_space_config*alto2_cpu_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> alto2_cpu_device::memory_space_config() const
{
if (AS_0 == spacenum)
return &m_ucode_config;
if (AS_1 == spacenum)
return &m_const_config;
if (AS_2 == spacenum)
return &m_iomem_config;
return nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(0, &m_ucode_config),
std::make_pair(1, &m_const_config),
std::make_pair(2, &m_iomem_config)
};
}
//-------------------------------------------------
@ -812,7 +810,7 @@ const address_space_config*alto2_cpu_device::memory_space_config(address_spacenu
void alto2_cpu_device::device_start()
{
// get a pointer to the IO address space
m_iomem = &space(AS_2);
m_iomem = &space(2);
// Decode 2 pages of micro code PROMs to CROM
// If m_cram_config == 1 or 3, only the first page will be used

View File

@ -230,7 +230,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
//! device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
//! device (P)ROMs
virtual const tiny_rom_entry *device_rom_region() const override;

View File

@ -118,6 +118,14 @@ am29000_cpu_device::am29000_cpu_device(const machine_config &mconfig, const char
m_next_pc = 0;
}
std::vector<std::pair<int, const address_space_config *>> am29000_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config),
std::make_pair(AS_IO, &m_io_config)
};
}
void am29000_cpu_device::device_start()
{

View File

@ -451,16 +451,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
{
switch (spacenum)
{
case AS_PROGRAM: return &m_program_config;
case AS_IO: return &m_io_config;
case AS_DATA: return &m_data_config;
default: return nullptr;
}
}
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -68,6 +68,14 @@ amis2152_cpu_device::amis2152_cpu_device(const machine_config &mconfig, const ch
: amis2000_base_device(mconfig, AMI_S2152, tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4))
{ }
std::vector<std::pair<int, const address_space_config *>> amis2000_base_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config)
};
}
//-------------------------------------------------
// state_string_export - export state as a string

View File

@ -84,7 +84,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual u32 disasm_min_opcode_bytes() const override { return 1; }

View File

@ -351,6 +351,14 @@ apexc_cpu_device::apexc_cpu_device(const machine_config &mconfig, const char *ta
{
}
std::vector<std::pair<int, const address_space_config *>> apexc_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}
/*
word accessor functions

View File

@ -34,7 +34,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -36,7 +36,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -56,6 +56,13 @@ arcompact_device::arcompact_device(const machine_config &mconfig, const char *ta
{
}
std::vector<std::pair<int, const address_space_config *>> arcompact_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}
offs_t arcompact_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
{

View File

@ -95,7 +95,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -228,6 +228,13 @@ DEFINE_DEVICE_TYPE(ARM, arm_cpu_device, "arm_le", "ARM (little)")
DEFINE_DEVICE_TYPE(ARM_BE, arm_be_cpu_device, "arm_be", "ARM (big)")
std::vector<std::pair<int, const address_space_config *>> arm_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
arm_cpu_device::arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: arm_cpu_device(mconfig, ARM, tag, owner, clock, ENDIANNESS_LITTLE)
{

View File

@ -58,7 +58,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;

View File

@ -118,6 +118,13 @@ sa1110_cpu_device::sa1110_cpu_device(const machine_config &mconfig, const char *
{
}
std::vector<std::pair<int, const address_space_config *>> arm7_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
void arm7_cpu_device::update_reg_ptr()
{
m_reg_group = sRegisterTable[GET_MODE];
@ -436,7 +443,7 @@ bool arm7_cpu_device::arm7_tlb_translate(offs_t &addr, int flags)
}
bool arm7_cpu_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address)
bool arm7_cpu_device::memory_translate(int spacenum, int intention, offs_t &address)
{
/* only applies to the program address space and only does something if the MMU's enabled */
if( spacenum == AS_PROGRAM && ( m_control & COPRO_CTRL_MMU_EN ) )

View File

@ -67,8 +67,8 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
virtual bool memory_translate(int spacenum, int intention, offs_t &address) override;
// device_state_interface overrides
virtual void state_export(const device_state_entry &entry) override;

View File

@ -66,13 +66,11 @@ WRITE32_MEMBER(lpc210x_device::flash_w)
}
const address_space_config *lpc210x_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> lpc210x_device::memory_space_config() const
{
switch(spacenum)
{
case AS_PROGRAM: return &m_program_config;
default: return nullptr;
}
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}

View File

@ -77,7 +77,7 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
uint32_t m_TxPR[2];

View File

@ -235,9 +235,11 @@ void asap_device::device_reset()
// the space doesn't exist
//-------------------------------------------------
const address_space_config *asap_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> asap_device::memory_space_config() const
{
return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}

View File

@ -81,7 +81,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -876,21 +876,13 @@ void avr8_device::device_reset()
// the space doesn't exist
//-------------------------------------------------
const address_space_config *avr8_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> avr8_device::memory_space_config() const
{
if (spacenum == AS_PROGRAM)
{
return &m_program_config;
}
else if (spacenum == AS_DATA)
{
return &m_data_config;
}
else if (spacenum == AS_IO)
{
return &m_io_config;
}
return nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config),
std::make_pair(AS_IO, &m_io_config)
};
}

View File

@ -120,7 +120,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override;

View File

@ -72,6 +72,14 @@ ccpu_cpu_device::ccpu_cpu_device(const machine_config &mconfig, const char *tag,
{
}
std::vector<std::pair<int, const address_space_config *>> ccpu_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config),
std::make_pair(AS_IO, &m_io_config)
};
}
READ8_MEMBER( ccpu_cpu_device::read_jmi )
{

View File

@ -72,16 +72,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
{
switch (spacenum)
{
case AS_PROGRAM: return &m_program_config;
case AS_IO: return &m_io_config;
case AS_DATA: return &m_data_config;
default: return nullptr;
}
}
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;

View File

@ -262,16 +262,12 @@ void clipper_device::execute_set_input(int inputnum, int state)
* The CLIPPER has a true Harvard architecture. In the InterPro, these are tied back together
* again by the MMU, which then directs the access to one of 3 address spaces: main, i/o or boot.
*/
const address_space_config *clipper_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> clipper_device::memory_space_config() const
{
switch (spacenum)
{
case AS_PROGRAM: return &m_insn_config;
case AS_DATA: return &m_data_config;
default: break;
}
return nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_insn_config),
std::make_pair(AS_DATA, &m_data_config)
};
}
/*

View File

@ -195,7 +195,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
#if 0

View File

@ -314,6 +314,14 @@ cop446c_cpu_device::cop446c_cpu_device(const machine_config &mconfig, const char
{
}
std::vector<std::pair<int, const address_space_config *>> cop400_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config)
};
}
/***************************************************************************

View File

@ -157,10 +157,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
{
return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr );
}
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -408,19 +408,12 @@ void cosmac_device::device_reset()
// the space doesn't exist
//-------------------------------------------------
const address_space_config *cosmac_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> cosmac_device::memory_space_config() const
{
switch (spacenum)
{
case AS_PROGRAM:
return &m_program_config;
case AS_IO:
return &m_io_config;
default:
return nullptr;
}
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}

View File

@ -229,7 +229,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -3401,6 +3401,12 @@ cp1610_cpu_device::cp1610_cpu_device(const machine_config &mconfig, const char *
{
}
std::vector<std::pair<int, const address_space_config *>> cp1610_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
void cp1610_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{

View File

@ -54,7 +54,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;

View File

@ -83,6 +83,13 @@ cquestsnd_cpu_device::cquestsnd_cpu_device(const machine_config &mconfig, const
{
}
std::vector<std::pair<int, const address_space_config *>> cquestsnd_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
offs_t cquestsnd_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
{
@ -121,6 +128,12 @@ cquestlin_cpu_device::cquestlin_cpu_device(const machine_config &mconfig, const
{
}
std::vector<std::pair<int, const address_space_config *>> cquestlin_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
offs_t cquestlin_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
{
@ -362,6 +375,12 @@ void cquestrot_cpu_device::state_string_export(const device_state_entry &entry,
}
}
std::vector<std::pair<int, const address_space_config *>> cquestrot_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
/***************************************************************************
LINE DRAWER INITIALIZATION AND SHUTDOWN

View File

@ -84,7 +84,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override { return 8; }
@ -184,7 +184,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@ -298,7 +298,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;

View File

@ -88,21 +88,27 @@ drcbe_interface::drcbe_interface(drcuml_state &drcuml, drc_cache &cache, device_
m_cache(cache),
m_device(device),
m_state(*(drcuml_machine_state *)cache.alloc_near(sizeof(m_state))),
m_accessors((data_accessors *)cache.alloc_near(sizeof(*m_accessors) * ADDRESS_SPACES))
m_accessors(nullptr)
{
// reset the machine state
memset(m_accessors, 0, sizeof(*m_accessors) * ADDRESS_SPACES);
memset(&m_state, 0, sizeof(m_state));
// find the spaces and fetch memory accessors
device_memory_interface *memory;
if (device.interface(memory))
for (address_spacenum spacenum = AS_0; spacenum < ARRAY_LENGTH(m_space); ++spacenum)
{
int count = memory->max_space_count();
m_accessors = ((data_accessors *)cache.alloc_near(sizeof(*m_accessors) * count));
memset(m_accessors, 0, sizeof(*m_accessors) * count);
m_space.resize(count, nullptr);
for (int spacenum = 0; spacenum < count; ++spacenum)
if (memory->has_space(spacenum))
{
m_space[spacenum] = &memory->space(spacenum);
m_space[spacenum]->accessors(m_accessors[spacenum]);
}
}
}

View File

@ -141,12 +141,12 @@ public:
protected:
// internal state
drcuml_state & m_drcuml; // pointer back to our owner
drc_cache & m_cache; // pointer to the cache
device_t & m_device; // CPU device we are associated with
address_space * m_space[ADDRESS_SPACES];// pointers to CPU's address space
drcuml_machine_state & m_state; // state of the machine (in near cache)
data_accessors * m_accessors; // memory accessors (in near cache)
drcuml_state & m_drcuml; // pointer back to our owner
drc_cache & m_cache; // pointer to the cache
device_t & m_device; // CPU device we are associated with
std::vector<address_space *> m_space; // pointers to CPU's address space
drcuml_machine_state & m_state; // state of the machine (in near cache)
data_accessors * m_accessors; // memory accessors (in near cache)
};

View File

@ -201,11 +201,12 @@ void dsp16_device::device_reset()
// the space doesn't exist
//-------------------------------------------------
const address_space_config *dsp16_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> dsp16_device::memory_space_config() const
{
return (spacenum == AS_PROGRAM) ? &m_program_config :
(spacenum == AS_DATA) ? &m_data_config :
nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config)
};
}

View File

@ -77,7 +77,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;

View File

@ -305,9 +305,11 @@ void dsp32c_device::device_reset()
// the space doesn't exist
//-------------------------------------------------
const address_space_config *dsp32c_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> dsp32c_device::memory_space_config() const
{
return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}

View File

@ -118,7 +118,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -127,6 +127,14 @@ dsp56k_device::dsp56k_device(const machine_config &mconfig, const char *tag, dev
{
}
std::vector<std::pair<int, const address_space_config *>> dsp56k_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config)
};
}
/***************************************************************************
MEMORY ACCESSORS
***************************************************************************/

View File

@ -229,7 +229,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr ); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;

View File

@ -173,6 +173,14 @@ void e0c6200_cpu_device::do_interrupt()
standard_irq_callback(m_irq_id);
}
std::vector<std::pair<int, const address_space_config *>> e0c6200_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config)
};
}
void e0c6200_cpu_device::execute_run()
{
while (m_icount > 0)

View File

@ -31,7 +31,7 @@ protected:
virtual void do_interrupt();
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual u32 disasm_min_opcode_bytes() const override { return 2; }

View File

@ -1880,21 +1880,15 @@ void hyperstone_device::device_stop()
//-------------------------------------------------
// memory_space_config - return the configuration
// of the specified address space, or nullptr if
// the space doesn't exist
// of the address spaces
//-------------------------------------------------
const address_space_config *hyperstone_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> hyperstone_device::memory_space_config() const
{
if (spacenum == AS_PROGRAM)
{
return &m_program_config;
}
else if (spacenum == AS_IO)
{
return &m_io_config;
}
return nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}

View File

@ -115,7 +115,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override;

View File

@ -569,8 +569,10 @@ void es5510_device::device_reset() {
memset(&ram_pp, 0, sizeof(ram_t));
}
const address_space_config *es5510_device::memory_space_config(address_spacenum spacenum) const {
return nullptr;
std::vector<std::pair<int, const address_space_config *>> es5510_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
};
}
uint64_t es5510_device::execute_clocks_to_cycles(uint64_t clocks) const {

View File

@ -124,7 +124,7 @@ public:
protected:
virtual void device_start() override;
virtual void device_reset() override;
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override;
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override;
virtual uint32_t execute_min_cycles() const override;

View File

@ -338,13 +338,11 @@ void esrip_device::device_stop()
// the space doesn't exist
//-------------------------------------------------
const address_space_config *esrip_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> esrip_device::memory_space_config() const
{
if (spacenum == AS_PROGRAM)
{
return &m_program_config;
}
return nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
};
}

View File

@ -133,7 +133,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override;

View File

@ -75,6 +75,14 @@ f8_cpu_device::f8_cpu_device(const machine_config &mconfig, const char *tag, dev
memset(m_r, 0x00, sizeof(m_r));
}
std::vector<std::pair<int, const address_space_config *>> f8_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}
/******************************************************************************
* ROMC (ROM cycles)

View File

@ -48,7 +48,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;

View File

@ -117,6 +117,14 @@ g65816_device::g65816_device(const machine_config &mconfig, device_type type, co
}
std::vector<std::pair<int, const address_space_config *>> g65816_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
static ADDRESS_MAP_START(_5a22_map, AS_PROGRAM, 8, _5a22_device)
AM_RANGE(0x4202, 0x4202) AM_MIRROR(0xbf0000) AM_WRITE(wrmpya_w)
AM_RANGE(0x4203, 0x4203) AM_MIRROR(0xbf0000) AM_WRITE(wrmpyb_w)

View File

@ -77,7 +77,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -235,7 +235,7 @@
#define NFLAG_8(A) (A)
#define NFLAG_16(A) ((A)>>8)
#define CFLAG_AS_1() ((FLAG_C>>8)&1)
#define CFLAG_1() ((FLAG_C>>8)&1)

View File

@ -240,7 +240,7 @@
int32_t result, r0, r1, carry; \
r0 = REGISTER_A; \
r1 = SRC; \
carry = CFLAG_AS_1(); \
carry = CFLAG_1(); \
result = (r0 & 0x0f) + (r1 & 0x0f) + (carry << 0); \
if (result > 0x09) result += 0x06; \
carry = result > 0x0f; \
@ -253,7 +253,7 @@
} \
else \
{ \
FLAG_C = tmp16 = REGISTER_A + SRC + CFLAG_AS_1(); \
FLAG_C = tmp16 = REGISTER_A + SRC + CFLAG_1(); \
FLAG_V = VFLAG_ADD_8(SRC, REGISTER_A, FLAG_C); \
FLAG_N = FLAG_Z = REGISTER_A = MAKE_UINT_8(tmp16); \
} \
@ -266,7 +266,7 @@
int32_t result, r0, r1, carry; \
r0 = REGISTER_A; \
r1 = SRC; \
carry = CFLAG_AS_1(); \
carry = CFLAG_1(); \
if (!FLAG_D) \
{ \
result = r0 + r1 + carry; \
@ -994,12 +994,12 @@
#if FLAG_SET_M
#define OP_ROL() \
CLK(CLK_OP + CLK_IMPLIED); \
FLAG_C = (REGISTER_A<<1) | CFLAG_AS_1(); \
FLAG_C = (REGISTER_A<<1) | CFLAG_1(); \
FLAG_N = FLAG_Z = REGISTER_A = MAKE_UINT_8(FLAG_C)
#else
#define OP_ROL() \
CLK(CLK_OP + CLK_IMPLIED); \
FLAG_C = (REGISTER_A<<1) | CFLAG_AS_1(); \
FLAG_C = (REGISTER_A<<1) | CFLAG_1(); \
FLAG_Z = REGISTER_A = MAKE_UINT_16(FLAG_C); \
FLAG_N = NFLAG_16(FLAG_C); \
FLAG_C = CFLAG_16(FLAG_C)
@ -1011,14 +1011,14 @@
#define OP_ROLM(MODE) \
CLK(CLK_OP + CLK_RMW8 + CLK_W_##MODE); \
DST = EA_##MODE(); \
FLAG_C = (read_8_##MODE(DST)<<1) | CFLAG_AS_1(); \
FLAG_C = (read_8_##MODE(DST)<<1) | CFLAG_1(); \
FLAG_N = FLAG_Z = MAKE_UINT_8(FLAG_C); \
write_8_##MODE(DST, FLAG_Z)
#else
#define OP_ROLM(MODE) \
CLK(CLK_OP + CLK_RMW16 + CLK_W_##MODE); \
DST = EA_##MODE(); \
FLAG_C = (read_16_##MODE(DST)<<1) | CFLAG_AS_1(); \
FLAG_C = (read_16_##MODE(DST)<<1) | CFLAG_1(); \
FLAG_Z = MAKE_UINT_16(FLAG_C); \
FLAG_N = NFLAG_16(FLAG_C); \
FLAG_C = CFLAG_16(FLAG_C); \
@ -1102,7 +1102,7 @@
if(!FLAG_D) \
{ \
FLAG_C = ~FLAG_C; \
FLAG_C = REGISTER_A - SRC - CFLAG_AS_1(); \
FLAG_C = REGISTER_A - SRC - CFLAG_1(); \
FLAG_V = VFLAG_SUB_8(SRC, REGISTER_A, FLAG_C); \
FLAG_N = FLAG_Z = REGISTER_A = MAKE_UINT_8(FLAG_C); \
FLAG_C = ~FLAG_C; \
@ -1114,7 +1114,7 @@
r0 = REGISTER_A; \
r1 = SRC; \
r1 ^= 0xff; \
carry = CFLAG_AS_1(); \
carry = CFLAG_1(); \
result = (r0 & 0x0f) + (r1 & 0x0f) + (carry << 0); \
if (result <= 0x0f) result -= 0x06; \
carry = result > 0x0f; \
@ -1133,7 +1133,7 @@
r0 = REGISTER_A; \
r1 = SRC; \
r1 ^= 0xffff; \
carry = CFLAG_AS_1(); \
carry = CFLAG_1(); \
if (!FLAG_D) \
{ \
result = r0 + r1 + carry; \
@ -1450,7 +1450,7 @@
#undef OP_XCE
#define OP_XCE() \
CLK(CLK_OP + CLK_IMPLIED); \
SRC = CFLAG_AS_1(); \
SRC = CFLAG_1(); \
FLAG_C = FLAG_E<<8; \
g65816i_set_flag_e(SRC)

View File

@ -169,6 +169,13 @@ h6280_device::h6280_device(const machine_config &mconfig, const char *tag, devic
m_opcode[op] = s_opcodetable[op];
}
std::vector<std::pair<int, const address_space_config *>> h6280_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}
const h6280_device::ophandler h6280_device::s_opcodetable[256] =
{
@ -2564,7 +2571,7 @@ WRITE8_MEMBER( h6280_device::timer_w )
}
}
bool h6280_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address)
bool h6280_device::memory_translate(int spacenum, int intention, offs_t &address)
{
if (spacenum == AS_PROGRAM)
address = translated(address);

View File

@ -85,8 +85,8 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
virtual bool memory_translate(int spacenum, int intention, offs_t &address) override;
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override;

View File

@ -236,11 +236,12 @@ void h8_device::internal_update()
internal_update(total_cycles());
}
const address_space_config *h8_device::memory_space_config(address_spacenum spacenum) const
std::vector<std::pair<int, const address_space_config *>> h8_device::memory_space_config() const
{
return
spacenum == AS_PROGRAM ? &program_config :
spacenum == AS_IO ? &io_config : nullptr;
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &program_config),
std::make_pair(AS_IO, &io_config)
};
}

View File

@ -167,7 +167,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;

View File

@ -73,6 +73,12 @@ hcd62121_cpu_device::hcd62121_cpu_device(const machine_config &mconfig, const ch
{
}
std::vector<std::pair<int, const address_space_config *>> hcd62121_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
u8 hcd62121_cpu_device::read_op()
{

View File

@ -54,7 +54,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_export(const device_state_entry &entry) override;

View File

@ -120,6 +120,13 @@ hd61700_cpu_device::hd61700_cpu_device(const machine_config &mconfig, const char
{
}
std::vector<std::pair<int, const address_space_config *>> hd61700_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
//-------------------------------------------------
// device_start - start up the device

View File

@ -87,7 +87,7 @@ protected:
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override { return 1; }

View File

@ -149,6 +149,13 @@ hd44828_device::hd44828_device(const machine_config &mconfig, const char *tag, d
: hmcs45_cpu_device(mconfig, HD44828, tag, owner, clock, IS_CMOS)
{ }
std::vector<std::pair<int, const address_space_config *>> hmcs40_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_DATA, &m_data_config)
};
}
// disasm
void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const

View File

@ -155,7 +155,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_disasm_interface overrides
virtual u32 disasm_min_opcode_bytes() const override { return 2; }

View File

@ -152,6 +152,14 @@ hp_hybrid_cpu_device::hp_hybrid_cpu_device(const machine_config &mconfig, device
{
}
std::vector<std::pair<int, const address_space_config *>> hp_hybrid_cpu_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}
void hp_hybrid_cpu_device::device_start()
{
m_reg_A = 0;

View File

@ -79,7 +79,7 @@ protected:
virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) = 0;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override;
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;

View File

@ -131,6 +131,13 @@ pentium4_device::pentium4_device(const machine_config &mconfig, const char *tag,
set_vtlb_dynamic_entries(196);
}
std::vector<std::pair<int, const address_space_config *>> i386_device::memory_space_config() const
{
return std::vector<std::pair<int, const address_space_config *>> {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
};
}
int i386_parity_table[256];
MODRM_TABLE i386_MODRM_table[256];
@ -4005,7 +4012,7 @@ void i386_device::execute_run()
/*************************************************************************/
bool i386_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address)
bool i386_device::memory_translate(int spacenum, int intention, offs_t &address)
{
bool ret = true;
if(spacenum == AS_PROGRAM)

Some files were not shown because too many files have changed in this diff Show More