mirror of
https://github.com/holub/mame
synced 2025-10-04 08:28:39 +03:00
Cleanups and version bump
This commit is contained in:
parent
a7d12daf5b
commit
96aa5e1c08
@ -2,12 +2,12 @@
|
|||||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
Atari 400 / 800 floppies
|
Atari 400 / 800 floppies
|
||||||
(skeleton list)
|
(skeleton list)
|
||||||
|
|
||||||
note: many 'original' floppy images are in .atx format, whereas cracked / unprotected ones are .atr format
|
note: many 'original' floppy images are in .atx format, whereas cracked / unprotected ones are .atr format
|
||||||
.atx is unsupported, although apparently has been reverse engineered (insert info link here)
|
.atx is unsupported, although apparently has been reverse engineered (insert info link here)
|
||||||
There are also images in .xex format?
|
There are also images in .xex format?
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -23,6 +23,6 @@
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
|
|
||||||
</softwarelist>
|
</softwarelist>
|
||||||
|
@ -20935,7 +20935,7 @@
|
|||||||
<dataarea name="flop" size="1049612">
|
<dataarea name="flop" size="1049612">
|
||||||
<rom name="hugo - pa nye eventyr 2 (denmark) (disk 1 of 6).ipf" size="1049612" crc="47ebcd60" sha1="e7689d9fab1d1eabb204121633ad0fad87100e86" offset="0"/>
|
<rom name="hugo - pa nye eventyr 2 (denmark) (disk 1 of 6).ipf" size="1049612" crc="47ebcd60" sha1="e7689d9fab1d1eabb204121633ad0fad87100e86" offset="0"/>
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop2" interface="floppy_3_5">
|
<part name="flop2" interface="floppy_3_5">
|
||||||
<feature name="part_id" value="Disk 2" />
|
<feature name="part_id" value="Disk 2" />
|
||||||
<dataarea name="flop" size="1049612">
|
<dataarea name="flop" size="1049612">
|
||||||
|
@ -2766,7 +2766,7 @@
|
|||||||
<software name="breakout">
|
<software name="breakout">
|
||||||
<description>Breakout</description>
|
<description>Breakout</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher>Apple Computer, Inc.</publisher> <!-- programmed by Steve Wozniak -->
|
<publisher>Apple Computer, Inc.</publisher> <!-- programmed by Steve Wozniak -->
|
||||||
|
|
||||||
<part name="flop11" interface="floppy_5_25">
|
<part name="flop11" interface="floppy_5_25">
|
||||||
<dataarea name="flop1" size="143360">
|
<dataarea name="flop1" size="143360">
|
||||||
|
@ -6903,11 +6903,11 @@
|
|||||||
<publisher>Commodore</publisher>
|
<publisher>Commodore</publisher>
|
||||||
<info name="serial" value="C-64320" />
|
<info name="serial" value="C-64320" />
|
||||||
<sharedfeat name="compatibility" value="NTSC,PAL"/>
|
<sharedfeat name="compatibility" value="NTSC,PAL"/>
|
||||||
|
|
||||||
<part name="cart" interface="c64_cart">
|
<part name="cart" interface="c64_cart">
|
||||||
<feature name="game" value="0" />
|
<feature name="game" value="0" />
|
||||||
<feature name="exrom" value="0" />
|
<feature name="exrom" value="0" />
|
||||||
|
|
||||||
<dataarea name="roml" size="0x4000">
|
<dataarea name="roml" size="0x4000">
|
||||||
<rom name="a-bee-c.rom" size="0x4000" crc="5cfe999c" sha1="57202c3829f1d668c445ae7e792ae80245682a99" offset="0" />
|
<rom name="a-bee-c.rom" size="0x4000" crc="5cfe999c" sha1="57202c3829f1d668c445ae7e792ae80245682a99" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
|
@ -1085,7 +1085,7 @@
|
|||||||
<rom name="cmk49.d64" size="174848" crc="5ef6645a" sha1="c9afd892731ebd68bc67bd8c6c84cbb1aa5e874d" offset="0" />
|
<rom name="cmk49.d64" size="174848" crc="5ef6645a" sha1="c9afd892731ebd68bc67bd8c6c84cbb1aa5e874d" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Test -->
|
<!-- Test -->
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Games for the MIXT BOOK PLAYER COPERA
|
Games for the MIXT BOOK PLAYER COPERA
|
||||||
|
|
||||||
* メロディランド - Melody Land (Yamaha - 199312xx - MMGS-1)
|
* メロディランド - Melody Land (Yamaha - 199312xx - MMGS-1)
|
||||||
@ -16,9 +16,9 @@ not dumped?
|
|||||||
* コペラのちきゅうだいすき - Copera no Chikyuu Daisuki (Yamaha - ???? - MMGS-9)
|
* コペラのちきゅうだいすき - Copera no Chikyuu Daisuki (Yamaha - ???? - MMGS-9)
|
||||||
* 冒険!メロリン島 - Bouken! Merorin Shima (Yamaha - ???? - MMGS-10)
|
* 冒険!メロリン島 - Bouken! Merorin Shima (Yamaha - ???? - MMGS-10)
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<softwarelist name="copera" description="Yamaha / Sega Copera cartridges">
|
<softwarelist name="copera" description="Yamaha / Sega Copera cartridges">
|
||||||
|
|
||||||
|
|
||||||
<software name="melody">
|
<software name="melody">
|
||||||
@ -68,7 +68,7 @@ not dumped?
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="outacanv">
|
<software name="outacanv">
|
||||||
<description>Outa no Canvas (Jpn)</description>
|
<description>Outa no Canvas (Jpn)</description>
|
||||||
<year>1994</year>
|
<year>1994</year>
|
||||||
@ -83,8 +83,8 @@ not dumped?
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="copekono">
|
<software name="copekono">
|
||||||
<description>Copera no Kono Otonaani (Jpn)</description>
|
<description>Copera no Kono Otonaani (Jpn)</description>
|
||||||
<year>1994</year>
|
<year>1994</year>
|
||||||
<publisher>Yamaha</publisher>
|
<publisher>Yamaha</publisher>
|
||||||
@ -98,7 +98,7 @@ not dumped?
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="mikeatmw">
|
<software name="mikeatmw">
|
||||||
<description>Mike to Asobou Tobidase Milky Way (Jpn)</description>
|
<description>Mike to Asobou Tobidase Milky Way (Jpn)</description>
|
||||||
<year>1994</year>
|
<year>1994</year>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||||
<softwarelist name="famicom_cass" description="Nintendo Famicom Family BASIC cassettes">
|
<softwarelist name="famicom_cass" description="Nintendo Famicom Family BASIC cassettes">
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
This list is a bit peculiar, since it contains cassette images obtained on a FC
|
This list is a bit peculiar, since it contains cassette images obtained on a FC
|
||||||
by saving BASIC programs typed in from magazines, books, or homebrew
|
by saving BASIC programs typed in from magazines, books, or homebrew
|
||||||
|
@ -52,5 +52,5 @@
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
</softwarelist>
|
</softwarelist>
|
||||||
|
@ -13,7 +13,7 @@ Missing files come here
|
|||||||
<description>Advanced Diagnostics for the IBM AT (v2.07)</description>
|
<description>Advanced Diagnostics for the IBM AT (v2.07)</description>
|
||||||
<year>1985</year>
|
<year>1985</year>
|
||||||
<publisher>IBM</publisher>
|
<publisher>IBM</publisher>
|
||||||
|
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="368640">
|
<dataarea name="flop" size="368640">
|
||||||
<rom name="atad_207.img" size="368640" crc="43d0783b" sha1="63a48f7dd92382356222ed2030cd4b900d09de3d" offset="0" />
|
<rom name="atad_207.img" size="368640" crc="43d0783b" sha1="63a48f7dd92382356222ed2030cd4b900d09de3d" offset="0" />
|
||||||
|
@ -31027,16 +31027,16 @@ This dump is either a bad dump or a wrongly patched one.
|
|||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Software below is test / demo software for the purpose of validating our emulation
|
<!-- Software below is test / demo software for the purpose of validating our emulation
|
||||||
where possible any information / additional files provided with the software has been included in extra data areas
|
where possible any information / additional files provided with the software has been included in extra data areas
|
||||||
in order to mirror the original release packages and possibly provide useful references
|
in order to mirror the original release packages and possibly provide useful references
|
||||||
|
|
||||||
If no additional materials are listed then the results of a successful run should be mentioned here for future reference.
|
If no additional materials are listed then the results of a successful run should be mentioned here for future reference.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- most effects currently fail -->
|
<!-- most effects currently fail -->
|
||||||
<!-- titan-overdrivemegademo.zip -->
|
<!-- titan-overdrivemegademo.zip -->
|
||||||
<!-- http://www.pouet.net/prod.php?which=61724 -->
|
<!-- http://www.pouet.net/prod.php?which=61724 -->
|
||||||
<software name="d_titovr">
|
<software name="d_titovr">
|
||||||
<description>Overdrive (Demo) (Euro)</description>
|
<description>Overdrive (Demo) (Euro)</description>
|
||||||
<year>2013</year>
|
<year>2013</year>
|
||||||
@ -31045,19 +31045,19 @@ This dump is either a bad dump or a wrongly patched one.
|
|||||||
<dataarea name="rom" size="0x400000">
|
<dataarea name="rom" size="0x400000">
|
||||||
<rom name="titan-overdrivemegademo.bin" size="0x3f01be" crc="3deb19a9" sha1="6085182099d6a9ad2c8242eae263507e42269b66" offset="0x000000" loadflag="load16_word_swap"/>
|
<rom name="titan-overdrivemegademo.bin" size="0x3f01be" crc="3deb19a9" sha1="6085182099d6a9ad2c8242eae263507e42269b66" offset="0x000000" loadflag="load16_word_swap"/>
|
||||||
</dataarea>
|
</dataarea>
|
||||||
<!-- non-rom extras (should be marked as optional?) -->
|
<!-- non-rom extras (should be marked as optional?) -->
|
||||||
<dataarea name="misc" size="0x7af9">
|
<dataarea name="misc" size="0x7af9">
|
||||||
<rom name="titan-overdrivemegademo.nfo" size="0x7af9" crc="d560530a" sha1="f3a130881878e95a1db6e32268e7b1b001965c1a" offset="0x000000"/>
|
<rom name="titan-overdrivemegademo.nfo" size="0x7af9" crc="d560530a" sha1="f3a130881878e95a1db6e32268e7b1b001965c1a" offset="0x000000"/>
|
||||||
</dataarea>
|
</dataarea>
|
||||||
<dataarea name="misc2" size="0x13489c0">
|
<dataarea name="misc2" size="0x13489c0">
|
||||||
<rom name="titan-overdrivemegademo_inlay.pdf" size="0x13489c0" crc="ae55e12d" sha1="620fcba1600563b87543b027c42687da7d876b03" offset="0x000000"/>
|
<rom name="titan-overdrivemegademo_inlay.pdf" size="0x13489c0" crc="ae55e12d" sha1="620fcba1600563b87543b027c42687da7d876b03" offset="0x000000"/>
|
||||||
</dataarea>
|
</dataarea>
|
||||||
<dataarea name="misc3" size="0xa68cf">
|
<dataarea name="misc3" size="0xa68cf">
|
||||||
<rom name="titan-overdrivemegademo_label.pdf" size="0xa68cf" crc="a527c826" sha1="449c945a0ddcbb145c7c92bc01fac543fc1352da" offset="0x000000"/>
|
<rom name="titan-overdrivemegademo_label.pdf" size="0xa68cf" crc="a527c826" sha1="449c945a0ddcbb145c7c92bc01fac543fc1352da" offset="0x000000"/>
|
||||||
</dataarea>
|
</dataarea>
|
||||||
<dataarea name="misc4" size="0x1c985d">
|
<dataarea name="misc4" size="0x1c985d">
|
||||||
<rom name="titan-overdrivemegademo_poster.png" size="0x1c985d" crc="0dfeac10" sha1="cdfd4ff93e199da66cab3ef49d39828f3eb6040c" offset="0x000000"/>
|
<rom name="titan-overdrivemegademo_poster.png" size="0x1c985d" crc="0dfeac10" sha1="cdfd4ff93e199da66cab3ef49d39828f3eb6040c" offset="0x000000"/>
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
|
@ -193,7 +193,7 @@
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="2ndspace">
|
<software name="2ndspace">
|
||||||
<description>2nd Space</description>
|
<description>2nd Space</description>
|
||||||
<year>1993</year>
|
<year>1993</year>
|
||||||
@ -206,7 +206,7 @@
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="trapturn">
|
<software name="trapturn">
|
||||||
<description>Trap & Turn</description>
|
<description>Trap & Turn</description>
|
||||||
<year>1993</year>
|
<year>1993</year>
|
||||||
@ -219,7 +219,7 @@
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="bombdisp">
|
<software name="bombdisp">
|
||||||
<description>Bomb Disposer</description>
|
<description>Bomb Disposer</description>
|
||||||
<year>1993</year>
|
<year>1993</year>
|
||||||
@ -232,7 +232,7 @@
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="mmaze">
|
<software name="mmaze">
|
||||||
<description>Magic Maze</description>
|
<description>Magic Maze</description>
|
||||||
<year>1993</year>
|
<year>1993</year>
|
||||||
@ -245,7 +245,7 @@
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="vex">
|
<software name="vex">
|
||||||
<description>Vex</description>
|
<description>Vex</description>
|
||||||
<year>1993</year>
|
<year>1993</year>
|
||||||
|
390
hash/pc98.xml
390
hash/pc98.xml
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||||
<softwarelist name="pc98" description="NEC PC-9801 disk images">
|
<softwarelist name="pc98" description="NEC PC-9801 disk images">
|
||||||
|
|
||||||
<software name="pc98dosd">
|
<software name="pc98dosd">
|
||||||
<description>PC-98DO+ System Disk</description>
|
<description>PC-98DO+ System Disk</description>
|
||||||
@ -98,7 +98,7 @@ only have some part of Windows file and a Video driver(CLGD?).
|
|||||||
<!--
|
<!--
|
||||||
PC-98xx NEW (as per 31 July 2013) software list starts here.
|
PC-98xx NEW (as per 31 July 2013) software list starts here.
|
||||||
TODO:
|
TODO:
|
||||||
- Manually parse the list, add publisher / year where possible, fix floppy order (i.e. if a floppy is labeled opening.fdi or system.fdi is the one
|
- Manually parse the list, add publisher / year where possible, fix floppy order (i.e. if a floppy is labeled opening.fdi or system.fdi is the one
|
||||||
required at PC-98xx boot), label ALL userX.fdi images as bad dump, test all games and double check support status, fix zipnames (most sucks right now),
|
required at PC-98xx boot), label ALL userX.fdi images as bad dump, test all games and double check support status, fix zipnames (most sucks right now),
|
||||||
identify anything that has a size different than 1265664 (== 3'5" floppy image), document any unorthodox way for running a given sw.
|
identify anything that has a size different than 1265664 (== 3'5" floppy image), document any unorthodox way for running a given sw.
|
||||||
|
|
||||||
@ -145,12 +145,12 @@ TODO:
|
|||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="2069ad_b.fdi" size="1265664" crc="3e596802" sha1="05633e7847be623f1fdc8e4c4cbaa91dd7ac8a68" offset="0" />
|
<rom name="2069ad_b.fdi" size="1265664" crc="3e596802" sha1="05633e7847be623f1fdc8e4c4cbaa91dd7ac8a68" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop3" interface="floppy_5_25">
|
<part name="flop3" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="2069ad_c.fdi" size="1265664" crc="25c601a5" sha1="a6b6b7096fedf6a0536fee0b380e976ebd0eb63b" offset="0" />
|
<rom name="2069ad_c.fdi" size="1265664" crc="25c601a5" sha1="a6b6b7096fedf6a0536fee0b380e976ebd0eb63b" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="31iwayu" supported="yes">
|
<software name="31iwayu" supported="yes">
|
||||||
@ -162,7 +162,7 @@ TODO:
|
|||||||
<rom name="disk a.fdi" size="1265664" crc="7131e56e" sha1="2070ebdd0acb1a50d77cc73368b448fe05096a3e" offset="0" />
|
<rom name="disk a.fdi" size="1265664" crc="7131e56e" sha1="2070ebdd0acb1a50d77cc73368b448fe05096a3e" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
|
|
||||||
<part name="flop2" interface="floppy_5_25">
|
<part name="flop2" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="disk b.fdi" size="1265664" crc="54ed018b" sha1="69aaf92e5545a26fe62e4acd5334249173b0e06b" offset="0" />
|
<rom name="disk b.fdi" size="1265664" crc="54ed018b" sha1="69aaf92e5545a26fe62e4acd5334249173b0e06b" offset="0" />
|
||||||
@ -209,7 +209,7 @@ TODO:
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<!--
|
<!--
|
||||||
Note: all of these are expansions (and have no clue about how to load them either)
|
Note: all of these are expansions (and have no clue about how to load them either)
|
||||||
-->
|
-->
|
||||||
<part name="flop2" interface="floppy_5_25">
|
<part name="flop2" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
@ -833,24 +833,24 @@ TODO:
|
|||||||
|
|
||||||
<software name="add_pdrk">
|
<software name="add_pdrk">
|
||||||
<description>AD&D Pools of Darkness</description>
|
<description>AD&D Pools of Darkness</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="diska.fdi" size="1265664" crc="a40becba" sha1="3c65e5ab1f95d5f9863681c472b8c73927e0a2c2" offset="0" />
|
<rom name="diska.fdi" size="1265664" crc="a40becba" sha1="3c65e5ab1f95d5f9863681c472b8c73927e0a2c2" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop2" interface="floppy_5_25">
|
<part name="flop2" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="diskb.fdi" size="1265664" crc="2fb75bcb" sha1="78df14162d4fbd9e6c8f6a67e00d3aed3dd02bc7" offset="0" />
|
<rom name="diskb.fdi" size="1265664" crc="2fb75bcb" sha1="78df14162d4fbd9e6c8f6a67e00d3aed3dd02bc7" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop3" interface="floppy_5_25">
|
<part name="flop3" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="opening.fdi" size="1265664" crc="11cf2229" sha1="abf3bed693797d9bfecb1b7dc42eadcfb8a14641" offset="0" />
|
<rom name="opening.fdi" size="1265664" crc="11cf2229" sha1="abf3bed693797d9bfecb1b7dc42eadcfb8a14641" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="add_ssil" supported="no">
|
<software name="add_ssil" supported="no">
|
||||||
<description>AD&D Secret of the Silver Blades</description>
|
<description>AD&D Secret of the Silver Blades</description>
|
||||||
@ -882,7 +882,7 @@ TODO:
|
|||||||
<rom name="user.d88" size="0x138fb0" crc="efd89d91" sha1="c243ec20af65ea9f612926c2c8ce868750a076e4" offset="0" status="baddump" />
|
<rom name="user.d88" size="0x138fb0" crc="efd89d91" sha1="c243ec20af65ea9f612926c2c8ce868750a076e4" offset="0" status="baddump" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="advanp2p">
|
<software name="advanp2p">
|
||||||
<description>Advanced Power Dolls 2 Premium Disk</description>
|
<description>Advanced Power Dolls 2 Premium Disk</description>
|
||||||
@ -912,9 +912,9 @@ TODO:
|
|||||||
</part>
|
</part>
|
||||||
<!-- hacked (and working since it's 2hd floppy) set, not going to be supported however
|
<!-- hacked (and working since it's 2hd floppy) set, not going to be supported however
|
||||||
<part name="flop3" interface="floppy_5_25">
|
<part name="flop3" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="0x1093f0">
|
<dataarea name="flop" size="0x1093f0">
|
||||||
<rom name="adventureland 2hd.d88" size="0x1093f0" crc="dfe46669" sha1="ee0e6fae3553f8b60d515ba5c0bfdbe56cb7df16" offset="0" />
|
<rom name="adventureland 2hd.d88" size="0x1093f0" crc="dfe46669" sha1="ee0e6fae3553f8b60d515ba5c0bfdbe56cb7df16" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
-->
|
-->
|
||||||
</software>
|
</software>
|
||||||
@ -1645,16 +1645,16 @@ TODO:
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
<!--
|
<!--
|
||||||
<software name="applec4">
|
<software name="applec4">
|
||||||
<description> Apple Club - Data Shuu #04 - Tonari no Oneesan Hen</description>
|
<description> Apple Club - Data Shuu #04 - Tonari no Oneesan Hen</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="?pc98????????1 ????#4.fdi" size="1265664" crc=" ***" sha1="20e87b43 ?CRC32*Apple Club 1\aplclub1.FD" offset="0" />
|
<rom name="?pc98????????1 ????#4.fdi" size="1265664" crc=" ***" sha1="20e87b43 ?CRC32*Apple Club 1\aplclub1.FD" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
<software name="applecl">
|
<software name="applecl">
|
||||||
<description>Apple Club 1 - Kinjirareta Asobi Series</description>
|
<description>Apple Club 1 - Kinjirareta Asobi Series</description>
|
||||||
@ -2041,7 +2041,7 @@ TODO:
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="asokono">
|
<software name="asokono">
|
||||||
<description>Asoko no Koufuku - Yamamoto-san-chi no Baai ni Okeru Asoko no Fukou ni Tsuite</description>
|
<description>Asoko no Koufuku - Yamamoto-san-chi no Baai ni Okeru Asoko no Fukou ni Tsuite</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
@ -2638,7 +2638,7 @@ TODO:
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="bodyins">
|
<software name="bodyins">
|
||||||
<description>Body Inspection in Belloncho</description>
|
<description>Body Inspection in Belloncho</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
@ -2664,7 +2664,7 @@ TODO:
|
|||||||
<rom name="bokosuka.d88" size="0x10f760" crc="d5da4869" sha1="1fd6124180be8f20acd188702e3b9f9c2d128428" offset="0" />
|
<rom name="bokosuka.d88" size="0x10f760" crc="d5da4869" sha1="1fd6124180be8f20acd188702e3b9f9c2d128428" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="bomberq">
|
<software name="bomberq">
|
||||||
<description>Bomber Quest</description>
|
<description>Bomber Quest</description>
|
||||||
@ -3093,7 +3093,7 @@ TODO:
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="burningd">
|
<software name="burningd">
|
||||||
<description>Burning Dragon</description>
|
<description>Burning Dragon</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
@ -3257,7 +3257,7 @@ TODO:
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="carata" cloneof="carat">
|
<software name="carata" cloneof="carat">
|
||||||
<description>Carat - Magical Blocks(another)</description>
|
<description>Carat - Magical Blocks(another)</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
@ -4275,7 +4275,7 @@ TODO:
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Presumably copy protection floppy, to be used with CD-Rom
|
Presumably copy protection floppy, to be used with CD-Rom
|
||||||
-->
|
-->
|
||||||
<software name="debut">
|
<software name="debut">
|
||||||
@ -5098,7 +5098,7 @@ Presumably copy protection floppy, to be used with CD-Rom
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
|
|
||||||
<software name="dragone">
|
<software name="dragone">
|
||||||
<description>Dragon Egg</description>
|
<description>Dragon Egg</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
@ -5527,16 +5527,16 @@ Presumably copy protection floppy, to be used with CD-Rom
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
TODO: missing install disks
|
TODO: missing install disks
|
||||||
<software name="eveber">
|
<software name="eveber">
|
||||||
<description>Eve - Burst Error</description>
|
<description>Eve - Burst Error</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="dos62.fdi" size="1265664" crc="678b88a7" sha1="480dee4a4df0c588416b0895057caeba862eea7f" offset="0" />
|
<rom name="dos62.fdi" size="1265664" crc="678b88a7" sha1="480dee4a4df0c588416b0895057caeba862eea7f" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<software name="f14fd">
|
<software name="f14fd">
|
||||||
@ -5873,30 +5873,30 @@ TODO: missing install disks
|
|||||||
|
|
||||||
<!-- same as all bishoujo extra disk 2 -->
|
<!-- same as all bishoujo extra disk 2 -->
|
||||||
<!--
|
<!--
|
||||||
<software name="floppyb2">
|
<software name="floppyb2">
|
||||||
<description>Floppy Bunko 17 - All Bishoujo Art Graphics Vol. 2</description>
|
<description>Floppy Bunko 17 - All Bishoujo Art Graphics Vol. 2</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="disk_2.fdi" size="1265664" crc="ee12585b" sha1="941abd888e3ce84c072a28f4cd73b15cb6c8945b" offset="0" />
|
<rom name="disk_2.fdi" size="1265664" crc="ee12585b" sha1="941abd888e3ce84c072a28f4cd73b15cb6c8945b" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- same as all bishoujo extra disk 3 -->
|
<!-- same as all bishoujo extra disk 3 -->
|
||||||
<!--
|
<!--
|
||||||
<software name="floppyb3">
|
<software name="floppyb3">
|
||||||
<description>Floppy Bunko 20 - All Bishoujo Art Graphics Vol. 3</description>
|
<description>Floppy Bunko 20 - All Bishoujo Art Graphics Vol. 3</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="disk_3.fdi" size="1265664" crc="30ae9567" sha1="e46a1cd8fa82a99a497048001b2e6d0268c4a5d6" offset="0" />
|
<rom name="disk_3.fdi" size="1265664" crc="30ae9567" sha1="e46a1cd8fa82a99a497048001b2e6d0268c4a5d6" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<software name="foxy">
|
<software name="foxy">
|
||||||
@ -6429,16 +6429,16 @@ TODO: missing install disks
|
|||||||
<!--
|
<!--
|
||||||
Fake disk?
|
Fake disk?
|
||||||
|
|
||||||
<software name="golflin">
|
<software name="golflin">
|
||||||
<description>Golf Links 386 Pro</description>
|
<description>Golf Links 386 Pro</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="golf links 386 pro anex86 cd & hd boot disk.fdi" size="1265664" crc="05559a9e" sha1="77510219ec879af55a90da092e268c5fa4b0257c" offset="0" />
|
<rom name="golf links 386 pro anex86 cd & hd boot disk.fdi" size="1265664" crc="05559a9e" sha1="77510219ec879af55a90da092e268c5fa4b0257c" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
<software name="golflpr">
|
<software name="golflpr">
|
||||||
<description>Golf Links Champion Course Pinehurst Resort and Country Ciub</description>
|
<description>Golf Links Champion Course Pinehurst Resort and Country Ciub</description>
|
||||||
@ -6814,7 +6814,7 @@ Fake disk?
|
|||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Game is named "image", with lowercase i on title screen
|
Game is named "image", with lowercase i on title screen
|
||||||
-->
|
-->
|
||||||
<software name="image">
|
<software name="image">
|
||||||
<description>image</description>
|
<description>image</description>
|
||||||
@ -7310,16 +7310,16 @@ Game is named "image", with lowercase i on title screen
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
TODO: other two disks, in .nfd format
|
TODO: other two disks, in .nfd format
|
||||||
<software name="kawaisou">
|
<software name="kawaisou">
|
||||||
<description>Kawaisou Monogatari</description>
|
<description>Kawaisou Monogatari</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="user.fdi" size="1265664" crc="6c424c81" sha1="5feb465c5178534a575b555eeeabacae36b9f650" offset="0" status="baddump" />
|
<rom name="user.fdi" size="1265664" crc="6c424c81" sha1="5feb465c5178534a575b555eeeabacae36b9f650" offset="0" status="baddump" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
<software name="kerakera">
|
<software name="kerakera">
|
||||||
<description>Kerakera-sei</description>
|
<description>Kerakera-sei</description>
|
||||||
@ -8279,7 +8279,7 @@ TODO: other two disks, in .nfd format
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="madouars">
|
<software name="madouars">
|
||||||
<description>Madou Monogatari A-R-S</description>
|
<description>Madou Monogatari A-R-S</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
@ -8465,16 +8465,16 @@ TODO: other two disks, in .nfd format
|
|||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- TODO: another .nfd floppy used
|
<!-- TODO: another .nfd floppy used
|
||||||
<software name="mtaikai">
|
<software name="mtaikai">
|
||||||
<description>Mahjong Taikai</description>
|
<description>Mahjong Taikai</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="user.fdi" size="1265664" crc="fca4122d" sha1="6797330e0237af84f1f4f112704034281834c97b" offset="0" status="baddump" />
|
<rom name="user.fdi" size="1265664" crc="fca4122d" sha1="6797330e0237af84f1f4f112704034281834c97b" offset="0" status="baddump" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
<software name="mahoush">
|
<software name="mahoush">
|
||||||
<description>Mahou Shoujo Rina</description>
|
<description>Mahou Shoujo Rina</description>
|
||||||
@ -8736,16 +8736,16 @@ TODO: other two disks, in .nfd format
|
|||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- same as disk 02 fugasel1
|
<!-- same as disk 02 fugasel1
|
||||||
<software name="mazeque">
|
<software name="mazeque">
|
||||||
<description>Maze Quest</description>
|
<description>Maze Quest</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="maze quest.fdi" size="1265664" crc="3949e01a" sha1="9ee3c3dac883036375c69192fd98af11695ffea8" offset="0" />
|
<rom name="maze quest.fdi" size="1265664" crc="3949e01a" sha1="9ee3c3dac883036375c69192fd98af11695ffea8" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<software name="meikyuu">
|
<software name="meikyuu">
|
||||||
@ -9072,16 +9072,16 @@ TODO: other two disks, in .nfd format
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Omake disk?
|
Omake disk?
|
||||||
<software name="mime">
|
<software name="mime">
|
||||||
<description>Mime</description>
|
<description>Mime</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="special.fdi" size="1265664" crc="7a3b8749" sha1="2ed561501500af290bd09e09e523d934c9ba7b5c" offset="0" />
|
<rom name="special.fdi" size="1265664" crc="7a3b8749" sha1="2ed561501500af290bd09e09e523d934c9ba7b5c" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<software name="mink01">
|
<software name="mink01">
|
||||||
@ -9222,7 +9222,7 @@ Omake disk?
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Requires MS-DOS 5.00H plus an unknown procedure (HDD install?)
|
Requires MS-DOS 5.00H plus an unknown procedure (HDD install?)
|
||||||
-->
|
-->
|
||||||
<software name="gundamao" supported="no">
|
<software name="gundamao" supported="no">
|
||||||
@ -9753,18 +9753,18 @@ Requires MS-DOS 5.00H plus an unknown procedure (HDD install?)
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Other three disks, in nfd format
|
Other three disks, in nfd format
|
||||||
<software name="n88bas61">
|
<software name="n88bas61">
|
||||||
<description>N88 BASIC v6.1</description>
|
<description>N88 BASIC v6.1</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="rx_train.fdi" size="1265664" crc="607b85f8" sha1="0d2fdf6f0550e50127b27b42b470ba25b305239c" offset="0" />
|
<rom name="rx_train.fdi" size="1265664" crc="607b85f8" sha1="0d2fdf6f0550e50127b27b42b470ba25b305239c" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<software name="nadiamw">
|
<software name="nadiamw">
|
||||||
@ -9780,16 +9780,16 @@ Other three disks, in nfd format
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
other two disks
|
other two disks
|
||||||
<software name="narumah">
|
<software name="narumah">
|
||||||
<description>Naru Mahjong</description>
|
<description>Naru Mahjong</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="disk01.fdi" size="1265664" crc="d2db97c6" sha1="06910b3812d6efbac4f0b6adb9767397f2b590d7" offset="0" />
|
<rom name="disk01.fdi" size="1265664" crc="d2db97c6" sha1="06910b3812d6efbac4f0b6adb9767397f2b590d7" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<software name="natsudam">
|
<software name="natsudam">
|
||||||
@ -9834,7 +9834,7 @@ other two disks
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="nazopds7">
|
<software name="nazopds7">
|
||||||
<description>Nazo Puyo (off DS7)</description>
|
<description>Nazo Puyo (off DS7)</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
@ -12152,16 +12152,16 @@ other two disks
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
<!--
|
<!--
|
||||||
<software name="rougeno">
|
<software name="rougeno">
|
||||||
<description>Rouge no Densetsu (hdi)</description>
|
<description>Rouge no Densetsu (hdi)</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="kidou.fdi" size="1265664" crc="e0b52ce7" sha1="00ed12fdff1986986e347343d9176f6205d5d87c" offset="0" />
|
<rom name="kidou.fdi" size="1265664" crc="e0b52ce7" sha1="00ed12fdff1986986e347343d9176f6205d5d87c" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
<software name="roundwar">
|
<software name="roundwar">
|
||||||
<description>Round Warrior</description>
|
<description>Round Warrior</description>
|
||||||
@ -12763,41 +12763,41 @@ other two disks
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Same as Police Quest 2 - Quest for Glory stand-alone disks
|
Same as Police Quest 2 - Quest for Glory stand-alone disks
|
||||||
<software name="sierradp">
|
<software name="sierradp">
|
||||||
<description>Sierra 3D AVG Double Pack - Quest for Glory & Police Quest 2</description>
|
<description>Sierra 3D AVG Double Pack - Quest for Glory & Police Quest 2</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
<publisher><unknown></publisher>
|
<publisher><unknown></publisher>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="police quest ii disk 01.fdi" size="1265664" crc="18f51678" sha1="49b137412230d20df0dec0c1236866003a3f1f15" offset="0" />
|
<rom name="police quest ii disk 01.fdi" size="1265664" crc="18f51678" sha1="49b137412230d20df0dec0c1236866003a3f1f15" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="police quest ii disk 02.fdi" size="1265664" crc="3fd79ed8" sha1="6893264fd7ecdbf8ceb14d2e62d76bb548fb344e" offset="0" />
|
<rom name="police quest ii disk 02.fdi" size="1265664" crc="3fd79ed8" sha1="6893264fd7ecdbf8ceb14d2e62d76bb548fb344e" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="police quest ii disk 03.fdi" size="1265664" crc="4c6f0d6a" sha1="442e4f2074087b5d8401f808153a12ffef9a6e7c" offset="0" />
|
<rom name="police quest ii disk 03.fdi" size="1265664" crc="4c6f0d6a" sha1="442e4f2074087b5d8401f808153a12ffef9a6e7c" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="quest for glory disk 01.fdi" size="1265664" crc="695c079e" sha1="93195094944af1d88338c4a2ce82f9188a7f3898" offset="0" />
|
<rom name="quest for glory disk 01.fdi" size="1265664" crc="695c079e" sha1="93195094944af1d88338c4a2ce82f9188a7f3898" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="quest for glory disk 02.fdi" size="1265664" crc="b8cdbf73" sha1="d6048c691963d159ce29c9e90b0f33a60e71c29d" offset="0" />
|
<rom name="quest for glory disk 02.fdi" size="1265664" crc="b8cdbf73" sha1="d6048c691963d159ce29c9e90b0f33a60e71c29d" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="flop1" interface="floppy_5_25">
|
<part name="flop1" interface="floppy_5_25">
|
||||||
<dataarea name="flop" size="1265664">
|
<dataarea name="flop" size="1265664">
|
||||||
<rom name="quest for glory disk 03.fdi" size="1265664" crc="10f50bfa" sha1="7aab2821b8a18ef3ec4811d6c8e50767f96f0108" offset="0" />
|
<rom name="quest for glory disk 03.fdi" size="1265664" crc="10f50bfa" sha1="7aab2821b8a18ef3ec4811d6c8e50767f96f0108" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<software name="simcity">
|
<software name="simcity">
|
||||||
@ -14988,7 +14988,7 @@ Same as Police Quest 2 - Quest for Glory stand-alone disks
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="vg2">
|
<software name="vg2">
|
||||||
<description>Variable Geo 2 - The Bout of Cabalistic Goddess</description>
|
<description>Variable Geo 2 - The Bout of Cabalistic Goddess</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
@ -16508,7 +16508,7 @@ Same as Police Quest 2 - Quest for Glory stand-alone disks
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="artemis">
|
<software name="artemis">
|
||||||
<description>Artemis</description>
|
<description>Artemis</description>
|
||||||
<year>19??</year>
|
<year>19??</year>
|
||||||
|
@ -8,7 +8,7 @@ _________________________________________________________________
|
|||||||
|
|
||||||
CAS-110 Arithmetic Drill (Math Fun & Fun with Numbers) no 算数ドリル
|
CAS-110 Arithmetic Drill (Math Fun & Fun with Numbers) no 算数ドリル
|
||||||
CAS-130 Sports Fan (Baseball & Sumo Wrestling) yes スポーツファン
|
CAS-130 Sports Fan (Baseball & Sumo Wrestling) yes スポーツファン
|
||||||
CAS-140 Gambler I (Blackjack) no ギャンブラーI
|
CAS-140 Gambler I (Blackjack) no ギャンブラーI
|
||||||
CAS-141 Gambler II (Slot Machine and Dice) no ギャンブラーII
|
CAS-141 Gambler II (Slot Machine and Dice) no ギャンブラーII
|
||||||
CAS-160 Space Command (Space War) no スペースコマンド
|
CAS-160 Space Command (Space War) no スペースコマンド
|
||||||
CAS-190 Inspiration (Bagua and Biorhythm) no 霊感
|
CAS-190 Inspiration (Bagua and Biorhythm) no 霊感
|
||||||
|
@ -619,7 +619,7 @@ void cli_frontend::listdevices(const char *gamename)
|
|||||||
|
|
||||||
// sort them by tag
|
// sort them by tag
|
||||||
qsort(&device_list[0], device_list.count(), sizeof(device_list[0]), compare_devices);
|
qsort(&device_list[0], device_list.count(), sizeof(device_list[0]), compare_devices);
|
||||||
|
|
||||||
// dump the results
|
// dump the results
|
||||||
for (int index = 0; index < device_list.count(); index++)
|
for (int index = 0; index < device_list.count(); index++)
|
||||||
{
|
{
|
||||||
@ -629,7 +629,7 @@ void cli_frontend::listdevices(const char *gamename)
|
|||||||
const char *tag = device->tag();
|
const char *tag = device->tag();
|
||||||
if (*tag == ':')
|
if (*tag == ':')
|
||||||
tag++;
|
tag++;
|
||||||
|
|
||||||
// determine the depth
|
// determine the depth
|
||||||
int depth = 1;
|
int depth = 1;
|
||||||
if (*tag == 0)
|
if (*tag == 0)
|
||||||
|
@ -726,8 +726,8 @@ $(CPUOBJ)/i8085/i8085.o: $(CPUSRC)/i8085/i8085.c \
|
|||||||
ifneq ($(filter I8089,$(CPUS)),)
|
ifneq ($(filter I8089,$(CPUS)),)
|
||||||
OBJDIRS += $(CPUOBJ)/i8089
|
OBJDIRS += $(CPUOBJ)/i8089
|
||||||
CPUOBJS += $(CPUOBJ)/i8089/i8089.o \
|
CPUOBJS += $(CPUOBJ)/i8089/i8089.o \
|
||||||
$(CPUOBJ)/i8089/i8089_channel.o \
|
$(CPUOBJ)/i8089/i8089_channel.o \
|
||||||
$(CPUOBJ)/i8089/i8089_ops.o
|
$(CPUOBJ)/i8089/i8089_ops.o
|
||||||
DASMOBJS += $(CPUOBJ)/i8089/i8089_dasm.o
|
DASMOBJS += $(CPUOBJ)/i8089/i8089_dasm.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -111,8 +111,8 @@ offs_t cquestrot_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const U
|
|||||||
|
|
||||||
|
|
||||||
cquestlin_cpu_device::cquestlin_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
cquestlin_cpu_device::cquestlin_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: cpu_device(mconfig, CQUESTLIN, "Cube Quest Line CPU", tag, owner, clock, "cquestlin", __FILE__)
|
: cpu_device(mconfig, CQUESTLIN, "Cube Quest Line CPU", tag, owner, clock, "cquestlin", __FILE__)
|
||||||
, m_program_config("program", ENDIANNESS_BIG, 64, 8, -3)
|
, m_program_config("program", ENDIANNESS_BIG, 64, 8, -3)
|
||||||
, m_linedata_r(*this)
|
, m_linedata_r(*this)
|
||||||
, m_flags(0)
|
, m_flags(0)
|
||||||
, m_curpc(0)
|
, m_curpc(0)
|
||||||
@ -358,8 +358,8 @@ void cquestrot_cpu_device::state_string_export(const device_state_entry &entry,
|
|||||||
{
|
{
|
||||||
case STATE_GENFLAGS:
|
case STATE_GENFLAGS:
|
||||||
string.printf( "%c%c%c", m_cflag ? 'C' : '.',
|
string.printf( "%c%c%c", m_cflag ? 'C' : '.',
|
||||||
m_vflag ? 'V' : '.',
|
m_vflag ? 'V' : '.',
|
||||||
m_f ? '.' : 'Z');
|
m_f ? '.' : 'Z');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -488,9 +488,9 @@ void cquestlin_cpu_device::state_string_export(const device_state_entry &entry,
|
|||||||
{
|
{
|
||||||
case STATE_GENFLAGS:
|
case STATE_GENFLAGS:
|
||||||
string.printf( "%c%c%c|%cG", m_cflag ? 'C' : '.',
|
string.printf( "%c%c%c|%cG", m_cflag ? 'C' : '.',
|
||||||
m_vflag ? 'V' : '.',
|
m_vflag ? 'V' : '.',
|
||||||
m_f ? '.' : 'Z',
|
m_f ? '.' : 'Z',
|
||||||
( m_clkcnt & 3 ) ? 'B' : 'F');
|
( m_clkcnt & 3 ) ? 'B' : 'F');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1551,4 +1551,3 @@ void cquestlin_cpu_device::execute_run()
|
|||||||
m_clkcnt++;
|
m_clkcnt++;
|
||||||
} while (m_icount > 0);
|
} while (m_icount > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ es5510_device::es5510_device(const machine_config &mconfig, const char *tag, dev
|
|||||||
instr_latch = 0;
|
instr_latch = 0;
|
||||||
ram_sel = 0;
|
ram_sel = 0;
|
||||||
host_control = 0;
|
host_control = 0;
|
||||||
|
|
||||||
pc = 0;
|
pc = 0;
|
||||||
memset(&alu, 0, sizeof(alu));
|
memset(&alu, 0, sizeof(alu));
|
||||||
memset(&mulacc, 0, sizeof(mulacc));
|
memset(&mulacc, 0, sizeof(mulacc));
|
||||||
@ -606,7 +606,7 @@ void es5510_device::list_program(void(p)(const char *, ...)) {
|
|||||||
is_written[i] = is_read[i] = false;
|
is_written[i] = is_read[i] = false;
|
||||||
name[i][0] = '\0';
|
name[i][0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
for (addr = 0; addr < 0xa0; addr++) {
|
for (addr = 0; addr < 0xa0; addr++) {
|
||||||
DESCRIBE_INSTR(buf, instr[addr], gpr[addr], NULL, NULL, NULL, NULL);
|
DESCRIBE_INSTR(buf, instr[addr], gpr[addr], NULL, NULL, NULL, NULL);
|
||||||
UINT64 inst = instr[addr];
|
UINT64 inst = instr[addr];
|
||||||
@ -621,7 +621,7 @@ void es5510_device::list_program(void(p)(const char *, ...)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
UINT8 operandSelect = (UINT8)((inst >> 8) & 0x0f);
|
UINT8 operandSelect = (UINT8)((inst >> 8) & 0x0f);
|
||||||
const op_select_t &opSelect = OPERAND_SELECT[operandSelect];
|
const op_select_t &opSelect = OPERAND_SELECT[operandSelect];
|
||||||
|
|
||||||
if (opSelect.mac_src == SRC_DST_REG) {
|
if (opSelect.mac_src == SRC_DST_REG) {
|
||||||
is_read[cReg] = true;
|
is_read[cReg] = true;
|
||||||
@ -630,7 +630,7 @@ void es5510_device::list_program(void(p)(const char *, ...)) {
|
|||||||
if (opSelect.mac_dst != SRC_DST_DELAY) { // either REG or BOTH
|
if (opSelect.mac_dst != SRC_DST_DELAY) { // either REG or BOTH
|
||||||
is_written[cReg] = true;
|
is_written[cReg] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
alu_op_t aluOp = ALU_OPS[alu_op];
|
alu_op_t aluOp = ALU_OPS[alu_op];
|
||||||
if (aluOp.operands == 1) {
|
if (aluOp.operands == 1) {
|
||||||
if (opSelect.alu_src == SRC_DST_REG) {
|
if (opSelect.alu_src == SRC_DST_REG) {
|
||||||
@ -663,7 +663,7 @@ void es5510_device::list_program(void(p)(const char *, ...)) {
|
|||||||
for (int i = 0xc0; i < 0x100; i++) {
|
for (int i = 0xc0; i < 0x100; i++) {
|
||||||
name[i][0] = 0;
|
name[i][0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (addr = 0; addr < 0xa0; addr++) {
|
for (addr = 0; addr < 0xa0; addr++) {
|
||||||
UINT8 aReg = (UINT8)((instr[addr] >> 16) & 0xff);
|
UINT8 aReg = (UINT8)((instr[addr] >> 16) & 0xff);
|
||||||
UINT8 bReg = (UINT8)((instr[addr] >> 24) & 0xff);
|
UINT8 bReg = (UINT8)((instr[addr] >> 24) & 0xff);
|
||||||
@ -830,7 +830,7 @@ void es5510_device::execute_run() {
|
|||||||
// *** T2, clock high
|
// *** T2, clock high
|
||||||
|
|
||||||
LOG_EXEC(("- T2.1\n"));
|
LOG_EXEC(("- T2.1\n"));
|
||||||
|
|
||||||
// --- Write ALU Result N-1
|
// --- Write ALU Result N-1
|
||||||
LOG_EXEC((". write ALU:\n"));
|
LOG_EXEC((". write ALU:\n"));
|
||||||
if (alu.write_result) {
|
if (alu.write_result) {
|
||||||
|
@ -152,8 +152,8 @@ private:
|
|||||||
INT16 ser2l;
|
INT16 ser2l;
|
||||||
INT16 ser3r;
|
INT16 ser3r;
|
||||||
INT16 ser3l;
|
INT16 ser3l;
|
||||||
INT64 machl; // 48 bits, right justified and sign extended
|
INT64 machl; // 48 bits, right justified and sign extended
|
||||||
bool mac_overflow; // whether reading the MAC register should return a saturated replacement value
|
bool mac_overflow; // whether reading the MAC register should return a saturated replacement value
|
||||||
INT32 dil;
|
INT32 dil;
|
||||||
INT32 memsiz;
|
INT32 memsiz;
|
||||||
INT32 memmask;
|
INT32 memmask;
|
||||||
@ -165,8 +165,8 @@ private:
|
|||||||
INT32 dbase;
|
INT32 dbase;
|
||||||
INT32 sigreg;
|
INT32 sigreg;
|
||||||
int mulshift;
|
int mulshift;
|
||||||
INT8 ccr; // really, 5 bits, left justified
|
INT8 ccr; // really, 5 bits, left justified
|
||||||
INT8 cmr; // really, 6 bits, left justified
|
INT8 cmr; // really, 6 bits, left justified
|
||||||
INT32 dol[2];
|
INT32 dol[2];
|
||||||
int dol_count;
|
int dol_count;
|
||||||
|
|
||||||
|
@ -1601,7 +1601,7 @@ void f8_cpu_device::device_reset()
|
|||||||
m_irq_vector = 0;
|
m_irq_vector = 0;
|
||||||
memset(m_r, 0, sizeof(m_r));
|
memset(m_r, 0, sizeof(m_r));
|
||||||
m_irq_request = 0;
|
m_irq_request = 0;
|
||||||
|
|
||||||
m_w&=~I;
|
m_w&=~I;
|
||||||
|
|
||||||
/* save PC0 to PC1 and reset PC0 */
|
/* save PC0 to PC1 and reset PC0 */
|
||||||
@ -2054,11 +2054,11 @@ void f8_cpu_device::state_string_export(const device_state_entry &entry, astring
|
|||||||
{
|
{
|
||||||
case STATE_GENFLAGS:
|
case STATE_GENFLAGS:
|
||||||
string.printf("%c%c%c%c%c",
|
string.printf("%c%c%c%c%c",
|
||||||
m_w & 0x10 ? 'I':'.',
|
m_w & 0x10 ? 'I':'.',
|
||||||
m_w & 0x08 ? 'O':'.',
|
m_w & 0x08 ? 'O':'.',
|
||||||
m_w & 0x04 ? 'Z':'.',
|
m_w & 0x04 ? 'Z':'.',
|
||||||
m_w & 0x02 ? 'C':'.',
|
m_w & 0x02 ? 'C':'.',
|
||||||
m_w & 0x01 ? 'S':'.');
|
m_w & 0x01 ? 'S':'.');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2075,5 +2075,3 @@ void f8_cpu_device::execute_set_input( int inptnum, int state )
|
|||||||
{
|
{
|
||||||
m_irq_request = state;
|
m_irq_request = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1133,4 +1133,3 @@ offs_t i8085a_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT
|
|||||||
extern CPU_DISASSEMBLE( i8085 );
|
extern CPU_DISASSEMBLE( i8085 );
|
||||||
return CPU_DISASSEMBLE_NAME(i8085)(this, buffer, pc, oprom, opram, options);
|
return CPU_DISASSEMBLE_NAME(i8085)(this, buffer, pc, oprom, opram, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,14 +121,14 @@ private:
|
|||||||
SOC,
|
SOC,
|
||||||
DIVIDER1,
|
DIVIDER1,
|
||||||
CH1_GA, CH1_GB, CH1_GC,
|
CH1_GA, CH1_GB, CH1_GC,
|
||||||
CH1_TP, CH1_BC, CH1_IX,
|
CH1_TP, CH1_BC, CH1_IX,
|
||||||
CH1_CC, CH1_MC, CH1_CP,
|
CH1_CC, CH1_MC, CH1_CP,
|
||||||
CH1_PP, CH1_PSW,
|
CH1_PP, CH1_PSW,
|
||||||
DIVIDER2,
|
DIVIDER2,
|
||||||
CH2_GA, CH2_GB, CH2_GC,
|
CH2_GA, CH2_GB, CH2_GC,
|
||||||
CH2_TP, CH2_BC, CH2_IX,
|
CH2_TP, CH2_BC, CH2_IX,
|
||||||
CH2_CC, CH2_MC, CH2_CP,
|
CH2_CC, CH2_MC, CH2_CP,
|
||||||
CH2_PP, CH2_PSW
|
CH2_PP, CH2_PSW
|
||||||
};
|
};
|
||||||
|
|
||||||
// system configuration
|
// system configuration
|
||||||
|
@ -19,16 +19,16 @@
|
|||||||
#define VERBOSE_DMA 1
|
#define VERBOSE_DMA 1
|
||||||
|
|
||||||
// channel control register fields
|
// channel control register fields
|
||||||
#define CC_TMC ((m_r[CC].w >> 0) & 0x07) // terminate on masked compare
|
#define CC_TMC ((m_r[CC].w >> 0) & 0x07) // terminate on masked compare
|
||||||
#define CC_TBC ((m_r[CC].w >> 3) & 0x03) // terminate on byte count
|
#define CC_TBC ((m_r[CC].w >> 3) & 0x03) // terminate on byte count
|
||||||
#define CC_TX ((m_r[CC].w >> 5) & 0x03) // terminate on external signal
|
#define CC_TX ((m_r[CC].w >> 5) & 0x03) // terminate on external signal
|
||||||
#define CC_TS ((m_r[CC].w >> 7) & 0x01) // terminate on single transfer
|
#define CC_TS ((m_r[CC].w >> 7) & 0x01) // terminate on single transfer
|
||||||
#define CC_CHAIN ((m_r[CC].w >> 8) & 0x01) // chaining
|
#define CC_CHAIN ((m_r[CC].w >> 8) & 0x01) // chaining
|
||||||
#define CC_LOCK ((m_r[CC].w >> 9) & 0x01) // actuate lock
|
#define CC_LOCK ((m_r[CC].w >> 9) & 0x01) // actuate lock
|
||||||
#define CC_SOURCE ((m_r[CC].w >> 10) & 0x01) // source register
|
#define CC_SOURCE ((m_r[CC].w >> 10) & 0x01) // source register
|
||||||
#define CC_SYNC ((m_r[CC].w >> 11) & 0x03) // synchronization
|
#define CC_SYNC ((m_r[CC].w >> 11) & 0x03) // synchronization
|
||||||
#define CC_TRANS ((m_r[CC].w >> 13) & 0x01) // translation
|
#define CC_TRANS ((m_r[CC].w >> 13) & 0x01) // translation
|
||||||
#define CC_FUNC ((m_r[CC].w >> 14) & 0x03) // function
|
#define CC_FUNC ((m_r[CC].w >> 14) & 0x03) // function
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Intel 8089 I/O Processor
|
Intel 8089 I/O Processor
|
||||||
|
|
||||||
Opcode implementations
|
Opcode implementations
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
@ -1284,8 +1284,8 @@ void i80186_cpu_device::drq_callback(int which)
|
|||||||
update_interrupt_state();
|
update_interrupt_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
// dma->finish_timer->adjust(attotime::from_hz(clock()/8), 0);
|
// dma->finish_timer->adjust(attotime::from_hz(clock()/8), 0);
|
||||||
// dma->drq_delay = true;
|
// dma->drq_delay = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ16_MEMBER(i80186_cpu_device::internal_port_r)
|
READ16_MEMBER(i80186_cpu_device::internal_port_r)
|
||||||
|
@ -1956,4 +1956,3 @@ void i80286_cpu_device::check_permission(UINT8 check_seg, UINT32 offset, UINT16
|
|||||||
throw TRAP(trap, 0);
|
throw TRAP(trap, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
extern const device_type I80286;
|
extern const device_type I80286;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{ // same order as I8086 registers
|
{ // same order as I8086 registers
|
||||||
I286_PC = 0,
|
I286_PC = 0,
|
||||||
|
|
||||||
I286_IP,
|
I286_IP,
|
||||||
|
@ -139,9 +139,9 @@ void i860_cpu_device::device_start()
|
|||||||
void i860_cpu_device::state_import(const device_state_entry &entry)
|
void i860_cpu_device::state_import(const device_state_entry &entry)
|
||||||
{
|
{
|
||||||
#define I860_SET_INFO_F(fnum) m_frg[0+(4*fnum)] = (m_freg[fnum] & 0x000000ff); \
|
#define I860_SET_INFO_F(fnum) m_frg[0+(4*fnum)] = (m_freg[fnum] & 0x000000ff); \
|
||||||
m_frg[1+(4*fnum)] = (m_freg[fnum] & 0x0000ff00) >> 8; \
|
m_frg[1+(4*fnum)] = (m_freg[fnum] & 0x0000ff00) >> 8; \
|
||||||
m_frg[2+(4*fnum)] = (m_freg[fnum] & 0x00ff0000) >> 16; \
|
m_frg[2+(4*fnum)] = (m_freg[fnum] & 0x00ff0000) >> 16; \
|
||||||
m_frg[3+(4*fnum)] = (m_freg[fnum] & 0xff000000) >> 24;
|
m_frg[3+(4*fnum)] = (m_freg[fnum] & 0xff000000) >> 24;
|
||||||
|
|
||||||
switch (entry.index())
|
switch (entry.index())
|
||||||
{
|
{
|
||||||
@ -238,4 +238,3 @@ offs_t i860_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
|
|||||||
* The actual decode and execute code.
|
* The actual decode and execute code.
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
#include "i860dec.c"
|
#include "i860dec.c"
|
||||||
|
|
||||||
|
@ -285,11 +285,11 @@ void i860_cpu_device::set_fregval_d (int fr, double d)
|
|||||||
|
|
||||||
int i860_cpu_device::has_delay_slot(UINT32 insn)
|
int i860_cpu_device::has_delay_slot(UINT32 insn)
|
||||||
{
|
{
|
||||||
int opc = (insn >> 26) & 0x3f;
|
int opc = (insn >> 26) & 0x3f;
|
||||||
if (opc == 0x10 || opc == 0x1a || opc == 0x1b || opc == 0x1d ||
|
if (opc == 0x10 || opc == 0x1a || opc == 0x1b || opc == 0x1d ||
|
||||||
opc == 0x1f || opc == 0x2d || (opc == 0x13 && (insn & 3) == 2))
|
opc == 0x1f || opc == 0x2d || (opc == 0x13 && (insn & 3) == 2))
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is the external interface for asserting/deasserting pins on
|
/* This is the external interface for asserting/deasserting pins on
|
||||||
|
@ -2077,7 +2077,6 @@ void i960_cpu_device::device_start()
|
|||||||
|
|
||||||
void i960_cpu_device::state_string_export(const device_state_entry &entry, astring &string)
|
void i960_cpu_device::state_string_export(const device_state_entry &entry, astring &string)
|
||||||
{
|
{
|
||||||
|
|
||||||
static const char *const conditions[8] =
|
static const char *const conditions[8] =
|
||||||
{
|
{
|
||||||
"no", "g", "e", "ge", "l", "ne", "le", "o"
|
"no", "g", "e", "ge", "l", "ne", "le", "o"
|
||||||
@ -2116,4 +2115,3 @@ offs_t i960_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
|
|||||||
extern CPU_DISASSEMBLE( i960 );
|
extern CPU_DISASSEMBLE( i960 );
|
||||||
return CPU_DISASSEMBLE_NAME(i960)(this, buffer, pc, oprom, opram, options);
|
return CPU_DISASSEMBLE_NAME(i960)(this, buffer, pc, oprom, opram, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ void jaguar_cpu_device::state_string_export(const device_state_entry &entry, ast
|
|||||||
FLAGS & 0x0008 ? 'I':'.',
|
FLAGS & 0x0008 ? 'I':'.',
|
||||||
FLAGS & 0x0004 ? 'N':'.',
|
FLAGS & 0x0004 ? 'N':'.',
|
||||||
FLAGS & 0x0002 ? 'C':'.',
|
FLAGS & 0x0002 ? 'C':'.',
|
||||||
FLAGS & 0x0001 ? 'Z':'.');
|
FLAGS & 0x0001 ? 'Z':'.');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1447,4 +1447,3 @@ offs_t jaguardsp_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const U
|
|||||||
extern CPU_DISASSEMBLE( jaguardsp );
|
extern CPU_DISASSEMBLE( jaguardsp );
|
||||||
return CPU_DISASSEMBLE_NAME(jaguardsp)(this, buffer, pc, oprom, opram, options);
|
return CPU_DISASSEMBLE_NAME(jaguardsp)(this, buffer, pc, oprom, opram, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,4 +264,3 @@ offs_t lh5801_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT
|
|||||||
extern CPU_DISASSEMBLE( lh5801 );
|
extern CPU_DISASSEMBLE( lh5801 );
|
||||||
return CPU_DISASSEMBLE_NAME(lh5801)(this, buffer, pc, oprom, opram, options);
|
return CPU_DISASSEMBLE_NAME(lh5801)(this, buffer, pc, oprom, opram, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ private:
|
|||||||
address_space *m_program;
|
address_space *m_program;
|
||||||
address_space *m_io;
|
address_space *m_io;
|
||||||
UINT32 m_stopped; /* Sets how the CPU is stopped */
|
UINT32 m_stopped; /* Sets how the CPU is stopped */
|
||||||
|
|
||||||
// on-board peripheral stuff
|
// on-board peripheral stuff
|
||||||
UINT8 m_m37710_regs[128];
|
UINT8 m_m37710_regs[128];
|
||||||
attotime m_reload[8];
|
attotime m_reload[8];
|
||||||
|
@ -1708,17 +1708,17 @@ WRITE8_MEMBER( m6800_cpu_device::m6801_io_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void m6801_cpu_device::m6801_clock_serial()
|
void m6801_cpu_device::m6801_clock_serial()
|
||||||
{
|
{
|
||||||
if (m_use_ext_serclock)
|
if (m_use_ext_serclock)
|
||||||
{
|
{
|
||||||
m_ext_serclock++;
|
m_ext_serclock++;
|
||||||
|
|
||||||
if (m_ext_serclock >= 8)
|
if (m_ext_serclock >= 8)
|
||||||
{
|
{
|
||||||
m_ext_serclock = 0;
|
m_ext_serclock = 0;
|
||||||
serial_transmit();
|
serial_transmit();
|
||||||
serial_receive();
|
serial_receive();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1777,4 +1777,3 @@ offs_t nsc8105_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UIN
|
|||||||
extern CPU_DISASSEMBLE( nsc8105 );
|
extern CPU_DISASSEMBLE( nsc8105 );
|
||||||
return CPU_DISASSEMBLE_NAME(nsc8105)(this, buffer, pc, oprom, opram, options);
|
return CPU_DISASSEMBLE_NAME(nsc8105)(this, buffer, pc, oprom, opram, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ protected:
|
|||||||
int m_clock_divider;
|
int m_clock_divider;
|
||||||
UINT8 m_trcsr, m_rmcr, m_rdr, m_tdr, m_rsr, m_tsr;
|
UINT8 m_trcsr, m_rmcr, m_rdr, m_tdr, m_rsr, m_tsr;
|
||||||
int m_rxbits, m_txbits, m_txstate, m_trcsr_read_tdre, m_trcsr_read_orfe, m_trcsr_read_rdrf, m_tx, m_ext_serclock;
|
int m_rxbits, m_txbits, m_txstate, m_trcsr_read_tdre, m_trcsr_read_orfe, m_trcsr_read_rdrf, m_tx, m_ext_serclock;
|
||||||
bool m_use_ext_serclock;
|
bool m_use_ext_serclock;
|
||||||
int m_port2_written;
|
int m_port2_written;
|
||||||
|
|
||||||
int m_icount;
|
int m_icount;
|
||||||
|
@ -3897,9 +3897,9 @@ M68KMAKE_OP(clr, 8, ., .)
|
|||||||
{
|
{
|
||||||
UINT32 ea = M68KMAKE_GET_EA_AY_8;
|
UINT32 ea = M68KMAKE_GET_EA_AY_8;
|
||||||
|
|
||||||
if(CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type))
|
if(CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type))
|
||||||
{
|
{
|
||||||
m68ki_read_8((mc68kcpu), ea); /* the 68000 (and 010?) does a dummy read, the value is discarded */
|
m68ki_read_8((mc68kcpu), ea); /* the 68000 (and 010?) does a dummy read, the value is discarded */
|
||||||
}
|
}
|
||||||
|
|
||||||
m68ki_write_8((mc68kcpu), ea, 0);
|
m68ki_write_8((mc68kcpu), ea, 0);
|
||||||
@ -3926,9 +3926,9 @@ M68KMAKE_OP(clr, 16, ., .)
|
|||||||
{
|
{
|
||||||
UINT32 ea = M68KMAKE_GET_EA_AY_16;
|
UINT32 ea = M68KMAKE_GET_EA_AY_16;
|
||||||
|
|
||||||
if(CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type))
|
if(CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type))
|
||||||
{
|
{
|
||||||
m68ki_read_16((mc68kcpu), ea); /* the 68000 (and 010?) does a dummy read, the value is discarded */
|
m68ki_read_16((mc68kcpu), ea); /* the 68000 (and 010?) does a dummy read, the value is discarded */
|
||||||
}
|
}
|
||||||
|
|
||||||
m68ki_write_16((mc68kcpu), ea, 0);
|
m68ki_write_16((mc68kcpu), ea, 0);
|
||||||
@ -3955,9 +3955,9 @@ M68KMAKE_OP(clr, 32, ., .)
|
|||||||
{
|
{
|
||||||
UINT32 ea = M68KMAKE_GET_EA_AY_32;
|
UINT32 ea = M68KMAKE_GET_EA_AY_32;
|
||||||
|
|
||||||
if(CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type))
|
if(CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type))
|
||||||
{
|
{
|
||||||
m68ki_read_32((mc68kcpu), ea); /* the 68000 (and 010?) does a dummy read, the value is discarded */
|
m68ki_read_32((mc68kcpu), ea); /* the 68000 (and 010?) does a dummy read, the value is discarded */
|
||||||
}
|
}
|
||||||
|
|
||||||
m68ki_write_32((mc68kcpu), ea, 0);
|
m68ki_write_32((mc68kcpu), ea, 0);
|
||||||
|
@ -96,7 +96,7 @@ void mb86233_cpu_device::device_start()
|
|||||||
m_fifo_read_cb.resolve_safe(0);
|
m_fifo_read_cb.resolve_safe(0);
|
||||||
m_fifo_read_ok_cb.resolve_safe(0);
|
m_fifo_read_ok_cb.resolve_safe(0);
|
||||||
m_fifo_write_cb.resolve_safe();
|
m_fifo_write_cb.resolve_safe();
|
||||||
|
|
||||||
m_program = &space(AS_PROGRAM);
|
m_program = &space(AS_PROGRAM);
|
||||||
m_direct = &m_program->direct();
|
m_direct = &m_program->direct();
|
||||||
|
|
||||||
@ -1582,4 +1582,3 @@ void mb86233_cpu_device::execute_run()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,25 +114,25 @@ mb88_cpu_device::mb88_cpu_device(const machine_config &mconfig, device_type type
|
|||||||
|
|
||||||
|
|
||||||
mb8841_cpu_device::mb8841_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
mb8841_cpu_device::mb8841_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: mb88_cpu_device(mconfig, MB8841, "MB8841", tag, owner, clock, "mb8841", __FILE__, 11, 7)
|
: mb88_cpu_device(mconfig, MB8841, "MB8841", tag, owner, clock, "mb8841", __FILE__, 11, 7)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mb8842_cpu_device::mb8842_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
mb8842_cpu_device::mb8842_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: mb88_cpu_device(mconfig, MB8842, "MB8842", tag, owner, clock, "mb8842", __FILE__, 11, 7)
|
: mb88_cpu_device(mconfig, MB8842, "MB8842", tag, owner, clock, "mb8842", __FILE__, 11, 7)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mb8843_cpu_device::mb8843_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
mb8843_cpu_device::mb8843_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: mb88_cpu_device(mconfig, MB8843, "MB8843", tag, owner, clock, "mb8843", __FILE__, 10, 6)
|
: mb88_cpu_device(mconfig, MB8843, "MB8843", tag, owner, clock, "mb8843", __FILE__, 10, 6)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mb8844_cpu_device::mb8844_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
mb8844_cpu_device::mb8844_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: mb88_cpu_device(mconfig, MB8844, "MB8844", tag, owner, clock, "mb8844", __FILE__, 10, 6)
|
: mb88_cpu_device(mconfig, MB8844, "MB8844", tag, owner, clock, "mb8844", __FILE__, 10, 6)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -946,4 +946,3 @@ void mb88_cpu_device::execute_run()
|
|||||||
update_pio(oc);
|
update_pio(oc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,32 +158,32 @@ private:
|
|||||||
class mb8841_cpu_device : public mb88_cpu_device
|
class mb8841_cpu_device : public mb88_cpu_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
mb8841_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
mb8841_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class mb8842_cpu_device : public mb88_cpu_device
|
class mb8842_cpu_device : public mb88_cpu_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
mb8842_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
mb8842_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class mb8843_cpu_device : public mb88_cpu_device
|
class mb8843_cpu_device : public mb88_cpu_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
mb8843_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
mb8843_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class mb8844_cpu_device : public mb88_cpu_device
|
class mb8844_cpu_device : public mb88_cpu_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
mb8844_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
mb8844_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -595,4 +595,3 @@ void mc68hc11_cpu_device::execute_run()
|
|||||||
(this->*hc11_optable[op])();
|
(this->*hc11_optable[op])();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1330,4 +1330,3 @@ void mcs48_cpu_device::execute_set_input(int inputnum, int state)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -484,9 +484,9 @@ public:
|
|||||||
i8021_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
i8021_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device_execute_interface overrides
|
// device_execute_interface overrides
|
||||||
virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 30 - 1) / 30; }
|
virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 30 - 1) / 30; }
|
||||||
virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 30); }
|
virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 30); }
|
||||||
};
|
};
|
||||||
|
|
||||||
class i8022_device : public mcs48_cpu_device
|
class i8022_device : public mcs48_cpu_device
|
||||||
@ -496,9 +496,9 @@ public:
|
|||||||
i8022_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
i8022_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device_execute_interface overrides
|
// device_execute_interface overrides
|
||||||
virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 30 - 1) / 30; }
|
virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 30 - 1) / 30; }
|
||||||
virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 30); }
|
virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 30); }
|
||||||
};
|
};
|
||||||
|
|
||||||
class i8035_device : public mcs48_cpu_device
|
class i8035_device : public mcs48_cpu_device
|
||||||
|
@ -2506,4 +2506,3 @@ offs_t ds5002fp_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
|
|||||||
extern CPU_DISASSEMBLE( ds5002fp );
|
extern CPU_DISASSEMBLE( ds5002fp );
|
||||||
return CPU_DISASSEMBLE_NAME(ds5002fp)(this, buffer, pc, oprom, opram, options);
|
return CPU_DISASSEMBLE_NAME(ds5002fp)(this, buffer, pc, oprom, opram, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,4 +236,3 @@ offs_t minx_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
|
|||||||
extern CPU_DISASSEMBLE( minx );
|
extern CPU_DISASSEMBLE( minx );
|
||||||
return CPU_DISASSEMBLE_NAME(minx)(this, buffer, pc, oprom, opram, options);
|
return CPU_DISASSEMBLE_NAME(minx)(this, buffer, pc, oprom, opram, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -880,8 +880,8 @@ private:
|
|||||||
static const op_func insnminx_CE[256];
|
static const op_func insnminx_CE[256];
|
||||||
static const int insnminx_cycles_CE[256];
|
static const int insnminx_cycles_CE[256];
|
||||||
|
|
||||||
static const op_func insnminx_CF[256];
|
static const op_func insnminx_CF[256];
|
||||||
static const int insnminx_cycles_CF[256];
|
static const int insnminx_cycles_CF[256];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3934,7 +3934,7 @@ CPU_GET_INFO( r4700le_drc )
|
|||||||
/* --- the following bits of info are returned as NULL-terminated strings --- */
|
/* --- the following bits of info are returned as NULL-terminated strings --- */
|
||||||
case CPUINFO_STR_NAME: strcpy(info->s, "R4700 (little) DRC"); break;
|
case CPUINFO_STR_NAME: strcpy(info->s, "R4700 (little) DRC"); break;
|
||||||
case CPUINFO_STR_SHORTNAME: strcpy(info->s, "r4700le_drc"); break;
|
case CPUINFO_STR_SHORTNAME: strcpy(info->s, "r4700le_drc"); break;
|
||||||
|
|
||||||
/* --- everything else is handled generically --- */
|
/* --- everything else is handled generically --- */
|
||||||
default: CPU_GET_INFO_CALL(mips3); break;
|
default: CPU_GET_INFO_CALL(mips3); break;
|
||||||
}
|
}
|
||||||
@ -4124,4 +4124,3 @@ DEFINE_LEGACY_CPU_DEVICE(QED5271LE_DRC, qed5271le_drc);
|
|||||||
|
|
||||||
DEFINE_LEGACY_CPU_DEVICE(RM7000BE_DRC, rm7000be_drc);
|
DEFINE_LEGACY_CPU_DEVICE(RM7000BE_DRC, rm7000be_drc);
|
||||||
DEFINE_LEGACY_CPU_DEVICE(RM7000LE_DRC, rm7000le_drc);
|
DEFINE_LEGACY_CPU_DEVICE(RM7000LE_DRC, rm7000le_drc);
|
||||||
|
|
||||||
|
@ -2436,5 +2436,3 @@ offs_t mn10200_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *
|
|||||||
extern CPU_DISASSEMBLE( mn10200 );
|
extern CPU_DISASSEMBLE( mn10200 );
|
||||||
return CPU_DISASSEMBLE_NAME(mn10200)(this, buffer, pc, oprom, opram, options);
|
return CPU_DISASSEMBLE_NAME(mn10200)(this, buffer, pc, oprom, opram, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -711,7 +711,7 @@ static CPU_GET_INFO( v25v35 )
|
|||||||
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &nec_state->icount; break;
|
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &nec_state->icount; break;
|
||||||
|
|
||||||
/* --- the following bits of info are returned as NULL-terminated strings --- */
|
/* --- the following bits of info are returned as NULL-terminated strings --- */
|
||||||
case CPUINFO_STR_NAME: strcpy(info->s, "NEC"); break;
|
case CPUINFO_STR_NAME: strcpy(info->s, "NEC"); break;
|
||||||
case CPUINFO_STR_FAMILY: strcpy(info->s, "NEC V-Series"); break;
|
case CPUINFO_STR_FAMILY: strcpy(info->s, "NEC V-Series"); break;
|
||||||
case CPUINFO_STR_VERSION: strcpy(info->s, "2.0"); break;
|
case CPUINFO_STR_VERSION: strcpy(info->s, "2.0"); break;
|
||||||
case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
|
case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
|
||||||
|
@ -703,78 +703,78 @@ void pic16c5x_device::xorwf()
|
|||||||
const pic16c5x_device::pic16c5x_opcode pic16c5x_device::s_opcode_main[256]=
|
const pic16c5x_device::pic16c5x_opcode pic16c5x_device::s_opcode_main[256]=
|
||||||
{
|
{
|
||||||
/*00*/ {1, &pic16c5x_device::nop },{0, &pic16c5x_device::illegal },{1, &pic16c5x_device::movwf },{1, &pic16c5x_device::movwf },
|
/*00*/ {1, &pic16c5x_device::nop },{0, &pic16c5x_device::illegal },{1, &pic16c5x_device::movwf },{1, &pic16c5x_device::movwf },
|
||||||
{1, &pic16c5x_device::clrw },{0, &pic16c5x_device::illegal },{1, &pic16c5x_device::clrf },{1, &pic16c5x_device::clrf },
|
{1, &pic16c5x_device::clrw },{0, &pic16c5x_device::illegal },{1, &pic16c5x_device::clrf },{1, &pic16c5x_device::clrf },
|
||||||
/*08*/ {1, &pic16c5x_device::subwf },{1, &pic16c5x_device::subwf },{1, &pic16c5x_device::subwf },{1, &pic16c5x_device::subwf },
|
/*08*/ {1, &pic16c5x_device::subwf },{1, &pic16c5x_device::subwf },{1, &pic16c5x_device::subwf },{1, &pic16c5x_device::subwf },
|
||||||
{1, &pic16c5x_device::decf },{1, &pic16c5x_device::decf },{1, &pic16c5x_device::decf },{1, &pic16c5x_device::decf },
|
{1, &pic16c5x_device::decf },{1, &pic16c5x_device::decf },{1, &pic16c5x_device::decf },{1, &pic16c5x_device::decf },
|
||||||
/*10*/ {1, &pic16c5x_device::iorwf },{1, &pic16c5x_device::iorwf },{1, &pic16c5x_device::iorwf },{1, &pic16c5x_device::iorwf },
|
/*10*/ {1, &pic16c5x_device::iorwf },{1, &pic16c5x_device::iorwf },{1, &pic16c5x_device::iorwf },{1, &pic16c5x_device::iorwf },
|
||||||
{1, &pic16c5x_device::andwf },{1, &pic16c5x_device::andwf },{1, &pic16c5x_device::andwf },{1, &pic16c5x_device::andwf },
|
{1, &pic16c5x_device::andwf },{1, &pic16c5x_device::andwf },{1, &pic16c5x_device::andwf },{1, &pic16c5x_device::andwf },
|
||||||
/*18*/ {1, &pic16c5x_device::xorwf },{1, &pic16c5x_device::xorwf },{1, &pic16c5x_device::xorwf },{1, &pic16c5x_device::xorwf },
|
/*18*/ {1, &pic16c5x_device::xorwf },{1, &pic16c5x_device::xorwf },{1, &pic16c5x_device::xorwf },{1, &pic16c5x_device::xorwf },
|
||||||
{1, &pic16c5x_device::addwf },{1, &pic16c5x_device::addwf },{1, &pic16c5x_device::addwf },{1, &pic16c5x_device::addwf },
|
{1, &pic16c5x_device::addwf },{1, &pic16c5x_device::addwf },{1, &pic16c5x_device::addwf },{1, &pic16c5x_device::addwf },
|
||||||
/*20*/ {1, &pic16c5x_device::movf },{1, &pic16c5x_device::movf },{1, &pic16c5x_device::movf },{1, &pic16c5x_device::movf },
|
/*20*/ {1, &pic16c5x_device::movf },{1, &pic16c5x_device::movf },{1, &pic16c5x_device::movf },{1, &pic16c5x_device::movf },
|
||||||
{1, &pic16c5x_device::comf },{1, &pic16c5x_device::comf },{1, &pic16c5x_device::comf },{1, &pic16c5x_device::comf },
|
{1, &pic16c5x_device::comf },{1, &pic16c5x_device::comf },{1, &pic16c5x_device::comf },{1, &pic16c5x_device::comf },
|
||||||
/*28*/ {1, &pic16c5x_device::incf },{1, &pic16c5x_device::incf },{1, &pic16c5x_device::incf },{1, &pic16c5x_device::incf },
|
/*28*/ {1, &pic16c5x_device::incf },{1, &pic16c5x_device::incf },{1, &pic16c5x_device::incf },{1, &pic16c5x_device::incf },
|
||||||
{1, &pic16c5x_device::decfsz },{1, &pic16c5x_device::decfsz },{1, &pic16c5x_device::decfsz },{1, &pic16c5x_device::decfsz },
|
{1, &pic16c5x_device::decfsz },{1, &pic16c5x_device::decfsz },{1, &pic16c5x_device::decfsz },{1, &pic16c5x_device::decfsz },
|
||||||
/*30*/ {1, &pic16c5x_device::rrf },{1, &pic16c5x_device::rrf },{1, &pic16c5x_device::rrf },{1, &pic16c5x_device::rrf },
|
/*30*/ {1, &pic16c5x_device::rrf },{1, &pic16c5x_device::rrf },{1, &pic16c5x_device::rrf },{1, &pic16c5x_device::rrf },
|
||||||
{1, &pic16c5x_device::rlf },{1, &pic16c5x_device::rlf },{1, &pic16c5x_device::rlf },{1, &pic16c5x_device::rlf },
|
{1, &pic16c5x_device::rlf },{1, &pic16c5x_device::rlf },{1, &pic16c5x_device::rlf },{1, &pic16c5x_device::rlf },
|
||||||
/*38*/ {1, &pic16c5x_device::swapf },{1, &pic16c5x_device::swapf },{1, &pic16c5x_device::swapf },{1, &pic16c5x_device::swapf },
|
/*38*/ {1, &pic16c5x_device::swapf },{1, &pic16c5x_device::swapf },{1, &pic16c5x_device::swapf },{1, &pic16c5x_device::swapf },
|
||||||
{1, &pic16c5x_device::incfsz },{1, &pic16c5x_device::incfsz },{1, &pic16c5x_device::incfsz },{1, &pic16c5x_device::incfsz },
|
{1, &pic16c5x_device::incfsz },{1, &pic16c5x_device::incfsz },{1, &pic16c5x_device::incfsz },{1, &pic16c5x_device::incfsz },
|
||||||
/*40*/ {1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },
|
/*40*/ {1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },
|
||||||
{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },
|
{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },
|
||||||
/*48*/ {1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },
|
/*48*/ {1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },
|
||||||
{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },
|
{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },{1, &pic16c5x_device::bcf },
|
||||||
/*50*/ {1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },
|
/*50*/ {1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },
|
||||||
{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },
|
{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },
|
||||||
/*58*/ {1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },
|
/*58*/ {1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },
|
||||||
{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },
|
{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },{1, &pic16c5x_device::bsf },
|
||||||
/*60*/ {1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },
|
/*60*/ {1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },
|
||||||
{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },
|
{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },
|
||||||
/*68*/ {1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },
|
/*68*/ {1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },
|
||||||
{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },
|
{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },{1, &pic16c5x_device::btfsc },
|
||||||
/*70*/ {1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },
|
/*70*/ {1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },
|
||||||
{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },
|
{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },
|
||||||
/*78*/ {1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },
|
/*78*/ {1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },
|
||||||
{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },
|
{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },{1, &pic16c5x_device::btfss },
|
||||||
/*80*/ {2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },
|
/*80*/ {2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },
|
||||||
{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },
|
{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },
|
||||||
/*88*/ {2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },
|
/*88*/ {2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },
|
||||||
{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },
|
{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },{2, &pic16c5x_device::retlw },
|
||||||
/*90*/ {2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },
|
/*90*/ {2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },
|
||||||
{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },
|
{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },
|
||||||
/*98*/ {2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },
|
/*98*/ {2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },
|
||||||
{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },
|
{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },{2, &pic16c5x_device::call },
|
||||||
/*A0*/ {2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
/*A0*/ {2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
||||||
{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
||||||
/*A8*/ {2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
/*A8*/ {2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
||||||
{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
||||||
/*B0*/ {2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
/*B0*/ {2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
||||||
{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
||||||
/*B8*/ {2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
/*B8*/ {2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
||||||
{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },{2, &pic16c5x_device::goto_op },
|
||||||
/*C0*/ {1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },
|
/*C0*/ {1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },
|
||||||
{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },
|
{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },
|
||||||
/*C8*/ {1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },
|
/*C8*/ {1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },
|
||||||
{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },
|
{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },{1, &pic16c5x_device::movlw },
|
||||||
/*D0*/ {1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },
|
/*D0*/ {1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },
|
||||||
{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },
|
{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },
|
||||||
/*D8*/ {1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },
|
/*D8*/ {1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },
|
||||||
{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },
|
{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },{1, &pic16c5x_device::iorlw },
|
||||||
/*E0*/ {1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },
|
/*E0*/ {1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },
|
||||||
{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },
|
{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },
|
||||||
/*E8*/ {1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },
|
/*E8*/ {1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },
|
||||||
{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },
|
{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },{1, &pic16c5x_device::andlw },
|
||||||
/*F0*/ {1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },
|
/*F0*/ {1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },
|
||||||
{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },
|
{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },
|
||||||
/*F8*/ {1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },
|
/*F8*/ {1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },
|
||||||
{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw }
|
{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw },{1, &pic16c5x_device::xorlw }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const pic16c5x_device::pic16c5x_opcode pic16c5x_device::s_opcode_00x[16]=
|
const pic16c5x_device::pic16c5x_opcode pic16c5x_device::s_opcode_00x[16]=
|
||||||
{
|
{
|
||||||
/*00*/ {1, &pic16c5x_device::nop },{0, &pic16c5x_device::illegal },{1, &pic16c5x_device::option },{1, &pic16c5x_device::sleepic },
|
/*00*/ {1, &pic16c5x_device::nop },{0, &pic16c5x_device::illegal },{1, &pic16c5x_device::option },{1, &pic16c5x_device::sleepic },
|
||||||
{1, &pic16c5x_device::clrwdt },{1, &pic16c5x_device::tris },{1, &pic16c5x_device::tris },{1, &pic16c5x_device::tris },
|
{1, &pic16c5x_device::clrwdt },{1, &pic16c5x_device::tris },{1, &pic16c5x_device::tris },{1, &pic16c5x_device::tris },
|
||||||
/*08*/ {0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },
|
/*08*/ {0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },
|
||||||
{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal }
|
{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal },{0, &pic16c5x_device::illegal }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1102,4 +1102,3 @@ void pic16c5x_device::execute_run()
|
|||||||
|
|
||||||
} while (m_icount > 0);
|
} while (m_icount > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1176,4 +1176,3 @@ void pic16c62x_device::device_reset()
|
|||||||
pic16c62x_reset_regs();
|
pic16c62x_reset_regs();
|
||||||
SET(STATUS, (TO_FLAG | PD_FLAG));
|
SET(STATUS, (TO_FLAG | PD_FLAG));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,8 +227,8 @@ public:
|
|||||||
class pic16cr620a_device : public pic16c62x_device
|
class pic16cr620a_device : public pic16c62x_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
pic16cr620a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
pic16cr620a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
}*/;
|
}*/;
|
||||||
|
|
||||||
class pic16c621_device : public pic16c62x_device
|
class pic16c621_device : public pic16c62x_device
|
||||||
|
@ -367,4 +367,3 @@ void pps4_device::device_reset()
|
|||||||
m_SB.d = 0;
|
m_SB.d = 0;
|
||||||
m_B.d = 0;
|
m_B.d = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ private:
|
|||||||
UINT16 root_current( int n_counter );
|
UINT16 root_current( int n_counter );
|
||||||
int root_target( int n_counter );
|
int root_target( int n_counter );
|
||||||
void root_timer_adjust( int n_counter );
|
void root_timer_adjust( int n_counter );
|
||||||
|
|
||||||
devcb2_write_line m_irq0_handler;
|
devcb2_write_line m_irq0_handler;
|
||||||
devcb2_write_line m_irq1_handler;
|
devcb2_write_line m_irq1_handler;
|
||||||
devcb2_write_line m_irq2_handler;
|
devcb2_write_line m_irq2_handler;
|
||||||
|
@ -6167,4 +6167,3 @@ CPU_GET_INFO( rsp_drc )
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_LEGACY_CPU_DEVICE(RSP_DRC, rsp_drc);
|
DEFINE_LEGACY_CPU_DEVICE(RSP_DRC, rsp_drc);
|
||||||
|
|
||||||
|
@ -1564,4 +1564,3 @@ void s2650_device::execute_run()
|
|||||||
}
|
}
|
||||||
} while( m_icount > 0 );
|
} while( m_icount > 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,11 +17,11 @@
|
|||||||
|
|
||||||
INLINE sh2_state *GET_SH2(device_t *dev)
|
INLINE sh2_state *GET_SH2(device_t *dev)
|
||||||
{
|
{
|
||||||
if (dev->machine().options().drc()) {
|
if (dev->machine().options().drc()) {
|
||||||
return *(sh2_state **)downcast<legacy_cpu_device *>(dev)->token();
|
return *(sh2_state **)downcast<legacy_cpu_device *>(dev)->token();
|
||||||
} else {
|
} else {
|
||||||
return (sh2_state *)downcast<legacy_cpu_device *>(dev)->token();
|
return (sh2_state *)downcast<legacy_cpu_device *>(dev)->token();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const int div_tab[4] = { 3, 5, 7, 0 };
|
static const int div_tab[4] = { 3, 5, 7, 0 };
|
||||||
@ -844,7 +844,7 @@ void sh2_set_irq_line(sh2_state *sh2, int irqline, int state)
|
|||||||
sh2_exception(sh2, "Set IRQ line", 16);
|
sh2_exception(sh2, "Set IRQ line", 16);
|
||||||
|
|
||||||
if (sh2->isdrc)
|
if (sh2->isdrc)
|
||||||
sh2->pending_nmi = 1;
|
sh2->pending_nmi = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -117,7 +117,7 @@ struct sh2_state
|
|||||||
UINT32 irqsr; // IRQ-time old SR for DRC
|
UINT32 irqsr; // IRQ-time old SR for DRC
|
||||||
UINT32 target; // target for jmp/jsr/etc so the delay slot can't kill it
|
UINT32 target; // target for jmp/jsr/etc so the delay slot can't kill it
|
||||||
irq_entry irq_queue[16];
|
irq_entry irq_queue[16];
|
||||||
|
|
||||||
bool isdrc;
|
bool isdrc;
|
||||||
|
|
||||||
int pcfsel; // last pcflush entry set
|
int pcfsel; // last pcflush entry set
|
||||||
|
@ -760,4 +760,3 @@ bool sh2_frontend::describe_group_12(opcode_desc &desc, const opcode_desc *prev,
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2168,4 +2168,3 @@ void tmp95c063_device::execute_set_input(int input, int level)
|
|||||||
}
|
}
|
||||||
m_check_irqs = 1;
|
m_check_irqs = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,10 +16,10 @@ static const char *BCND_CONDITION[32] =
|
|||||||
|
|
||||||
static const char *BITNUM_CONDITION[32] =
|
static const char *BITNUM_CONDITION[32] =
|
||||||
{
|
{
|
||||||
"eq.b", "ne.b", "gt.b", "le.b", "lt.b", "ge.b", "hi.b", "ls.b",
|
"eq.b", "ne.b", "gt.b", "le.b", "lt.b", "ge.b", "hi.b", "ls.b",
|
||||||
"lo.b", "hs.b", "eq.h", "ne.h", "gt.h", "le.h", "lt.h", "ge.h",
|
"lo.b", "hs.b", "eq.h", "ne.h", "gt.h", "le.h", "lt.h", "ge.h",
|
||||||
"hi.h", "ls.h", "lo.h", "hs.h", "eq.w", "ne.w", "gt.w", "le.w",
|
"hi.h", "ls.h", "lo.h", "hs.h", "eq.w", "ne.w", "gt.w", "le.w",
|
||||||
"lt.w", "ge.w", "hi.w", "ls.w", "lo.w", "hs.w", "?", "?",
|
"lt.w", "ge.w", "hi.w", "ls.w", "lo.w", "hs.w", "?", "?",
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *MEMOP_S[2] =
|
static const char *MEMOP_S[2] =
|
||||||
@ -156,8 +156,8 @@ static char* format_vector_op(UINT32 op, UINT32 imm32)
|
|||||||
b += sprintf(b, "vrnd.%s%s 0x%08X, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[pd4], imm32, rs);
|
b += sprintf(b, "vrnd.%s%s 0x%08X, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[pd4], imm32, rs);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xca: b += sprintf(b, "vrnd.%s%s R%d, R%d", FLOATOP_PRECISION[2 + p1], FLOATOP_PRECISION[pd2],src1, rs); break;
|
case 0xca: b += sprintf(b, "vrnd.%s%s R%d, R%d", FLOATOP_PRECISION[2 + p1], FLOATOP_PRECISION[pd2],src1, rs); break;
|
||||||
case 0xcb: b += sprintf(b, "vrnd.%s%s 0x%08X, R%d", FLOATOP_PRECISION[2 + p1], FLOATOP_PRECISION[pd2], imm32, rs); break;
|
case 0xcb: b += sprintf(b, "vrnd.%s%s 0x%08X, R%d", FLOATOP_PRECISION[2 + p1], FLOATOP_PRECISION[pd2], imm32, rs); break;
|
||||||
|
|
||||||
case 0xcc: case 0xdc:
|
case 0xcc: case 0xdc:
|
||||||
b += sprintf(b, "vmac.ss%s R%d, R%d, %s, %s", FLOATOP_PRECISION[(op >> 9) & 1], src1, rs, z ? "0" : ACC_SEL[acc], (regdest && rd == 0) ? ACC_SEL[acc] : dest);
|
b += sprintf(b, "vmac.ss%s R%d, R%d, %s, %s", FLOATOP_PRECISION[(op >> 9) & 1], src1, rs, z ? "0" : ACC_SEL[acc], (regdest && rd == 0) ? ACC_SEL[acc] : dest);
|
||||||
@ -172,7 +172,7 @@ static char* format_vector_op(UINT32 op, UINT32 imm32)
|
|||||||
b += sprintf(b, "vmsc.ss%s 0x%08X, R%d, %s, %s", FLOATOP_PRECISION[(op >> 9) & 1], imm32, rs, z ? "0" : ACC_SEL[acc], (regdest && rd == 0) ? ACC_SEL[acc] : dest);
|
b += sprintf(b, "vmsc.ss%s 0x%08X, R%d, %s, %s", FLOATOP_PRECISION[(op >> 9) & 1], imm32, rs, z ? "0" : ACC_SEL[acc], (regdest && rd == 0) ? ACC_SEL[acc] : dest);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: b += sprintf(b, "?"); break;
|
default: b += sprintf(b, "?"); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// align the line end
|
// align the line end
|
||||||
@ -183,17 +183,17 @@ static char* format_vector_op(UINT32 op, UINT32 imm32)
|
|||||||
{
|
{
|
||||||
b += sprintf(b, " ");
|
b += sprintf(b, " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// optional load/store op
|
// optional load/store op
|
||||||
switch (vector_ls_bits)
|
switch (vector_ls_bits)
|
||||||
{
|
{
|
||||||
case 0x01: b += sprintf(b, "|| vst.s R%d", rd); break;
|
case 0x01: b += sprintf(b, "|| vst.s R%d", rd); break;
|
||||||
case 0x03: b += sprintf(b, "|| vst.d R%d", rd); break;
|
case 0x03: b += sprintf(b, "|| vst.d R%d", rd); break;
|
||||||
case 0x04: b += sprintf(b, "|| vld0.s R%d", rd); break;
|
case 0x04: b += sprintf(b, "|| vld0.s R%d", rd); break;
|
||||||
case 0x05: b += sprintf(b, "|| vld1.s R%d", rd); break;
|
case 0x05: b += sprintf(b, "|| vld1.s R%d", rd); break;
|
||||||
case 0x06: b += sprintf(b, "|| vld0.d R%d", rd); break;
|
case 0x06: b += sprintf(b, "|| vld0.d R%d", rd); break;
|
||||||
case 0x07: b += sprintf(b, "|| vld1.d R%d", rd); break;
|
case 0x07: b += sprintf(b, "|| vld1.d R%d", rd); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
@ -226,30 +226,30 @@ static offs_t tms32082_disasm_mp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
|
|
||||||
switch (subop)
|
switch (subop)
|
||||||
{
|
{
|
||||||
case 0x00: print("illop0 "); break;
|
case 0x00: print("illop0 "); break;
|
||||||
case 0x01: print("trap %d", UIMM15(uimm15)); break;
|
case 0x01: print("trap %d", UIMM15(uimm15)); break;
|
||||||
case 0x02: print("cmnd 0x%04X", UIMM15(uimm15)); break;
|
case 0x02: print("cmnd 0x%04X", UIMM15(uimm15)); break;
|
||||||
case 0x04: print("rdcr %s, R%d", get_creg_name(UIMM15(uimm15)), rd); break;
|
case 0x04: print("rdcr %s, R%d", get_creg_name(UIMM15(uimm15)), rd); break;
|
||||||
case 0x05: print("swcr R%d, %s, R%d", rd, get_creg_name(UIMM15(uimm15)), rs); break;
|
case 0x05: print("swcr R%d, %s, R%d", rd, get_creg_name(UIMM15(uimm15)), rs); break;
|
||||||
case 0x06: print("brcr %s", get_creg_name(UIMM15(uimm15))); break;
|
case 0x06: print("brcr %s", get_creg_name(UIMM15(uimm15))); break;
|
||||||
case 0x08: print("shift%s.dz %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x08: print("shift%s.dz %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x09: print("shift%s.dm %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x09: print("shift%s.dm %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x0a: print("shift%s.ds %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x0a: print("shift%s.ds %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x0b: print("shift%s.ez %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x0b: print("shift%s.ez %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x0c: print("shift%s.em %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x0c: print("shift%s.em %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x0d: print("shift%s.es %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x0d: print("shift%s.es %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x0e: print("shift%s.iz %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x0e: print("shift%s.iz %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x0f: print("shift%s.im %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x0f: print("shift%s.im %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x11: print("and 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x11: print("and 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x12: print("and.tf 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x12: print("and.tf 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x14: print("and.ft 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x14: print("and.ft 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x16: print("xor 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x16: print("xor 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x17: print("or 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x17: print("or 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x18: print("and.ff 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x18: print("and.ff 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x19: print("xnor 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x19: print("xnor 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x1b: print("or.tf 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x1b: print("or.tf 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x1d: print("or.ft 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x1d: print("or.ft 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
case 0x1e: print("or.ff 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
case 0x1e: print("or.ff 0x%04X, R%d, R%d", UIMM15(uimm15), rs, rd); break;
|
||||||
|
|
||||||
case 0x24: case 0x20:
|
case 0x24: case 0x20:
|
||||||
print("ld.b 0x%04X(R%d%s), R%d", UIMM15(uimm15), rs, MEMOP_M[m], rd);
|
print("ld.b 0x%04X(R%d%s), R%d", UIMM15(uimm15), rs, MEMOP_M[m], rd);
|
||||||
@ -283,23 +283,23 @@ static offs_t tms32082_disasm_mp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
print("st.d R%d, 0x%04X(R%d%s)", rd, UIMM15(uimm15), rs, MEMOP_M[m]);
|
print("st.d R%d, 0x%04X(R%d%s)", rd, UIMM15(uimm15), rs, MEMOP_M[m]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x40: print("bsr 0x%08X, R%d", pc + (SIMM15(uimm15) * 4), link); break;
|
case 0x40: print("bsr 0x%08X, R%d", pc + (SIMM15(uimm15) * 4), link); break;
|
||||||
case 0x41: print("bsr.a 0x%08X, R%d", pc + (SIMM15(uimm15) * 4), link); break;
|
case 0x41: print("bsr.a 0x%08X, R%d", pc + (SIMM15(uimm15) * 4), link); break;
|
||||||
case 0x44: print("jsr 0x%04X(R%d), R%d", SIMM15(uimm15), rs, link); break;
|
case 0x44: print("jsr 0x%04X(R%d), R%d", SIMM15(uimm15), rs, link); break;
|
||||||
case 0x45: print("jsr.a 0x%04X(R%d), R%d", SIMM15(uimm15), rs, link); break;
|
case 0x45: print("jsr.a 0x%04X(R%d), R%d", SIMM15(uimm15), rs, link); break;
|
||||||
case 0x48: print("bbz 0x%08X, R%d, %s (%d)", pc + (SIMM15(uimm15) * 4), rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x48: print("bbz 0x%08X, R%d, %s (%d)", pc + (SIMM15(uimm15) * 4), rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x49: print("bbz.a 0x%08X, R%d, %s (%d)", pc + (SIMM15(uimm15) * 4), rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x49: print("bbz.a 0x%08X, R%d, %s (%d)", pc + (SIMM15(uimm15) * 4), rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x4a: print("bbo 0x%08X, R%d, %s (%d)", pc + (SIMM15(uimm15) * 4), rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x4a: print("bbo 0x%08X, R%d, %s (%d)", pc + (SIMM15(uimm15) * 4), rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x4b: print("bbo.a 0x%08X, R%d, %s (%d)", pc + (SIMM15(uimm15) * 4), rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x4b: print("bbo.a 0x%08X, R%d, %s (%d)", pc + (SIMM15(uimm15) * 4), rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x4c: print("bcnd 0x%08X, R%d, %s", pc + (SIMM15(uimm15) * 4), rs, BCND_CONDITION[rd]); break;
|
case 0x4c: print("bcnd 0x%08X, R%d, %s", pc + (SIMM15(uimm15) * 4), rs, BCND_CONDITION[rd]); break;
|
||||||
case 0x4d: print("bcnd.a 0x%08X, R%d, %s", pc + (SIMM15(uimm15) * 4), rs, BCND_CONDITION[rd]); break;
|
case 0x4d: print("bcnd.a 0x%08X, R%d, %s", pc + (SIMM15(uimm15) * 4), rs, BCND_CONDITION[rd]); break;
|
||||||
case 0x50: print("cmp 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
case 0x50: print("cmp 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
||||||
case 0x58: print("add 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
case 0x58: print("add 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
||||||
case 0x59: print("addu 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
case 0x59: print("addu 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
||||||
case 0x5a: print("sub 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
case 0x5a: print("sub 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
||||||
case 0x5b: print("subu 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
case 0x5b: print("subu 0x%08X, R%d, R%d", SIMM15(uimm15), rs, rd); break;
|
||||||
|
|
||||||
default: print("?"); break;
|
default: print("?"); break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -324,16 +324,16 @@ static offs_t tms32082_disasm_mp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
|
|
||||||
switch (subop)
|
switch (subop)
|
||||||
{
|
{
|
||||||
case 0x02: print("trap %d", src1); break;
|
case 0x02: print("trap %d", src1); break;
|
||||||
case 0x03: print("trap %d", imm32); break;
|
case 0x03: print("trap %d", imm32); break;
|
||||||
case 0x04: print("cmnd R%d", src1); break;
|
case 0x04: print("cmnd R%d", src1); break;
|
||||||
case 0x05: print("cmnd 0x%08X", imm32); break;
|
case 0x05: print("cmnd 0x%08X", imm32); break;
|
||||||
case 0x08: print("rdcr R%d, R%d,", src1, rd); break;
|
case 0x08: print("rdcr R%d, R%d,", src1, rd); break;
|
||||||
case 0x09: print("rdcr %s, R%d", get_creg_name(imm32), rd); break;
|
case 0x09: print("rdcr %s, R%d", get_creg_name(imm32), rd); break;
|
||||||
case 0x0a: print("swcr R%d, R%d, R%d", rd, src1, rs); break;
|
case 0x0a: print("swcr R%d, R%d, R%d", rd, src1, rs); break;
|
||||||
case 0x0b: print("swcr R%d, %s, R%d", rd, get_creg_name(imm32), rs); break;
|
case 0x0b: print("swcr R%d, %s, R%d", rd, get_creg_name(imm32), rs); break;
|
||||||
case 0x0c: print("brcr R%d", src1); break;
|
case 0x0c: print("brcr R%d", src1); break;
|
||||||
case 0x0d: print("brcr %s", get_creg_name(imm32)); break;
|
case 0x0d: print("brcr %s", get_creg_name(imm32)); break;
|
||||||
|
|
||||||
case 0x10: print("shift%s.dz %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x10: print("shift%s.dz %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
case 0x12: print("shift%s.dm %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
case 0x12: print("shift%s.dm %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
|
||||||
@ -434,69 +434,69 @@ static offs_t tms32082_disasm_mp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
print("dcache 0x%08X(R%d)", imm32, rs);
|
print("dcache 0x%08X(R%d)", imm32, rs);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x80: print("bsr R%d, R%d", src1, link); break;
|
case 0x80: print("bsr R%d, R%d", src1, link); break;
|
||||||
case 0x81: print("bsr 0x%08X, R%d", imm32, link); break;
|
case 0x81: print("bsr 0x%08X, R%d", imm32, link); break;
|
||||||
case 0x82: print("bsr.a R%d, R%d", src1, rd); break;
|
case 0x82: print("bsr.a R%d, R%d", src1, rd); break;
|
||||||
case 0x83: print("bsr.a 0x%08X, R%d", imm32, link); break;
|
case 0x83: print("bsr.a 0x%08X, R%d", imm32, link); break;
|
||||||
case 0x88: print("jsr R%d, R%d", src1, link); break;
|
case 0x88: print("jsr R%d, R%d", src1, link); break;
|
||||||
case 0x89: print("jsr 0x%08X, R%d", imm32, link); break;
|
case 0x89: print("jsr 0x%08X, R%d", imm32, link); break;
|
||||||
case 0x8a: print("jsr.a R%d, R%d", src1, link); break;
|
case 0x8a: print("jsr.a R%d, R%d", src1, link); break;
|
||||||
case 0x8b: print("jsr.a 0x%08X, R%d", imm32, link); break;
|
case 0x8b: print("jsr.a 0x%08X, R%d", imm32, link); break;
|
||||||
case 0x90: print("bbz R%d, R%d, %s (%d)", src1, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x90: print("bbz R%d, R%d, %s (%d)", src1, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x91: print("bbz 0x%08X, R%d, %s (%d)", imm32, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x91: print("bbz 0x%08X, R%d, %s (%d)", imm32, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x92: print("bbz.a R%d, R%d, %s (%d)", src1, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x92: print("bbz.a R%d, R%d, %s (%d)", src1, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x93: print("bbz.a 0x%08X, R%d, %s (%d)", imm32, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x93: print("bbz.a 0x%08X, R%d, %s (%d)", imm32, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x94: print("bbo R%d, R%d, %s (%d)", src1, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x94: print("bbo R%d, R%d, %s (%d)", src1, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x95: print("bbo 0x%08X, R%d, %s (%d)", imm32, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x95: print("bbo 0x%08X, R%d, %s (%d)", imm32, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x96: print("bbo.a R%d, R%d, %s (%d)", src1, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x96: print("bbo.a R%d, R%d, %s (%d)", src1, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x97: print("bbo.a 0x%08X, R%d, %s (%d)", imm32, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
case 0x97: print("bbo.a 0x%08X, R%d, %s (%d)", imm32, rs, BITNUM_CONDITION[bitnum], bitnum); break;
|
||||||
case 0x98: print("bcnd R%d, R%d, %s", src1, rs, BCND_CONDITION[rd]); break;
|
case 0x98: print("bcnd R%d, R%d, %s", src1, rs, BCND_CONDITION[rd]); break;
|
||||||
case 0x99: print("bcnd 0x%08X, R%d, %s", imm32, rs, BCND_CONDITION[rd]); break;
|
case 0x99: print("bcnd 0x%08X, R%d, %s", imm32, rs, BCND_CONDITION[rd]); break;
|
||||||
case 0x9a: print("bcnd.a R%d, R%d, %s", src1, rs, BCND_CONDITION[rd]); break;
|
case 0x9a: print("bcnd.a R%d, R%d, %s", src1, rs, BCND_CONDITION[rd]); break;
|
||||||
case 0x9b: print("bcnd.a 0x%08X, R%d, %s", imm32, rs, BCND_CONDITION[rd]); break;
|
case 0x9b: print("bcnd.a 0x%08X, R%d, %s", imm32, rs, BCND_CONDITION[rd]); break;
|
||||||
case 0xa0: print("cmp R%d, R%d, R%d", src1, rs, rd); break;
|
case 0xa0: print("cmp R%d, R%d, R%d", src1, rs, rd); break;
|
||||||
case 0xa1: print("cmp 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
case 0xa1: print("cmp 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
||||||
case 0xb0: print("add R%d, R%d, R%d", src1, rs, rd); break;
|
case 0xb0: print("add R%d, R%d, R%d", src1, rs, rd); break;
|
||||||
case 0xb1: print("add 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
case 0xb1: print("add 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
||||||
case 0xb2: print("addu R%d, R%d, R%d", src1, rs, rd); break;
|
case 0xb2: print("addu R%d, R%d, R%d", src1, rs, rd); break;
|
||||||
case 0xb3: print("addu 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
case 0xb3: print("addu 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
||||||
case 0xb4: print("sub R%d, R%d, R%d", src1, rs, rd); break;
|
case 0xb4: print("sub R%d, R%d, R%d", src1, rs, rd); break;
|
||||||
case 0xb5: print("sub 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
case 0xb5: print("sub 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
||||||
case 0xb6: print("subu R%d, R%d, R%d", src1, rs, rd); break;
|
case 0xb6: print("subu R%d, R%d, R%d", src1, rs, rd); break;
|
||||||
case 0xb7: print("subu 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
case 0xb7: print("subu 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
||||||
|
|
||||||
case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc4: case 0xc5:
|
case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc4: case 0xc5:
|
||||||
case 0xc6: case 0xd6: case 0xc7: case 0xd7: case 0xc8: case 0xd8: case 0xc9: case 0xd9:
|
case 0xc6: case 0xd6: case 0xc7: case 0xd7: case 0xc8: case 0xd8: case 0xc9: case 0xd9:
|
||||||
case 0xca: case 0xcb: case 0xcc: case 0xdc: case 0xcd: case 0xdd: case 0xce: case 0xde:
|
case 0xca: case 0xcb: case 0xcc: case 0xdc: case 0xcd: case 0xdd: case 0xce: case 0xde:
|
||||||
case 0xcf: case 0xdf:
|
case 0xcf: case 0xdf:
|
||||||
{
|
{
|
||||||
print("%s", format_vector_op(op, imm32));
|
print("%s", format_vector_op(op, imm32));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0xe0: print("fadd.%s%s%s R%d, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], src1, rs, rd); break;
|
case 0xe0: print("fadd.%s%s%s R%d, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], src1, rs, rd); break;
|
||||||
case 0xe1: print("fadd.%s%s%s 0x%08X, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], imm32, rs, rd); break;
|
case 0xe1: print("fadd.%s%s%s 0x%08X, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], imm32, rs, rd); break;
|
||||||
case 0xe2: print("fsub.%s%s%s R%d, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], src1, rs, rd); break;
|
case 0xe2: print("fsub.%s%s%s R%d, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], src1, rs, rd); break;
|
||||||
case 0xe3: print("fsub.%s%s%s 0x%08X, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], imm32, rs, rd); break;
|
case 0xe3: print("fsub.%s%s%s 0x%08X, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], imm32, rs, rd); break;
|
||||||
case 0xe4: print("fmpy.%s%s%s R%d, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], src1, rs, rd); break;
|
case 0xe4: print("fmpy.%s%s%s R%d, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], src1, rs, rd); break;
|
||||||
case 0xe5: print("fmpy.%s%s%s 0x%08X, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], imm32, rs, rd); break;
|
case 0xe5: print("fmpy.%s%s%s 0x%08X, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], imm32, rs, rd); break;
|
||||||
case 0xe6: print("fdiv.%s%s%s R%d, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], src1, rs, rd); break;
|
case 0xe6: print("fdiv.%s%s%s R%d, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], src1, rs, rd); break;
|
||||||
case 0xe7: print("fdiv.%s%s%s 0x%08X, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], imm32, rs, rd); break;
|
case 0xe7: print("fdiv.%s%s%s 0x%08X, R%d, R%d", FLOATOP_PRECISION[p1], FLOATOP_PRECISION[p2], FLOATOP_PRECISION[pd], imm32, rs, rd); break;
|
||||||
case 0xe8: print("frnd%s.%s%s R%d, R%d", FLOATOP_ROUND[rndmode], FLOATOP_PRECISION[p1], FLOATOP_PRECISION[pd], src1, rd); break;
|
case 0xe8: print("frnd%s.%s%s R%d, R%d", FLOATOP_ROUND[rndmode], FLOATOP_PRECISION[p1], FLOATOP_PRECISION[pd], src1, rd); break;
|
||||||
case 0xe9: print("frnd%s.%s%s 0x%08X, R%d", FLOATOP_ROUND[rndmode], FLOATOP_PRECISION[p1], FLOATOP_PRECISION[pd], imm32, rd); break;
|
case 0xe9: print("frnd%s.%s%s 0x%08X, R%d", FLOATOP_ROUND[rndmode], FLOATOP_PRECISION[p1], FLOATOP_PRECISION[pd], imm32, rd); break;
|
||||||
case 0xea: print("fcmp R%d, R%d, R%d", src1, rs, rd); break;
|
case 0xea: print("fcmp R%d, R%d, R%d", src1, rs, rd); break;
|
||||||
case 0xeb: print("fcmp 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
case 0xeb: print("fcmp 0x%08X, R%d, R%d", imm32, rs, rd); break;
|
||||||
case 0xee: print("fsqrt R%d, R%d", src1, rd); break;
|
case 0xee: print("fsqrt R%d, R%d", src1, rd); break;
|
||||||
case 0xef: print("fsqrt 0x%08X, R%d", imm32, rd); break;
|
case 0xef: print("fsqrt 0x%08X, R%d", imm32, rd); break;
|
||||||
case 0xf0: print("lmo R%d, R%d", rs, rd); break;
|
case 0xf0: print("lmo R%d, R%d", rs, rd); break;
|
||||||
case 0xf2: print("rmo R%d, R%d", rs, rd); break;
|
case 0xf2: print("rmo R%d, R%d", rs, rd); break;
|
||||||
case 0xfc: print("estop "); break;
|
case 0xfc: print("estop "); break;
|
||||||
|
|
||||||
case 0xfe: case 0xff:
|
case 0xfe: case 0xff:
|
||||||
print("illopF ");
|
print("illopF ");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: print("?"); break;
|
default: print("?"); break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -6,37 +6,37 @@
|
|||||||
static const char *REG_NAMES[128] =
|
static const char *REG_NAMES[128] =
|
||||||
{
|
{
|
||||||
// 0 - 15
|
// 0 - 15
|
||||||
"a0", "a1", "a2", "a3", "a4", "???", "a6", "a7",
|
"a0", "a1", "a2", "a3", "a4", "???", "a6", "a7",
|
||||||
"a8", "a9", "a10", "a11", "a12", "???", "a14", "a15",
|
"a8", "a9", "a10", "a11", "a12", "???", "a14", "a15",
|
||||||
// 16 - 31
|
// 16 - 31
|
||||||
"x0", "x1", "x2", "???", "???", "???", "???", "???",
|
"x0", "x1", "x2", "???", "???", "???", "???", "???",
|
||||||
"x8", "x9", "x10", "???", "???", "???", "???", "???",
|
"x8", "x9", "x10", "???", "???", "???", "???", "???",
|
||||||
// 32 - 47
|
// 32 - 47
|
||||||
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7",
|
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7",
|
||||||
"???", "sr", "mf", "???", "???", "???", "???", "???",
|
"???", "sr", "mf", "???", "???", "???", "???", "???",
|
||||||
// 48 - 63
|
// 48 - 63
|
||||||
"???", "???", "???", "???", "???", "???", "???", "???",
|
"???", "???", "???", "???", "???", "???", "???", "???",
|
||||||
"pc/call", "ipa/br", "ipe", "iprs", "inten", "intflg", "comm", "lctl",
|
"pc/call", "ipa/br", "ipe", "iprs", "inten", "intflg", "comm", "lctl",
|
||||||
// 64 - 79
|
// 64 - 79
|
||||||
"???", "???", "???", "???", "???", "???", "???", "???",
|
"???", "???", "???", "???", "???", "???", "???", "???",
|
||||||
"???", "???", "???", "???", "???", "???", "???", "???",
|
"???", "???", "???", "???", "???", "???", "???", "???",
|
||||||
// 80 - 95
|
// 80 - 95
|
||||||
"???", "???", "???", "???", "???", "???", "???", "???",
|
"???", "???", "???", "???", "???", "???", "???", "???",
|
||||||
"???", "???", "???", "???", "???", "???", "???", "???",
|
"???", "???", "???", "???", "???", "???", "???", "???",
|
||||||
// 96 - 111
|
// 96 - 111
|
||||||
"lc0", "lc1", "lc2", "???", "lr0", "lr1", "lr2", "???",
|
"lc0", "lc1", "lc2", "???", "lr0", "lr1", "lr2", "???",
|
||||||
"lrse0", "lrse1", "lrse2", "???", "lrs0", "lrs1", "lrs2", "???",
|
"lrse0", "lrse1", "lrse2", "???", "lrs0", "lrs1", "lrs2", "???",
|
||||||
// 112 - 127
|
// 112 - 127
|
||||||
"ls0", "ls1", "ls2", "???", "le0", "le1", "le2", "???",
|
"ls0", "ls1", "ls2", "???", "le0", "le1", "le2", "???",
|
||||||
"???", "???", "???", "???", "tag0", "tag1", "tag2", "tag3"
|
"???", "???", "???", "???", "tag0", "tag1", "tag2", "tag3"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *CONDITION_CODES[16] =
|
static const char *CONDITION_CODES[16] =
|
||||||
{
|
{
|
||||||
"", "[p] ", "[ls] ", "[hi] ",
|
"", "[p] ", "[ls] ", "[hi] ",
|
||||||
"[lt] ", "[le] ", "[ge] ", "[gt] ",
|
"[lt] ", "[le] ", "[ge] ", "[gt] ",
|
||||||
"[hs] ", "[lo] ", "[eq] ", "[ne] ",
|
"[hs] ", "[lo] ", "[eq] ", "[ne] ",
|
||||||
"[v] ", "[nv] ", "[n] ", "[nn] "
|
"[v] ", "[nv] ", "[n] ", "[nn] "
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *TRANSFER_SIZE[4] =
|
static const char *TRANSFER_SIZE[4] =
|
||||||
@ -103,7 +103,7 @@ static void format_transfer(UINT64 op)
|
|||||||
|
|
||||||
switch (gmode)
|
switch (gmode)
|
||||||
{
|
{
|
||||||
case 0x00: // Format 7: Conditional DU || Conditional Move
|
case 0x00: // Format 7: Conditional DU || Conditional Move
|
||||||
{
|
{
|
||||||
int dstbank = (op >> 18) & 0xf;
|
int dstbank = (op >> 18) & 0xf;
|
||||||
int srcbank = (op >> 6) & 0xf;
|
int srcbank = (op >> 6) & 0xf;
|
||||||
@ -117,14 +117,14 @@ static void format_transfer(UINT64 op)
|
|||||||
b += sprintf(b, "%s = %s", REG_NAMES[dreg], REG_NAMES[sreg]);
|
b += sprintf(b, "%s = %s", REG_NAMES[dreg], REG_NAMES[sreg]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x01: // Format 8: Conditional DU ||Conditional Field Move
|
case 0x01: // Format 8: Conditional DU ||Conditional Field Move
|
||||||
{
|
{
|
||||||
int dstbank = (op >> 18) & 0xf;
|
int dstbank = (op >> 18) & 0xf;
|
||||||
int src = (op >> 10) & 0x7;
|
int src = (op >> 10) & 0x7;
|
||||||
int dst = (op >> 3) & 0x7;
|
int dst = (op >> 3) & 0x7;
|
||||||
int itm = (op >> 22) & 0x3;
|
int itm = (op >> 22) & 0x3;
|
||||||
int size = (op >> 7) & 0x3;
|
int size = (op >> 7) & 0x3;
|
||||||
// int e = (op & (1 << 9));
|
// int e = (op & (1 << 9));
|
||||||
|
|
||||||
int dreg = (dstbank << 3) | dst;
|
int dreg = (dstbank << 3) | dst;
|
||||||
int sreg = (4 << 3) | src;
|
int sreg = (4 << 3) | src;
|
||||||
@ -133,7 +133,7 @@ static void format_transfer(UINT64 op)
|
|||||||
b += sprintf(b, "%s = [%s%d]%s", REG_NAMES[dreg], TRANSFER_SIZE[size], itm, REG_NAMES[sreg]);
|
b += sprintf(b, "%s = [%s%d]%s", REG_NAMES[dreg], TRANSFER_SIZE[size], itm, REG_NAMES[sreg]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x02: case 0x03: // Format 10: Conditional Non-D Data Unit
|
case 0x02: case 0x03: // Format 10: Conditional Non-D Data Unit
|
||||||
{
|
{
|
||||||
int as1bank = (op >> 6) & 0xf;
|
int as1bank = (op >> 6) & 0xf;
|
||||||
int adstbank = (op >> 18) & 0xf;
|
int adstbank = (op >> 18) & 0xf;
|
||||||
@ -156,7 +156,7 @@ static void format_transfer(UINT64 op)
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if (op & 0x4) // Format 9: Conditional DU || Conditional Global
|
if (op & 0x4) // Format 9: Conditional DU || Conditional Global
|
||||||
{
|
{
|
||||||
int bank = (op >> 18) & 0xf;
|
int bank = (op >> 18) & 0xf;
|
||||||
int le = ((op >> 16) & 2) | ((op >> 9) & 1);
|
int le = ((op >> 16) & 2) | ((op >> 9) & 1);
|
||||||
@ -178,7 +178,7 @@ static void format_transfer(UINT64 op)
|
|||||||
case 3: b += sprintf(b, "%s = &%s%s", REG_NAMES[greg], TRANSFER_SIZE[size], format_address_mode(gmode, ga, s, gimx)); break;
|
case 3: b += sprintf(b, "%s = &%s%s", REG_NAMES[greg], TRANSFER_SIZE[size], format_address_mode(gmode, ga, s, gimx)); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // Format 5: Global (Long Offset)
|
else // Format 5: Global (Long Offset)
|
||||||
{
|
{
|
||||||
int bank = (op >> 18) & 0xf;
|
int bank = (op >> 18) & 0xf;
|
||||||
int le = ((op >> 16) & 2) | ((op >> 9) & 1);
|
int le = ((op >> 16) & 2) | ((op >> 9) & 1);
|
||||||
@ -194,7 +194,7 @@ static void format_transfer(UINT64 op)
|
|||||||
// sign extend offset
|
// sign extend offset
|
||||||
if (s && (offset & 0x4000))
|
if (s && (offset & 0x4000))
|
||||||
offset |= 0xffffc000;
|
offset |= 0xffffc000;
|
||||||
|
|
||||||
switch (le)
|
switch (le)
|
||||||
{
|
{
|
||||||
case 0: b += sprintf(b, "&%s%s = %s", TRANSFER_SIZE[size], format_address_mode(gmode, ga, s, offset), REG_NAMES[greg]); break;
|
case 0: b += sprintf(b, "&%s%s = %s", TRANSFER_SIZE[size], format_address_mode(gmode, ga, s, offset), REG_NAMES[greg]); break;
|
||||||
@ -215,17 +215,17 @@ static void format_transfer(UINT64 op)
|
|||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case 0x00: // Format 2: Move || Local
|
case 0x00: // Format 2: Move || Local
|
||||||
{
|
{
|
||||||
b += sprintf(b, "move||local <TODO>");
|
b += sprintf(b, "move||local <TODO>");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x01: // Format 3: Field Move || Local
|
case 0x01: // Format 3: Field Move || Local
|
||||||
{
|
{
|
||||||
b += sprintf(b, "field move||local <TODO>");
|
b += sprintf(b, "field move||local <TODO>");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x02: case 0x03: // Format 6: Non-D DU || Local
|
case 0x02: case 0x03: // Format 6: Non-D DU || Local
|
||||||
{
|
{
|
||||||
int d = (op >> 32) & 0x7;
|
int d = (op >> 32) & 0x7;
|
||||||
int s = (op & (1 << 28));
|
int s = (op & (1 << 28));
|
||||||
@ -245,7 +245,7 @@ static void format_transfer(UINT64 op)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x10: case 0x11: case 0x12: case 0x13: // Format 4: Local (Long Offset)
|
case 0x10: case 0x11: case 0x12: case 0x13: // Format 4: Local (Long Offset)
|
||||||
{
|
{
|
||||||
int d = (op >> 32) & 0x7;
|
int d = (op >> 32) & 0x7;
|
||||||
int bank = (op >> 18) & 0xf;
|
int bank = (op >> 18) & 0xf;
|
||||||
@ -277,7 +277,7 @@ static void format_transfer(UINT64 op)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x14: case 0x15: case 0x16: case 0x17: // Format 1: Double Parallel
|
case 0x14: case 0x15: case 0x16: case 0x17: // Format 1: Double Parallel
|
||||||
case 0x18: case 0x19: case 0x1a: case 0x1b:
|
case 0x18: case 0x19: case 0x1a: case 0x1b:
|
||||||
case 0x1c: case 0x1d: case 0x1e: case 0x1f:
|
case 0x1c: case 0x1d: case 0x1e: case 0x1f:
|
||||||
{
|
{
|
||||||
@ -329,83 +329,83 @@ static void format_transfer(UINT64 op)
|
|||||||
|
|
||||||
static void format_alu_op(int aluop, int a, const char *dst_text, const char *a_text, const char *b_text, const char *c_text)
|
static void format_alu_op(int aluop, int a, const char *dst_text, const char *a_text, const char *b_text, const char *c_text)
|
||||||
{
|
{
|
||||||
if (a) // arithmetic
|
if (a) // arithmetic
|
||||||
{
|
{
|
||||||
int bits = (aluop & 1) | ((aluop >> 1) & 2) | ((aluop >> 2) & 4) | ((aluop >> 3) & 8);
|
int bits = (aluop & 1) | ((aluop >> 1) & 2) | ((aluop >> 2) & 4) | ((aluop >> 3) & 8);
|
||||||
switch (bits)
|
switch (bits)
|
||||||
{
|
{
|
||||||
case 1: print("%s = %s - %s<1<", dst_text, a_text, b_text); break;
|
case 1: print("%s = %s - %s<1<", dst_text, a_text, b_text); break;
|
||||||
case 2: print("%s = %s + %s<0<", dst_text, a_text, b_text); break;
|
case 2: print("%s = %s + %s<0<", dst_text, a_text, b_text); break;
|
||||||
case 3: print("%s = %s - %s", dst_text, a_text, c_text); break;
|
case 3: print("%s = %s - %s", dst_text, a_text, c_text); break;
|
||||||
case 4: print("%s = %s - %s>1>", dst_text, a_text, b_text); break;
|
case 4: print("%s = %s - %s>1>", dst_text, a_text, b_text); break;
|
||||||
case 5: print("%s = %s - %s", dst_text, a_text, b_text); break;
|
case 5: print("%s = %s - %s", dst_text, a_text, b_text); break;
|
||||||
case 6: print("?"); break;
|
case 6: print("?"); break;
|
||||||
case 7: print("%s = %s - %s>0>", dst_text, a_text, b_text); break;
|
case 7: print("%s = %s - %s>0>", dst_text, a_text, b_text); break;
|
||||||
case 8: print("%s = %s + %s>0>", dst_text, a_text, b_text); break;
|
case 8: print("%s = %s + %s>0>", dst_text, a_text, b_text); break;
|
||||||
case 9: print("?"); break;
|
case 9: print("?"); break;
|
||||||
case 10: print("%s = %s + %s", dst_text, a_text, b_text); break;
|
case 10: print("%s = %s + %s", dst_text, a_text, b_text); break;
|
||||||
case 11: print("%s = %s + %s>1>", dst_text, a_text, b_text); break;
|
case 11: print("%s = %s + %s>1>", dst_text, a_text, b_text); break;
|
||||||
case 12: print("%s = %s + %s", dst_text, a_text, c_text); break;
|
case 12: print("%s = %s + %s", dst_text, a_text, c_text); break;
|
||||||
case 13: print("%s = %s - %s<0<", dst_text, a_text, b_text); break;
|
case 13: print("%s = %s - %s<0<", dst_text, a_text, b_text); break;
|
||||||
case 14: print("%s = %s + %s<1<", dst_text, a_text, b_text); break;
|
case 14: print("%s = %s + %s<1<", dst_text, a_text, b_text); break;
|
||||||
case 15: print("%s = field %s + %s", dst_text, a_text, b_text); break;
|
case 15: print("%s = field %s + %s", dst_text, a_text, b_text); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // boolean
|
else // boolean
|
||||||
{
|
{
|
||||||
switch (aluop)
|
switch (aluop)
|
||||||
{
|
{
|
||||||
case 0xaa: // A & B & C | A & ~B & C | A & B & ~C | A & ~B & ~C = A
|
case 0xaa: // A & B & C | A & ~B & C | A & B & ~C | A & ~B & ~C = A
|
||||||
print("%s = %s", dst_text, a_text);
|
print("%s = %s", dst_text, a_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x55: // ~A & B & C | ~A & ~B & C | ~A & B & ~C | ~A & ~B & ~C = ~A
|
case 0x55: // ~A & B & C | ~A & ~B & C | ~A & B & ~C | ~A & ~B & ~C = ~A
|
||||||
print("%s = ~%s", dst_text, a_text);
|
print("%s = ~%s", dst_text, a_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xcc: // A & B & C | ~A & B & C | A & B & ~C | ~A & B & ~C = B
|
case 0xcc: // A & B & C | ~A & B & C | A & B & ~C | ~A & B & ~C = B
|
||||||
print("%s = %s", dst_text, b_text);
|
print("%s = %s", dst_text, b_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x33: // A & ~B & C | ~A & ~B & C | A & ~B & ~C | ~A & ~B & ~C = ~B
|
case 0x33: // A & ~B & C | ~A & ~B & C | A & ~B & ~C | ~A & ~B & ~C = ~B
|
||||||
print("%s = %s", dst_text, b_text);
|
print("%s = %s", dst_text, b_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xf0: // A & B & C | ~A & B & C | A & ~B & C | ~A & ~B & C = C
|
case 0xf0: // A & B & C | ~A & B & C | A & ~B & C | ~A & ~B & C = C
|
||||||
print("%s = %s", dst_text, c_text);
|
print("%s = %s", dst_text, c_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0f: // A & B & ~C | ~A & B & ~C | A & ~B & ~C | ~A & ~B & ~C = ~C
|
case 0x0f: // A & B & ~C | ~A & B & ~C | A & ~B & ~C | ~A & ~B & ~C = ~C
|
||||||
print("%s = ~%s", dst_text, c_text);
|
print("%s = ~%s", dst_text, c_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x80: // A & B & C
|
case 0x80: // A & B & C
|
||||||
print("%s = %s & %s & %s", dst_text, a_text, b_text, c_text);
|
print("%s = %s & %s & %s", dst_text, a_text, b_text, c_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x88: // A & B & C | A & B & ~C = A & B
|
case 0x88: // A & B & C | A & B & ~C = A & B
|
||||||
print("%s = %s & %s", dst_text, a_text, b_text);
|
print("%s = %s & %s", dst_text, a_text, b_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xa0: // A & B & C | A & ~B & C = A & C
|
case 0xa0: // A & B & C | A & ~B & C = A & C
|
||||||
print("%s = %s & %s", dst_text, a_text, c_text);
|
print("%s = %s & %s", dst_text, a_text, c_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xc0: // A & B & C | ~A & B & C = B & C
|
case 0xc0: // A & B & C | ~A & B & C = B & C
|
||||||
print("%s = %s & %s", dst_text, b_text, c_text);
|
print("%s = %s & %s", dst_text, b_text, c_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xea: // A & B & C | ~A & B & C | A & ~B & C |
|
case 0xea: // A & B & C | ~A & B & C | A & ~B & C |
|
||||||
// A & B & ~C | A & ~B & ~C = A | C
|
// A & B & ~C | A & ~B & ~C = A | C
|
||||||
print("%s = %s | %s", dst_text, a_text, c_text);
|
print("%s = %s | %s", dst_text, a_text, c_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xee: // A & B & C | ~A & B & C | A & ~B & C |
|
case 0xee: // A & B & C | ~A & B & C | A & ~B & C |
|
||||||
// A & B & ~C | ~A & B & ~C | A & ~B & ~C = A | B
|
// A & B & ~C | ~A & B & ~C | A & ~B & ~C = A | B
|
||||||
print("%s = %s | %s", dst_text, a_text, b_text);
|
print("%s = %s | %s", dst_text, a_text, b_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x44: // ~A & B & C | ~A & B & ~C = ~A & B
|
case 0x44: // ~A & B & C | ~A & B & ~C = ~A & B
|
||||||
print("%s = ~%s & %s", dst_text, a_text, b_text);
|
print("%s = ~%s & %s", dst_text, a_text, b_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -420,14 +420,14 @@ static offs_t tms32082_disasm_pp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
{
|
{
|
||||||
output = buffer;
|
output = buffer;
|
||||||
UINT32 flags = 0;
|
UINT32 flags = 0;
|
||||||
|
|
||||||
UINT64 op = ((UINT64)(oprom[0]) << 56) | ((UINT64)(oprom[1]) << 48) | ((UINT64)(oprom[2]) << 40) | ((UINT64)(oprom[3]) << 32) |
|
UINT64 op = ((UINT64)(oprom[0]) << 56) | ((UINT64)(oprom[1]) << 48) | ((UINT64)(oprom[2]) << 40) | ((UINT64)(oprom[3]) << 32) |
|
||||||
((UINT64)(oprom[4]) << 24) | ((UINT64)(oprom[5]) << 16) | ((UINT64)(oprom[6]) << 8) | ((UINT64)(oprom[7]));
|
((UINT64)(oprom[4]) << 24) | ((UINT64)(oprom[5]) << 16) | ((UINT64)(oprom[6]) << 8) | ((UINT64)(oprom[7]));
|
||||||
|
|
||||||
switch (op >> 60)
|
switch (op >> 60)
|
||||||
{
|
{
|
||||||
case 0x6:
|
case 0x6:
|
||||||
case 0x7: // Six-operand
|
case 0x7: // Six-operand
|
||||||
{
|
{
|
||||||
print("A: six operand <TODO>");
|
print("A: six operand <TODO>");
|
||||||
break;
|
break;
|
||||||
@ -452,7 +452,7 @@ static offs_t tms32082_disasm_pp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
case 0x00: print("nop"); break;
|
case 0x00: print("nop"); break;
|
||||||
case 0x02: print("eint"); break;
|
case 0x02: print("eint"); break;
|
||||||
case 0x03: print("dint"); break;
|
case 0x03: print("dint"); break;
|
||||||
default: print("<reserved>"); break;
|
default: print("<reserved>"); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
format_transfer(parallel_xfer);
|
format_transfer(parallel_xfer);
|
||||||
@ -467,7 +467,7 @@ static offs_t tms32082_disasm_pp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
switch ((op >> 43) & 3)
|
switch ((op >> 43) & 3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
case 1: // Base set ALU (5-bit immediate)
|
case 1: // Base set ALU (5-bit immediate)
|
||||||
{
|
{
|
||||||
UINT64 parallel_xfer = (op & U64(0x0000007fffffffff));
|
UINT64 parallel_xfer = (op & U64(0x0000007fffffffff));
|
||||||
|
|
||||||
@ -545,8 +545,8 @@ static offs_t tms32082_disasm_pp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
format_transfer(parallel_xfer);
|
format_transfer(parallel_xfer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 2: // Base set ALU (reg src2)
|
case 2: // Base set ALU (reg src2)
|
||||||
{
|
{
|
||||||
UINT64 parallel_xfer = (op & U64(0x0000007fffffffff));
|
UINT64 parallel_xfer = (op & U64(0x0000007fffffffff));
|
||||||
|
|
||||||
@ -625,8 +625,8 @@ static offs_t tms32082_disasm_pp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
format_transfer(parallel_xfer);
|
format_transfer(parallel_xfer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 3: // Base set ALU (32-bit immediate)
|
case 3: // Base set ALU (32-bit immediate)
|
||||||
{
|
{
|
||||||
int dst = (op >> 48) & 7;
|
int dst = (op >> 48) & 7;
|
||||||
int src1 = (op >> 45) & 7;
|
int src1 = (op >> 45) & 7;
|
||||||
@ -709,4 +709,4 @@ static offs_t tms32082_disasm_pp(char *buffer, offs_t pc, const UINT8 *oprom)
|
|||||||
CPU_DISASSEMBLE(tms32082_pp)
|
CPU_DISASSEMBLE(tms32082_pp)
|
||||||
{
|
{
|
||||||
return tms32082_disasm_pp(buffer, pc, oprom);
|
return tms32082_disasm_pp(buffer, pc, oprom);
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#define SIGN16(x) (((x) & 0x8000) ? 1 : 0)
|
#define SIGN16(x) (((x) & 0x8000) ? 1 : 0)
|
||||||
#define SIGN8(x) (((x) & 0x80) ? 1 : 0)
|
#define SIGN8(x) (((x) & 0x80) ? 1 : 0)
|
||||||
|
|
||||||
#define SIGN_EXTEND(x, r) ((x) | (((x) & (0x80000000 >> r)) ? ((INT32)(0x80000000) >> r) : 0))
|
#define SIGN_EXTEND(x, r) ((x) | (((x) & (0x80000000 >> r)) ? ((INT32)(0x80000000) >> r) : 0))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -95,38 +95,38 @@ UINT32 tms32082_mp_device::calculate_cmp(UINT32 src1, UINT32 src2)
|
|||||||
|
|
||||||
UINT32 flags = 0;
|
UINT32 flags = 0;
|
||||||
// 32-bits (bits 20-29)
|
// 32-bits (bits 20-29)
|
||||||
flags |= ((~c32) & 1) << 29; // higher than or same (C)
|
flags |= ((~c32) & 1) << 29; // higher than or same (C)
|
||||||
flags |= ((c32) & 1) << 28; // lower than (~C)
|
flags |= ((c32) & 1) << 28; // lower than (~C)
|
||||||
flags |= ((c32|z32) & 1) << 27; // lower than or same (~C|Z)
|
flags |= ((c32|z32) & 1) << 27; // lower than or same (~C|Z)
|
||||||
flags |= ((~c32&~z32) & 1) << 26; // higher than (C&~Z)
|
flags |= ((~c32&~z32) & 1) << 26; // higher than (C&~Z)
|
||||||
flags |= (((n32&v32)|(~n32&~v32)) & 1) << 25; // greater than or equal (N&V)|(~N&~V)
|
flags |= (((n32&v32)|(~n32&~v32)) & 1) << 25; // greater than or equal (N&V)|(~N&~V)
|
||||||
flags |= (((n32&~v32)|(~n32&v32)) & 1) << 24; // less than (N&~V)|(~N&V)
|
flags |= (((n32&~v32)|(~n32&v32)) & 1) << 24; // less than (N&~V)|(~N&V)
|
||||||
flags |= (((n32&~v32)|(~n32&v32)|(z32)) & 1) << 23; // less than or equal (N&~V)|(~N&V)|Z
|
flags |= (((n32&~v32)|(~n32&v32)|(z32)) & 1) << 23; // less than or equal (N&~V)|(~N&V)|Z
|
||||||
flags |= (((n32&v32&~z32)|(~n32&~v32&~z32)) & 1) << 22; // greater than (N&V&~Z)|(~N&~V&~Z)
|
flags |= (((n32&v32&~z32)|(~n32&~v32&~z32)) & 1) << 22; // greater than (N&V&~Z)|(~N&~V&~Z)
|
||||||
flags |= ((~z32) & 1) << 21; // not equal (~Z)
|
flags |= ((~z32) & 1) << 21; // not equal (~Z)
|
||||||
flags |= ((z32) & 1) << 20; // equal (Z)
|
flags |= ((z32) & 1) << 20; // equal (Z)
|
||||||
// 16-bits (bits 10-19)
|
// 16-bits (bits 10-19)
|
||||||
flags |= ((~c16) & 1) << 19; // higher than or same (C)
|
flags |= ((~c16) & 1) << 19; // higher than or same (C)
|
||||||
flags |= ((c16) & 1) << 18; // lower than (~C)
|
flags |= ((c16) & 1) << 18; // lower than (~C)
|
||||||
flags |= ((c16|z16) & 1) << 17; // lower than or same (~C|Z)
|
flags |= ((c16|z16) & 1) << 17; // lower than or same (~C|Z)
|
||||||
flags |= ((~c16&~z16) & 1) << 16; // higher than (C&~Z)
|
flags |= ((~c16&~z16) & 1) << 16; // higher than (C&~Z)
|
||||||
flags |= (((n16&v16)|(~n16&~v16)) & 1) << 15; // greater than or equal (N&V)|(~N&~V)
|
flags |= (((n16&v16)|(~n16&~v16)) & 1) << 15; // greater than or equal (N&V)|(~N&~V)
|
||||||
flags |= (((n16&~v16)|(~n16&v16)) & 1) << 14; // less than (N&~V)|(~N&V)
|
flags |= (((n16&~v16)|(~n16&v16)) & 1) << 14; // less than (N&~V)|(~N&V)
|
||||||
flags |= (((n16&~v16)|(~n16&v16)|(z16)) & 1) << 13; // less than or equal (N&~V)|(~N&V)|Z
|
flags |= (((n16&~v16)|(~n16&v16)|(z16)) & 1) << 13; // less than or equal (N&~V)|(~N&V)|Z
|
||||||
flags |= (((n16&v16&~z16)|(~n16&~v16&~z16)) & 1) << 12; // greater than (N&V&~Z)|(~N&~V&~Z)
|
flags |= (((n16&v16&~z16)|(~n16&~v16&~z16)) & 1) << 12; // greater than (N&V&~Z)|(~N&~V&~Z)
|
||||||
flags |= ((~z16) & 1) << 11; // not equal (~Z)
|
flags |= ((~z16) & 1) << 11; // not equal (~Z)
|
||||||
flags |= ((z16) & 1) << 10; // equal (Z)
|
flags |= ((z16) & 1) << 10; // equal (Z)
|
||||||
// 8-bits (bits 0-9)
|
// 8-bits (bits 0-9)
|
||||||
flags |= ((~c8) & 1) << 9; // higher than or same (C)
|
flags |= ((~c8) & 1) << 9; // higher than or same (C)
|
||||||
flags |= ((c8) & 1) << 8; // lower than (~C)
|
flags |= ((c8) & 1) << 8; // lower than (~C)
|
||||||
flags |= ((c8|z8) & 1) << 7; // lower than or same (~C|Z)
|
flags |= ((c8|z8) & 1) << 7; // lower than or same (~C|Z)
|
||||||
flags |= ((~c8&~z8) & 1) << 6; // higher than (C&~Z)
|
flags |= ((~c8&~z8) & 1) << 6; // higher than (C&~Z)
|
||||||
flags |= (((n8&v8)|(~n8&~v8)) & 1) << 5; // greater than or equal (N&V)|(~N&~V)
|
flags |= (((n8&v8)|(~n8&~v8)) & 1) << 5; // greater than or equal (N&V)|(~N&~V)
|
||||||
flags |= (((n8&~v8)|(~n8&v8)) & 1) << 4; // less than (N&~V)|(~N&V)
|
flags |= (((n8&~v8)|(~n8&v8)) & 1) << 4; // less than (N&~V)|(~N&V)
|
||||||
flags |= (((n8&~v8)|(~n8&v8)|(z8)) & 1) << 3; // less than or equal (N&~V)|(~N&V)|Z
|
flags |= (((n8&~v8)|(~n8&v8)|(z8)) & 1) << 3; // less than or equal (N&~V)|(~N&V)|Z
|
||||||
flags |= (((n8&v8&~z8)|(~n8&~v8&~z8)) & 1) << 2; // greater than (N&V&~Z)|(~N&~V&~Z)
|
flags |= (((n8&v8&~z8)|(~n8&~v8&~z8)) & 1) << 2; // greater than (N&V&~Z)|(~N&~V&~Z)
|
||||||
flags |= ((~z8) & 1) << 1; // not equal (~Z)
|
flags |= ((~z8) & 1) << 1; // not equal (~Z)
|
||||||
flags |= ((z8) & 1) << 0; // equal (Z)
|
flags |= ((z8) & 1) << 0; // equal (Z)
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
@ -138,38 +138,38 @@ void tms32082_mp_device::vector_loadstore()
|
|||||||
|
|
||||||
switch (vector_ls_bits)
|
switch (vector_ls_bits)
|
||||||
{
|
{
|
||||||
case 0x01: // vst.s
|
case 0x01: // vst.s
|
||||||
{
|
{
|
||||||
m_program->write_dword(m_outp, m_reg[rd]);
|
m_program->write_dword(m_outp, m_reg[rd]);
|
||||||
m_outp += 4;
|
m_outp += 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x03: // vst.d
|
case 0x03: // vst.d
|
||||||
{
|
{
|
||||||
UINT64 data = m_fpair[rd >> 1];
|
UINT64 data = m_fpair[rd >> 1];
|
||||||
m_program->write_qword(m_outp, data);
|
m_program->write_qword(m_outp, data);
|
||||||
m_outp += 8;
|
m_outp += 8;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x04: // vld0.s
|
case 0x04: // vld0.s
|
||||||
{
|
{
|
||||||
m_reg[rd] = m_program->read_dword(m_in0p);
|
m_reg[rd] = m_program->read_dword(m_in0p);
|
||||||
m_in0p += 4;
|
m_in0p += 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x05: // vld1.s
|
case 0x05: // vld1.s
|
||||||
{
|
{
|
||||||
m_reg[rd] = m_program->read_dword(m_in1p);
|
m_reg[rd] = m_program->read_dword(m_in1p);
|
||||||
m_in1p += 4;
|
m_in1p += 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x06: // vld0.d
|
case 0x06: // vld0.d
|
||||||
{
|
{
|
||||||
m_fpair[rd >> 1] = m_program->read_qword(m_in0p);
|
m_fpair[rd >> 1] = m_program->read_qword(m_in0p);
|
||||||
m_in0p += 8;
|
m_in0p += 8;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x07: // vld1.d
|
case 0x07: // vld1.d
|
||||||
{
|
{
|
||||||
m_fpair[rd >> 1] = m_program->read_qword(m_in1p);
|
m_fpair[rd >> 1] = m_program->read_qword(m_in1p);
|
||||||
m_in1p += 8;
|
m_in1p += 8;
|
||||||
@ -186,7 +186,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
{
|
{
|
||||||
switch ((m_ir >> 15) & 0x7f)
|
switch ((m_ir >> 15) & 0x7f)
|
||||||
{
|
{
|
||||||
case 0x02: // cmnd
|
case 0x02: // cmnd
|
||||||
{
|
{
|
||||||
UINT32 data = OP_UIMM15();
|
UINT32 data = OP_UIMM15();
|
||||||
|
|
||||||
@ -220,7 +220,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x06: // brcr
|
case 0x06: // brcr
|
||||||
{
|
{
|
||||||
int cr = OP_UIMM15();
|
int cr = OP_UIMM15();
|
||||||
|
|
||||||
@ -233,13 +233,13 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
UINT32 data = read_creg(cr);
|
UINT32 data = read_creg(cr);
|
||||||
|
|
||||||
m_fetchpc = data & ~3;
|
m_fetchpc = data & ~3;
|
||||||
m_ie = (m_ie & ~1) | (data & 1); // global interrupt mask from creg
|
m_ie = (m_ie & ~1) | (data & 1); // global interrupt mask from creg
|
||||||
// TODO: user/supervisor latch from creg
|
// TODO: user/supervisor latch from creg
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x08: // shift.dz
|
case 0x08: // shift.dz
|
||||||
{
|
{
|
||||||
int r = (m_ir & (1 << 10));
|
int r = (m_ir & (1 << 10));
|
||||||
int inv = (m_ir & (1 << 11));
|
int inv = (m_ir & (1 << 11));
|
||||||
@ -251,14 +251,14 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
UINT32 endmask = SHIFT_MASK[end ? end : 32];
|
UINT32 endmask = SHIFT_MASK[end ? end : 32];
|
||||||
if (inv) endmask = ~endmask;
|
if (inv) endmask = ~endmask;
|
||||||
|
|
||||||
UINT32 compmask = endmask; // shiftmask == 0xffffffff
|
UINT32 compmask = endmask; // shiftmask == 0xffffffff
|
||||||
|
|
||||||
UINT32 res = 0;
|
UINT32 res = 0;
|
||||||
if (r) // right
|
if (r) // right
|
||||||
{
|
{
|
||||||
res = ROTATE_R(source, rot) & compmask;
|
res = ROTATE_R(source, rot) & compmask;
|
||||||
}
|
}
|
||||||
else // left
|
else // left
|
||||||
{
|
{
|
||||||
res = ROTATE_L(source, rot) & compmask;
|
res = ROTATE_L(source, rot) & compmask;
|
||||||
}
|
}
|
||||||
@ -268,7 +268,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x0a: // shift.ds
|
case 0x0a: // shift.ds
|
||||||
{
|
{
|
||||||
int r = (m_ir & (1 << 10));
|
int r = (m_ir & (1 << 10));
|
||||||
int inv = (m_ir & (1 << 11));
|
int inv = (m_ir & (1 << 11));
|
||||||
@ -280,15 +280,15 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
UINT32 endmask = SHIFT_MASK[end ? end : 32];
|
UINT32 endmask = SHIFT_MASK[end ? end : 32];
|
||||||
if (inv) endmask = ~endmask;
|
if (inv) endmask = ~endmask;
|
||||||
|
|
||||||
UINT32 compmask = endmask; // shiftmask == 0xffffffff
|
UINT32 compmask = endmask; // shiftmask == 0xffffffff
|
||||||
|
|
||||||
UINT32 res = 0;
|
UINT32 res = 0;
|
||||||
if (r) // right
|
if (r) // right
|
||||||
{
|
{
|
||||||
res = ROTATE_R(source, rot) & compmask;
|
res = ROTATE_R(source, rot) & compmask;
|
||||||
res = SIGN_EXTEND(res, rot);
|
res = SIGN_EXTEND(res, rot);
|
||||||
}
|
}
|
||||||
else // left
|
else // left
|
||||||
{
|
{
|
||||||
res = ROTATE_L(source, rot) & compmask;
|
res = ROTATE_L(source, rot) & compmask;
|
||||||
// sign extend makes no sense to left..
|
// sign extend makes no sense to left..
|
||||||
@ -299,7 +299,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x0b: // shift.ez
|
case 0x0b: // shift.ez
|
||||||
{
|
{
|
||||||
int r = (m_ir & (1 << 10));
|
int r = (m_ir & (1 << 10));
|
||||||
int inv = (m_ir & (1 << 11));
|
int inv = (m_ir & (1 << 11));
|
||||||
@ -330,7 +330,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x0c: // shift.em
|
case 0x0c: // shift.em
|
||||||
{
|
{
|
||||||
int r = (m_ir & (1 << 10));
|
int r = (m_ir & (1 << 10));
|
||||||
int inv = (m_ir & (1 << 11));
|
int inv = (m_ir & (1 << 11));
|
||||||
@ -346,11 +346,11 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
UINT32 compmask = endmask & shiftmask;
|
UINT32 compmask = endmask & shiftmask;
|
||||||
|
|
||||||
UINT32 res = 0;
|
UINT32 res = 0;
|
||||||
if (r) // right
|
if (r) // right
|
||||||
{
|
{
|
||||||
res = (ROTATE_R(source, rot) & compmask) | (m_reg[rd] & ~compmask);
|
res = (ROTATE_R(source, rot) & compmask) | (m_reg[rd] & ~compmask);
|
||||||
}
|
}
|
||||||
else // left
|
else // left
|
||||||
{
|
{
|
||||||
res = (ROTATE_L(source, rot) & compmask) | (m_reg[rd] & ~compmask);
|
res = (ROTATE_L(source, rot) & compmask) | (m_reg[rd] & ~compmask);
|
||||||
}
|
}
|
||||||
@ -360,7 +360,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x0d: // shift.es
|
case 0x0d: // shift.es
|
||||||
{
|
{
|
||||||
int r = (m_ir & (1 << 10));
|
int r = (m_ir & (1 << 10));
|
||||||
int inv = (m_ir & (1 << 11));
|
int inv = (m_ir & (1 << 11));
|
||||||
@ -371,18 +371,18 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
|
|
||||||
UINT32 endmask = SHIFT_MASK[end ? end : 32];
|
UINT32 endmask = SHIFT_MASK[end ? end : 32];
|
||||||
if (inv) endmask = ~endmask;
|
if (inv) endmask = ~endmask;
|
||||||
|
|
||||||
int shift = r ? 32-rot : rot;
|
int shift = r ? 32-rot : rot;
|
||||||
UINT32 shiftmask = SHIFT_MASK[shift ? shift : 32];
|
UINT32 shiftmask = SHIFT_MASK[shift ? shift : 32];
|
||||||
UINT32 compmask = endmask & shiftmask;
|
UINT32 compmask = endmask & shiftmask;
|
||||||
|
|
||||||
UINT32 res = 0;
|
UINT32 res = 0;
|
||||||
if (r) // right
|
if (r) // right
|
||||||
{
|
{
|
||||||
res = ROTATE_R(source, rot) & compmask;
|
res = ROTATE_R(source, rot) & compmask;
|
||||||
res = SIGN_EXTEND(res, rot);
|
res = SIGN_EXTEND(res, rot);
|
||||||
}
|
}
|
||||||
else // left
|
else // left
|
||||||
{
|
{
|
||||||
res = ROTATE_L(source, rot) & compmask;
|
res = ROTATE_L(source, rot) & compmask;
|
||||||
// sign extend makes no sense to left..
|
// sign extend makes no sense to left..
|
||||||
@ -393,7 +393,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x0e: // shift.iz
|
case 0x0e: // shift.iz
|
||||||
{
|
{
|
||||||
int r = (m_ir & (1 << 10));
|
int r = (m_ir & (1 << 10));
|
||||||
int inv = (m_ir & (1 << 11));
|
int inv = (m_ir & (1 << 11));
|
||||||
@ -423,7 +423,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x0f: // shift.im
|
case 0x0f: // shift.im
|
||||||
{
|
{
|
||||||
int r = (m_ir & (1 << 10));
|
int r = (m_ir & (1 << 10));
|
||||||
int inv = (m_ir & (1 << 11));
|
int inv = (m_ir & (1 << 11));
|
||||||
@ -439,11 +439,11 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
UINT32 compmask = endmask & ~shiftmask;
|
UINT32 compmask = endmask & ~shiftmask;
|
||||||
|
|
||||||
UINT32 res = 0;
|
UINT32 res = 0;
|
||||||
if (r) // right
|
if (r) // right
|
||||||
{
|
{
|
||||||
res = (ROTATE_R(source, rot) & compmask) | (m_reg[rd] & ~compmask);
|
res = (ROTATE_R(source, rot) & compmask) | (m_reg[rd] & ~compmask);
|
||||||
}
|
}
|
||||||
else // left
|
else // left
|
||||||
{
|
{
|
||||||
res = (ROTATE_L(source, rot) & compmask) | (m_reg[rd] & ~compmask);
|
res = (ROTATE_L(source, rot) & compmask) | (m_reg[rd] & ~compmask);
|
||||||
}
|
}
|
||||||
@ -453,7 +453,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x11: // and
|
case 0x11: // and
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
@ -464,7 +464,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x14: // and.ft
|
case 0x14: // and.ft
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
@ -475,7 +475,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x17: // or
|
case 0x17: // or
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
@ -486,7 +486,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x1d: // or.ft
|
case 0x1d: // or.ft
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
@ -498,7 +498,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x24:
|
case 0x24:
|
||||||
case 0x20: // ld.b
|
case 0x20: // ld.b
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -517,7 +517,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x25:
|
case 0x25:
|
||||||
case 0x21: // ld.h
|
case 0x21: // ld.h
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -536,7 +536,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x26:
|
case 0x26:
|
||||||
case 0x22: // ld
|
case 0x22: // ld
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -554,7 +554,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x27:
|
case 0x27:
|
||||||
case 0x23: // ld.d
|
case 0x23: // ld.d
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -576,7 +576,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x28:
|
case 0x28:
|
||||||
case 0x2c: // ld.ub
|
case 0x2c: // ld.ub
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -594,7 +594,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x2d:
|
case 0x2d:
|
||||||
case 0x29: // ld.uh
|
case 0x29: // ld.uh
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -612,7 +612,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x34:
|
case 0x34:
|
||||||
case 0x30: // st.b
|
case 0x30: // st.b
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -629,7 +629,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x35:
|
case 0x35:
|
||||||
case 0x31: // st.h
|
case 0x31: // st.h
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -663,7 +663,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x37:
|
case 0x37:
|
||||||
case 0x33: // st.d
|
case 0x33: // st.d
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -679,8 +679,8 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
m_reg[base] = address;
|
m_reg[base] = address;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x48: // bbz
|
case 0x48: // bbz
|
||||||
{
|
{
|
||||||
int bitnum = OP_BITNUM() ^ 0x1f;
|
int bitnum = OP_BITNUM() ^ 0x1f;
|
||||||
INT32 offset = OP_SIMM15();
|
INT32 offset = OP_SIMM15();
|
||||||
@ -698,7 +698,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x49: // bbz.a
|
case 0x49: // bbz.a
|
||||||
{
|
{
|
||||||
int bitnum = OP_BITNUM() ^ 0x1f;
|
int bitnum = OP_BITNUM() ^ 0x1f;
|
||||||
INT32 offset = OP_SIMM15();
|
INT32 offset = OP_SIMM15();
|
||||||
@ -711,7 +711,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x4a: // bbo
|
case 0x4a: // bbo
|
||||||
{
|
{
|
||||||
int bitnum = OP_BITNUM() ^ 0x1f;
|
int bitnum = OP_BITNUM() ^ 0x1f;
|
||||||
INT32 offset = OP_SIMM15();
|
INT32 offset = OP_SIMM15();
|
||||||
@ -742,7 +742,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x4c: // bcnd
|
case 0x4c: // bcnd
|
||||||
{
|
{
|
||||||
INT32 offset = OP_SIMM15();
|
INT32 offset = OP_SIMM15();
|
||||||
int code = OP_RD();
|
int code = OP_RD();
|
||||||
@ -760,7 +760,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x4d: // bcnd.a
|
case 0x4d: // bcnd.a
|
||||||
{
|
{
|
||||||
INT32 offset = OP_SIMM15();
|
INT32 offset = OP_SIMM15();
|
||||||
int code = OP_RD();
|
int code = OP_RD();
|
||||||
@ -784,7 +784,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x58: // add
|
case 0x58: // add
|
||||||
{
|
{
|
||||||
INT32 imm = OP_SIMM15();
|
INT32 imm = OP_SIMM15();
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
@ -808,7 +808,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x5a: // sub
|
case 0x5a: // sub
|
||||||
{
|
{
|
||||||
INT32 imm = OP_SIMM15();
|
INT32 imm = OP_SIMM15();
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
@ -821,7 +821,7 @@ void tms32082_mp_device::execute_short_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x5b: // subu
|
case 0x5b: // subu
|
||||||
{
|
{
|
||||||
INT32 imm = OP_SIMM15();
|
INT32 imm = OP_SIMM15();
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
@ -887,7 +887,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x1c: // shift.iz
|
case 0x1c: // shift.iz
|
||||||
{
|
{
|
||||||
int r = (m_ir & (1 << 10));
|
int r = (m_ir & (1 << 10));
|
||||||
int inv = (m_ir & (1 << 11));
|
int inv = (m_ir & (1 << 11));
|
||||||
@ -919,7 +919,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x22:
|
case 0x22:
|
||||||
case 0x23: // and
|
case 0x23: // and
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
@ -943,7 +943,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0x2c:
|
case 0x2c:
|
||||||
case 0x2d: // xor
|
case 0x2d: // xor
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
@ -967,7 +967,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x40:
|
case 0x40:
|
||||||
case 0x41:
|
case 0x41:
|
||||||
case 0x48:
|
case 0x48:
|
||||||
case 0x49: // ld.b
|
case 0x49: // ld.b
|
||||||
{
|
{
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
|
|
||||||
@ -977,7 +977,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
UINT32 address = m_reg[base] + (has_imm ? imm32 : m_reg[OP_SRC1()]);
|
UINT32 address = m_reg[base] + (has_imm ? imm32 : m_reg[OP_SRC1()]);
|
||||||
UINT32 r = m_program->read_byte(address);
|
UINT32 r = m_program->read_byte(address);
|
||||||
if (r & 0x80) r |= 0xffffff00;
|
if (r & 0x80) r |= 0xffffff00;
|
||||||
|
|
||||||
if (rd)
|
if (rd)
|
||||||
m_reg[rd] = r;
|
m_reg[rd] = r;
|
||||||
|
|
||||||
@ -989,7 +989,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x42:
|
case 0x42:
|
||||||
case 0x4a:
|
case 0x4a:
|
||||||
case 0x43:
|
case 0x43:
|
||||||
case 0x4b: // ld.h
|
case 0x4b: // ld.h
|
||||||
{
|
{
|
||||||
int shift = (m_ir & (1 << 11)) ? 1 : 0;
|
int shift = (m_ir & (1 << 11)) ? 1 : 0;
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
@ -1012,7 +1012,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x4c:
|
case 0x4c:
|
||||||
case 0x44:
|
case 0x44:
|
||||||
case 0x4d:
|
case 0x4d:
|
||||||
case 0x45: // ld
|
case 0x45: // ld
|
||||||
{
|
{
|
||||||
int shift = (m_ir & (1 << 11)) ? 2 : 0;
|
int shift = (m_ir & (1 << 11)) ? 2 : 0;
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
@ -1033,7 +1033,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x4e:
|
case 0x4e:
|
||||||
case 0x4f:
|
case 0x4f:
|
||||||
case 0x46:
|
case 0x46:
|
||||||
case 0x47: // ld.d
|
case 0x47: // ld.d
|
||||||
{
|
{
|
||||||
int shift = (m_ir & (1 << 11)) ? 3 : 0;
|
int shift = (m_ir & (1 << 11)) ? 3 : 0;
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
@ -1054,7 +1054,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x58:
|
case 0x58:
|
||||||
case 0x59:
|
case 0x59:
|
||||||
case 0x50:
|
case 0x50:
|
||||||
case 0x51: // ld.ub
|
case 0x51: // ld.ub
|
||||||
{
|
{
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
int base = OP_BASE();
|
int base = OP_BASE();
|
||||||
@ -1074,7 +1074,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x5a:
|
case 0x5a:
|
||||||
case 0x5b:
|
case 0x5b:
|
||||||
case 0x52:
|
case 0x52:
|
||||||
case 0x53: // ld.uh
|
case 0x53: // ld.uh
|
||||||
{
|
{
|
||||||
int shift = (m_ir & (1 << 11)) ? 1 : 0;
|
int shift = (m_ir & (1 << 11)) ? 1 : 0;
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
@ -1095,7 +1095,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x60:
|
case 0x60:
|
||||||
case 0x61:
|
case 0x61:
|
||||||
case 0x68:
|
case 0x68:
|
||||||
case 0x69: // st.b
|
case 0x69: // st.b
|
||||||
{
|
{
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
|
|
||||||
@ -1112,7 +1112,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x62:
|
case 0x62:
|
||||||
case 0x63:
|
case 0x63:
|
||||||
case 0x6a:
|
case 0x6a:
|
||||||
case 0x6b: // st.h
|
case 0x6b: // st.h
|
||||||
{
|
{
|
||||||
int shift = (m_ir & (1 << 11)) ? 1 : 0;
|
int shift = (m_ir & (1 << 11)) ? 1 : 0;
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
@ -1130,7 +1130,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0x6c:
|
case 0x6c:
|
||||||
case 0x6d:
|
case 0x6d:
|
||||||
case 0x64:
|
case 0x64:
|
||||||
case 0x65: // st
|
case 0x65: // st
|
||||||
{
|
{
|
||||||
int shift = (m_ir & (1 << 11)) ? 2 : 0;
|
int shift = (m_ir & (1 << 11)) ? 2 : 0;
|
||||||
int m = m_ir & (1 << 15);
|
int m = m_ir & (1 << 15);
|
||||||
@ -1177,7 +1177,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xa0:
|
case 0xa0:
|
||||||
case 0xa1: // cmp
|
case 0xa1: // cmp
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
UINT32 src1 = has_imm ? imm32 : m_reg[OP_SRC1()];
|
UINT32 src1 = has_imm ? imm32 : m_reg[OP_SRC1()];
|
||||||
@ -1200,7 +1200,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xb4:
|
case 0xb4:
|
||||||
case 0xb5: // sub
|
case 0xb5: // sub
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
@ -1213,7 +1213,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xb6:
|
case 0xb6:
|
||||||
case 0xb7: // subu
|
case 0xb7: // subu
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
@ -1226,7 +1226,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0xc4:
|
case 0xc4:
|
||||||
case 0xd4:
|
case 0xd4:
|
||||||
case 0xc5:
|
case 0xc5:
|
||||||
case 0xd5: // vmpy
|
case 0xd5: // vmpy
|
||||||
{
|
{
|
||||||
int p1 = m_ir & (1 << 5);
|
int p1 = m_ir & (1 << 5);
|
||||||
int pd = m_ir & (1 << 7);
|
int pd = m_ir & (1 << 7);
|
||||||
@ -1262,7 +1262,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0xc8:
|
case 0xc8:
|
||||||
case 0xd8:
|
case 0xd8:
|
||||||
case 0xc9:
|
case 0xc9:
|
||||||
case 0xd9: // vrnd
|
case 0xd9: // vrnd
|
||||||
{
|
{
|
||||||
int acc = OP_ACC();
|
int acc = OP_ACC();
|
||||||
int p1 = m_ir & (1 << 5);
|
int p1 = m_ir & (1 << 5);
|
||||||
@ -1282,7 +1282,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0:
|
case 0:
|
||||||
m_reg[rd] = f2u((float)source);
|
m_reg[rd] = f2u((float)source);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
m_fpair[rd >> 1] = d2u(source);
|
m_fpair[rd >> 1] = d2u(source);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
@ -1313,7 +1313,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0xcc:
|
case 0xcc:
|
||||||
case 0xdc:
|
case 0xdc:
|
||||||
case 0xcd:
|
case 0xcd:
|
||||||
case 0xdd: // vmac
|
case 0xdd: // vmac
|
||||||
{
|
{
|
||||||
int acc = OP_ACC();
|
int acc = OP_ACC();
|
||||||
int z = m_ir & (1 << 8);
|
int z = m_ir & (1 << 8);
|
||||||
@ -1356,7 +1356,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
case 0xce:
|
case 0xce:
|
||||||
case 0xde:
|
case 0xde:
|
||||||
case 0xcf:
|
case 0xcf:
|
||||||
case 0xdf: // vmsc
|
case 0xdf: // vmsc
|
||||||
{
|
{
|
||||||
int acc = OP_ACC();
|
int acc = OP_ACC();
|
||||||
int z = m_ir & (1 << 8);
|
int z = m_ir & (1 << 8);
|
||||||
@ -1397,25 +1397,25 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xe0:
|
case 0xe0:
|
||||||
case 0xe1: // fadd
|
case 0xe1: // fadd
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
int src1 = OP_SRC1();
|
int src1 = OP_SRC1();
|
||||||
int precision = (m_ir >> 5) & 0x3f;
|
int precision = (m_ir >> 5) & 0x3f;
|
||||||
|
|
||||||
if (rd) // only calculate if destination register is valid
|
if (rd) // only calculate if destination register is valid
|
||||||
{
|
{
|
||||||
switch (precision)
|
switch (precision)
|
||||||
{
|
{
|
||||||
case 0x00: // SP - SP -> SP
|
case 0x00: // SP - SP -> SP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
m_reg[rd] = f2u(s1 + s2);
|
m_reg[rd] = f2u(s1 + s2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x10: // SP - SP -> DP
|
case 0x10: // SP - SP -> DP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
@ -1423,7 +1423,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x14: // SP - DP -> DP
|
case 0x14: // SP - DP -> DP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
double s2 = u2d(m_fpair[rs >> 1]);
|
double s2 = u2d(m_fpair[rs >> 1]);
|
||||||
@ -1431,7 +1431,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x11: // DP - SP -> DP
|
case 0x11: // DP - SP -> DP
|
||||||
{
|
{
|
||||||
double s1 = u2d(m_fpair[src1 >> 1]);
|
double s1 = u2d(m_fpair[src1 >> 1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
@ -1439,7 +1439,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x15: // DP - DP -> DP
|
case 0x15: // DP - DP -> DP
|
||||||
{
|
{
|
||||||
double s1 = u2d(m_fpair[src1 >> 1]);
|
double s1 = u2d(m_fpair[src1 >> 1]);
|
||||||
double s2 = u2d(m_fpair[rs >> 1]);
|
double s2 = u2d(m_fpair[rs >> 1]);
|
||||||
@ -1455,25 +1455,25 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xe2:
|
case 0xe2:
|
||||||
case 0xe3: // fsub
|
case 0xe3: // fsub
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
int src1 = OP_SRC1();
|
int src1 = OP_SRC1();
|
||||||
int precision = (m_ir >> 5) & 0x3f;
|
int precision = (m_ir >> 5) & 0x3f;
|
||||||
|
|
||||||
if (rd) // only calculate if destination register is valid
|
if (rd) // only calculate if destination register is valid
|
||||||
{
|
{
|
||||||
switch (precision)
|
switch (precision)
|
||||||
{
|
{
|
||||||
case 0x00: // SP - SP -> SP
|
case 0x00: // SP - SP -> SP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
m_reg[rd] = f2u(s1 - s2);
|
m_reg[rd] = f2u(s1 - s2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x10: // SP - SP -> DP
|
case 0x10: // SP - SP -> DP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
@ -1481,7 +1481,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x14: // SP - DP -> DP
|
case 0x14: // SP - DP -> DP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
double s2 = u2d(m_fpair[rs >> 1]);
|
double s2 = u2d(m_fpair[rs >> 1]);
|
||||||
@ -1489,7 +1489,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x11: // DP - SP -> DP
|
case 0x11: // DP - SP -> DP
|
||||||
{
|
{
|
||||||
double s1 = u2d(m_fpair[src1 >> 1]);
|
double s1 = u2d(m_fpair[src1 >> 1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
@ -1497,7 +1497,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x15: // DP - DP -> DP
|
case 0x15: // DP - DP -> DP
|
||||||
{
|
{
|
||||||
double s1 = u2d(m_fpair[src1 >> 1]);
|
double s1 = u2d(m_fpair[src1 >> 1]);
|
||||||
double s2 = u2d(m_fpair[rs >> 1]);
|
double s2 = u2d(m_fpair[rs >> 1]);
|
||||||
@ -1513,25 +1513,25 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xe4:
|
case 0xe4:
|
||||||
case 0xe5: // fmpy
|
case 0xe5: // fmpy
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int rs = OP_RS();
|
int rs = OP_RS();
|
||||||
int src1 = OP_SRC1();
|
int src1 = OP_SRC1();
|
||||||
int precision = (m_ir >> 5) & 0x3f;
|
int precision = (m_ir >> 5) & 0x3f;
|
||||||
|
|
||||||
if (rd) // only calculate if destination register is valid
|
if (rd) // only calculate if destination register is valid
|
||||||
{
|
{
|
||||||
switch (precision)
|
switch (precision)
|
||||||
{
|
{
|
||||||
case 0x00: // SP x SP -> SP
|
case 0x00: // SP x SP -> SP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
m_reg[rd] = f2u(s1 * s2);
|
m_reg[rd] = f2u(s1 * s2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x10: // SP x SP -> DP
|
case 0x10: // SP x SP -> DP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
@ -1539,7 +1539,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x14: // SP x DP -> DP
|
case 0x14: // SP x DP -> DP
|
||||||
{
|
{
|
||||||
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
float s1 = u2f(has_imm ? imm32 : m_reg[src1]);
|
||||||
double s2 = u2d(m_fpair[rs >> 1]);
|
double s2 = u2d(m_fpair[rs >> 1]);
|
||||||
@ -1547,7 +1547,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x11: // DP x SP -> DP
|
case 0x11: // DP x SP -> DP
|
||||||
{
|
{
|
||||||
double s1 = u2d(m_fpair[src1 >> 1]);
|
double s1 = u2d(m_fpair[src1 >> 1]);
|
||||||
float s2 = u2f(m_reg[rs]);
|
float s2 = u2f(m_reg[rs]);
|
||||||
@ -1555,7 +1555,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x15: // DP x DP -> DP
|
case 0x15: // DP x DP -> DP
|
||||||
{
|
{
|
||||||
double s1 = u2d(m_fpair[src1 >> 1]);
|
double s1 = u2d(m_fpair[src1 >> 1]);
|
||||||
double s2 = u2d(m_fpair[rs >> 1]);
|
double s2 = u2d(m_fpair[rs >> 1]);
|
||||||
@ -1563,12 +1563,12 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
m_fpair[rd >> 1] = res;
|
m_fpair[rd >> 1] = res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x2a: // I x I -> I
|
case 0x2a: // I x I -> I
|
||||||
{
|
{
|
||||||
m_reg[rd] = (INT32)(m_reg[rs]) * (INT32)(has_imm ? imm32 : m_reg[OP_SRC1()]);
|
m_reg[rd] = (INT32)(m_reg[rs]) * (INT32)(has_imm ? imm32 : m_reg[OP_SRC1()]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x3f: // U x U -> U
|
case 0x3f: // U x U -> U
|
||||||
{
|
{
|
||||||
m_reg[rd] = (UINT32)(m_reg[rs]) * (UINT32)(has_imm ? imm32 : m_reg[OP_SRC1()]);
|
m_reg[rd] = (UINT32)(m_reg[rs]) * (UINT32)(has_imm ? imm32 : m_reg[OP_SRC1()]);
|
||||||
break;
|
break;
|
||||||
@ -1581,7 +1581,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xe6:
|
case 0xe6:
|
||||||
case 0xe7: // fdiv
|
case 0xe7: // fdiv
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int p1 = m_ir & (1 << 5);
|
int p1 = m_ir & (1 << 5);
|
||||||
@ -1606,7 +1606,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xe8:
|
case 0xe8:
|
||||||
case 0xe9: // frnd
|
case 0xe9: // frnd
|
||||||
{
|
{
|
||||||
//int mode = (m_ir >> 7) & 3;
|
//int mode = (m_ir >> 7) & 3;
|
||||||
int p1 = (m_ir >> 5) & 3;
|
int p1 = (m_ir >> 5) & 3;
|
||||||
@ -1654,9 +1654,9 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0xea:
|
case 0xea:
|
||||||
case 0xeb: // fcmp
|
case 0xeb: // fcmp
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int p1 = m_ir & (1 << 5);
|
int p1 = m_ir & (1 << 5);
|
||||||
@ -1689,7 +1689,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 0xee:
|
case 0xee:
|
||||||
case 0xef: // fsqrt
|
case 0xef: // fsqrt
|
||||||
{
|
{
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
int src1 = OP_SRC1();
|
int src1 = OP_SRC1();
|
||||||
@ -1709,7 +1709,7 @@ void tms32082_mp_device::execute_reg_long_imm()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0xf2: // rmo
|
case 0xf2: // rmo
|
||||||
{
|
{
|
||||||
UINT32 source = m_reg[OP_RS()];
|
UINT32 source = m_reg[OP_RS()];
|
||||||
int rd = OP_RD();
|
int rd = OP_RD();
|
||||||
|
@ -22,7 +22,7 @@ const device_type TMS32082_PP = &device_creator<tms32082_pp_device>;
|
|||||||
|
|
||||||
// internal memory map
|
// internal memory map
|
||||||
static ADDRESS_MAP_START(mp_internal_map, AS_PROGRAM, 32, tms32082_mp_device)
|
static ADDRESS_MAP_START(mp_internal_map, AS_PROGRAM, 32, tms32082_mp_device)
|
||||||
AM_RANGE(0x00000000, 0x00000fff) AM_RAM AM_SHARE("pp0_data0")
|
AM_RANGE(0x00000000, 0x00000fff) AM_RAM AM_SHARE("pp0_data0")
|
||||||
AM_RANGE(0x00001000, 0x00001fff) AM_RAM AM_SHARE("pp1_data0")
|
AM_RANGE(0x00001000, 0x00001fff) AM_RAM AM_SHARE("pp1_data0")
|
||||||
AM_RANGE(0x00008000, 0x00008fff) AM_RAM AM_SHARE("pp0_data1")
|
AM_RANGE(0x00008000, 0x00008fff) AM_RAM AM_SHARE("pp0_data1")
|
||||||
AM_RANGE(0x00009000, 0x00009fff) AM_RAM AM_SHARE("pp1_data1")
|
AM_RANGE(0x00009000, 0x00009fff) AM_RAM AM_SHARE("pp1_data1")
|
||||||
@ -141,7 +141,7 @@ void tms32082_mp_device::device_start()
|
|||||||
save_item(NAME(m_fetchpc));
|
save_item(NAME(m_fetchpc));
|
||||||
save_item(NAME(m_reg));
|
save_item(NAME(m_reg));
|
||||||
save_item(NAME(m_acc));
|
save_item(NAME(m_acc));
|
||||||
|
|
||||||
save_item(NAME(m_in0p));
|
save_item(NAME(m_in0p));
|
||||||
save_item(NAME(m_in1p));
|
save_item(NAME(m_in1p));
|
||||||
save_item(NAME(m_outp));
|
save_item(NAME(m_outp));
|
||||||
@ -256,7 +256,7 @@ void tms32082_mp_device::processor_command(UINT32 command)
|
|||||||
printf("Task ");
|
printf("Task ");
|
||||||
if (command & 0x00002000)
|
if (command & 0x00002000)
|
||||||
printf("Msg ");
|
printf("Msg ");
|
||||||
|
|
||||||
printf("to: ");
|
printf("to: ");
|
||||||
|
|
||||||
if (command & 0x00000400)
|
if (command & 0x00000400)
|
||||||
@ -300,28 +300,28 @@ UINT32 tms32082_mp_device::read_creg(int reg)
|
|||||||
{
|
{
|
||||||
switch (reg)
|
switch (reg)
|
||||||
{
|
{
|
||||||
case 0x0: // EPC
|
case 0x0: // EPC
|
||||||
return m_epc;
|
return m_epc;
|
||||||
|
|
||||||
case 0x1: // EIP
|
case 0x1: // EIP
|
||||||
return m_eip;
|
return m_eip;
|
||||||
|
|
||||||
case 0x4: // INTPEN
|
case 0x4: // INTPEN
|
||||||
return m_intpen;
|
return m_intpen;
|
||||||
|
|
||||||
case 0x6: // IE
|
case 0x6: // IE
|
||||||
return m_ie;
|
return m_ie;
|
||||||
|
|
||||||
case 0xa: // PPERROR
|
case 0xa: // PPERROR
|
||||||
return 0xe0000;
|
return 0xe0000;
|
||||||
|
|
||||||
case 0x4000: // IN0P
|
case 0x4000: // IN0P
|
||||||
return m_in0p;
|
return m_in0p;
|
||||||
|
|
||||||
case 0x4001: // IN1P
|
case 0x4001: // IN1P
|
||||||
return m_in1p;
|
return m_in1p;
|
||||||
|
|
||||||
case 0x4002: // OUTP
|
case 0x4002: // OUTP
|
||||||
return m_outp;
|
return m_outp;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -335,15 +335,15 @@ void tms32082_mp_device::write_creg(int reg, UINT32 data)
|
|||||||
{
|
{
|
||||||
switch (reg)
|
switch (reg)
|
||||||
{
|
{
|
||||||
case 0x0: // EPC
|
case 0x0: // EPC
|
||||||
m_epc = data;
|
m_epc = data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1: // EIP
|
case 0x1: // EIP
|
||||||
m_eip = data;
|
m_eip = data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x4: // INTPEN
|
case 0x4: // INTPEN
|
||||||
{
|
{
|
||||||
for (int i=0; i < 32; i++)
|
for (int i=0; i < 32; i++)
|
||||||
{
|
{
|
||||||
@ -353,20 +353,20 @@ void tms32082_mp_device::write_creg(int reg, UINT32 data)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x6: // IE
|
case 0x6: // IE
|
||||||
m_ie = data;
|
m_ie = data;
|
||||||
printf("IE = %08X\n", data);
|
printf("IE = %08X\n", data);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x4000: // IN0P
|
case 0x4000: // IN0P
|
||||||
m_in0p = data;
|
m_in0p = data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x4001: // IN1P
|
case 0x4001: // IN1P
|
||||||
m_in1p = data;
|
m_in1p = data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x4002: // OUTP
|
case 0x4002: // OUTP
|
||||||
m_outp = data;
|
m_outp = data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -378,19 +378,19 @@ void tms32082_mp_device::write_creg(int reg, UINT32 data)
|
|||||||
|
|
||||||
void tms32082_mp_device::check_interrupts()
|
void tms32082_mp_device::check_interrupts()
|
||||||
{
|
{
|
||||||
if (m_ie & 1) // global interrupt mask
|
if (m_ie & 1) // global interrupt mask
|
||||||
{
|
{
|
||||||
for (int i=1; i < 32; i++)
|
for (int i=1; i < 32; i++)
|
||||||
{
|
{
|
||||||
if (m_ie & m_intpen & (1 << i))
|
if (m_ie & m_intpen & (1 << i))
|
||||||
{
|
{
|
||||||
m_epc = (m_fetchpc & ~3);
|
m_epc = (m_fetchpc & ~3);
|
||||||
m_epc |= (m_ie & 1); // save global interrupt mask
|
m_epc |= (m_ie & 1); // save global interrupt mask
|
||||||
// TODO: user mode bit to EPC
|
// TODO: user mode bit to EPC
|
||||||
|
|
||||||
m_eip = m_pc;
|
m_eip = m_pc;
|
||||||
|
|
||||||
m_ie &= ~1; // clear global interrupt mask
|
m_ie &= ~1; // clear global interrupt mask
|
||||||
|
|
||||||
// get new pc from vector table
|
// get new pc from vector table
|
||||||
m_fetchpc = m_pc = m_program->read_dword(0x01010180 + (i * 4));
|
m_fetchpc = m_pc = m_program->read_dword(0x01010180 + (i * 4));
|
||||||
@ -445,7 +445,7 @@ void tms32082_mp_device::execute_run()
|
|||||||
while (m_icount > 0)
|
while (m_icount > 0)
|
||||||
{
|
{
|
||||||
m_pc = m_fetchpc;
|
m_pc = m_fetchpc;
|
||||||
|
|
||||||
check_interrupts();
|
check_interrupts();
|
||||||
|
|
||||||
debugger_instruction_hook(this, m_pc);
|
debugger_instruction_hook(this, m_pc);
|
||||||
@ -466,7 +466,7 @@ void tms32082_mp_device::execute_run()
|
|||||||
|
|
||||||
// internal memory map
|
// internal memory map
|
||||||
static ADDRESS_MAP_START(pp_internal_map, AS_PROGRAM, 32, tms32082_pp_device)
|
static ADDRESS_MAP_START(pp_internal_map, AS_PROGRAM, 32, tms32082_pp_device)
|
||||||
AM_RANGE(0x00000000, 0x00000fff) AM_RAM AM_SHARE("pp0_data0")
|
AM_RANGE(0x00000000, 0x00000fff) AM_RAM AM_SHARE("pp0_data0")
|
||||||
AM_RANGE(0x00001000, 0x00001fff) AM_RAM AM_SHARE("pp1_data0")
|
AM_RANGE(0x00001000, 0x00001fff) AM_RAM AM_SHARE("pp1_data0")
|
||||||
AM_RANGE(0x00008000, 0x00008fff) AM_RAM AM_SHARE("pp0_data1")
|
AM_RANGE(0x00008000, 0x00008fff) AM_RAM AM_SHARE("pp0_data1")
|
||||||
AM_RANGE(0x00009000, 0x00009fff) AM_RAM AM_SHARE("pp1_data1")
|
AM_RANGE(0x00009000, 0x00009fff) AM_RAM AM_SHARE("pp1_data1")
|
||||||
@ -528,4 +528,4 @@ void tms32082_pp_device::execute_run()
|
|||||||
m_icount = 0;
|
m_icount = 0;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -58,10 +58,10 @@ public:
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
INPUT_X1 = 1,
|
INPUT_X1 = 1,
|
||||||
INPUT_X2 = 2,
|
INPUT_X2 = 2,
|
||||||
INPUT_X3 = 3,
|
INPUT_X3 = 3,
|
||||||
INPUT_X4 = 4,
|
INPUT_X4 = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_READ32_MEMBER(mp_param_r);
|
DECLARE_READ32_MEMBER(mp_param_r);
|
||||||
|
@ -1842,4 +1842,3 @@ tms34020_device::tms34020_device(const machine_config &mconfig, device_type type
|
|||||||
}
|
}
|
||||||
|
|
||||||
const device_type TMS34020 = &legacy_device_creator<tms34020_device>;
|
const device_type TMS34020 = &legacy_device_creator<tms34020_device>;
|
||||||
|
|
||||||
|
@ -210,10 +210,10 @@ class tms34010_device : public legacy_cpu_device
|
|||||||
public:
|
public:
|
||||||
tms34010_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock);
|
tms34010_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock);
|
||||||
tms34010_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock, cpu_get_info_func get_info);
|
tms34010_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock, cpu_get_info_func get_info);
|
||||||
|
|
||||||
UINT32 tms340x0_ind16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
UINT32 tms340x0_ind16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
UINT32 tms340x0_rgb32(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
UINT32 tms340x0_rgb32(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const device_type TMS34010;
|
extern const device_type TMS34010;
|
||||||
|
|
||||||
|
@ -4781,7 +4781,7 @@ void TMS99XX_GET_INFO(legacy_cpu_device *device, UINT32 state, cpuinfo *info)
|
|||||||
/* --- the following bits of info are returned as NULL-terminated strings --- */
|
/* --- the following bits of info are returned as NULL-terminated strings --- */
|
||||||
case CPUINFO_STR_NAME: strcpy(info->s, TMS99XX_device_get_name); break;
|
case CPUINFO_STR_NAME: strcpy(info->s, TMS99XX_device_get_name); break;
|
||||||
case CPUINFO_STR_SHORTNAME: strcpy(info->s, TMS99XX_device_get_shortname); break;
|
case CPUINFO_STR_SHORTNAME: strcpy(info->s, TMS99XX_device_get_shortname); break;
|
||||||
|
|
||||||
case CPUINFO_STR_FAMILY: strcpy(info->s, "Texas Instruments 9900L"); break;
|
case CPUINFO_STR_FAMILY: strcpy(info->s, "Texas Instruments 9900L"); break;
|
||||||
case CPUINFO_STR_VERSION: strcpy(info->s, "2.0"); break;
|
case CPUINFO_STR_VERSION: strcpy(info->s, "2.0"); break;
|
||||||
case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
|
case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
|
||||||
|
@ -1495,8 +1495,8 @@ static void execute_wplist(running_machine &machine, int ref, int params, const
|
|||||||
{
|
{
|
||||||
static const char *const types[] = { "unkn ", "read ", "write", "r/w " };
|
static const char *const types[] = { "unkn ", "read ", "write", "r/w " };
|
||||||
|
|
||||||
debug_console_printf(machine, "Device '%s' %s space watchpoints:\n", device->tag(),
|
debug_console_printf(machine, "Device '%s' %s space watchpoints:\n", device->tag(),
|
||||||
device->debug()->watchpoint_first(spacenum)->space().name());
|
device->debug()->watchpoint_first(spacenum)->space().name());
|
||||||
|
|
||||||
/* loop over the watchpoints */
|
/* loop over the watchpoints */
|
||||||
for (device_debug::watchpoint *wp = device->debug()->watchpoint_first(spacenum); wp != NULL; wp = wp->next())
|
for (device_debug::watchpoint *wp = device->debug()->watchpoint_first(spacenum); wp != NULL; wp = wp->next())
|
||||||
|
@ -3279,18 +3279,18 @@ void device_debug::set_state(symbol_table &table, void *ref, UINT64 value)
|
|||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
device_debug::breakpoint::breakpoint(device_debug* debugInterface,
|
device_debug::breakpoint::breakpoint(device_debug* debugInterface,
|
||||||
symbol_table &symbols,
|
symbol_table &symbols,
|
||||||
int index,
|
int index,
|
||||||
offs_t address,
|
offs_t address,
|
||||||
const char *condition,
|
const char *condition,
|
||||||
const char *action)
|
const char *action)
|
||||||
: m_debugInterface(debugInterface),
|
: m_debugInterface(debugInterface),
|
||||||
m_next(NULL),
|
m_next(NULL),
|
||||||
m_index(index),
|
m_index(index),
|
||||||
m_enabled(true),
|
m_enabled(true),
|
||||||
m_address(address),
|
m_address(address),
|
||||||
m_condition(&symbols, (condition != NULL) ? condition : "1"),
|
m_condition(&symbols, (condition != NULL) ? condition : "1"),
|
||||||
m_action((action != NULL) ? action : "")
|
m_action((action != NULL) ? action : "")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3335,25 +3335,25 @@ bool device_debug::breakpoint::hit(offs_t pc)
|
|||||||
// watchpoint - constructor
|
// watchpoint - constructor
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
device_debug::watchpoint::watchpoint(device_debug* debugInterface,
|
device_debug::watchpoint::watchpoint(device_debug* debugInterface,
|
||||||
symbol_table &symbols,
|
symbol_table &symbols,
|
||||||
int index,
|
int index,
|
||||||
address_space &space,
|
address_space &space,
|
||||||
int type,
|
int type,
|
||||||
offs_t address,
|
offs_t address,
|
||||||
offs_t length,
|
offs_t length,
|
||||||
const char *condition,
|
const char *condition,
|
||||||
const char *action)
|
const char *action)
|
||||||
: m_debugInterface(debugInterface),
|
: m_debugInterface(debugInterface),
|
||||||
m_next(NULL),
|
m_next(NULL),
|
||||||
m_space(space),
|
m_space(space),
|
||||||
m_index(index),
|
m_index(index),
|
||||||
m_enabled(true),
|
m_enabled(true),
|
||||||
m_type(type),
|
m_type(type),
|
||||||
m_address(space.address_to_byte(address) & space.bytemask()),
|
m_address(space.address_to_byte(address) & space.bytemask()),
|
||||||
m_length(space.address_to_byte(length)),
|
m_length(space.address_to_byte(length)),
|
||||||
m_condition(&symbols, (condition != NULL) ? condition : "1"),
|
m_condition(&symbols, (condition != NULL) ? condition : "1"),
|
||||||
m_action((action != NULL) ? action : "")
|
m_action((action != NULL) ? action : "")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,11 +80,11 @@ public:
|
|||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
breakpoint(device_debug* debugInterface,
|
breakpoint(device_debug* debugInterface,
|
||||||
symbol_table &symbols,
|
symbol_table &symbols,
|
||||||
int index,
|
int index,
|
||||||
offs_t address,
|
offs_t address,
|
||||||
const char *condition = NULL,
|
const char *condition = NULL,
|
||||||
const char *action = NULL);
|
const char *action = NULL);
|
||||||
|
|
||||||
// getters
|
// getters
|
||||||
const device_debug *debugInterface() const { return m_debugInterface; }
|
const device_debug *debugInterface() const { return m_debugInterface; }
|
||||||
@ -119,14 +119,14 @@ public:
|
|||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
watchpoint(device_debug* debugInterface,
|
watchpoint(device_debug* debugInterface,
|
||||||
symbol_table &symbols,
|
symbol_table &symbols,
|
||||||
int index,
|
int index,
|
||||||
address_space &space,
|
address_space &space,
|
||||||
int type,
|
int type,
|
||||||
offs_t address,
|
offs_t address,
|
||||||
offs_t length,
|
offs_t length,
|
||||||
const char *condition = NULL,
|
const char *condition = NULL,
|
||||||
const char *action = NULL);
|
const char *action = NULL);
|
||||||
|
|
||||||
// getters
|
// getters
|
||||||
const device_debug *debugInterface() const { return m_debugInterface; }
|
const device_debug *debugInterface() const { return m_debugInterface; }
|
||||||
|
@ -496,9 +496,9 @@ void debug_view_watchpoints::view_update()
|
|||||||
pad_astring_to_length(buffer, tableBreaks[2]);
|
pad_astring_to_length(buffer, tableBreaks[2]);
|
||||||
buffer.catprintf("%s", wp->space().name());
|
buffer.catprintf("%s", wp->space().name());
|
||||||
pad_astring_to_length(buffer, tableBreaks[3]);
|
pad_astring_to_length(buffer, tableBreaks[3]);
|
||||||
buffer.catprintf("%s-%s",
|
buffer.catprintf("%s-%s",
|
||||||
core_i64_hex_format(wp->space().byte_to_address(wp->address()), wp->space().addrchars()),
|
core_i64_hex_format(wp->space().byte_to_address(wp->address()), wp->space().addrchars()),
|
||||||
core_i64_hex_format(wp->space().byte_to_address_end(wp->address() + wp->length()) - 1, wp->space().addrchars()));
|
core_i64_hex_format(wp->space().byte_to_address_end(wp->address() + wp->length()) - 1, wp->space().addrchars()));
|
||||||
pad_astring_to_length(buffer, tableBreaks[4]);
|
pad_astring_to_length(buffer, tableBreaks[4]);
|
||||||
buffer.catprintf("%s", types[wp->type() & 3]);
|
buffer.catprintf("%s", types[wp->type() & 3]);
|
||||||
pad_astring_to_length(buffer, tableBreaks[5]);
|
pad_astring_to_length(buffer, tableBreaks[5]);
|
||||||
|
@ -104,7 +104,7 @@ void device_video_interface::interface_validity_check(validity_checker &valid) c
|
|||||||
if (screen == NULL)
|
if (screen == NULL)
|
||||||
mame_printf_error("Screen '%s' not found, explicitly set for device '%s'", m_screen_tag, device().tag());
|
mame_printf_error("Screen '%s' not found, explicitly set for device '%s'", m_screen_tag, device().tag());
|
||||||
}
|
}
|
||||||
|
|
||||||
// otherwise, look for a single match
|
// otherwise, look for a single match
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -138,7 +138,7 @@ void device_video_interface::interface_pre_start()
|
|||||||
if (m_screen == NULL)
|
if (m_screen == NULL)
|
||||||
throw emu_fatalerror("Screen '%s' not found, explicitly set for device '%s'", m_screen_tag, device().tag());
|
throw emu_fatalerror("Screen '%s' not found, explicitly set for device '%s'", m_screen_tag, device().tag());
|
||||||
}
|
}
|
||||||
|
|
||||||
// otherwise, look for a single match
|
// otherwise, look for a single match
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -81,13 +81,13 @@ protected:
|
|||||||
// optional operation overrides
|
// optional operation overrides
|
||||||
virtual void interface_validity_check(validity_checker &valid) const;
|
virtual void interface_validity_check(validity_checker &valid) const;
|
||||||
virtual void interface_pre_start();
|
virtual void interface_pre_start();
|
||||||
|
|
||||||
// configuration state
|
// configuration state
|
||||||
bool m_screen_required; // is a screen required?
|
bool m_screen_required; // is a screen required?
|
||||||
const char * m_screen_tag; // configured tag for the target screen
|
const char * m_screen_tag; // configured tag for the target screen
|
||||||
|
|
||||||
// internal state
|
// internal state
|
||||||
screen_device * m_screen; // pointer to the screen device
|
screen_device * m_screen; // pointer to the screen device
|
||||||
};
|
};
|
||||||
|
|
||||||
// iterator
|
// iterator
|
||||||
|
@ -189,8 +189,8 @@ const options_entry emu_options::s_option_entries[] =
|
|||||||
|
|
||||||
// misc options
|
// misc options
|
||||||
{ NULL, NULL, OPTION_HEADER, "CORE MISC OPTIONS" },
|
{ NULL, NULL, OPTION_HEADER, "CORE MISC OPTIONS" },
|
||||||
{ OPTION_DRC, "1", OPTION_BOOLEAN, "enable DRC cpu core if available" },
|
{ OPTION_DRC, "1", OPTION_BOOLEAN, "enable DRC cpu core if available" },
|
||||||
{ OPTION_DRC_USE_C, "0", OPTION_BOOLEAN, "force DRC use C backend" },
|
{ OPTION_DRC_USE_C, "0", OPTION_BOOLEAN, "force DRC use C backend" },
|
||||||
{ OPTION_BIOS, NULL, OPTION_STRING, "select the system BIOS to use" },
|
{ OPTION_BIOS, NULL, OPTION_STRING, "select the system BIOS to use" },
|
||||||
{ OPTION_CHEAT ";c", "0", OPTION_BOOLEAN, "enable cheat subsystem" },
|
{ OPTION_CHEAT ";c", "0", OPTION_BOOLEAN, "enable cheat subsystem" },
|
||||||
{ OPTION_SKIP_GAMEINFO, "0", OPTION_BOOLEAN, "skip displaying the information screen at startup" },
|
{ OPTION_SKIP_GAMEINFO, "0", OPTION_BOOLEAN, "skip displaying the information screen at startup" },
|
||||||
@ -202,8 +202,8 @@ const options_entry emu_options::s_option_entries[] =
|
|||||||
{ OPTION_AUTOBOOT_DELAY, "2", OPTION_INTEGER, "timer delay in sec to trigger command execution on autoboot" },
|
{ OPTION_AUTOBOOT_DELAY, "2", OPTION_INTEGER, "timer delay in sec to trigger command execution on autoboot" },
|
||||||
{ OPTION_AUTOBOOT_SCRIPT ";script", NULL, OPTION_STRING, "lua script to execute after machine boot" },
|
{ OPTION_AUTOBOOT_SCRIPT ";script", NULL, OPTION_STRING, "lua script to execute after machine boot" },
|
||||||
{ OPTION_HTTP, "0", OPTION_BOOLEAN, "enable local http server" },
|
{ OPTION_HTTP, "0", OPTION_BOOLEAN, "enable local http server" },
|
||||||
{ OPTION_HTTP_PORT, "8080", OPTION_INTEGER, "http server listener port" },
|
{ OPTION_HTTP_PORT, "8080", OPTION_INTEGER, "http server listener port" },
|
||||||
{ OPTION_HTTP_PATH, "web", OPTION_STRING, "path to web files" },
|
{ OPTION_HTTP_PATH, "web", OPTION_STRING, "path to web files" },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -206,9 +206,9 @@ enum
|
|||||||
#define OPTION_AUTOBOOT_DELAY "autoboot_delay"
|
#define OPTION_AUTOBOOT_DELAY "autoboot_delay"
|
||||||
#define OPTION_AUTOBOOT_SCRIPT "autoboot_script"
|
#define OPTION_AUTOBOOT_SCRIPT "autoboot_script"
|
||||||
|
|
||||||
#define OPTION_HTTP "http"
|
#define OPTION_HTTP "http"
|
||||||
#define OPTION_HTTP_PORT "http_port"
|
#define OPTION_HTTP_PORT "http_port"
|
||||||
#define OPTION_HTTP_PATH "http_path"
|
#define OPTION_HTTP_PATH "http_path"
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
@ -369,7 +369,7 @@ public:
|
|||||||
const char *autoboot_command() const { return value(OPTION_AUTOBOOT_COMMAND); }
|
const char *autoboot_command() const { return value(OPTION_AUTOBOOT_COMMAND); }
|
||||||
int autoboot_delay() const { return int_value(OPTION_AUTOBOOT_DELAY); }
|
int autoboot_delay() const { return int_value(OPTION_AUTOBOOT_DELAY); }
|
||||||
const char *autoboot_script() const { return value(OPTION_AUTOBOOT_SCRIPT); }
|
const char *autoboot_script() const { return value(OPTION_AUTOBOOT_SCRIPT); }
|
||||||
|
|
||||||
bool http() const { return bool_value(OPTION_HTTP); }
|
bool http() const { return bool_value(OPTION_HTTP); }
|
||||||
const char *http_port() const { return value(OPTION_HTTP_PORT); }
|
const char *http_port() const { return value(OPTION_HTTP_PORT); }
|
||||||
const char *http_path() const { return value(OPTION_HTTP_PATH); }
|
const char *http_path() const { return value(OPTION_HTTP_PATH); }
|
||||||
|
@ -394,7 +394,7 @@ int running_machine::run(bool firstrun)
|
|||||||
bool settingsloaded = config_load_settings(*this);
|
bool settingsloaded = config_load_settings(*this);
|
||||||
nvram_load(*this);
|
nvram_load(*this);
|
||||||
sound().ui_mute(false);
|
sound().ui_mute(false);
|
||||||
|
|
||||||
// initialize ui lists
|
// initialize ui lists
|
||||||
ui_initialize(*this);
|
ui_initialize(*this);
|
||||||
|
|
||||||
|
@ -37,8 +37,8 @@ const device_type CMOS_40105 = &device_creator<cmos_40105_device>;
|
|||||||
|
|
||||||
cmos_40105_device::cmos_40105_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
cmos_40105_device::cmos_40105_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: device_t(mconfig, CMOS_40105, "40105", tag, owner, clock, "40105", __FILE__),
|
: device_t(mconfig, CMOS_40105, "40105", tag, owner, clock, "40105", __FILE__),
|
||||||
m_write_dir(*this),
|
m_write_dir(*this),
|
||||||
m_write_dor(*this)
|
m_write_dor(*this)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ public:
|
|||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( si_w );
|
DECLARE_WRITE_LINE_MEMBER( si_w );
|
||||||
DECLARE_WRITE_LINE_MEMBER( so_w );
|
DECLARE_WRITE_LINE_MEMBER( so_w );
|
||||||
|
|
||||||
DECLARE_READ_LINE_MEMBER( dir_r );
|
DECLARE_READ_LINE_MEMBER( dir_r );
|
||||||
DECLARE_READ_LINE_MEMBER( dor_r );
|
DECLARE_READ_LINE_MEMBER( dor_r );
|
||||||
|
|
||||||
|
@ -70,12 +70,12 @@ void ttl74148_device::device_config_complete()
|
|||||||
const ttl74148_config *intf = reinterpret_cast<const ttl74148_config *>(static_config());
|
const ttl74148_config *intf = reinterpret_cast<const ttl74148_config *>(static_config());
|
||||||
if (intf != NULL)
|
if (intf != NULL)
|
||||||
*static_cast<ttl74148_config *>(this) = *intf;
|
*static_cast<ttl74148_config *>(this) = *intf;
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
// or initialize to defaults if none provided
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -100,7 +100,6 @@ void ttl74148_device::device_start()
|
|||||||
|
|
||||||
void ttl74148_device::device_reset()
|
void ttl74148_device::device_reset()
|
||||||
{
|
{
|
||||||
|
|
||||||
m_enable_input = 1;
|
m_enable_input = 1;
|
||||||
m_input_lines[0] = 1;
|
m_input_lines[0] = 1;
|
||||||
m_input_lines[1] = 1;
|
m_input_lines[1] = 1;
|
||||||
|
@ -52,13 +52,13 @@ ttl74153_device::ttl74153_device(const machine_config &mconfig, const char *tag,
|
|||||||
m_input_lines[1][1] = 0;
|
m_input_lines[1][1] = 0;
|
||||||
m_input_lines[1][2] = 0;
|
m_input_lines[1][2] = 0;
|
||||||
m_input_lines[1][3] = 0;
|
m_input_lines[1][3] = 0;
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
m_enable[i] = 0;
|
m_enable[i] = 0;
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
m_output[i] = 0;
|
m_output[i] = 0;
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
m_last_output[i] = 0;
|
m_last_output[i] = 0;
|
||||||
}
|
}
|
||||||
@ -75,7 +75,7 @@ void ttl74153_device::device_config_complete()
|
|||||||
const ttl74153_config *intf = reinterpret_cast<const ttl74153_config *>(static_config());
|
const ttl74153_config *intf = reinterpret_cast<const ttl74153_config *>(static_config());
|
||||||
if (intf != NULL)
|
if (intf != NULL)
|
||||||
*static_cast<ttl74153_config *>(this) = *intf;
|
*static_cast<ttl74153_config *>(this) = *intf;
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
// or initialize to defaults if none provided
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -59,13 +59,13 @@ public:
|
|||||||
void input_line_w(int section, int input_line, int data);
|
void input_line_w(int section, int input_line, int data);
|
||||||
void enable_w(int section, int data);
|
void enable_w(int section, int data);
|
||||||
int output_r(int section);
|
int output_r(int section);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
virtual void device_config_complete();
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// internal state
|
// internal state
|
||||||
|
|
||||||
|
@ -19,8 +19,7 @@
|
|||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
#define MCFG_TTL74181_ADD(_tag) \
|
#define MCFG_TTL74181_ADD(_tag) \
|
||||||
MCFG_DEVICE_ADD(_tag, TTL74181, 0) \
|
MCFG_DEVICE_ADD(_tag, TTL74181, 0)
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
AICA-RTC sub-device
|
AICA-RTC sub-device
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- move this inside AICA sound core once that'll get modernized
|
- move this inside AICA sound core once that'll get modernized
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ Template for skeleton device
|
|||||||
// ======================> aicartc_device
|
// ======================> aicartc_device
|
||||||
|
|
||||||
class aicartc_device : public device_t,
|
class aicartc_device : public device_t,
|
||||||
public device_rtc_interface
|
public device_rtc_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
|
@ -239,7 +239,7 @@ bool ata_hle_device::set_dma_mode(int word)
|
|||||||
m_identify_buffer[word] |= 0x100 << (m_sector_count & 7);
|
m_identify_buffer[word] |= 0x100 << (m_sector_count & 7);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ READ16_MEMBER( ata_interface_device::read_cs0 )
|
|||||||
if (m_slot[i]->dev() != NULL)
|
if (m_slot[i]->dev() != NULL)
|
||||||
result &= m_slot[i]->dev()->read_cs0(space, offset, mem_mask);
|
result &= m_slot[i]->dev()->read_cs0(space, offset, mem_mask);
|
||||||
|
|
||||||
// { static int last_status = -1; if (offset == 7 ) { if( result == last_status ) return last_status; last_status = result; } else last_status = -1; }
|
// { static int last_status = -1; if (offset == 7 ) { if( result == last_status ) return last_status; last_status = result; } else last_status = -1; }
|
||||||
|
|
||||||
// printf( "read cs0 %04x %04x %04x\n", offset, result, mem_mask );
|
// printf( "read cs0 %04x %04x %04x\n", offset, result, mem_mask );
|
||||||
|
|
||||||
|
@ -87,10 +87,10 @@ eeprom_base_device::eeprom_base_device(const machine_config &mconfig, device_typ
|
|||||||
m_completion_time(attotime::zero)
|
m_completion_time(attotime::zero)
|
||||||
{
|
{
|
||||||
// a 2ms write time is too long for rfjetsa
|
// a 2ms write time is too long for rfjetsa
|
||||||
m_operation_time[WRITE_TIME] = attotime::from_usec(1750);
|
m_operation_time[WRITE_TIME] = attotime::from_usec(1750);
|
||||||
m_operation_time[WRITE_ALL_TIME] = attotime::from_usec(8000);
|
m_operation_time[WRITE_ALL_TIME] = attotime::from_usec(8000);
|
||||||
m_operation_time[ERASE_TIME] = attotime::from_usec(1000);
|
m_operation_time[ERASE_TIME] = attotime::from_usec(1000);
|
||||||
m_operation_time[ERASE_ALL_TIME] = attotime::from_usec(8000);
|
m_operation_time[ERASE_ALL_TIME] = attotime::from_usec(8000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -195,8 +195,8 @@ void eeprom_base_device::write(offs_t address, UINT32 data)
|
|||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// write_all - write data at all addresses
|
// write_all - write data at all addresses
|
||||||
// (assumes an erase has previously been
|
// (assumes an erase has previously been
|
||||||
// performed)
|
// performed)
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_base_device::write_all(UINT32 data)
|
void eeprom_base_device::write_all(UINT32 data)
|
||||||
@ -308,7 +308,7 @@ void eeprom_base_device::nvram_default()
|
|||||||
if (m_default_data.u8 != NULL)
|
if (m_default_data.u8 != NULL)
|
||||||
{
|
{
|
||||||
mame_printf_verbose("Warning: Driver-specific EEPROM defaults are going away soon.\n");
|
mame_printf_verbose("Warning: Driver-specific EEPROM defaults are going away soon.\n");
|
||||||
for (offs_t offs = 0; offs < m_default_data_size; offs++)
|
for (offs_t offs = 0; offs < m_default_data_size; offs++)
|
||||||
{
|
{
|
||||||
if (m_data_bits == 8)
|
if (m_data_bits == 8)
|
||||||
m_addrspace[0]->write_byte(offs, m_default_data.u8[offs]);
|
m_addrspace[0]->write_byte(offs, m_default_data.u8[offs]);
|
||||||
@ -385,8 +385,8 @@ UINT32 eeprom_base_device::internal_read(offs_t address)
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// internal_write - write data at the given
|
// internal_write - write data at the given
|
||||||
// address
|
// address
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_base_device::internal_write(offs_t address, UINT32 data)
|
void eeprom_base_device::internal_write(offs_t address, UINT32 data)
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
|
|
||||||
// ======================> eeprom_base_device
|
// ======================> eeprom_base_device
|
||||||
|
|
||||||
class eeprom_base_device : public device_t,
|
class eeprom_base_device : public device_t,
|
||||||
public device_memory_interface,
|
public device_memory_interface,
|
||||||
public device_nvram_interface
|
public device_nvram_interface
|
||||||
{
|
{
|
||||||
@ -84,10 +84,10 @@ public:
|
|||||||
// timing constants
|
// timing constants
|
||||||
enum timing_type
|
enum timing_type
|
||||||
{
|
{
|
||||||
WRITE_TIME, // default = 2ms
|
WRITE_TIME, // default = 2ms
|
||||||
WRITE_ALL_TIME, // default = 8ms
|
WRITE_ALL_TIME, // default = 8ms
|
||||||
ERASE_TIME, // default = 1ms
|
ERASE_TIME, // default = 1ms
|
||||||
ERASE_ALL_TIME, // default = 8ms
|
ERASE_ALL_TIME, // default = 8ms
|
||||||
TIMING_COUNT
|
TIMING_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -104,10 +104,10 @@ public:
|
|||||||
void write_all(UINT32 data);
|
void write_all(UINT32 data);
|
||||||
void erase(offs_t address);
|
void erase(offs_t address);
|
||||||
void erase_all();
|
void erase_all();
|
||||||
|
|
||||||
// status
|
// status
|
||||||
bool ready() const { return machine().time() >= m_completion_time; }
|
bool ready() const { return machine().time() >= m_completion_time; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_validity_check(validity_checker &valid) const;
|
virtual void device_validity_check(validity_checker &valid) const;
|
||||||
@ -127,18 +127,18 @@ protected:
|
|||||||
void internal_write(offs_t address, UINT32 data);
|
void internal_write(offs_t address, UINT32 data);
|
||||||
|
|
||||||
// configuration state
|
// configuration state
|
||||||
UINT32 m_cells;
|
UINT32 m_cells;
|
||||||
UINT8 m_address_bits;
|
UINT8 m_address_bits;
|
||||||
UINT8 m_data_bits;
|
UINT8 m_data_bits;
|
||||||
address_space_config m_space_config;
|
address_space_config m_space_config;
|
||||||
generic_ptr m_default_data;
|
generic_ptr m_default_data;
|
||||||
UINT32 m_default_data_size;
|
UINT32 m_default_data_size;
|
||||||
UINT32 m_default_value;
|
UINT32 m_default_value;
|
||||||
bool m_default_value_set;
|
bool m_default_value_set;
|
||||||
attotime m_operation_time[TIMING_COUNT];
|
attotime m_operation_time[TIMING_COUNT];
|
||||||
|
|
||||||
// live state
|
// live state
|
||||||
attotime m_completion_time;
|
attotime m_completion_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,33 +37,33 @@
|
|||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
|
||||||
Parallel EEPROMs are generally simpler than serial EEPROMs, though
|
Parallel EEPROMs are generally simpler than serial EEPROMs, though
|
||||||
they require more pins to provide the full set of address and data
|
they require more pins to provide the full set of address and data
|
||||||
lines necessary. They also require more pins the larger the EEPROM
|
lines necessary. They also require more pins the larger the EEPROM
|
||||||
is, whereas serial EEPROMs all share the same pinout regardless of
|
is, whereas serial EEPROMs all share the same pinout regardless of
|
||||||
size.
|
size.
|
||||||
|
|
||||||
At a basic level, there are 5 sets of signals involved:
|
|
||||||
|
|
||||||
* /CE = chip enable
|
|
||||||
* /OE = output enable
|
|
||||||
* /WE = write enable
|
|
||||||
* D0-Dn = data lines
|
|
||||||
* A0-An = address lines
|
|
||||||
|
|
||||||
To access the chip, the various enable states must be asserted or
|
At a basic level, there are 5 sets of signals involved:
|
||||||
cleared. Note that these are generally active-low, so asserted means
|
|
||||||
pulled to GND, and cleared means pulled to Vcc:
|
* /CE = chip enable
|
||||||
|
* /OE = output enable
|
||||||
/CE /OE /WE Action
|
* /WE = write enable
|
||||||
ASSERT ASSERT CLEAR Read (D0-Dn contain output data)
|
* D0-Dn = data lines
|
||||||
ASSERT CLEAR ASSERT Write/Erase (D0-Dn are input data)
|
* A0-An = address lines
|
||||||
|
|
||||||
Erase is performed by doing a write with D0-Dn all set to 1.
|
To access the chip, the various enable states must be asserted or
|
||||||
|
cleared. Note that these are generally active-low, so asserted means
|
||||||
In general, it is slow to write or erase (9ms is quoted in the 2816A
|
pulled to GND, and cleared means pulled to Vcc:
|
||||||
datasheet, for example), and the /WE must be held low for the entire
|
|
||||||
write/erase duration in order to guarantee the data is written.
|
/CE /OE /WE Action
|
||||||
|
ASSERT ASSERT CLEAR Read (D0-Dn contain output data)
|
||||||
|
ASSERT CLEAR ASSERT Write/Erase (D0-Dn are input data)
|
||||||
|
|
||||||
|
Erase is performed by doing a write with D0-Dn all set to 1.
|
||||||
|
|
||||||
|
In general, it is slow to write or erase (9ms is quoted in the 2816A
|
||||||
|
datasheet, for example), and the /WE must be held low for the entire
|
||||||
|
write/erase duration in order to guarantee the data is written.
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -150,8 +150,7 @@ eeprom_parallel_##_lowercase##_device::eeprom_parallel_##_lowercase##_device(con
|
|||||||
{ \
|
{ \
|
||||||
static_set_size(*this, _cells, _bits); \
|
static_set_size(*this, _cells, _bits); \
|
||||||
}; \
|
}; \
|
||||||
const device_type EEPROM_PARALLEL_##_uppercase = &device_creator<eeprom_parallel_##_lowercase##_device>; \
|
const device_type EEPROM_PARALLEL_##_uppercase = &device_creator<eeprom_parallel_##_lowercase##_device>;
|
||||||
|
|
||||||
// standard 28XX class of 8-bit EEPROMs
|
// standard 28XX class of 8-bit EEPROMs
|
||||||
DEFINE_PARALLEL_EEPROM_DEVICE(28xx, 2804, 2804, 8, 512)
|
DEFINE_PARALLEL_EEPROM_DEVICE(28xx, 2804, 2804, 8, 512)
|
||||||
DEFINE_PARALLEL_EEPROM_DEVICE(28xx, 2816, 2816, 8, 2048)
|
DEFINE_PARALLEL_EEPROM_DEVICE(28xx, 2816, 2816, 8, 2048)
|
||||||
|
@ -120,8 +120,7 @@ class eeprom_parallel_##_lowercase##_device : public eeprom_parallel_##_baseclas
|
|||||||
public: \
|
public: \
|
||||||
eeprom_parallel_##_lowercase##_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); \
|
eeprom_parallel_##_lowercase##_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); \
|
||||||
}; \
|
}; \
|
||||||
extern const device_type EEPROM_PARALLEL_##_uppercase; \
|
extern const device_type EEPROM_PARALLEL_##_uppercase;
|
||||||
|
|
||||||
// standard 28XX class of 8-bit EEPROMs
|
// standard 28XX class of 8-bit EEPROMs
|
||||||
DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 2804, 2804)
|
DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 2804, 2804)
|
||||||
DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 2816, 2816)
|
DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 2816, 2816)
|
||||||
|
@ -37,95 +37,95 @@
|
|||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
|
||||||
Serial EEPROMs generally work the same across manufacturers and models,
|
Serial EEPROMs generally work the same across manufacturers and models,
|
||||||
varying largely by the size of the EEPROM and the packaging details.
|
varying largely by the size of the EEPROM and the packaging details.
|
||||||
|
|
||||||
At a basic level, there are 5 signals involved:
|
|
||||||
|
|
||||||
* CS = chip select
|
|
||||||
* CLK = serial data clock
|
|
||||||
* DI = serial data in
|
|
||||||
* DO = serial data out
|
|
||||||
* RDY/BUSY = ready (1) or busy (0) status
|
|
||||||
|
|
||||||
Data is read or written via serial commands. A command is begun on a
|
|
||||||
low-to-high transition of the CS line, following by clocking a start
|
|
||||||
bit (1) on the DI line. After the start bit, subsequent clocks
|
|
||||||
assemble one of the following commands:
|
|
||||||
|
|
||||||
Start Opcode Address Data
|
|
||||||
1 01 aaaaaaaaa ddddddd WRITE data
|
|
||||||
1 10 aaaaaaaaa READ data
|
|
||||||
1 11 aaaaaaaaa ERASE data
|
|
||||||
1 00 00xxxxxxx WREN = WRite ENable
|
|
||||||
1 00 01xxxxxxx ddddddd WRAL = WRite ALl cells
|
|
||||||
1 00 10xxxxxxx ERAL = ERase ALl cells
|
|
||||||
1 00 11xxxxxxx WRDS = WRite DiSable
|
|
||||||
|
|
||||||
The number of address bits (a) clocked varies based on the size of the
|
At a basic level, there are 5 signals involved:
|
||||||
chip, though it does not always map 1:1 with the size of the chip.
|
|
||||||
For example, the 93C06 has 16 cells, which only needs 4 address bits;
|
|
||||||
but commands to the 93C06 require 6 address bits (the top two must
|
|
||||||
be 0).
|
|
||||||
|
|
||||||
The number of data bits (d) clocked varies based on the chip and at
|
|
||||||
times on the state of a pin on the chip which selects between multiple
|
|
||||||
sizes (e.g., 8-bit versus 16-bit).
|
|
||||||
|
|
||||||
****************************************************************************
|
|
||||||
|
|
||||||
Most EEPROMs are based on the 93Cxx design (and have similar part
|
* CS = chip select
|
||||||
designations):
|
* CLK = serial data clock
|
||||||
|
* DI = serial data in
|
||||||
+--v--+
|
* DO = serial data out
|
||||||
CS |1 8| Vcc
|
* RDY/BUSY = ready (1) or busy (0) status
|
||||||
CLK |2 7| NC
|
|
||||||
DI |3 6| NC
|
|
||||||
DO |4 5| GND
|
|
||||||
+-----+
|
|
||||||
|
|
||||||
Note the lack of a READY/BUSY pin. On the 93Cxx series, the DO pin
|
|
||||||
serves double-duty, returning READY/BUSY during a write/erase cycle,
|
|
||||||
and outputting data during a read cycle.
|
|
||||||
|
|
||||||
Some manufacturers have released "enhanced" versions with additional
|
|
||||||
features:
|
|
||||||
|
|
||||||
* Several manufacturers (ST) map pin 6 to "ORG", specifying the
|
|
||||||
logical organization of the data. Connecting ORG to ground
|
|
||||||
makes the EEPROM work as an 8-bit device, while connecting it
|
|
||||||
to Vcc makes it work as a 16-bit device with one less
|
|
||||||
address bit.
|
|
||||||
|
|
||||||
* Other manufacturers (ST) have enhanced the read operations to
|
|
||||||
allow serially streaming more than one cell. Essentially, after
|
|
||||||
reading the first cell, keep CS high and keep clocking, and
|
|
||||||
data from following cells will be read as well.
|
|
||||||
|
|
||||||
The ER5911 is only slightly different:
|
Data is read or written via serial commands. A command is begun on a
|
||||||
|
low-to-high transition of the CS line, following by clocking a start
|
||||||
+--v--+
|
bit (1) on the DI line. After the start bit, subsequent clocks
|
||||||
CS |1 8| Vcc
|
assemble one of the following commands:
|
||||||
CLK |2 7| RDY/BUSY
|
|
||||||
DI |3 6| ORG
|
|
||||||
DO |4 5| GND
|
|
||||||
+-----+
|
|
||||||
|
|
||||||
Here we have an explicit RDY/BUSY signal, and the ORG flag as described
|
|
||||||
above.
|
|
||||||
|
|
||||||
From a command perspective, the ER5911 is also slightly different:
|
Start Opcode Address Data
|
||||||
|
1 01 aaaaaaaaa ddddddd WRITE data
|
||||||
93Cxx has ERASE command; this maps to WRITE on ER5911
|
1 10 aaaaaaaaa READ data
|
||||||
93Cxx has WRITEALL command; no equivalent on ER5911
|
1 11 aaaaaaaaa ERASE data
|
||||||
|
1 00 00xxxxxxx WREN = WRite ENable
|
||||||
|
1 00 01xxxxxxx ddddddd WRAL = WRite ALl cells
|
||||||
|
1 00 10xxxxxxx ERAL = ERase ALl cells
|
||||||
|
1 00 11xxxxxxx WRDS = WRite DiSable
|
||||||
|
|
||||||
|
The number of address bits (a) clocked varies based on the size of the
|
||||||
|
chip, though it does not always map 1:1 with the size of the chip.
|
||||||
|
For example, the 93C06 has 16 cells, which only needs 4 address bits;
|
||||||
|
but commands to the 93C06 require 6 address bits (the top two must
|
||||||
|
be 0).
|
||||||
|
|
||||||
|
The number of data bits (d) clocked varies based on the chip and at
|
||||||
|
times on the state of a pin on the chip which selects between multiple
|
||||||
|
sizes (e.g., 8-bit versus 16-bit).
|
||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
|
||||||
Issues with:
|
Most EEPROMs are based on the 93Cxx design (and have similar part
|
||||||
|
designations):
|
||||||
kickgoal.c - code seems wrong, clock logic writes 0-0-0 instead of 0-1-0 as expected
|
|
||||||
overdriv.c - drops CS, raises CS, keeps DI=1, triggering extraneous start bit
|
+--v--+
|
||||||
|
CS |1 8| Vcc
|
||||||
|
CLK |2 7| NC
|
||||||
|
DI |3 6| NC
|
||||||
|
DO |4 5| GND
|
||||||
|
+-----+
|
||||||
|
|
||||||
|
Note the lack of a READY/BUSY pin. On the 93Cxx series, the DO pin
|
||||||
|
serves double-duty, returning READY/BUSY during a write/erase cycle,
|
||||||
|
and outputting data during a read cycle.
|
||||||
|
|
||||||
|
Some manufacturers have released "enhanced" versions with additional
|
||||||
|
features:
|
||||||
|
|
||||||
|
* Several manufacturers (ST) map pin 6 to "ORG", specifying the
|
||||||
|
logical organization of the data. Connecting ORG to ground
|
||||||
|
makes the EEPROM work as an 8-bit device, while connecting it
|
||||||
|
to Vcc makes it work as a 16-bit device with one less
|
||||||
|
address bit.
|
||||||
|
|
||||||
|
* Other manufacturers (ST) have enhanced the read operations to
|
||||||
|
allow serially streaming more than one cell. Essentially, after
|
||||||
|
reading the first cell, keep CS high and keep clocking, and
|
||||||
|
data from following cells will be read as well.
|
||||||
|
|
||||||
|
The ER5911 is only slightly different:
|
||||||
|
|
||||||
|
+--v--+
|
||||||
|
CS |1 8| Vcc
|
||||||
|
CLK |2 7| RDY/BUSY
|
||||||
|
DI |3 6| ORG
|
||||||
|
DO |4 5| GND
|
||||||
|
+-----+
|
||||||
|
|
||||||
|
Here we have an explicit RDY/BUSY signal, and the ORG flag as described
|
||||||
|
above.
|
||||||
|
|
||||||
|
From a command perspective, the ER5911 is also slightly different:
|
||||||
|
|
||||||
|
93Cxx has ERASE command; this maps to WRITE on ER5911
|
||||||
|
93Cxx has WRITEALL command; no equivalent on ER5911
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
Issues with:
|
||||||
|
|
||||||
|
kickgoal.c - code seems wrong, clock logic writes 0-0-0 instead of 0-1-0 as expected
|
||||||
|
overdriv.c - drops CS, raises CS, keeps DI=1, triggering extraneous start bit
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
@ -138,11 +138,11 @@
|
|||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
// logging levels:
|
// logging levels:
|
||||||
// 0 = errors and warnings only
|
// 0 = errors and warnings only
|
||||||
// 1 = commands
|
// 1 = commands
|
||||||
// 2 = state machine
|
// 2 = state machine
|
||||||
// 3 = DI/DO/READY reads & writes
|
// 3 = DI/DO/READY reads & writes
|
||||||
// 4 = all reads & writes
|
// 4 = all reads & writes
|
||||||
|
|
||||||
#define VERBOSE_PRINTF 0
|
#define VERBOSE_PRINTF 0
|
||||||
#define VERBOSE_LOGERROR 0
|
#define VERBOSE_LOGERROR 0
|
||||||
@ -195,7 +195,7 @@ eeprom_serial_base_device::eeprom_serial_base_device(const machine_config &mconf
|
|||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// static_set_address_bits - configuration helper
|
// static_set_address_bits - configuration helper
|
||||||
// to set the number of address bits in the
|
// to set the number of address bits in the
|
||||||
// serial commands
|
// serial commands
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_serial_base_device::static_set_address_bits(device_t &device, int addrbits)
|
void eeprom_serial_base_device::static_set_address_bits(device_t &device, int addrbits)
|
||||||
@ -227,7 +227,7 @@ void eeprom_serial_base_device::device_start()
|
|||||||
|
|
||||||
// start the base class
|
// start the base class
|
||||||
eeprom_base_device::device_start();
|
eeprom_base_device::device_start();
|
||||||
|
|
||||||
// save the current state
|
// save the current state
|
||||||
save_item(NAME(m_state));
|
save_item(NAME(m_state));
|
||||||
save_item(NAME(m_cs_state));
|
save_item(NAME(m_cs_state));
|
||||||
@ -269,8 +269,8 @@ void eeprom_serial_base_device::device_reset()
|
|||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// base_cs_write - set the state of the chip
|
// base_cs_write - set the state of the chip
|
||||||
// select (CS) line
|
// select (CS) line
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_serial_base_device::base_cs_write(int state)
|
void eeprom_serial_base_device::base_cs_write(int state)
|
||||||
@ -280,10 +280,10 @@ void eeprom_serial_base_device::base_cs_write(int state)
|
|||||||
if (state == m_cs_state)
|
if (state == m_cs_state)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// set the new state
|
// set the new state
|
||||||
LOG4((" cs_write(%d)\n", state));
|
LOG4((" cs_write(%d)\n", state));
|
||||||
m_cs_state = state;
|
m_cs_state = state;
|
||||||
|
|
||||||
// remember the rising edge time so we don't process CLK signals at the same time
|
// remember the rising edge time so we don't process CLK signals at the same time
|
||||||
if (state == ASSERT_LINE)
|
if (state == ASSERT_LINE)
|
||||||
m_last_cs_rising_edge_time = machine().time();
|
m_last_cs_rising_edge_time = machine().time();
|
||||||
@ -292,7 +292,7 @@ void eeprom_serial_base_device::base_cs_write(int state)
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// base_clk_write - set the state of the clock
|
// base_clk_write - set the state of the clock
|
||||||
// (CLK) line
|
// (CLK) line
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
@ -303,7 +303,7 @@ void eeprom_serial_base_device::base_clk_write(int state)
|
|||||||
if (state == m_clk_state)
|
if (state == m_clk_state)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// set the new state
|
// set the new state
|
||||||
LOG4((" clk_write(%d)\n", state));
|
LOG4((" clk_write(%d)\n", state));
|
||||||
m_clk_state = state;
|
m_clk_state = state;
|
||||||
handle_event((m_clk_state == ASSERT_LINE) ? EVENT_CLK_RISING_EDGE : EVENT_CLK_FALLING_EDGE);
|
handle_event((m_clk_state == ASSERT_LINE) ? EVENT_CLK_RISING_EDGE : EVENT_CLK_FALLING_EDGE);
|
||||||
@ -311,8 +311,8 @@ void eeprom_serial_base_device::base_clk_write(int state)
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// base_di_write - set the state of the data input
|
// base_di_write - set the state of the data input
|
||||||
// (DI) line
|
// (DI) line
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_serial_base_device::base_di_write(int state)
|
void eeprom_serial_base_device::base_di_write(int state)
|
||||||
@ -325,7 +325,7 @@ void eeprom_serial_base_device::base_di_write(int state)
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// base_do_read - read the state of the data
|
// base_do_read - read the state of the data
|
||||||
// output (DO) line
|
// output (DO) line
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
@ -341,7 +341,7 @@ int eeprom_serial_base_device::base_do_read()
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// base_ready_read - read the state of the
|
// base_ready_read - read the state of the
|
||||||
// READY/BUSY line
|
// READY/BUSY line
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
@ -390,7 +390,7 @@ void eeprom_serial_base_device::set_state(eeprom_state newstate)
|
|||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// handle_event - handle an event via the state
|
// handle_event - handle an event via the state
|
||||||
// machine
|
// machine
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_serial_base_device::handle_event(eeprom_event event)
|
void eeprom_serial_base_device::handle_event(eeprom_event event)
|
||||||
@ -421,7 +421,7 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
|
|||||||
if (event == EVENT_CS_RISING_EDGE)
|
if (event == EVENT_CS_RISING_EDGE)
|
||||||
set_state(STATE_WAIT_FOR_START_BIT);
|
set_state(STATE_WAIT_FOR_START_BIT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// CS is asserted; wait for rising clock with a 1 start bit; falling CS will reset us
|
// CS is asserted; wait for rising clock with a 1 start bit; falling CS will reset us
|
||||||
// note that because each bit is written independently, it is possible for us to receive
|
// note that because each bit is written independently, it is possible for us to receive
|
||||||
// a false rising CLK edge at the exact same time as a rising CS edge; it appears we
|
// a false rising CLK edge at the exact same time as a rising CS edge; it appears we
|
||||||
@ -435,7 +435,7 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
|
|||||||
else if (event == EVENT_CS_FALLING_EDGE)
|
else if (event == EVENT_CS_FALLING_EDGE)
|
||||||
set_state(STATE_IN_RESET);
|
set_state(STATE_IN_RESET);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// CS is asserted; wait for a command to come through; falling CS will reset us
|
// CS is asserted; wait for a command to come through; falling CS will reset us
|
||||||
case STATE_WAIT_FOR_COMMAND:
|
case STATE_WAIT_FOR_COMMAND:
|
||||||
if (event == EVENT_CLK_RISING_EDGE)
|
if (event == EVENT_CLK_RISING_EDGE)
|
||||||
@ -448,13 +448,13 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
|
|||||||
else if (event == EVENT_CS_FALLING_EDGE)
|
else if (event == EVENT_CS_FALLING_EDGE)
|
||||||
set_state(STATE_IN_RESET);
|
set_state(STATE_IN_RESET);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// CS is asserted; reading data, clock the shift register; falling CS will reset us
|
// CS is asserted; reading data, clock the shift register; falling CS will reset us
|
||||||
case STATE_READING_DATA:
|
case STATE_READING_DATA:
|
||||||
if (event == EVENT_CLK_RISING_EDGE)
|
if (event == EVENT_CLK_RISING_EDGE)
|
||||||
{
|
{
|
||||||
int bit_index = m_bits_accum++;
|
int bit_index = m_bits_accum++;
|
||||||
|
|
||||||
// wrapping the address on multi-read is required by pacslot(cave.c)
|
// wrapping the address on multi-read is required by pacslot(cave.c)
|
||||||
if (bit_index % m_data_bits == 0 && (bit_index == 0 || m_streaming_enabled))
|
if (bit_index % m_data_bits == 0 && (bit_index == 0 || m_streaming_enabled))
|
||||||
m_shift_register = read((m_address + m_bits_accum / m_data_bits) & ((1 << m_address_bits) - 1)) << (32 - m_data_bits);
|
m_shift_register = read((m_address + m_bits_accum / m_data_bits) & ((1 << m_address_bits) - 1)) << (32 - m_data_bits);
|
||||||
@ -474,7 +474,7 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
|
|||||||
LOG0(("EEPROM: CS deasserted in READING_DATA after %d bits\n", m_bits_accum));
|
LOG0(("EEPROM: CS deasserted in READING_DATA after %d bits\n", m_bits_accum));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// CS is asserted; waiting for data; clock data through until we accumulate enough; falling CS will reset us
|
// CS is asserted; waiting for data; clock data through until we accumulate enough; falling CS will reset us
|
||||||
case STATE_WAIT_FOR_DATA:
|
case STATE_WAIT_FOR_DATA:
|
||||||
if (event == EVENT_CLK_RISING_EDGE)
|
if (event == EVENT_CLK_RISING_EDGE)
|
||||||
@ -489,7 +489,7 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
|
|||||||
LOG0(("EEPROM: CS deasserted in STATE_WAIT_FOR_DATA after %d bits\n", m_bits_accum));
|
LOG0(("EEPROM: CS deasserted in STATE_WAIT_FOR_DATA after %d bits\n", m_bits_accum));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// CS is asserted; waiting for completion; watch for CS falling
|
// CS is asserted; waiting for completion; watch for CS falling
|
||||||
case STATE_WAIT_FOR_COMPLETION:
|
case STATE_WAIT_FOR_COMPLETION:
|
||||||
if (event == EVENT_CS_FALLING_EDGE)
|
if (event == EVENT_CS_FALLING_EDGE)
|
||||||
@ -501,7 +501,7 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
|
|||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// execute_command - execute a command once we
|
// execute_command - execute a command once we
|
||||||
// have enough bits for one
|
// have enough bits for one
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_serial_base_device::execute_command()
|
void eeprom_serial_base_device::execute_command()
|
||||||
@ -509,7 +509,7 @@ void eeprom_serial_base_device::execute_command()
|
|||||||
// parse into a generic command and reset the accumulator count
|
// parse into a generic command and reset the accumulator count
|
||||||
parse_command_and_address();
|
parse_command_and_address();
|
||||||
m_bits_accum = 0;
|
m_bits_accum = 0;
|
||||||
|
|
||||||
#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0)
|
#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0)
|
||||||
// for debugging purposes
|
// for debugging purposes
|
||||||
static const struct { eeprom_command command; const char *string; } s_command_names[] =
|
static const struct { eeprom_command command; const char *string; } s_command_names[] =
|
||||||
@ -540,14 +540,14 @@ void eeprom_serial_base_device::execute_command()
|
|||||||
m_shift_register = 0;
|
m_shift_register = 0;
|
||||||
set_state(STATE_READING_DATA);
|
set_state(STATE_READING_DATA);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// reset the shift register and wait for enough data to be clocked through
|
// reset the shift register and wait for enough data to be clocked through
|
||||||
case COMMAND_WRITE:
|
case COMMAND_WRITE:
|
||||||
case COMMAND_WRITEALL:
|
case COMMAND_WRITEALL:
|
||||||
m_shift_register = 0;
|
m_shift_register = 0;
|
||||||
set_state(STATE_WAIT_FOR_DATA);
|
set_state(STATE_WAIT_FOR_DATA);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// erase the parsed address (unless locked) and wait for it to complete
|
// erase the parsed address (unless locked) and wait for it to complete
|
||||||
case COMMAND_ERASE:
|
case COMMAND_ERASE:
|
||||||
if (m_locked)
|
if (m_locked)
|
||||||
@ -559,19 +559,19 @@ void eeprom_serial_base_device::execute_command()
|
|||||||
erase(m_address);
|
erase(m_address);
|
||||||
set_state(STATE_WAIT_FOR_COMPLETION);
|
set_state(STATE_WAIT_FOR_COMPLETION);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// lock the chip; return to IN_RESET state
|
// lock the chip; return to IN_RESET state
|
||||||
case COMMAND_LOCK:
|
case COMMAND_LOCK:
|
||||||
m_locked = true;
|
m_locked = true;
|
||||||
set_state(STATE_IN_RESET);
|
set_state(STATE_IN_RESET);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// unlock the chip; return to IN_RESET state
|
// unlock the chip; return to IN_RESET state
|
||||||
case COMMAND_UNLOCK:
|
case COMMAND_UNLOCK:
|
||||||
m_locked = false;
|
m_locked = false;
|
||||||
set_state(STATE_IN_RESET);
|
set_state(STATE_IN_RESET);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// erase the entire chip (unless locked) and wait for it to complete
|
// erase the entire chip (unless locked) and wait for it to complete
|
||||||
case COMMAND_ERASEALL:
|
case COMMAND_ERASEALL:
|
||||||
if (m_locked)
|
if (m_locked)
|
||||||
@ -583,7 +583,7 @@ void eeprom_serial_base_device::execute_command()
|
|||||||
erase_all();
|
erase_all();
|
||||||
set_state(STATE_WAIT_FOR_COMPLETION);
|
set_state(STATE_WAIT_FOR_COMPLETION);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw emu_fatalerror("execute_command called with invalid command %d\n", m_command);
|
throw emu_fatalerror("execute_command called with invalid command %d\n", m_command);
|
||||||
}
|
}
|
||||||
@ -591,8 +591,8 @@ void eeprom_serial_base_device::execute_command()
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// execute_write_command - execute a write
|
// execute_write_command - execute a write
|
||||||
// command after receiving the data bits
|
// command after receiving the data bits
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_serial_base_device::execute_write_command()
|
void eeprom_serial_base_device::execute_write_command()
|
||||||
@ -627,7 +627,7 @@ void eeprom_serial_base_device::execute_write_command()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
// write the entire EEPROM with the same data; ERASEALL is required before so we
|
// write the entire EEPROM with the same data; ERASEALL is required before so we
|
||||||
// AND against the already-present data
|
// AND against the already-present data
|
||||||
case COMMAND_WRITEALL:
|
case COMMAND_WRITEALL:
|
||||||
if (m_locked)
|
if (m_locked)
|
||||||
{
|
{
|
||||||
@ -638,7 +638,7 @@ void eeprom_serial_base_device::execute_write_command()
|
|||||||
write_all(m_shift_register);
|
write_all(m_shift_register);
|
||||||
set_state(STATE_WAIT_FOR_COMPLETION);
|
set_state(STATE_WAIT_FOR_COMPLETION);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw emu_fatalerror("execute_write_command called with invalid command %d\n", m_command);
|
throw emu_fatalerror("execute_write_command called with invalid command %d\n", m_command);
|
||||||
}
|
}
|
||||||
@ -661,8 +661,8 @@ eeprom_serial_93cxx_device::eeprom_serial_93cxx_device(const machine_config &mco
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// parse_command_and_address - extract the
|
// parse_command_and_address - extract the
|
||||||
// command and address from a bitstream
|
// command and address from a bitstream
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_serial_93cxx_device::parse_command_and_address()
|
void eeprom_serial_93cxx_device::parse_command_and_address()
|
||||||
@ -670,7 +670,7 @@ void eeprom_serial_93cxx_device::parse_command_and_address()
|
|||||||
// set the defaults
|
// set the defaults
|
||||||
m_command = COMMAND_INVALID;
|
m_command = COMMAND_INVALID;
|
||||||
m_address = m_command_address_accum & ((1 << m_command_address_bits) - 1);
|
m_address = m_command_address_accum & ((1 << m_command_address_bits) - 1);
|
||||||
|
|
||||||
// extract the command portion and handle it
|
// extract the command portion and handle it
|
||||||
switch (m_command_address_accum >> m_command_address_bits)
|
switch (m_command_address_accum >> m_command_address_bits)
|
||||||
{
|
{
|
||||||
@ -678,16 +678,16 @@ void eeprom_serial_93cxx_device::parse_command_and_address()
|
|||||||
case 0:
|
case 0:
|
||||||
switch (m_address >> (m_command_address_bits - 2))
|
switch (m_address >> (m_command_address_bits - 2))
|
||||||
{
|
{
|
||||||
case 0: m_command = COMMAND_LOCK; break;
|
case 0: m_command = COMMAND_LOCK; break;
|
||||||
case 1: m_command = COMMAND_WRITEALL; break;
|
case 1: m_command = COMMAND_WRITEALL; break;
|
||||||
case 2: m_command = COMMAND_ERASEALL; break;
|
case 2: m_command = COMMAND_ERASEALL; break;
|
||||||
case 3: m_command = COMMAND_UNLOCK; break;
|
case 3: m_command = COMMAND_UNLOCK; break;
|
||||||
}
|
}
|
||||||
m_address = 0;
|
m_address = 0;
|
||||||
break;
|
break;
|
||||||
case 1: m_command = COMMAND_WRITE; break;
|
case 1: m_command = COMMAND_WRITE; break;
|
||||||
case 2: m_command = COMMAND_READ; break;
|
case 2: m_command = COMMAND_READ; break;
|
||||||
case 3: m_command = COMMAND_ERASE; break;
|
case 3: m_command = COMMAND_ERASE; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// warn about out-of-range addresses
|
// warn about out-of-range addresses
|
||||||
@ -728,8 +728,8 @@ eeprom_serial_er5911_device::eeprom_serial_er5911_device(const machine_config &m
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// parse_command_and_address - extract the
|
// parse_command_and_address - extract the
|
||||||
// command and address from a bitstream
|
// command and address from a bitstream
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void eeprom_serial_er5911_device::parse_command_and_address()
|
void eeprom_serial_er5911_device::parse_command_and_address()
|
||||||
@ -737,7 +737,7 @@ void eeprom_serial_er5911_device::parse_command_and_address()
|
|||||||
// set the defaults
|
// set the defaults
|
||||||
m_command = COMMAND_INVALID;
|
m_command = COMMAND_INVALID;
|
||||||
m_address = m_command_address_accum & ((1 << m_command_address_bits) - 1);
|
m_address = m_command_address_accum & ((1 << m_command_address_bits) - 1);
|
||||||
|
|
||||||
// extract the command portion and handle it
|
// extract the command portion and handle it
|
||||||
switch (m_command_address_accum >> m_command_address_bits)
|
switch (m_command_address_accum >> m_command_address_bits)
|
||||||
{
|
{
|
||||||
@ -745,16 +745,16 @@ void eeprom_serial_er5911_device::parse_command_and_address()
|
|||||||
case 0:
|
case 0:
|
||||||
switch (m_address >> (m_command_address_bits - 2))
|
switch (m_address >> (m_command_address_bits - 2))
|
||||||
{
|
{
|
||||||
case 0: m_command = COMMAND_LOCK; break;
|
case 0: m_command = COMMAND_LOCK; break;
|
||||||
case 1: m_command = COMMAND_INVALID; break; // not on ER5911
|
case 1: m_command = COMMAND_INVALID; break; // not on ER5911
|
||||||
case 2: m_command = COMMAND_ERASEALL; break;
|
case 2: m_command = COMMAND_ERASEALL; break;
|
||||||
case 3: m_command = COMMAND_UNLOCK; break;
|
case 3: m_command = COMMAND_UNLOCK; break;
|
||||||
}
|
}
|
||||||
m_address = 0;
|
m_address = 0;
|
||||||
break;
|
break;
|
||||||
case 1: m_command = COMMAND_WRITE; break;
|
case 1: m_command = COMMAND_WRITE; break;
|
||||||
case 2: m_command = COMMAND_READ; break;
|
case 2: m_command = COMMAND_READ; break;
|
||||||
case 3: m_command = COMMAND_WRITE; break; // WRITE instead of ERASE on ER5911
|
case 3: m_command = COMMAND_WRITE; break; // WRITE instead of ERASE on ER5911
|
||||||
}
|
}
|
||||||
|
|
||||||
// warn about out-of-range addresses
|
// warn about out-of-range addresses
|
||||||
@ -793,8 +793,7 @@ eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_#
|
|||||||
static_set_size(*this, _cells, _bits); \
|
static_set_size(*this, _cells, _bits); \
|
||||||
static_set_address_bits(*this, _addrbits); \
|
static_set_address_bits(*this, _addrbits); \
|
||||||
}; \
|
}; \
|
||||||
const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT = &device_creator<eeprom_serial_##_lowercase##_##_bits##bit_device>; \
|
const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT = &device_creator<eeprom_serial_##_lowercase##_##_bits##bit_device>;
|
||||||
|
|
||||||
// standard 93CX6 class of 16-bit EEPROMs
|
// standard 93CX6 class of 16-bit EEPROMs
|
||||||
DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16, 16, 6)
|
DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16, 16, 6)
|
||||||
DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16, 64, 6)
|
DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16, 64, 6)
|
||||||
|
@ -87,8 +87,7 @@
|
|||||||
|
|
||||||
// optional enable for streaming reads
|
// optional enable for streaming reads
|
||||||
#define MCFG_EEPROM_SERIAL_ENABLE_STREAMING() \
|
#define MCFG_EEPROM_SERIAL_ENABLE_STREAMING() \
|
||||||
eeprom_serial_base_device::static_enable_streaming(*device); \
|
eeprom_serial_base_device::static_enable_streaming(*device);
|
||||||
|
|
||||||
// pass-throughs to the base class for setting default data
|
// pass-throughs to the base class for setting default data
|
||||||
#define MCFG_EEPROM_SERIAL_DATA MCFG_EEPROM_DATA
|
#define MCFG_EEPROM_SERIAL_DATA MCFG_EEPROM_DATA
|
||||||
#define MCFG_EEPROM_SERIAL_DEFAULT_VALUE MCFG_EEPROM_DEFAULT_VALUE
|
#define MCFG_EEPROM_SERIAL_DEFAULT_VALUE MCFG_EEPROM_DEFAULT_VALUE
|
||||||
@ -112,14 +111,14 @@ public:
|
|||||||
// inline configuration helpers
|
// inline configuration helpers
|
||||||
static void static_set_address_bits(device_t &device, int addrbits);
|
static void static_set_address_bits(device_t &device, int addrbits);
|
||||||
static void static_enable_streaming(device_t &device);
|
static void static_enable_streaming(device_t &device);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
|
|
||||||
// read interfaces differ between implementations
|
// read interfaces differ between implementations
|
||||||
|
|
||||||
// commands
|
// commands
|
||||||
enum eeprom_command
|
enum eeprom_command
|
||||||
{
|
{
|
||||||
@ -143,7 +142,7 @@ protected:
|
|||||||
STATE_WAIT_FOR_DATA,
|
STATE_WAIT_FOR_DATA,
|
||||||
STATE_WAIT_FOR_COMPLETION
|
STATE_WAIT_FOR_COMPLETION
|
||||||
};
|
};
|
||||||
|
|
||||||
// events
|
// events
|
||||||
enum eeprom_event
|
enum eeprom_event
|
||||||
{
|
{
|
||||||
@ -158,34 +157,34 @@ protected:
|
|||||||
void handle_event(eeprom_event event);
|
void handle_event(eeprom_event event);
|
||||||
void execute_command();
|
void execute_command();
|
||||||
void execute_write_command();
|
void execute_write_command();
|
||||||
|
|
||||||
// subclass helpers
|
// subclass helpers
|
||||||
void base_cs_write(int state);
|
void base_cs_write(int state);
|
||||||
void base_clk_write(int state);
|
void base_clk_write(int state);
|
||||||
void base_di_write(int state);
|
void base_di_write(int state);
|
||||||
int base_do_read();
|
int base_do_read();
|
||||||
int base_ready_read();
|
int base_ready_read();
|
||||||
|
|
||||||
// subclass overrides
|
// subclass overrides
|
||||||
virtual void parse_command_and_address() = 0;
|
virtual void parse_command_and_address() = 0;
|
||||||
|
|
||||||
// configuration state
|
// configuration state
|
||||||
UINT8 m_command_address_bits; // number of address bits in a command
|
UINT8 m_command_address_bits; // number of address bits in a command
|
||||||
bool m_streaming_enabled; // true if streaming is enabled
|
bool m_streaming_enabled; // true if streaming is enabled
|
||||||
|
|
||||||
// runtime state
|
// runtime state
|
||||||
eeprom_state m_state; // current internal state
|
eeprom_state m_state; // current internal state
|
||||||
UINT8 m_cs_state; // state of the CS line
|
UINT8 m_cs_state; // state of the CS line
|
||||||
attotime m_last_cs_rising_edge_time; // time of the last CS rising edge
|
attotime m_last_cs_rising_edge_time; // time of the last CS rising edge
|
||||||
UINT8 m_oe_state; // state of the OE line
|
UINT8 m_oe_state; // state of the OE line
|
||||||
UINT8 m_clk_state; // state of the CLK line
|
UINT8 m_clk_state; // state of the CLK line
|
||||||
UINT8 m_di_state; // state of the DI line
|
UINT8 m_di_state; // state of the DI line
|
||||||
bool m_locked; // are we locked against writes?
|
bool m_locked; // are we locked against writes?
|
||||||
UINT32 m_bits_accum; // number of bits accumulated
|
UINT32 m_bits_accum; // number of bits accumulated
|
||||||
UINT32 m_command_address_accum; // accumulator of command+address bits
|
UINT32 m_command_address_accum; // accumulator of command+address bits
|
||||||
eeprom_command m_command; // current command
|
eeprom_command m_command; // current command
|
||||||
UINT32 m_address; // current address extracted from command
|
UINT32 m_address; // current address extracted from command
|
||||||
UINT32 m_shift_register; // holds data coming in/going out
|
UINT32 m_shift_register; // holds data coming in/going out
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -200,12 +199,12 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// read handlers
|
// read handlers
|
||||||
DECLARE_READ_LINE_MEMBER(do_read); // combined DO+READY/BUSY
|
DECLARE_READ_LINE_MEMBER(do_read); // combined DO+READY/BUSY
|
||||||
|
|
||||||
// write handlers
|
// write handlers
|
||||||
DECLARE_WRITE_LINE_MEMBER(cs_write); // CS signal (active high)
|
DECLARE_WRITE_LINE_MEMBER(cs_write); // CS signal (active high)
|
||||||
DECLARE_WRITE_LINE_MEMBER(clk_write); // CLK signal (active high)
|
DECLARE_WRITE_LINE_MEMBER(clk_write); // CLK signal (active high)
|
||||||
DECLARE_WRITE_LINE_MEMBER(di_write); // DI
|
DECLARE_WRITE_LINE_MEMBER(di_write); // DI
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// subclass overrides
|
// subclass overrides
|
||||||
@ -223,13 +222,13 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// read handlers
|
// read handlers
|
||||||
DECLARE_READ_LINE_MEMBER(do_read); // DO
|
DECLARE_READ_LINE_MEMBER(do_read); // DO
|
||||||
DECLARE_READ_LINE_MEMBER(ready_read); // READY/BUSY only
|
DECLARE_READ_LINE_MEMBER(ready_read); // READY/BUSY only
|
||||||
|
|
||||||
// write handlers
|
// write handlers
|
||||||
DECLARE_WRITE_LINE_MEMBER(cs_write); // CS signal (active high)
|
DECLARE_WRITE_LINE_MEMBER(cs_write); // CS signal (active high)
|
||||||
DECLARE_WRITE_LINE_MEMBER(clk_write); // CLK signal (active high)
|
DECLARE_WRITE_LINE_MEMBER(clk_write); // CLK signal (active high)
|
||||||
DECLARE_WRITE_LINE_MEMBER(di_write); // DI
|
DECLARE_WRITE_LINE_MEMBER(di_write); // DI
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// subclass overrides
|
// subclass overrides
|
||||||
@ -249,8 +248,7 @@ class eeprom_serial_##_lowercase##_##_bits##bit_device : public eeprom_serial_##
|
|||||||
public: \
|
public: \
|
||||||
eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); \
|
eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); \
|
||||||
}; \
|
}; \
|
||||||
extern const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT; \
|
extern const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT;
|
||||||
|
|
||||||
// standard 93CX6 class of 16-bit EEPROMs
|
// standard 93CX6 class of 16-bit EEPROMs
|
||||||
DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16)
|
DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16)
|
||||||
DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16)
|
DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16)
|
||||||
|
@ -558,4 +558,3 @@ void generic_pulse_irq_line(device_t *device, int irqline, int cycles) { device-
|
|||||||
|
|
||||||
// legacy
|
// legacy
|
||||||
INTERRUPT_GEN( irq2_line_hold ) { device->machine().driver_data()->irq2_line_hold(*device); }
|
INTERRUPT_GEN( irq2_line_hold ) { device->machine().driver_data()->irq2_line_hold(*device); }
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public:
|
|||||||
Range from 100 to 0. (100 = 0dB; 50 = -6dB; 0 = -infinity)
|
Range from 100 to 0. (100 = 0dB; 50 = -6dB; 0 = -infinity)
|
||||||
This function is designed for use with MAME mixer_xxx() functions. */
|
This function is designed for use with MAME mixer_xxx() functions. */
|
||||||
int gain_percent_r(int channel);
|
int gain_percent_r(int channel);
|
||||||
|
|
||||||
void gain_recalc();
|
void gain_recalc();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -52,7 +52,7 @@ protected:
|
|||||||
virtual void device_config_complete();
|
virtual void device_config_complete();
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// internal state
|
// internal state
|
||||||
int m_gain[4]; /* gain index 0-63,64,65 */
|
int m_gain[4]; /* gain index 0-63,64,65 */
|
||||||
|
@ -143,13 +143,13 @@ void s2636_device::device_start()
|
|||||||
save_pointer(NAME(m_work_ram), m_work_ram_size);
|
save_pointer(NAME(m_work_ram), m_work_ram_size);
|
||||||
save_item(NAME(*m_bitmap));
|
save_item(NAME(*m_bitmap));
|
||||||
save_item(NAME(*m_collision_bitmap));
|
save_item(NAME(*m_collision_bitmap));
|
||||||
|
|
||||||
|
|
||||||
m_channel = machine().sound().stream_alloc(*this, 0, 1, machine().sample_rate(), this);
|
m_channel = machine().sound().stream_alloc(*this, 0, 1, machine().sample_rate(), this);
|
||||||
save_item(NAME(m_size));
|
save_item(NAME(m_size));
|
||||||
save_item(NAME(m_pos));
|
save_item(NAME(m_pos));
|
||||||
save_item(NAME(m_level));
|
save_item(NAME(m_level));
|
||||||
|
|
||||||
for (int i = 0; i < 1; i++)
|
for (int i = 0; i < 1; i++)
|
||||||
save_item(NAME(m_reg[i]), i);
|
save_item(NAME(m_reg[i]), i);
|
||||||
}
|
}
|
||||||
|
@ -47,14 +47,14 @@ public:
|
|||||||
bitmap_ind16 &update( const rectangle &cliprect );
|
bitmap_ind16 &update( const rectangle &cliprect );
|
||||||
DECLARE_WRITE8_MEMBER( work_ram_w );
|
DECLARE_WRITE8_MEMBER( work_ram_w );
|
||||||
DECLARE_READ8_MEMBER( work_ram_r );
|
DECLARE_READ8_MEMBER( work_ram_r );
|
||||||
|
|
||||||
void soundport_w (int mode, int data);
|
void soundport_w (int mode, int data);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
virtual void device_config_complete();
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
|
|
||||||
// sound stream update overrides
|
// sound stream update overrides
|
||||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
||||||
|
|
||||||
@ -63,13 +63,13 @@ private:
|
|||||||
UINT8 *m_work_ram;
|
UINT8 *m_work_ram;
|
||||||
bitmap_ind16 *m_bitmap;
|
bitmap_ind16 *m_bitmap;
|
||||||
bitmap_ind16 *m_collision_bitmap;
|
bitmap_ind16 *m_collision_bitmap;
|
||||||
|
|
||||||
sound_stream *m_channel;
|
sound_stream *m_channel;
|
||||||
UINT8 m_reg[1];
|
UINT8 m_reg[1];
|
||||||
int m_size;
|
int m_size;
|
||||||
int m_pos;
|
int m_pos;
|
||||||
unsigned m_level;
|
unsigned m_level;
|
||||||
|
|
||||||
int check_collision( int spriteno1, int spriteno2, const rectangle &cliprect );
|
int check_collision( int spriteno1, int spriteno2, const rectangle &cliprect );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -35,13 +35,13 @@ public:
|
|||||||
|
|
||||||
DECLARE_READ16_MEMBER( read );
|
DECLARE_READ16_MEMBER( read );
|
||||||
DECLARE_WRITE16_MEMBER( write );
|
DECLARE_WRITE16_MEMBER( write );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
virtual void device_config_complete();
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// internal state
|
// internal state
|
||||||
smc91c9x_irq_func m_irq_handler;
|
smc91c9x_irq_func m_irq_handler;
|
||||||
@ -64,7 +64,7 @@ private:
|
|||||||
/* counters */
|
/* counters */
|
||||||
UINT32 m_sent;
|
UINT32 m_sent;
|
||||||
UINT32 m_recd;
|
UINT32 m_recd;
|
||||||
|
|
||||||
void update_ethernet_irq();
|
void update_ethernet_irq();
|
||||||
void update_stats();
|
void update_stats();
|
||||||
void finish_enqueue(int param);
|
void finish_enqueue(int param);
|
||||||
|
@ -1466,7 +1466,7 @@ void wd_fdc_t::live_run(attotime limit)
|
|||||||
if(cur_live.bit_counter & 15)
|
if(cur_live.bit_counter & 15)
|
||||||
break;
|
break;
|
||||||
int slot = (cur_live.bit_counter >> 4)-1;
|
int slot = (cur_live.bit_counter >> 4)-1;
|
||||||
// fprintf(stderr, "%s: slot[%d] = %02x crc = %04x\n", tts(cur_live.tm).cstr(), slot, cur_live.data_reg, cur_live.crc);
|
// fprintf(stderr, "%s: slot[%d] = %02x crc = %04x\n", tts(cur_live.tm).cstr(), slot, cur_live.data_reg, cur_live.crc);
|
||||||
cur_live.idbuf[slot] = cur_live.data_reg;
|
cur_live.idbuf[slot] = cur_live.data_reg;
|
||||||
if(slot == 5) {
|
if(slot == 5) {
|
||||||
live_delay(IDLE);
|
live_delay(IDLE);
|
||||||
|
@ -147,9 +147,9 @@ int mame_execute(emu_options &options, osd_interface &osd)
|
|||||||
// loop across multiple hard resets
|
// loop across multiple hard resets
|
||||||
bool exit_pending = false;
|
bool exit_pending = false;
|
||||||
int error = MAMERR_NONE;
|
int error = MAMERR_NONE;
|
||||||
|
|
||||||
web_engine web(options);
|
web_engine web(options);
|
||||||
|
|
||||||
while (error == MAMERR_NONE && !exit_pending)
|
while (error == MAMERR_NONE && !exit_pending)
|
||||||
{
|
{
|
||||||
// if no driver, use the internal empty driver
|
// if no driver, use the internal empty driver
|
||||||
@ -187,9 +187,9 @@ int mame_execute(emu_options &options, osd_interface &osd)
|
|||||||
|
|
||||||
// looooong term: remove this
|
// looooong term: remove this
|
||||||
global_machine = &machine;
|
global_machine = &machine;
|
||||||
|
|
||||||
web.set_machine(machine);
|
web.set_machine(machine);
|
||||||
web.push_message("update_machine");
|
web.push_message("update_machine");
|
||||||
// run the machine
|
// run the machine
|
||||||
error = machine.run(firstrun);
|
error = machine.run(firstrun);
|
||||||
firstrun = false;
|
firstrun = false;
|
||||||
|
@ -37,16 +37,16 @@
|
|||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
|
||||||
A memory array in this case is an array of 8, 16, or 32-bit data
|
A memory array in this case is an array of 8, 16, or 32-bit data
|
||||||
arranged logically.
|
arranged logically.
|
||||||
|
|
||||||
A memory array is stored in "natural" order, i.e., read/writes to it
|
A memory array is stored in "natural" order, i.e., read/writes to it
|
||||||
are done via AM_RAM, or standard COMBINE_DATA, even if the width of
|
are done via AM_RAM, or standard COMBINE_DATA, even if the width of
|
||||||
the CPU is different from the array width.
|
the CPU is different from the array width.
|
||||||
|
|
||||||
The read_entry/write_entry functions serve to read/write entries of
|
The read_entry/write_entry functions serve to read/write entries of
|
||||||
the configured size regardless of the underlay width of the CPU's
|
the configured size regardless of the underlay width of the CPU's
|
||||||
memory system.
|
memory system.
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ public:
|
|||||||
|
|
||||||
// getters
|
// getters
|
||||||
bool enabled() const
|
bool enabled() const
|
||||||
{
|
{
|
||||||
#ifndef MAME_DEBUG_FAST
|
#ifndef MAME_DEBUG_FAST
|
||||||
return m_filoptr != NULL;
|
return m_filoptr != NULL;
|
||||||
#else
|
#else
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user