mirror of
https://github.com/holub/mame
synced 2025-06-03 03:16:30 +03:00
srcclean and cleanup (nw)
This commit is contained in:
parent
8ef400ec67
commit
01661be41c
@ -35337,7 +35337,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- red screen -->
|
||||
<!-- red screen -->
|
||||
<software name="rickdng2" supported="no">
|
||||
<!-- SPS (CAPS) release 570 -->
|
||||
<description>Rick Dangerous 2 (Euro)</description>
|
||||
@ -35352,7 +35352,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- red screen -->
|
||||
<!-- red screen -->
|
||||
<software name="rickdng2a" cloneof="rickdng2" supported="no">
|
||||
<!-- SPS (CAPS) release 1877 -->
|
||||
<description>Rick Dangerous 2 (Euro, Budget)</description>
|
||||
@ -48343,7 +48343,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<!-- Locks up at Xenon logo -->
|
||||
<software name="xenon" supported="no">
|
||||
<!-- SPS (CAPS) release 399 -->
|
||||
|
@ -37003,7 +37003,7 @@ license:CC0
|
||||
<year>1984</year>
|
||||
<publisher>Gessler Educational Software</publisher>
|
||||
<info name="release" value="2020-05-26"/>
|
||||
|
||||
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="143360">
|
||||
<rom name="german word order (4am crack).dsk" size="143360" crc="acdab126" sha1="e2e9d4d71115899aa38c49292cd21c4c0f9dec6b"/>
|
||||
|
@ -7476,7 +7476,7 @@ has been replaced with an all-zero block. -->
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="aaow">
|
||||
<description>The Ancient Art of War</description>
|
||||
<year>1984</year>
|
||||
|
@ -8963,7 +8963,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="amazon">
|
||||
<description>Amazon - Guardians of Eden</description>
|
||||
<year>1992</year>
|
||||
@ -9703,7 +9703,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="crystalc">
|
||||
<description>Crystal Caves (1.0a)</description>
|
||||
<year>1991</year>
|
||||
@ -10684,7 +10684,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="pharkas">
|
||||
<description>Freddy Pharkas, Frontier Pharmacist</description>
|
||||
<year>1993</year>
|
||||
@ -11687,7 +11687,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="lemmings">
|
||||
<!-- Dumped via Kryoflux -->
|
||||
<description>Lemmings</description>
|
||||
@ -12494,7 +12494,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="pquestvga">
|
||||
<description>Police Quest in Pursuit of the Death Angel (VGA release)</description>
|
||||
<year>1992</year>
|
||||
@ -12800,7 +12800,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="samnmax">
|
||||
<description>Sam & Max Hit the Road</description>
|
||||
<year>1993</year>
|
||||
@ -12932,7 +12932,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="silverb2p">
|
||||
<description>Silverball 2 Plus</description>
|
||||
<year>1994</year>
|
||||
@ -13358,7 +13358,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="trek25th">
|
||||
<description>Star Trek - 25th Anniversary</description>
|
||||
<year>1992</year>
|
||||
@ -13620,7 +13620,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="syndicate">
|
||||
<description>Syndicate</description>
|
||||
<year>1993</year>
|
||||
|
@ -853,8 +853,8 @@ Info for original games comes from https://web.archive.org/web/20141023024713/mc
|
||||
|
||||
<part name="cass1" interface="mc1000_cass">
|
||||
<!--
|
||||
<dataarea name="cass" size="702764">
|
||||
<rom name="aventura.wav" size="702764" crc="82a6263b" sha1="834d9511e22f5c34244923108366201e82b89179"/>
|
||||
<dataarea name="cass" size="702764">
|
||||
<rom name="aventura.wav" size="702764" crc="82a6263b" sha1="834d9511e22f5c34244923108366201e82b89179"/>
|
||||
-->
|
||||
<dataarea name="cass" size="168558">
|
||||
<rom name="aventura.wav" size="168558" crc="208c0c8b" sha1="169010d35d4fa3a63cf00f5758717e57fd4754e2"/>
|
||||
@ -910,8 +910,8 @@ Info for original games comes from https://web.archive.org/web/20141023024713/mc
|
||||
|
||||
<part name="cass1" interface="mc1000_cass">
|
||||
<!--
|
||||
<dataarea name="cass" size="176812">
|
||||
<rom name="circulos.wav" size="176812" crc="402caaea" sha1="614201ff32f80c91bf433243bc046eee78e190bf"/>
|
||||
<dataarea name="cass" size="176812">
|
||||
<rom name="circulos.wav" size="176812" crc="402caaea" sha1="614201ff32f80c91bf433243bc046eee78e190bf"/>
|
||||
-->
|
||||
<dataarea name="cass" size="40350">
|
||||
<rom name="circulos.wav" size="40350" crc="007a7c30" sha1="0002df62b1b37cd1c3d5b0db3a7a86f733604106"/>
|
||||
@ -979,8 +979,8 @@ Info for original games comes from https://web.archive.org/web/20141023024713/mc
|
||||
|
||||
<part name="cass1" interface="mc1000_cass">
|
||||
<!--
|
||||
<dataarea name="cass" size="549964">
|
||||
<rom name="explosao.wav" size="549964" crc="d231d3af" sha1="a3cce871efa9f8762257ac7ea47c71311f25920f"/>
|
||||
<dataarea name="cass" size="549964">
|
||||
<rom name="explosao.wav" size="549964" crc="d231d3af" sha1="a3cce871efa9f8762257ac7ea47c71311f25920f"/>
|
||||
-->
|
||||
<dataarea name="cass" size="130822">
|
||||
<rom name="explosao.wav" size="130822" crc="0b46f290" sha1="821b95bd675097d5ffba1c4c97898d20c9d10bb3"/>
|
||||
|
@ -374,7 +374,7 @@ Info on N64 chip labels (from The Cart Scan Repository)
|
||||
<description>AeroGauge (Europe)</description>
|
||||
<year>1998</year>
|
||||
<publisher>ASCII Entertainment</publisher>
|
||||
<info name="serial" value=" NUS-NAGP-NOE, NUS-NAGP-UKV"/>
|
||||
<info name="serial" value="NUS-NAGP-NOE, NUS-NAGP-UKV"/>
|
||||
<part name="cart" interface="n64_cart">
|
||||
<feature name="pcb" value="NUS-01A-02" />
|
||||
<feature name="u1" value="U1 [NUS-NAGP-0]" />
|
||||
|
@ -6488,11 +6488,11 @@ license:CC0
|
||||
<!--
|
||||
ID-0228
|
||||
Ghostlop (prototype) 1996 Data East Corp.
|
||||
|
||||
|
||||
Ghostlop (location test) 2001 Data East Corp.
|
||||
NEO-MVS PROGGSC / NEO-MVS CHA256
|
||||
|
||||
The location test version uses socketed EPROMs on the PROG board, flash chips on adapter boards for the C ROMs and EPROMs for M1 and S1 on the CHA.
|
||||
|
||||
The location test version uses socketed EPROMs on the PROG board, flash chips on adapter boards for the C ROMs and EPROMs for M1 and S1 on the CHA.
|
||||
It has a piece of cardboard between the 2 boards to avoid shorts because the socketed flash adapter boards are a bit too high and could get shorted with traces on the PROG board.
|
||||
-->
|
||||
|
||||
|
32
hash/nes.xml
32
hash/nes.xml
@ -47339,14 +47339,14 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
|
||||
<feature name="pcb" value="KONAMI-VRC-2" />
|
||||
<feature name="vrc2-pin3" value="PRG A1" />
|
||||
<feature name="vrc2-pin4" value="PRG A0" />
|
||||
<feature name="vrc2-pin21" value ="CHR A10" />
|
||||
<feature name="vrc2-pin22" value ="CHR A16" />
|
||||
<feature name="vrc2-pin23" value ="CHR A11" />
|
||||
<feature name="vrc2-pin24" value ="CHR A13" />
|
||||
<feature name="vrc2-pin25" value ="CHR A14" />
|
||||
<feature name="vrc2-pin26" value ="CHR A12" />
|
||||
<feature name="vrc2-pin27" value ="CHR A15" />
|
||||
<feature name="vrc2-pin28" value ="NC" />
|
||||
<feature name="vrc2-pin21" value="CHR A10" />
|
||||
<feature name="vrc2-pin22" value="CHR A16" />
|
||||
<feature name="vrc2-pin23" value="CHR A11" />
|
||||
<feature name="vrc2-pin24" value="CHR A13" />
|
||||
<feature name="vrc2-pin25" value="CHR A14" />
|
||||
<feature name="vrc2-pin26" value="CHR A12" />
|
||||
<feature name="vrc2-pin27" value="CHR A15" />
|
||||
<feature name="vrc2-pin28" value="NC" />
|
||||
<dataarea name="chr" size="131072">
|
||||
<rom name="mad city (japan) (beta).chr" size="131072" crc="028dc0ef" sha1="1212b249bfc2c13e76a337d4ceedc5f78d1d5be6" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
@ -50292,14 +50292,14 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
|
||||
<feature name="pcb" value="KONAMI-VRC-2" />
|
||||
<feature name="vrc2-pin3" value="PRG A1" />
|
||||
<feature name="vrc2-pin4" value="PRG A0" />
|
||||
<feature name="vrc2-pin21" value ="CHR A10" />
|
||||
<feature name="vrc2-pin22" value ="CHR A16" />
|
||||
<feature name="vrc2-pin23" value ="CHR A11" />
|
||||
<feature name="vrc2-pin24" value ="CHR A13" />
|
||||
<feature name="vrc2-pin25" value ="CHR A14" />
|
||||
<feature name="vrc2-pin26" value ="CHR A12" />
|
||||
<feature name="vrc2-pin27" value ="CHR A15" />
|
||||
<feature name="vrc2-pin28" value ="NC" />
|
||||
<feature name="vrc2-pin21" value="CHR A10" />
|
||||
<feature name="vrc2-pin22" value="CHR A16" />
|
||||
<feature name="vrc2-pin23" value="CHR A11" />
|
||||
<feature name="vrc2-pin24" value="CHR A13" />
|
||||
<feature name="vrc2-pin25" value="CHR A14" />
|
||||
<feature name="vrc2-pin26" value="CHR A12" />
|
||||
<feature name="vrc2-pin27" value="CHR A15" />
|
||||
<feature name="vrc2-pin28" value="NC" />
|
||||
<dataarea name="chr" size="131072">
|
||||
<rom name="twinbee 3 - poko poko dai maou (japan) (beta).chr" size="131072" crc="22a2268f" sha1="a930b56984f1bf8cc08050a52a8e2ed2484619cf" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
|
@ -11,7 +11,7 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
||||
<description>Ballistic</description>
|
||||
<year>2000</year>
|
||||
<publisher>VM Labs, Inc.</publisher>
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<diskarea name="dvdrom">
|
||||
<disk name="ballstic" sha1="92b386f176eecc7d3b1e13675ccaf0b60a543175" />
|
||||
</diskarea>
|
||||
@ -22,66 +22,66 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
||||
<description>FreeFall 3050 A.D.</description>
|
||||
<year>200?</year>
|
||||
<publisher>VM Labs, Inc.</publisher>
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<diskarea name="dvdrom">
|
||||
<disk name="freefall" sha1="56540609dcdf3d5234a1d045b28cba58ba6adae8" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="is3">
|
||||
<description>Iron Soldier 3</description>
|
||||
<year>2001</year>
|
||||
<publisher>VM Labs, Inc.</publisher>
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<diskarea name="dvdrom">
|
||||
<disk name="is3" sha1="47dec1bbb819342cf8bc2fee98fc7b18d1302503" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="merlinr">
|
||||
<description>Merlin Racing</description>
|
||||
<year>200?</year>
|
||||
<publisher>VM Labs, Inc.</publisher>
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<diskarea name="dvdrom">
|
||||
<disk name="merlinr" sha1="80116c3c9440492678f8f072c5fabd2cedb3034e" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="spacinvx">
|
||||
<description>Space Invaders XL</description>
|
||||
<year>200?</year>
|
||||
<publisher>VM Labs, Inc.</publisher>
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<diskarea name="dvdrom">
|
||||
<disk name="spacinvx" sha1="76518e106ab04819f6b85cc3e1eea08968b7b249" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="tempest3">
|
||||
<description>Tempest 3000</description>
|
||||
<year>200?</year>
|
||||
<publisher>VM Labs, Inc.</publisher>
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<diskarea name="dvdrom">
|
||||
<disk name="tempest3" sha1="48e44d3de2642bb7b4fc5a044caf4cb2e8ad5c25" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="toshsamp">
|
||||
<description>Toshiba Sampler (11-1-2000)</description>
|
||||
<year>200?</year>
|
||||
<publisher>VM Labs, Inc.</publisher>
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<part interface="dvdrom" name="dvdrom">
|
||||
<diskarea name="dvdrom">
|
||||
<disk name="toshsamp" sha1="e312c9cec7f11a4594c1a3340fbcc9f66a65e9b1" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
</softwarelist>
|
||||
|
@ -1337,7 +1337,7 @@ license:CC0
|
||||
<year>1996</year> <!-- 03/96 -->
|
||||
<publisher>Silicon Graphics</publisher>
|
||||
<part name="cdrom" interface="cdrom">
|
||||
<feature name="part_number" value=" 812-0478-001"/>
|
||||
<feature name="part_number" value="812-0478-001"/>
|
||||
<!-- Origin: jrra.zone -->
|
||||
<diskarea name="cdrom">
|
||||
<disk name="iris_development_option_6_2" sha1="eabaa5238a3515f1c71d693efc2781b4d1675cf9" />
|
||||
@ -2099,7 +2099,7 @@ license:CC0
|
||||
<year>1993</year> <!-- 09/93 -->
|
||||
<publisher>Silicon Graphics</publisher>
|
||||
<part name="cdrom" interface="cdrom">
|
||||
<feature name="part_number" value=" 812-0232-002"/>
|
||||
<feature name="part_number" value="812-0232-002"/>
|
||||
<!-- Origin: jrra.zone -->
|
||||
<diskarea name="cdrom">
|
||||
<disk name="indy_irix_5_1_1" sha1="e041bee239367f926ce0cef0d16830bdbe49ea01" />
|
||||
@ -2231,7 +2231,7 @@ license:CC0
|
||||
<publisher>Silicon Graphics</publisher>
|
||||
<part name="cdrom1" interface="cdrom">
|
||||
<feature name="part_number" value="812-0469-001"/>
|
||||
<feature name="part_id" value="IRIX 6.2 part 1 of 2"/>
|
||||
<feature name="part_id" value="IRIX 6.2 part 1 of 2"/>
|
||||
<!-- Origin: private dump. Verified SHA1 against a Plextor dump without C2 errors -->
|
||||
<diskarea name="cdrom">
|
||||
<disk name="irix_6_2_part_1_of_2" sha1="714ad598cde6a48132005e4728e7e7d18fdbbb1b" />
|
||||
@ -2246,7 +2246,7 @@ license:CC0
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="irix_6_2_a" cloneof="irix_6_2">
|
||||
<description>IRIX 6.2 with Indigo IMPACT 10000</description>
|
||||
<year>1996</year>
|
||||
@ -2325,7 +2325,7 @@ license:CC0
|
||||
</part>
|
||||
<part name="cdrom4" interface="cdrom">
|
||||
<feature name="part_number" value="812-0747-001"/>
|
||||
<feature name="part_id" value=" IRIX 6.5 Beta Applications"/>
|
||||
<feature name="part_id" value="IRIX 6.5 Beta Applications"/>
|
||||
<!-- Origin: jrra.zone -->
|
||||
<diskarea name="cdrom">
|
||||
<disk name="irix_6_5_beta_applications" sha1="6640a6b668de811d681bb8b17c16a44d67529c33" />
|
||||
@ -2357,7 +2357,7 @@ license:CC0
|
||||
</part>
|
||||
<part name="cdrom8" interface="cdrom">
|
||||
<feature name="part_number" value="812-0753-001"/>
|
||||
<feature name="part_id" value=" IRIX 6.5 Beta O2 Demos"/>
|
||||
<feature name="part_id" value="IRIX 6.5 Beta O2 Demos"/>
|
||||
<!-- Origin: jrra.zone -->
|
||||
<diskarea name="cdrom">
|
||||
<disk name="irix_6_5_beta_o2_demos" sha1="c954caa735d92dcf4a6aba620c8d7ad44cf3b0bb" />
|
||||
@ -3337,7 +3337,7 @@ license:CC0
|
||||
</diskarea>
|
||||
</part>
|
||||
<part name="cdrom4" interface="cdrom">
|
||||
<feature name="part_number" value="812-0877-022 "/>
|
||||
<feature name="part_number" value="812-0877-022 "/>
|
||||
<feature name="part_id" value="IRIX 6.5 Applications November 2003"/>
|
||||
<!-- Origin: archive.org -->
|
||||
<diskarea name="cdrom">
|
||||
|
@ -645,7 +645,7 @@ license:CC0
|
||||
</software>
|
||||
|
||||
<!--
|
||||
<software name="ledstorm">
|
||||
<software name="ledstorm">
|
||||
-->
|
||||
<!-- SPS (CAPS) release 3585 -->
|
||||
<!--
|
||||
@ -1012,7 +1012,7 @@ license:CC0
|
||||
</software>
|
||||
|
||||
<!--
|
||||
<software name="rockhams">
|
||||
<software name="rockhams">
|
||||
-->
|
||||
<!-- SPS (CAPS) release 3607 -->
|
||||
<!--
|
||||
@ -1451,7 +1451,7 @@ license:CC0
|
||||
</software>
|
||||
|
||||
<!--
|
||||
<software name="tigeroad">
|
||||
<software name="tigeroad">
|
||||
-->
|
||||
<!-- SPS (CAPS) release 3625 -->
|
||||
<!--
|
||||
|
@ -315154,7 +315154,7 @@ license:CC0
|
||||
</software>
|
||||
|
||||
<!-- Project 2612 VGM Archives located at http://project2612.org/list.php
|
||||
Update May 2, 2020 - 5 new entries -->
|
||||
Update May 2, 2020 - 5 new entries -->
|
||||
|
||||
<software name="joemont2_md">
|
||||
<description>Joe Montana II - Sports Talk Football (GEN/MD)</description>
|
||||
|
@ -800,7 +800,7 @@ Most info on release dates and Jpn titles come from the following (wonderful) re
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- boot OK, sometimes a line of garbage appear on background during gameplay (happened after continue on stage 3, hard to repro?) -->
|
||||
<!-- boot OK, sometimes a line of garbage appear on background during gameplay (happened after continue on stage 3, hard to repro?) -->
|
||||
<!-- old note: has video glitches on first stage, Ajax title logo on background (cannot repro) -->
|
||||
<software name="ajax" supported="partial">
|
||||
<description>Ajax</description>
|
||||
@ -22164,7 +22164,7 @@ sold through Takeru vending machines -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- boot OK -->
|
||||
<!-- boot OK -->
|
||||
<!-- some projectiles don't move (cannot repro) -->
|
||||
<software name="actshoot">
|
||||
<description>Active Shoot</description>
|
||||
|
@ -4440,4 +4440,4 @@ if (MACHINES["SWIM3"]~=null) then
|
||||
MAME_DIR .. "src/devices/machine/swim3.cpp",
|
||||
MAME_DIR .. "src/devices/machine/swim3.h",
|
||||
}
|
||||
end
|
||||
end
|
||||
|
@ -6,8 +6,8 @@
|
||||
|
||||
Implementation of the Apple II IWM controller card
|
||||
|
||||
WANTED: there are no ROM dumps from this card in any form
|
||||
(the IWM card, the UniDisk )
|
||||
WANTED: there are no ROM dumps from this card in any form
|
||||
(the IWM card, the UniDisk )
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
|
@ -595,7 +595,7 @@ uint8_t epson_lx810l_device::an3_r()
|
||||
return res - 1; /* DIPSW2.4 */
|
||||
}
|
||||
|
||||
uint8_t epson_lx810l_device::an4_r()
|
||||
uint8_t epson_lx810l_device::an4_r()
|
||||
{
|
||||
return 0xff;
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ private:
|
||||
// registers
|
||||
u8 m_cache_controler;
|
||||
u8 m_cache_pointer;
|
||||
required_device<ram_device> m_cache_buffer;
|
||||
required_device<ram_device> m_cache_buffer;
|
||||
};
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
Code for emulating the Disto RAM cartridge
|
||||
|
||||
This cartridge came in several forms: 256K, 512K, 768K, and 1024K.
|
||||
This cartridge came in several forms: 256K, 512K, 768K, and 1024K.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -53,7 +53,7 @@ namespace
|
||||
|
||||
private:
|
||||
required_device<ram_device> m_staticram;
|
||||
int m_offset;
|
||||
int m_offset;
|
||||
};
|
||||
};
|
||||
|
||||
@ -124,7 +124,7 @@ void coco_pak_ram_device::device_reset()
|
||||
|
||||
void coco_pak_ram_device::scs_write(offs_t offset, u8 data)
|
||||
{
|
||||
// int idata = data;
|
||||
// int idata = data;
|
||||
|
||||
switch(offset)
|
||||
{
|
||||
|
@ -791,7 +791,7 @@ void ecb_grip21_device::cxstb_w(uint8_t data)
|
||||
|
||||
void grip5_state::eprom_w(uint8_t data)
|
||||
{
|
||||
membank("eprom")->set_entry(BIT(data, 0));
|
||||
membank("eprom")->set_entry(BIT(data, 0));
|
||||
}
|
||||
|
||||
|
||||
@ -801,7 +801,7 @@ void grip5_state::eprom_w(uint8_t data)
|
||||
|
||||
void grip5_state::dpage_w(uint8_t data)
|
||||
{
|
||||
m_dpage = BIT(data, 7);
|
||||
m_dpage = BIT(data, 7);
|
||||
}
|
||||
*/
|
||||
|
||||
|
@ -23,15 +23,15 @@ DEFINE_DEVICE_TYPE(GRID2101_HDD, grid2101_hdd_device, "grid2101_hdd", "GRID2101_
|
||||
#include "logmacro.h"
|
||||
|
||||
#define GRID2102_FETCH32(Array, Offset) ((uint32_t)(\
|
||||
(Array[Offset] << 0) |\
|
||||
(Array[Offset + 1] << 8) |\
|
||||
(Array[Offset + 2] << 16) |\
|
||||
(Array[Offset + 3] << 24)\
|
||||
(Array[Offset] << 0) |\
|
||||
(Array[Offset + 1] << 8) |\
|
||||
(Array[Offset + 2] << 16) |\
|
||||
(Array[Offset + 3] << 24)\
|
||||
))
|
||||
|
||||
#define GRID2102_FETCH16(Array, Offset) ((uint16_t)(\
|
||||
(Array[Offset] << 0) |\
|
||||
(Array[Offset + 1] << 8)\
|
||||
(Array[Offset] << 0) |\
|
||||
(Array[Offset + 1] << 8)\
|
||||
))
|
||||
|
||||
#define GRID2101_HARDDISK_DEV_ADDR 4
|
||||
@ -48,268 +48,268 @@ DEFINE_DEVICE_TYPE(GRID2101_HDD, grid2101_hdd_device, "grid2101_hdd", "GRID2101_
|
||||
#define GRID210X_STATE_WRITING_DATA_WAIT 3
|
||||
|
||||
uint8_t grid2102_device::identify_response[56] = {0x00, 0x02, 0xf8, 0x01, 0xD0, 0x02, 0x01, 0x20, 0x01, 0x21, 0x01, 0x01, 0x00, 0x00,
|
||||
0x34, 0x38, 0x20, 0x54, 0x50, 0x49, 0x20, 0x44, 0x53, 0x20, 0x44, 0x44, 0x20, 0x46,
|
||||
0x4c, 0x4f, 0x50, 0x50, 0x59, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x32, 0x33, 0x37,
|
||||
0x2d, 0x30, 0x30, 0x00, 0x02, 0x09, 0x00};
|
||||
0x34, 0x38, 0x20, 0x54, 0x50, 0x49, 0x20, 0x44, 0x53, 0x20, 0x44, 0x44, 0x20, 0x46,
|
||||
0x4c, 0x4f, 0x50, 0x50, 0x59, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x32, 0x33, 0x37,
|
||||
0x2d, 0x30, 0x30, 0x00, 0x02, 0x09, 0x00};
|
||||
|
||||
uint8_t grid2101_floppy_device::identify_response[56] = {0x00, 0x02, 0xf8, 0x01, 0xD0, 0x02, 0x01, 0x20, 0x01, 0x21, 0x01, 0x01, 0x00, 0x00,
|
||||
0x34, 0x38, 0x20, 0x54, 0x50, 0x49, 0x20, 0x44, 0x53, 0x20, 0x44, 0x44, 0x20, 0x46,
|
||||
0x4c, 0x4f, 0x50, 0x50, 0x59, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x32, 0x33, 0x37,
|
||||
0x2d, 0x30, 0x30, 0x00, 0x02, 0x09, 0x00};
|
||||
0x34, 0x38, 0x20, 0x54, 0x50, 0x49, 0x20, 0x44, 0x53, 0x20, 0x44, 0x44, 0x20, 0x46,
|
||||
0x4c, 0x4f, 0x50, 0x50, 0x59, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x32, 0x33, 0x37,
|
||||
0x2d, 0x30, 0x30, 0x00, 0x02, 0x09, 0x00};
|
||||
|
||||
uint8_t grid2101_hdd_device::identify_response[56] = {
|
||||
0x00, 0x02, 0xF8, 0x01, 0x8C, 0x51, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4D, 0x41,
|
||||
0x4D, 0x45, 0x20, 0x48, 0x41, 0x52, 0x44, 0x44, 0x49, 0x53, 0x4B, 0x20, 0x44, 0x52, 0x49, 0x56,
|
||||
0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x47, 0x52, 0x49, 0x44, 0x32, 0x31, 0x30, 0x31, 0x00, 0x02,
|
||||
0x11, 0x00, 0x33, 0x01, 0x00, 0x00, 0x04, 0x00
|
||||
0x00, 0x02, 0xF8, 0x01, 0x8C, 0x51, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4D, 0x41,
|
||||
0x4D, 0x45, 0x20, 0x48, 0x41, 0x52, 0x44, 0x44, 0x49, 0x53, 0x4B, 0x20, 0x44, 0x52, 0x49, 0x56,
|
||||
0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x47, 0x52, 0x49, 0x44, 0x32, 0x31, 0x30, 0x31, 0x00, 0x02,
|
||||
0x11, 0x00, 0x33, 0x01, 0x00, 0x00, 0x04, 0x00
|
||||
};
|
||||
|
||||
|
||||
grid210x_device::grid210x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int bus_addr, uint8_t *identify_response, attotime read_delay)
|
||||
: device_t(mconfig, type, tag, owner, clock),
|
||||
device_ieee488_interface(mconfig, *this),
|
||||
device_image_interface(mconfig, *this),
|
||||
m_gpib_loop_state(GRID210X_GPIB_STATE_IDLE),
|
||||
m_floppy_loop_state(GRID210X_STATE_IDLE),
|
||||
listening(false),
|
||||
talking(false),
|
||||
serial_polling(false),
|
||||
has_srq(false),
|
||||
serial_poll_byte(0),
|
||||
bus_addr(bus_addr),
|
||||
identify_response_ptr(identify_response),
|
||||
read_delay(read_delay)
|
||||
device_image_interface(mconfig, *this),
|
||||
m_gpib_loop_state(GRID210X_GPIB_STATE_IDLE),
|
||||
m_floppy_loop_state(GRID210X_STATE_IDLE),
|
||||
listening(false),
|
||||
talking(false),
|
||||
serial_polling(false),
|
||||
has_srq(false),
|
||||
serial_poll_byte(0),
|
||||
bus_addr(bus_addr),
|
||||
identify_response_ptr(identify_response),
|
||||
read_delay(read_delay)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
void grid210x_device::device_start() {
|
||||
m_bus->ndac_w(this, 1);
|
||||
m_bus->nrfd_w(this, 1);
|
||||
m_delay_timer = timer_alloc(0);
|
||||
m_bus->ndac_w(this, 1);
|
||||
m_bus->nrfd_w(this, 1);
|
||||
m_delay_timer = timer_alloc(0);
|
||||
}
|
||||
|
||||
void grid210x_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) {
|
||||
if (m_floppy_loop_state == GRID210X_STATE_READING_DATA) {
|
||||
std::unique_ptr<uint8_t[]> data(new uint8_t[io_size]);
|
||||
fseek(floppy_sector_number * 512, SEEK_SET);
|
||||
fread(data.get(), io_size);
|
||||
for (int i = 0; i < io_size; i++) {
|
||||
m_output_data_buffer.push(data[i]);
|
||||
}
|
||||
serial_poll_byte = 0x0F;
|
||||
has_srq = true;
|
||||
m_bus->srq_w(this, 0);
|
||||
m_floppy_loop_state = GRID210X_STATE_IDLE;
|
||||
} else if (m_floppy_loop_state == GRID210X_STATE_WRITING_DATA_WAIT) {
|
||||
// send an srq as success flag
|
||||
for (int i = 0; i < 7; i++) { // FIXME:
|
||||
m_output_data_buffer.push(0);
|
||||
}
|
||||
serial_poll_byte = 0x0F;
|
||||
has_srq = true;
|
||||
m_bus->srq_w(this, 0);
|
||||
m_floppy_loop_state = GRID210X_STATE_IDLE;
|
||||
}
|
||||
if (m_floppy_loop_state == GRID210X_STATE_READING_DATA) {
|
||||
std::unique_ptr<uint8_t[]> data(new uint8_t[io_size]);
|
||||
fseek(floppy_sector_number * 512, SEEK_SET);
|
||||
fread(data.get(), io_size);
|
||||
for (int i = 0; i < io_size; i++) {
|
||||
m_output_data_buffer.push(data[i]);
|
||||
}
|
||||
serial_poll_byte = 0x0F;
|
||||
has_srq = true;
|
||||
m_bus->srq_w(this, 0);
|
||||
m_floppy_loop_state = GRID210X_STATE_IDLE;
|
||||
} else if (m_floppy_loop_state == GRID210X_STATE_WRITING_DATA_WAIT) {
|
||||
// send an srq as success flag
|
||||
for (int i = 0; i < 7; i++) { // FIXME:
|
||||
m_output_data_buffer.push(0);
|
||||
}
|
||||
serial_poll_byte = 0x0F;
|
||||
has_srq = true;
|
||||
m_bus->srq_w(this, 0);
|
||||
m_floppy_loop_state = GRID210X_STATE_IDLE;
|
||||
}
|
||||
}
|
||||
|
||||
void grid210x_device::ieee488_eoi(int state) {
|
||||
// logerror("grid210x_device eoi state set to %d\n", state);
|
||||
// logerror("grid210x_device eoi state set to %d\n", state);
|
||||
}
|
||||
|
||||
void grid210x_device::accept_transfer() {
|
||||
if (m_floppy_loop_state == GRID210X_STATE_IDLE) {
|
||||
if (m_data_buffer.size() >= 0xA) {
|
||||
uint8_t command = m_data_buffer[0];
|
||||
uint32_t sector_number = GRID2102_FETCH32(m_data_buffer, 3);
|
||||
uint16_t data_size = GRID2102_FETCH16(m_data_buffer, 7);
|
||||
LOG("grid210x_device command %u, data size %u, sector no %u\n", (unsigned)command, (unsigned)data_size, (unsigned)sector_number);
|
||||
(void)(sector_number);
|
||||
if (command == 0x1) { // ddGetStatus
|
||||
for (int i = 0; i < 56 && i < data_size; i++) {
|
||||
m_output_data_buffer.push(identify_response_ptr[i]);
|
||||
}
|
||||
} else if (command == 0x4) { // ddRead
|
||||
floppy_sector_number = sector_number;
|
||||
io_size = data_size;
|
||||
m_floppy_loop_state = GRID210X_STATE_READING_DATA;
|
||||
m_delay_timer->adjust(read_delay);
|
||||
} else if (command == 0x5) {
|
||||
floppy_sector_number = sector_number;
|
||||
io_size = data_size;
|
||||
m_floppy_loop_state = GRID210X_STATE_WRITING_DATA;
|
||||
}
|
||||
} // else something is wrong, ignore
|
||||
} else if (m_floppy_loop_state == GRID210X_STATE_WRITING_DATA) {
|
||||
// write
|
||||
if (floppy_sector_number != 0xFFFFFFFF) {
|
||||
fseek(floppy_sector_number * 512, SEEK_SET);
|
||||
fwrite(m_data_buffer.data(), m_data_buffer.size());
|
||||
} else {
|
||||
// TODO: set status
|
||||
}
|
||||
// logerror("grid210x_device write sector %d\n", floppy_sector_number);
|
||||
// wait
|
||||
m_floppy_loop_state = GRID210X_STATE_WRITING_DATA_WAIT;
|
||||
m_delay_timer->adjust(read_delay);
|
||||
}
|
||||
if (m_floppy_loop_state == GRID210X_STATE_IDLE) {
|
||||
if (m_data_buffer.size() >= 0xA) {
|
||||
uint8_t command = m_data_buffer[0];
|
||||
uint32_t sector_number = GRID2102_FETCH32(m_data_buffer, 3);
|
||||
uint16_t data_size = GRID2102_FETCH16(m_data_buffer, 7);
|
||||
LOG("grid210x_device command %u, data size %u, sector no %u\n", (unsigned)command, (unsigned)data_size, (unsigned)sector_number);
|
||||
(void)(sector_number);
|
||||
if (command == 0x1) { // ddGetStatus
|
||||
for (int i = 0; i < 56 && i < data_size; i++) {
|
||||
m_output_data_buffer.push(identify_response_ptr[i]);
|
||||
}
|
||||
} else if (command == 0x4) { // ddRead
|
||||
floppy_sector_number = sector_number;
|
||||
io_size = data_size;
|
||||
m_floppy_loop_state = GRID210X_STATE_READING_DATA;
|
||||
m_delay_timer->adjust(read_delay);
|
||||
} else if (command == 0x5) {
|
||||
floppy_sector_number = sector_number;
|
||||
io_size = data_size;
|
||||
m_floppy_loop_state = GRID210X_STATE_WRITING_DATA;
|
||||
}
|
||||
} // else something is wrong, ignore
|
||||
} else if (m_floppy_loop_state == GRID210X_STATE_WRITING_DATA) {
|
||||
// write
|
||||
if (floppy_sector_number != 0xFFFFFFFF) {
|
||||
fseek(floppy_sector_number * 512, SEEK_SET);
|
||||
fwrite(m_data_buffer.data(), m_data_buffer.size());
|
||||
} else {
|
||||
// TODO: set status
|
||||
}
|
||||
// logerror("grid210x_device write sector %d\n", floppy_sector_number);
|
||||
// wait
|
||||
m_floppy_loop_state = GRID210X_STATE_WRITING_DATA_WAIT;
|
||||
m_delay_timer->adjust(read_delay);
|
||||
}
|
||||
}
|
||||
|
||||
void grid210x_device::ieee488_dav(int state) {
|
||||
if(state == 0 && m_gpib_loop_state == GRID210X_GPIB_STATE_IDLE) {
|
||||
// read data and wait for transfer end
|
||||
int atn = m_bus->atn_r() ^ 1;
|
||||
m_bus->nrfd_w(this, 0);
|
||||
uint8_t data = m_bus->dio_r() ^ 0xFF;
|
||||
int eoi = m_bus->eoi_r() ^ 1;
|
||||
LOG_BYTES("grid210x_device byte recv %02x atn %d eoi %d\n", data, atn, eoi);
|
||||
m_last_recv_byte = data;
|
||||
m_last_recv_atn = atn;
|
||||
m_last_recv_eoi = eoi;
|
||||
m_bus->ndac_w(this, 1);
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_WAIT_DAV_FALSE;
|
||||
} else if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_WAIT_DAV_FALSE) {
|
||||
// restore initial state
|
||||
// m_bus->ndac_w(this, 0);
|
||||
m_bus->nrfd_w(this, 1);
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_IDLE;
|
||||
update_ndac(m_bus->atn_r() ^ 1);
|
||||
if(state == 0 && m_gpib_loop_state == GRID210X_GPIB_STATE_IDLE) {
|
||||
// read data and wait for transfer end
|
||||
int atn = m_bus->atn_r() ^ 1;
|
||||
m_bus->nrfd_w(this, 0);
|
||||
uint8_t data = m_bus->dio_r() ^ 0xFF;
|
||||
int eoi = m_bus->eoi_r() ^ 1;
|
||||
LOG_BYTES("grid210x_device byte recv %02x atn %d eoi %d\n", data, atn, eoi);
|
||||
m_last_recv_byte = data;
|
||||
m_last_recv_atn = atn;
|
||||
m_last_recv_eoi = eoi;
|
||||
m_bus->ndac_w(this, 1);
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_WAIT_DAV_FALSE;
|
||||
} else if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_WAIT_DAV_FALSE) {
|
||||
// restore initial state
|
||||
// m_bus->ndac_w(this, 0);
|
||||
m_bus->nrfd_w(this, 1);
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_IDLE;
|
||||
update_ndac(m_bus->atn_r() ^ 1);
|
||||
|
||||
if (m_last_recv_atn) {
|
||||
if ((m_last_recv_byte & 0xE0) == 0x20) {
|
||||
if ((m_last_recv_byte & 0x1F) == bus_addr) {
|
||||
// dev-id = 5
|
||||
listening = true;
|
||||
LOG("grid210x_device now listening\n");
|
||||
} else if((m_last_recv_byte & 0x1F) == 0x1F) {
|
||||
// reset listen
|
||||
listening = false;
|
||||
LOG("grid210x_device now not listening\n");
|
||||
}
|
||||
} else if ((m_last_recv_byte & 0xE0) == 0x40) {
|
||||
if ((m_last_recv_byte & 0x1F) == bus_addr) {
|
||||
// dev-id = 5
|
||||
talking = true;
|
||||
LOG("grid210x_device now talking\n");
|
||||
} else {
|
||||
// reset talk
|
||||
talking = false;
|
||||
LOG("grid210x_device now not talking\n");
|
||||
}
|
||||
} else if (m_last_recv_byte == 0x18) {
|
||||
// serial poll enable
|
||||
serial_polling = true;
|
||||
} else if (m_last_recv_byte == 0x19) {
|
||||
// serial poll disable
|
||||
serial_polling = false;
|
||||
}
|
||||
} else if (listening) {
|
||||
m_data_buffer.push_back(m_last_recv_byte);
|
||||
if (m_last_recv_eoi) {
|
||||
accept_transfer();
|
||||
m_data_buffer.clear();
|
||||
}
|
||||
}
|
||||
if (m_last_recv_atn) {
|
||||
if ((m_last_recv_byte & 0xE0) == 0x20) {
|
||||
if ((m_last_recv_byte & 0x1F) == bus_addr) {
|
||||
// dev-id = 5
|
||||
listening = true;
|
||||
LOG("grid210x_device now listening\n");
|
||||
} else if((m_last_recv_byte & 0x1F) == 0x1F) {
|
||||
// reset listen
|
||||
listening = false;
|
||||
LOG("grid210x_device now not listening\n");
|
||||
}
|
||||
} else if ((m_last_recv_byte & 0xE0) == 0x40) {
|
||||
if ((m_last_recv_byte & 0x1F) == bus_addr) {
|
||||
// dev-id = 5
|
||||
talking = true;
|
||||
LOG("grid210x_device now talking\n");
|
||||
} else {
|
||||
// reset talk
|
||||
talking = false;
|
||||
LOG("grid210x_device now not talking\n");
|
||||
}
|
||||
} else if (m_last_recv_byte == 0x18) {
|
||||
// serial poll enable
|
||||
serial_polling = true;
|
||||
} else if (m_last_recv_byte == 0x19) {
|
||||
// serial poll disable
|
||||
serial_polling = false;
|
||||
}
|
||||
} else if (listening) {
|
||||
m_data_buffer.push_back(m_last_recv_byte);
|
||||
if (m_last_recv_eoi) {
|
||||
accept_transfer();
|
||||
m_data_buffer.clear();
|
||||
}
|
||||
}
|
||||
|
||||
if (talking) {
|
||||
if (serial_polling) {
|
||||
bool had_srq = has_srq;
|
||||
if (has_srq) {
|
||||
has_srq = false;
|
||||
m_bus->srq_w(this, 1);
|
||||
}
|
||||
m_byte_to_send = serial_poll_byte | (had_srq ? 0x40 : 0);
|
||||
serial_poll_byte = 0;
|
||||
m_send_eoi = 1;
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||
} else if (!m_output_data_buffer.empty()) {
|
||||
m_byte_to_send = m_output_data_buffer.front();
|
||||
m_output_data_buffer.pop();
|
||||
m_send_eoi = m_output_data_buffer.empty() ? 1 : 0;
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (talking) {
|
||||
if (serial_polling) {
|
||||
bool had_srq = has_srq;
|
||||
if (has_srq) {
|
||||
has_srq = false;
|
||||
m_bus->srq_w(this, 1);
|
||||
}
|
||||
m_byte_to_send = serial_poll_byte | (had_srq ? 0x40 : 0);
|
||||
serial_poll_byte = 0;
|
||||
m_send_eoi = 1;
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||
} else if (!m_output_data_buffer.empty()) {
|
||||
m_byte_to_send = m_output_data_buffer.front();
|
||||
m_output_data_buffer.pop();
|
||||
m_send_eoi = m_output_data_buffer.empty() ? 1 : 0;
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void grid210x_device::ieee488_nrfd(int state) {
|
||||
if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_SEND_DATA_START) {
|
||||
// set dio and assert dav
|
||||
m_bus->host_dio_w(m_byte_to_send ^ 0xFF);
|
||||
m_bus->eoi_w(this, m_send_eoi ^ 1);
|
||||
m_bus->dav_w(this, 0);
|
||||
m_bus->ndac_w(this, 1);
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_WAIT_NDAC_FALSE;
|
||||
LOG_BYTES("grid210x_device byte send %02x eoi %d\n", m_byte_to_send, m_send_eoi);
|
||||
ieee488_ndac(m_bus->ndac_r());
|
||||
}
|
||||
// logerror("grid210x_device nrfd state set to %d\n", state);
|
||||
if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_SEND_DATA_START) {
|
||||
// set dio and assert dav
|
||||
m_bus->host_dio_w(m_byte_to_send ^ 0xFF);
|
||||
m_bus->eoi_w(this, m_send_eoi ^ 1);
|
||||
m_bus->dav_w(this, 0);
|
||||
m_bus->ndac_w(this, 1);
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_WAIT_NDAC_FALSE;
|
||||
LOG_BYTES("grid210x_device byte send %02x eoi %d\n", m_byte_to_send, m_send_eoi);
|
||||
ieee488_ndac(m_bus->ndac_r());
|
||||
}
|
||||
// logerror("grid210x_device nrfd state set to %d\n", state);
|
||||
}
|
||||
|
||||
void grid210x_device::ieee488_ndac(int state) {
|
||||
if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_WAIT_NDAC_FALSE) {
|
||||
// restore initial state
|
||||
// logerror("grid210x_device restore ndac nrfd dav eoi\n");
|
||||
m_bus->nrfd_w(this, 1);
|
||||
m_bus->dav_w(this, 1);
|
||||
m_bus->eoi_w(this, 1);
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_IDLE;
|
||||
if (serial_polling) {
|
||||
talking = false;
|
||||
}
|
||||
update_ndac(m_bus->atn_r() ^ 1);
|
||||
if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_WAIT_NDAC_FALSE) {
|
||||
// restore initial state
|
||||
// logerror("grid210x_device restore ndac nrfd dav eoi\n");
|
||||
m_bus->nrfd_w(this, 1);
|
||||
m_bus->dav_w(this, 1);
|
||||
m_bus->eoi_w(this, 1);
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_IDLE;
|
||||
if (serial_polling) {
|
||||
talking = false;
|
||||
}
|
||||
update_ndac(m_bus->atn_r() ^ 1);
|
||||
|
||||
if (!serial_polling && talking && !m_output_data_buffer.empty()) {
|
||||
m_byte_to_send = m_output_data_buffer.front();
|
||||
m_output_data_buffer.pop();
|
||||
m_send_eoi = m_output_data_buffer.empty() ? 1 : 0;
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||
}
|
||||
}
|
||||
// logerror("grid210x_device ndac state set to %d\n", state);
|
||||
if (!serial_polling && talking && !m_output_data_buffer.empty()) {
|
||||
m_byte_to_send = m_output_data_buffer.front();
|
||||
m_output_data_buffer.pop();
|
||||
m_send_eoi = m_output_data_buffer.empty() ? 1 : 0;
|
||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||
}
|
||||
}
|
||||
// logerror("grid210x_device ndac state set to %d\n", state);
|
||||
}
|
||||
|
||||
void grid210x_device::ieee488_ifc(int state) {
|
||||
// logerror("grid210x_device ifc state set to %d\n", state);
|
||||
// logerror("grid210x_device ifc state set to %d\n", state);
|
||||
}
|
||||
|
||||
void grid210x_device::ieee488_srq(int state) {
|
||||
// logerror("grid210x_device srq state set to %d\n", state);
|
||||
// logerror("grid210x_device srq state set to %d\n", state);
|
||||
}
|
||||
|
||||
void grid210x_device::ieee488_atn(int state) {
|
||||
// logerror("grid210x_device atn state set to %d\n", state);
|
||||
update_ndac(state ^ 1);
|
||||
// logerror("grid210x_device atn state set to %d\n", state);
|
||||
update_ndac(state ^ 1);
|
||||
}
|
||||
|
||||
void grid210x_device::update_ndac(int atn) {
|
||||
if (m_gpib_loop_state == GRID210X_GPIB_STATE_IDLE) {
|
||||
if (atn) {
|
||||
// pull NDAC low
|
||||
m_bus->ndac_w(this, 0);
|
||||
} else {
|
||||
// pull NDAC high if not listener and low if listener
|
||||
m_bus->ndac_w(this, listening ? 0 : 1);
|
||||
}
|
||||
}
|
||||
if (m_gpib_loop_state == GRID210X_GPIB_STATE_IDLE) {
|
||||
if (atn) {
|
||||
// pull NDAC low
|
||||
m_bus->ndac_w(this, 0);
|
||||
} else {
|
||||
// pull NDAC high if not listener and low if listener
|
||||
m_bus->ndac_w(this, listening ? 0 : 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void grid210x_device::ieee488_ren(int state) {
|
||||
LOG("grid210x_device ren state set to %d\n", state);
|
||||
LOG("grid210x_device ren state set to %d\n", state);
|
||||
}
|
||||
|
||||
grid2101_hdd_device::grid2101_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: grid210x_device(mconfig, GRID2101_HDD, tag, owner, clock, 4, identify_response, attotime::from_usec(150))
|
||||
: grid210x_device(mconfig, GRID2101_HDD, tag, owner, clock, 4, identify_response, attotime::from_usec(150))
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
grid2101_floppy_device::grid2101_floppy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : grid210x_device(mconfig, GRID2101_FLOPPY, tag, owner, clock, 5, identify_response)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
grid2102_device::grid2102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : grid210x_device(mconfig, GRID2102, tag, owner, clock, 6, identify_response)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
// copyright-holders:Sergey Svishchev
|
||||
/***************************************************************************
|
||||
|
||||
DEC PC11 paper tape reader and punch controller (punch not implemented)
|
||||
DEC PC11 paper tape reader and punch controller (punch not implemented)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// copyright-holders:Sergey Svishchev
|
||||
/***************************************************************************
|
||||
|
||||
DEC PC11 paper tape reader and punch controller (punch not implemented)
|
||||
DEC PC11 paper tape reader and punch controller (punch not implemented)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -54,7 +54,7 @@ private:
|
||||
|
||||
class qbus_device : public device_t,
|
||||
public device_memory_interface,
|
||||
public device_z80daisy_interface
|
||||
public device_z80daisy_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -84,7 +84,7 @@
|
||||
V2: D7 BDI ROM_latch (0=enable, 1=disble), D4 - FDC HLT, D3 - SIDE, D0-2 - floppy drive select (bitmask, active low).
|
||||
V3-V4: D7 BDI ROM_latch (0=enable, 1=disble), D6 - FDC DDEN, D4 - SIDE, D3 - FDC HLT, D2 - FDC /MR (reset), D0-1 - floppy drive select (binary value).
|
||||
CBI clones: D5 - printer port /STROBE
|
||||
IO read port 0b1xxxx111 <- D7 - FDC INTRQ, D6 - FDC DRQ
|
||||
IO read port 0b1xxxx111 <- D7 - FDC INTRQ, D6 - FDC DRQ
|
||||
IO read/write ports 0b0YYxx111 - access FDC ports YY
|
||||
|
||||
So mostly the same as beta128, except for new BDI ROM_latch bit
|
||||
|
@ -11,7 +11,7 @@
|
||||
is moved from 3cxx to 3dxx for example)
|
||||
|
||||
TODO:
|
||||
original ROMs should have bits 0 and 7 swapped
|
||||
original ROMs should have bits 0 and 7 swapped
|
||||
|
||||
there were many unofficial ROMs available for this, make them
|
||||
available for use.
|
||||
|
@ -2,8 +2,8 @@
|
||||
// copyright-holders:MetalliC
|
||||
/**********************************************************************
|
||||
|
||||
Didaktik D40/D80 disk interface
|
||||
(C) 1991 Didaktik Scalica
|
||||
Didaktik D40/D80 disk interface
|
||||
(C) 1991 Didaktik Scalica
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -75,7 +75,7 @@ const i960_disassembler::mnemonic_t i960_disassembler::mnem_reg[197] =
|
||||
{ "notbit", 0x580, -3 }, { "and", 0x581, -3 }, { "andnot", 0x582, -3 }, { "setbit", 0x583, -3 }, // 58
|
||||
{ "notand", 0x584, -3 }, { "xor", 0x586, -3 }, { "or", 0x587, -3 },
|
||||
{ "nor", 0x588, -3 }, { "xnor", 0x589, -3 }, { "not", 0x58a, -2 }, { "ornot", 0x58b, -3 },
|
||||
{ "clrbit", 0x58c, -3 }, { "notor", 0x58d, -3 }, { "nand", 0x58e, -3 }, { "alterbit", 0x58f, -3 },
|
||||
{ "clrbit", 0x58c, -3 }, { "notor", 0x58d, -3 }, { "nand", 0x58e, -3 }, { "alterbit", 0x58f, -3 },
|
||||
|
||||
{ "addo", 0x590, -3 }, { "addi", 0x591, -3 }, { "subo", 0x592, -3 }, { "subi", 0x593, -3 }, // 59
|
||||
{ "cmpob", 0x594, 2 }, { "cmpib", 0x595, 2 }, { "cmpos", 0x596, 2 }, { "cmpis", 0x597, 2 },
|
||||
@ -133,7 +133,7 @@ const i960_disassembler::mnemonic_t i960_disassembler::mnem_reg[197] =
|
||||
|
||||
{ "cvtri", 0x6c0, -20 }, { "cvtril", 0x6c1, -20 }, { "cvtzri", 0x6c2, -20 }, { "cvtzril", 0x6c3, -20 }, // 6c
|
||||
{ "movr", 0x6c9, -20 },
|
||||
|
||||
|
||||
{ "movrl", 0x6d9, -20 }, // 6d
|
||||
|
||||
{ "movre", 0x6e1, -20 }, { "cpysre", 0x6e2, -30 }, { "cpyrsre", 0x6e3, -30 }, // 6e
|
||||
@ -241,7 +241,7 @@ offs_t i960_disassembler::dis_decode_cobr(std::ostream &stream, u32 iCode, u32 i
|
||||
switch(cnt)
|
||||
{
|
||||
case 1: // 1 operand (test*)
|
||||
// For the test-if instructions, only the srcl field is used. Here, this field specifies a destination global or local register (ml is ignored).
|
||||
// For the test-if instructions, only the srcl field is used. Here, this field specifies a destination global or local register (ml is ignored).
|
||||
util::stream_format(stream, "%-8s%s", mnemonic[op].mnem, regnames[src1]);
|
||||
break;
|
||||
case 3: // 3 operands
|
||||
|
@ -11,8 +11,8 @@
|
||||
Currently implementation is similar to single stepping
|
||||
with single cycle
|
||||
- Implement and acknowlodge remain registers;
|
||||
- Improve delay slot display in debugger (highlight current instruction
|
||||
doesn't work but instruction hook does);
|
||||
- Improve delay slot display in debugger (highlight current instruction
|
||||
doesn't work but instruction hook does);
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -265,7 +265,7 @@ void jaguar_cpu_device::check_irqs()
|
||||
latch &= mask;
|
||||
if (latch == 0)
|
||||
return;
|
||||
|
||||
|
||||
/* determine which interrupt */
|
||||
for (int i = 0; i < 6; i++)
|
||||
if (latch & (1 << i))
|
||||
@ -371,7 +371,7 @@ void jaguar_cpu_device::device_start()
|
||||
save_item(NAME(m_imask));
|
||||
save_item(NAME(m_div_remainder));
|
||||
save_item(NAME(m_div_offset));
|
||||
|
||||
|
||||
save_item(NAME(m_io_end));
|
||||
save_item(NAME(m_io_pc));
|
||||
save_item(NAME(m_io_status));
|
||||
@ -1292,10 +1292,10 @@ void jaguar_cpu_device::io_common_map(address_map &map)
|
||||
map(0x00, 0x03).rw(FUNC(jaguar_cpu_device::flags_r), FUNC(jaguar_cpu_device::flags_w));
|
||||
map(0x04, 0x07).w(FUNC(jaguar_cpu_device::matrix_control_w));
|
||||
map(0x08, 0x0b).w(FUNC(jaguar_cpu_device::matrix_address_w));
|
||||
// map(0x0c, 0x0f) endian
|
||||
// map(0x0c, 0x0f) endian
|
||||
map(0x10, 0x13).w(FUNC(jaguar_cpu_device::pc_w));
|
||||
map(0x14, 0x17).rw(FUNC(jaguar_cpu_device::status_r), FUNC(jaguar_cpu_device::control_w));
|
||||
// map(0x18, 0x1b) implementation specific
|
||||
// map(0x18, 0x1b) implementation specific
|
||||
map(0x1c, 0x1f).rw(FUNC(jaguar_cpu_device::div_remainder_r), FUNC(jaguar_cpu_device::div_control_w));
|
||||
}
|
||||
|
||||
@ -1327,11 +1327,11 @@ void jaguar_cpu_device::flags_w(offs_t offset, u32 data, u32 mem_mask)
|
||||
// clear imask only on bit 3 clear (1 has no effect)
|
||||
if ((m_flags & 0x08) == 0)
|
||||
m_imask = false;
|
||||
|
||||
|
||||
// update int latch & mask
|
||||
m_int_mask = (m_flags >> 4) & 0x1f;
|
||||
m_int_latch &= ~((m_flags >> 9) & 0x1f);
|
||||
|
||||
|
||||
// TODO: move to specific handler
|
||||
if (m_isdsp)
|
||||
{
|
||||
@ -1370,11 +1370,11 @@ void jaguar_cpu_device::pc_w(offs_t offset, u32 data, u32 mem_mask)
|
||||
|
||||
/*
|
||||
* Data Organization Register
|
||||
* Note: The canonical way to set this up from 68k is $00070007,
|
||||
* Note: The canonical way to set this up from 68k is $00070007,
|
||||
* so that Power-On endianness doesn't matter. 1=Big Endian
|
||||
* ---- -x-- Instruction endianness
|
||||
* ---- --x- Pixel endianness (GPU only)
|
||||
* ---- ---x I/O endianness
|
||||
* ---- ---x I/O endianness
|
||||
*/
|
||||
// TODO: just log if anything farts for now, change to bit struct once we have something to test out
|
||||
void jaguar_cpu_device::end_w(offs_t offset, u32 data, u32 mem_mask)
|
||||
@ -1400,7 +1400,7 @@ void jaguardsp_cpu_device::dsp_end_w(offs_t offset, u32 data, u32 mem_mask)
|
||||
* y ---- -xxx xx-- ---- interrupt latch (y is DSP specific) (r/o)
|
||||
* - ---- ---- --0- ---- <unused>
|
||||
* - ---- ---- ---x x--- single step regs
|
||||
* - ---- ---- ---- -x-- GPUINT0 or DSPINT0
|
||||
* - ---- ---- ---- -x-- GPUINT0 or DSPINT0
|
||||
* - ---- ---- ---- --x- Host interrupt (w/o)
|
||||
* - ---- ---- ---- ---x GPUGO or DSPGO flag
|
||||
*
|
||||
@ -1428,19 +1428,19 @@ void jaguar_cpu_device::control_w(offs_t offset, u32 data, u32 mem_mask)
|
||||
bool new_go = BIT(m_io_status, 0);
|
||||
if (new_go != m_go)
|
||||
go_w(new_go);
|
||||
|
||||
|
||||
if (BIT(m_io_status, 1))
|
||||
m_cpu_interrupt(ASSERT_LINE);
|
||||
|
||||
|
||||
// TODO: following does nothing if set by itself, or acts as a trap?
|
||||
if (BIT(m_io_status, 2))
|
||||
{
|
||||
m_int_latch |= 1;
|
||||
check_irqs();
|
||||
}
|
||||
|
||||
|
||||
// TODO: single step handling
|
||||
|
||||
|
||||
m_bus_hog = BIT(m_io_status, 11);
|
||||
// TODO: protect/protectse uses this, why?
|
||||
if (m_bus_hog == true)
|
||||
|
@ -82,7 +82,7 @@ protected:
|
||||
|
||||
// device_state_interface overrides
|
||||
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
|
||||
|
||||
|
||||
// I/Os (common)
|
||||
u32 flags_r();
|
||||
void flags_w(offs_t offset, u32 data, u32 mem_mask = ~0);
|
||||
@ -243,7 +243,7 @@ protected:
|
||||
u32 m_io_status;
|
||||
u32 m_io_mtxc;
|
||||
u32 m_io_mtxa;
|
||||
|
||||
|
||||
u32 m_pc;
|
||||
u32 m_flags;
|
||||
bool m_imask;
|
||||
@ -256,7 +256,7 @@ protected:
|
||||
bool m_bus_hog;
|
||||
u32 m_div_remainder;
|
||||
bool m_div_offset;
|
||||
|
||||
|
||||
// GPU specific
|
||||
u32 m_hidata;
|
||||
static const op_func gpu_op_table[64];
|
||||
|
@ -43,7 +43,7 @@ void m6502_device::device_start()
|
||||
}
|
||||
|
||||
void m6502_device::init()
|
||||
{
|
||||
{
|
||||
space(AS_PROGRAM).cache(mintf->cprogram);
|
||||
space(has_space(AS_OPCODES) ? AS_OPCODES : AS_PROGRAM).cache(mintf->csprogram);
|
||||
if(space(AS_PROGRAM).addr_width() > 14)
|
||||
|
@ -6,16 +6,16 @@
|
||||
AMD Am2901B / Am2901C
|
||||
Four-Bit Bipolar Microprocessor Slice
|
||||
|
||||
To Do:
|
||||
- Opcode hookup
|
||||
- Verification
|
||||
To Do:
|
||||
- Opcode hookup
|
||||
- Verification
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "am2901b.h"
|
||||
|
||||
#define VERBOSE (1)
|
||||
#define VERBOSE (1)
|
||||
#include "logmacro.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -225,4 +225,4 @@ void am2901b_device::disassemble()
|
||||
snprintf(dasm_buf + buf_idx, ARRAY_LENGTH(dasm_buf) - 12, "%c,%c", s_r_table[m_i & 7], s_s_table[m_i & 7]);
|
||||
|
||||
LOG("%s: %s\n", machine().describe_context(), dasm_buf);
|
||||
}
|
||||
}
|
||||
|
@ -212,10 +212,10 @@ void sunplus_gcm394_base_device::trigger_systemm_dma(int channel)
|
||||
|
||||
// what is it waiting for when we need these? (needed on some service mode screens)
|
||||
//if (mem.read_word(0x3f368) == 0x4840)
|
||||
// mem.write_word(0x3f368, 0x4841); // cars 2 IRQ? wait hack
|
||||
// mem.write_word(0x3f368, 0x4841); // cars 2 IRQ? wait hack
|
||||
|
||||
//if (mem.read_word(0x4d8d4) == 0x4840)
|
||||
// mem.write_word(0x4d8d4, 0x4841); // golden tee IRQ? wait hack
|
||||
// mem.write_word(0x4d8d4, 0x4841); // golden tee IRQ? wait hack
|
||||
|
||||
|
||||
// clear params after operation
|
||||
|
@ -373,7 +373,7 @@ uint32_t gcm394_base_video_device::screen_update(screen_device &screen, bitmap_r
|
||||
}
|
||||
|
||||
//const uint16_t bgcol = 0x7c1f; // magenta
|
||||
// const uint16_t bgcol = 0x0000; // black
|
||||
// const uint16_t bgcol = 0x0000; // black
|
||||
bool highres;
|
||||
if (m_707f & 0x0010)
|
||||
{
|
||||
@ -390,7 +390,7 @@ uint32_t gcm394_base_video_device::screen_update(screen_device &screen, bitmap_r
|
||||
|
||||
|
||||
const uint32_t sprites_addr = (m_sprite_702d_gfxbase_msb << 16) | m_sprite_7022_gfxbase_lsb;
|
||||
|
||||
|
||||
for (uint32_t scanline = (uint32_t)cliprect.min_y; scanline <= (uint32_t)cliprect.max_y; scanline++)
|
||||
{
|
||||
m_renderer->new_line(cliprect);
|
||||
@ -1054,7 +1054,7 @@ void gcm394_base_video_device::palette_w(offs_t offset, uint16_t data)
|
||||
{
|
||||
offset |= (m_703a_palettebank & 0x000c) << 6;
|
||||
m_paletteram[offset] = data;
|
||||
|
||||
|
||||
// for debug
|
||||
m_palette->set_pen_color(offset, rgb_t(
|
||||
(((data >> 10) & 0x1f)<<3),
|
||||
|
@ -81,8 +81,8 @@ void i80130_device::io_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
||||
//-------------------------------------------------
|
||||
|
||||
//ROM_START( i80130 )
|
||||
// ROM_REGION16_LE( 0x4000, "rom", 0 )
|
||||
// ROM_LOAD( "80130", 0x0000, 0x4000, NO_DUMP )
|
||||
// ROM_REGION16_LE( 0x4000, "rom", 0 )
|
||||
// ROM_LOAD( "80130", 0x0000, 0x4000, NO_DUMP )
|
||||
//ROM_END
|
||||
|
||||
|
||||
@ -92,7 +92,7 @@ void i80130_device::io_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
||||
|
||||
//const tiny_rom_entry *i80130_device::device_rom_region() const
|
||||
//{
|
||||
// return ROM_NAME( i80130 );
|
||||
// return ROM_NAME( i80130 );
|
||||
//}
|
||||
|
||||
|
||||
|
@ -367,7 +367,7 @@ void iwm_device::sync()
|
||||
break;
|
||||
}
|
||||
m_rsh = (m_rsh << 1) | (m_rw_state == SR_WINDOW_EDGE_1 ? 1 : 0);
|
||||
m_next_state_change = m_last_sync = endw;
|
||||
m_next_state_change = m_last_sync = endw;
|
||||
m_rw_state = SR_WINDOW_EDGE_0;
|
||||
if(is_sync()) {
|
||||
if(m_rsh >= 0x80) {
|
||||
|
@ -34,7 +34,7 @@
|
||||
#define LOG_DEBUG (1U << 2)
|
||||
|
||||
//#define LOG_MASK (LOG_GENERAL | LOG_DEV_CALLS | LOG_DEBUG)
|
||||
#define LOG_MASK (0)
|
||||
#define LOG_MASK (0)
|
||||
|
||||
#define LOGDEVCALLS(...) LOGMASKED(LOG_DEV_CALLS, __VA_ARGS__)
|
||||
#define LOGDEBUG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
|
||||
@ -870,7 +870,7 @@ void netlist_mame_stream_output_device::process(netlist::netlist_time_ext tim, n
|
||||
|
||||
int pos = (tim - m_last_buffer_time) / m_sample_time;
|
||||
//if (pos > m_bufsize)
|
||||
// throw emu_fatalerror("sound %s: pos %d exceeded bufsize %d\n", name().c_str(), pos, m_bufsize);
|
||||
// throw emu_fatalerror("sound %s: pos %d exceeded bufsize %d\n", name().c_str(), pos, m_bufsize);
|
||||
while (m_buffer.size() < pos )
|
||||
{
|
||||
m_buffer.push_back(static_cast<stream_sample_t>(m_cur));
|
||||
@ -1375,7 +1375,7 @@ void netlist_mame_sound_device::device_start()
|
||||
void netlist_mame_sound_device::nl_register_devices(netlist::nlparse_t &parser) const
|
||||
{
|
||||
//parser.factory().add<nld_sound_out>("NETDEV_SOUND_OUT",
|
||||
// netlist::factory::properties("+CHAN", PSOURCELOC()));
|
||||
// netlist::factory::properties("+CHAN", PSOURCELOC()));
|
||||
parser.factory().add<nld_sound_in>("NETDEV_SOUND_IN",
|
||||
netlist::factory::properties("-", PSOURCELOC()));
|
||||
}
|
||||
|
@ -3086,7 +3086,7 @@ void S3C24_CLASS_NAME::s3c24xx_nand_w(offs_t offset, uint32_t data, uint32_t mem
|
||||
}
|
||||
}
|
||||
|
||||
ATTR_UNUSED WRITE_LINE_MEMBER( S3C24_CLASS_NAME::s3c24xx_pin_frnb_w )
|
||||
ATTR_UNUSED WRITE_LINE_MEMBER( S3C24_CLASS_NAME::s3c24xx_pin_frnb_w )
|
||||
{
|
||||
LOGMASKED(LOG_FLASH, "s3c24xx_pin_frnb_w (%d)\n", state);
|
||||
#if defined(DEVICE_S3C2440)
|
||||
|
@ -32,7 +32,7 @@ TODO:
|
||||
#define LOG_MMU (1 << 5)
|
||||
#define LOG_IRQS (1 << 6)
|
||||
#define LOG_UNKNOWN (1 << 7)
|
||||
#define LOG_MORE_UART (1 << 8)
|
||||
#define LOG_MORE_UART (1 << 8)
|
||||
#define LOG_ALL (LOG_I2C | LOG_UART | LOG_TIMERS | LOG_DMA | LOG_MMU | LOG_IRQS | LOG_UNKNOWN)
|
||||
|
||||
#define VERBOSE (0)
|
||||
|
@ -27,7 +27,7 @@ DEFINE_DEVICE_TYPE(SPG28X_IO, spg28x_io_device, "spg28x_io", "SPG280-series Syst
|
||||
#define LOG_EXT_MEM (1U << 27)
|
||||
#define LOG_EXTINT (1U << 28)
|
||||
#define LOG_SPI (1U << 29)
|
||||
#define LOG_ADC (1U << 30)
|
||||
#define LOG_ADC (1U << 30)
|
||||
#define LOG_IO (LOG_IO_READS | LOG_IO_WRITES | LOG_IRQS | LOG_GPIO | LOG_UART | LOG_I2C | LOG_TIMERS | LOG_EXTINT | LOG_UNKNOWN_IO | LOG_SPI | LOG_ADC)
|
||||
#define LOG_ALL (LOG_IO | LOG_VLINES | LOG_SEGMENT | LOG_WATCHDOG | LOG_FIQ | LOG_SIO | LOG_EXT_MEM | LOG_ADC)
|
||||
|
||||
@ -1655,7 +1655,7 @@ void spg2xx_io_device::check_irqs(const uint16_t changed)
|
||||
if (changed & 0x0c00) // Timer A, Timer B IRQ
|
||||
{
|
||||
LOGMASKED(LOG_TIMERS, "%ssserting IRQ2 (%04x, %04x)\n", (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0c00) ? "A" : "Dea", (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0c00), changed);
|
||||
|
||||
|
||||
if (m_timer_irq_cb)
|
||||
m_timer_irq_cb((IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0c00) ? ASSERT_LINE : CLEAR_LINE);
|
||||
else
|
||||
@ -1693,7 +1693,7 @@ void spg2xx_io_device::check_irqs(const uint16_t changed)
|
||||
if (changed & 0x008b) // TMB1, TMB2, 4Hz, key change IRQ
|
||||
{
|
||||
LOGMASKED(LOG_IRQS, "%ssserting IRQ7 (%04x, %04x)\n", (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x008b) ? "A" : "Dea", (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x008b), changed);
|
||||
if (m_ffreq_tmr2_irq_cb)
|
||||
if (m_ffreq_tmr2_irq_cb)
|
||||
m_ffreq_tmr2_irq_cb((IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x008b) ? ASSERT_LINE : CLEAR_LINE);
|
||||
else
|
||||
logerror("spg2xx_io_device::check_irqs, attempted to use m_ffreq_tmr2_irq_cb without setting it\n");
|
||||
|
@ -104,7 +104,7 @@ uint32_t spg2xx_video_device::screen_update(screen_device &screen, bitmap_rgb32
|
||||
const uint32_t page1_addr = 0x40 * m_video_regs[0x20];
|
||||
const uint32_t page2_addr = 0x40 * m_video_regs[0x21];
|
||||
const uint32_t sprite_addr = 0x40 * m_video_regs[0x22];
|
||||
|
||||
|
||||
uint16_t *page1_scroll = m_video_regs + 0x10;
|
||||
uint16_t *page2_scroll = m_video_regs + 0x16;
|
||||
uint16_t *page1_regs = m_video_regs + 0x12;
|
||||
|
@ -60,7 +60,7 @@ void spg_renderer_device::device_reset()
|
||||
m_video_regs_1e = 0x0000;
|
||||
|
||||
m_video_regs_2a = 0x0000;
|
||||
|
||||
|
||||
m_video_regs_30 = 0x0000;
|
||||
m_video_regs_3c = 0x0020;
|
||||
|
||||
@ -140,8 +140,8 @@ void spg_renderer_device::draw_tilestrip(bool read_from_csspace, uint32_t screen
|
||||
{
|
||||
|
||||
m_linebuf[realdrawpos] = (mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 10) & 0x1f, (rgb >> 10) & 0x1f, blendlevel) << 10) |
|
||||
(mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 5) & 0x1f, (rgb >> 5) & 0x1f, blendlevel) << 5) |
|
||||
(mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 0) & 0x1f, (rgb >> 0) & 0x1f, blendlevel) << 0);
|
||||
(mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 5) & 0x1f, (rgb >> 5) & 0x1f, blendlevel) << 5) |
|
||||
(mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 0) & 0x1f, (rgb >> 0) & 0x1f, blendlevel) << 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -158,7 +158,7 @@ void spg_renderer_device::draw_linemap(bool has_extended_tilemaps, const rectang
|
||||
if (has_extended_tilemaps)
|
||||
{
|
||||
uint32_t ctrl = tilemapregs[1];
|
||||
|
||||
|
||||
if (0)
|
||||
{
|
||||
if (ctrl & 0x0010)
|
||||
@ -350,7 +350,7 @@ void spg_renderer_device::update_vcmp_table()
|
||||
{
|
||||
m_ycmp_table[i] = currentline;
|
||||
}
|
||||
|
||||
|
||||
counter += current_inc_value;
|
||||
|
||||
while (counter >= (0x20<<4))
|
||||
@ -417,7 +417,7 @@ void spg_renderer_device::draw_page(bool read_from_csspace, bool has_extended_ti
|
||||
{
|
||||
// used by senspeed
|
||||
//if (m_video_regs_1e != 0x0000)
|
||||
// popmessage("vertical compression mode with non-0 step amount %04x offset %04x step %04x\n", m_video_regs_1c, m_video_regs_1d, m_video_regs_1e);
|
||||
// popmessage("vertical compression mode with non-0 step amount %04x offset %04x step %04x\n", m_video_regs_1c, m_video_regs_1d, m_video_regs_1e);
|
||||
|
||||
logical_scanline = m_ycmp_table[scanline];
|
||||
if (logical_scanline == 0xffffffff)
|
||||
@ -428,7 +428,7 @@ void spg_renderer_device::draw_page(bool read_from_csspace, bool has_extended_ti
|
||||
uint32_t y_mask;
|
||||
uint32_t screenwidth;
|
||||
|
||||
|
||||
|
||||
if (read_from_csspace && (attr & 0x8000)) // is this only available in high res mode, or always?
|
||||
{
|
||||
// just a guess based on this being set on the higher resolution tilemaps we've seen, could be 100% incorrect register
|
||||
@ -617,7 +617,7 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
||||
|
||||
|
||||
uint32_t screenwidth = 320;
|
||||
// uint32_t screenheight = 240;
|
||||
// uint32_t screenheight = 240;
|
||||
uint32_t screenheight = 256;
|
||||
uint32_t xmask = 0x1ff;
|
||||
uint32_t ymask = 0x1ff;
|
||||
@ -625,7 +625,7 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
||||
if (highres)
|
||||
{
|
||||
screenwidth = 640;
|
||||
// screenheight = 480;
|
||||
// screenheight = 480;
|
||||
screenheight = 512;
|
||||
xmask = 0x3ff;
|
||||
ymask = 0x3ff;
|
||||
@ -637,7 +637,7 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
||||
if (!(m_video_regs_42 & 0x0002))
|
||||
{
|
||||
x = ((screenwidth/2) + x) - tile_w / 2;
|
||||
// y = ((screenheight/2) - y) - (tile_h / 2) + 8;
|
||||
// y = ((screenheight/2) - y) - (tile_h / 2) + 8;
|
||||
y = ((screenheight/2) - y) - (tile_h / 2);
|
||||
}
|
||||
|
||||
@ -656,7 +656,7 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
||||
uint8_t blendlevel = (m_video_regs_2a & 3) << 3;
|
||||
|
||||
uint32_t words_per_tile;
|
||||
|
||||
|
||||
// good for gormiti, smartfp, wrlshunt, paccon, jak_totm, jak_s500, jak_gtg
|
||||
if (has_extended_sprites && ((m_video_regs_42 & 0x0010) == 0x10))
|
||||
{
|
||||
@ -682,7 +682,7 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
||||
|
||||
|
||||
bool flip_y = (attr & 0x0008);
|
||||
|
||||
|
||||
// various games don't want the flip bits in the usual place, wrlshunt for example, there's probably a bit to control this
|
||||
// and likewise these bits probably now have a different meaning, so this shouldn't be trusted
|
||||
if (has_extended_sprites)
|
||||
@ -693,9 +693,9 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
||||
flip_y = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uint32_t palette_offset = (attr & 0x0f00) >> 4;
|
||||
|
||||
|
||||
if (has_extended_sprites)
|
||||
{
|
||||
// guess, tkmag220 / myac220 don't set this bit and expect all sprite palettes to be from the same bank as background palettes
|
||||
|
@ -78,9 +78,9 @@ protected:
|
||||
inline void draw_tilestrip(bool read_from_csspace, uint32_t screenwidth, uint32_t drawwidthmask, spg_renderer_device::blend_enable_t blend, spg_renderer_device::flipx_t flip_x, const rectangle& cliprect, uint32_t tile_h, uint32_t tile_w, uint32_t tilegfxdata_addr, uint32_t tile, uint32_t tile_scanline, int drawx, bool flip_y, uint32_t palette_offset, const uint32_t nc_bpp, const uint32_t bits_per_row, const uint32_t words_per_tile, address_space& spc, uint16_t* paletteram, uint8_t blendlevel);
|
||||
|
||||
inline void draw_sprite(bool read_from_csspace, bool has_extended_sprites, bool alt_extrasprite_hack, uint32_t palbank, bool highres, const rectangle& cliprect, uint32_t scanline, int priority, uint32_t spritegfxdata_addr, uint32_t base_addr, address_space& spc, uint16_t* paletteram, uint16_t* spriteram);
|
||||
|
||||
|
||||
inline void draw_linemap(bool has_extended_tilemaps, const rectangle& cliprect, uint32_t scanline, int priority, uint32_t tilegfxdata_addr, uint16_t* scrollregs, uint16_t* tilemapregs, address_space& spc, uint16_t* paletteram);
|
||||
|
||||
|
||||
inline uint8_t mix_channel(uint8_t a, uint8_t b, uint8_t alpha);
|
||||
|
||||
uint8_t m_rgb5_to_rgb8[32];
|
||||
|
@ -33,15 +33,15 @@ DEFINE_DEVICE_TYPE(SUN4C_MMU, sun4c_mmu_device, "sun4c_mmu", "Sun 4c MMU")
|
||||
#define LOG_TYPE1_TIMEOUT (1U << 12)
|
||||
#define LOG_UNKNOWN_SPACE (1U << 13)
|
||||
#define LOG_WRITE_PROTECT (1U << 14)
|
||||
#define LOG_READ_PROTECT (1U << 15)
|
||||
#define LOG_READ_PROTECT (1U << 15)
|
||||
#define LOG_PARITY (1U << 16)
|
||||
#define LOG_ALL_ASI (1U << 17) // WARNING: Heavy!
|
||||
#define LOG_UNKNOWN_ASI (1U << 18)
|
||||
#define LOG_SEGMENT_FLUSH (1U << 19)
|
||||
#define LOG_PAGE_FLUSH (1U << 20)
|
||||
#define LOG_CONTEXT_FLUSH (1U << 21)
|
||||
#define LOG_CACHE_FILLS (1U << 22)
|
||||
#define LOG_PAGE_ENTRIES (1U << 23)
|
||||
#define LOG_UNKNOWN_ASI (1U << 18)
|
||||
#define LOG_SEGMENT_FLUSH (1U << 19)
|
||||
#define LOG_PAGE_FLUSH (1U << 20)
|
||||
#define LOG_CONTEXT_FLUSH (1U << 21)
|
||||
#define LOG_CACHE_FILLS (1U << 22)
|
||||
#define LOG_PAGE_ENTRIES (1U << 23)
|
||||
|
||||
#if SUN4CMMU_LOG_MEM_ACCESSES
|
||||
static FILE* s_mem_log = nullptr;
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "machine/ram.h"
|
||||
#include "machine/z80scc.h"
|
||||
|
||||
#define SUN4CMMU_LOG_MEM_ACCESSES (0)
|
||||
#define SUN4CMMU_LOG_MEM_ACCESSES (0)
|
||||
|
||||
class sun4_mmu_base_device : public device_t, public sparc_mmu_interface
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ void swim1_device::device_reset()
|
||||
m_param_idx = 0;
|
||||
memset(m_param, 0, sizeof(m_param));
|
||||
m_floppy = nullptr;
|
||||
|
||||
|
||||
m_devsel_cb(0);
|
||||
m_sel35_cb(true);
|
||||
m_hdsel_cb(false);
|
||||
@ -86,7 +86,7 @@ u8 swim1_device::read(offs_t offset)
|
||||
u8 r = m_param[m_param_idx];
|
||||
m_param_idx = (m_param_idx + 1) & 15;
|
||||
return r;
|
||||
}
|
||||
}
|
||||
case 0x4: case 0xc:
|
||||
return m_phases;
|
||||
case 0x5: case 0xd:
|
||||
@ -122,7 +122,7 @@ void swim1_device::write(offs_t offset, u8 data)
|
||||
m_param[m_param_idx] = data;
|
||||
m_param_idx = (m_param_idx + 1) & 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
case 0x4: {
|
||||
m_phases = data;
|
||||
update_phases();
|
||||
|
@ -35,7 +35,7 @@ void swim2_device::device_reset()
|
||||
m_param_idx = 0;
|
||||
memset(m_param, 0, sizeof(m_param));
|
||||
m_floppy = nullptr;
|
||||
|
||||
|
||||
m_devsel_cb(0);
|
||||
m_sel35_cb(true);
|
||||
m_hdsel_cb(false);
|
||||
@ -88,7 +88,7 @@ u8 swim2_device::read(offs_t offset)
|
||||
u8 r = m_param[m_param_idx];
|
||||
m_param_idx = (m_param_idx + 1) & 15;
|
||||
return r;
|
||||
}
|
||||
}
|
||||
case 0x4: case 0xc:
|
||||
return m_phases;
|
||||
case 0x5: case 0xd:
|
||||
@ -124,7 +124,7 @@ void swim2_device::write(offs_t offset, u8 data)
|
||||
m_param[m_param_idx] = data;
|
||||
m_param_idx = (m_param_idx + 1) & 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
case 0x4: {
|
||||
m_phases = data;
|
||||
update_phases();
|
||||
|
@ -33,7 +33,7 @@ void swim3_device::device_reset()
|
||||
m_param_idx = 0;
|
||||
memset(m_param, 0, sizeof(m_param));
|
||||
m_floppy = nullptr;
|
||||
|
||||
|
||||
m_devsel_cb(0);
|
||||
m_sel35_cb(true);
|
||||
m_hdsel_cb(false);
|
||||
@ -86,7 +86,7 @@ u8 swim3_device::read(offs_t offset)
|
||||
u8 r = m_param[m_param_idx];
|
||||
m_param_idx = (m_param_idx + 1) & 15;
|
||||
return r;
|
||||
}
|
||||
}
|
||||
case 0x4: case 0xc:
|
||||
return m_phases;
|
||||
case 0x5: case 0xd:
|
||||
@ -122,7 +122,7 @@ void swim3_device::write(offs_t offset, u8 data)
|
||||
m_param[m_param_idx] = data;
|
||||
m_param_idx = (m_param_idx + 1) & 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
case 0x4: {
|
||||
m_phases = data;
|
||||
update_phases();
|
||||
|
@ -419,7 +419,7 @@ void c219_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
|
||||
|
||||
if (ch_noise(v)) // noise
|
||||
{
|
||||
m_lfsr = (m_lfsr >> 1) ^ ((-(m_lfsr & 1)) & 0xfff6);
|
||||
m_lfsr = (m_lfsr >> 1) ^ ((-(m_lfsr & 1)) & 0xfff6);
|
||||
lastdt = s16(m_lfsr);
|
||||
}
|
||||
else
|
||||
|
@ -1,19 +1,19 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Alex Marshall,nimitz,austere
|
||||
/*
|
||||
ICS2115 by Raiden II team (c) 2010
|
||||
members: austere, nimitz, Alex Marshal
|
||||
ICS2115 by Raiden II team (c) 2010
|
||||
members: austere, nimitz, Alex Marshal
|
||||
|
||||
Original driver by O. Galibert, ElSemi
|
||||
Original driver by O. Galibert, ElSemi
|
||||
|
||||
Use tab size = 4 for your viewing pleasure.
|
||||
Use tab size = 4 for your viewing pleasure.
|
||||
|
||||
TODO:
|
||||
- Implement Panning, Chip has support stereo
|
||||
- Verify BYTE/ROMEN pin behaviors
|
||||
- DRAM, DMA, MIDI interface is unimplemented
|
||||
- Verify interrupt, envelope, timer period
|
||||
- Verify unemulated registers
|
||||
TODO:
|
||||
- Implement Panning, Chip has support stereo
|
||||
- Verify BYTE/ROMEN pin behaviors
|
||||
- DRAM, DMA, MIDI interface is unimplemented
|
||||
- Verify interrupt, envelope, timer period
|
||||
- Verify unemulated registers
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
|
@ -150,8 +150,8 @@ private:
|
||||
bool m_irq_on;
|
||||
|
||||
/*
|
||||
Unknown variable, seems to be effected by 0x12. Further investigation
|
||||
Required.
|
||||
Unknown variable, seems to be effected by 0x12. Further investigation
|
||||
Required.
|
||||
*/
|
||||
u8 m_vmode;
|
||||
};
|
||||
|
@ -65,21 +65,21 @@ static constexpr int CLOCKS_PER_SAMPLE = 64;
|
||||
|
||||
// device type definition
|
||||
DEFINE_DEVICE_TYPE(K053260, k053260_device, "k053260", "K053260 KDSC")
|
||||
;
|
||||
;
|
||||
|
||||
|
||||
// Pan multipliers. Set according to integer angles in degrees, amusingly.
|
||||
// Exact precision hard to know, the floating point-ish output format makes
|
||||
// comparisons iffy. So we used a 1.16 format.
|
||||
const int k053260_device::pan_mul[8][2] = {
|
||||
{ 0, 0 }, // No sound for pan 0
|
||||
{ 65536, 0 }, // 0 degrees
|
||||
{ 59870, 26656 }, // 24 degrees
|
||||
{ 53684, 37950 }, // 35 degrees
|
||||
{ 46341, 46341 }, // 45 degrees
|
||||
{ 37950, 53684 }, // 55 degrees
|
||||
{ 26656, 59870 }, // 66 degrees
|
||||
{ 0, 65536 } // 90 degrees
|
||||
{ 0, 0 }, // No sound for pan 0
|
||||
{ 65536, 0 }, // 0 degrees
|
||||
{ 59870, 26656 }, // 24 degrees
|
||||
{ 53684, 37950 }, // 35 degrees
|
||||
{ 46341, 46341 }, // 45 degrees
|
||||
{ 37950, 53684 }, // 55 degrees
|
||||
{ 26656, 59870 }, // 66 degrees
|
||||
{ 0, 65536 } // 90 degrees
|
||||
};
|
||||
|
||||
|
||||
|
@ -141,7 +141,7 @@ void debugger_console::execute_help_custom(int ref, const std::vector<std::strin
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------
|
||||
execute_condump - execute the condump command
|
||||
execute_condump - execute the condump command
|
||||
------------------------------------------------------------*/
|
||||
|
||||
void debugger_console::execute_condump(int ref, const std::vector<std::string>& params)
|
||||
@ -584,8 +584,8 @@ std::string debugger_console::cmderr_to_string(CMDERR error)
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
print_core - write preformatted text
|
||||
to the debug console
|
||||
print_core - write preformatted text
|
||||
to the debug console
|
||||
-------------------------------------------------*/
|
||||
|
||||
void debugger_console::print_core(const char *text)
|
||||
@ -597,8 +597,8 @@ void debugger_console::print_core(const char *text)
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
print_core_wrap - write preformatted text
|
||||
to the debug console, with wrapping
|
||||
print_core_wrap - write preformatted text
|
||||
to the debug console, with wrapping
|
||||
-------------------------------------------------*/
|
||||
|
||||
void debugger_console::print_core_wrap(const char *text, int wrapcol)
|
||||
|
@ -318,8 +318,8 @@ text_buffer_lines text_buffer_get_lines(text_buffer* text)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
text_buffer_lines::text_buffer_line_iterator::operator*
|
||||
Gets the line that the iterator currently points to.
|
||||
text_buffer_lines::text_buffer_line_iterator::operator*
|
||||
Gets the line that the iterator currently points to.
|
||||
-----------------------------------------------------------------------*/
|
||||
|
||||
text_buffer_line text_buffer_lines::text_buffer_line_iterator::operator*() const
|
||||
@ -331,7 +331,7 @@ text_buffer_line text_buffer_lines::text_buffer_line_iterator::operator*() const
|
||||
next_lineptr = 0;
|
||||
|
||||
const char* nextline = &m_buffer.buffer[m_buffer.lineoffs[next_lineptr]];
|
||||
|
||||
|
||||
/* -1 for the '\0' at the end of line */
|
||||
|
||||
ptrdiff_t difference = (nextline - line) - 1;
|
||||
@ -343,8 +343,8 @@ text_buffer_line text_buffer_lines::text_buffer_line_iterator::operator*() const
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
text_buffer_lines::text_buffer_line_iterator::operator++
|
||||
Moves to the next line.
|
||||
text_buffer_lines::text_buffer_line_iterator::operator++
|
||||
Moves to the next line.
|
||||
-----------------------------------------------------------------------*/
|
||||
|
||||
text_buffer_lines::text_buffer_line_iterator& text_buffer_lines::text_buffer_line_iterator::operator++()
|
||||
@ -356,8 +356,8 @@ text_buffer_lines::text_buffer_line_iterator& text_buffer_lines::text_buffer_lin
|
||||
}
|
||||
|
||||
/*------------------------------------------------------
|
||||
text_buffer_lines::begin()
|
||||
Returns an iterator that points to the first line.
|
||||
text_buffer_lines::begin()
|
||||
Returns an iterator that points to the first line.
|
||||
--------------------------------------------------------*/
|
||||
|
||||
text_buffer_lines::iterator text_buffer_lines::begin() const
|
||||
@ -366,8 +366,8 @@ text_buffer_lines::iterator text_buffer_lines::begin() const
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
text_buffer_lines::begin()
|
||||
Returns an iterator that points just past the last line.
|
||||
text_buffer_lines::begin()
|
||||
Returns an iterator that points just past the last line.
|
||||
-------------------------------------------------------------*/
|
||||
|
||||
text_buffer_lines::iterator text_buffer_lines::end() const
|
||||
|
@ -21,49 +21,49 @@ struct text_buffer;
|
||||
|
||||
struct text_buffer_line
|
||||
{
|
||||
const char *text;
|
||||
size_t length;
|
||||
const char *text;
|
||||
size_t length;
|
||||
};
|
||||
|
||||
/* helper class that makes it possible to iterate over the lines of a text_buffer */
|
||||
class text_buffer_lines
|
||||
{
|
||||
private:
|
||||
text_buffer& m_buffer;
|
||||
text_buffer& m_buffer;
|
||||
|
||||
public:
|
||||
text_buffer_lines(text_buffer& buffer) : m_buffer(buffer) { }
|
||||
text_buffer_lines(text_buffer& buffer) : m_buffer(buffer) { }
|
||||
|
||||
class text_buffer_line_iterator
|
||||
{
|
||||
text_buffer& m_buffer;
|
||||
s32 m_lineptr;
|
||||
public:
|
||||
text_buffer_line_iterator(text_buffer& buffer, s32 lineptr) :
|
||||
m_buffer(buffer),
|
||||
m_lineptr(lineptr)
|
||||
{
|
||||
}
|
||||
class text_buffer_line_iterator
|
||||
{
|
||||
text_buffer& m_buffer;
|
||||
s32 m_lineptr;
|
||||
public:
|
||||
text_buffer_line_iterator(text_buffer& buffer, s32 lineptr) :
|
||||
m_buffer(buffer),
|
||||
m_lineptr(lineptr)
|
||||
{
|
||||
}
|
||||
|
||||
/* technically this isn't a valid forward iterator, because
|
||||
* operator * doesn't return a reference
|
||||
*/
|
||||
text_buffer_line operator *() const;
|
||||
text_buffer_line_iterator& operator ++();
|
||||
/* technically this isn't a valid forward iterator, because
|
||||
* operator * doesn't return a reference
|
||||
*/
|
||||
text_buffer_line operator *() const;
|
||||
text_buffer_line_iterator& operator ++();
|
||||
|
||||
bool operator != (const text_buffer_line_iterator& rhs)
|
||||
{
|
||||
return m_lineptr != rhs.m_lineptr;
|
||||
}
|
||||
/* according to C++ spec, only != is needed; == is present for completeness. */
|
||||
bool operator == (const text_buffer_line_iterator& rhs) { return !(operator !=(rhs)); }
|
||||
};
|
||||
bool operator != (const text_buffer_line_iterator& rhs)
|
||||
{
|
||||
return m_lineptr != rhs.m_lineptr;
|
||||
}
|
||||
/* according to C++ spec, only != is needed; == is present for completeness. */
|
||||
bool operator == (const text_buffer_line_iterator& rhs) { return !(operator !=(rhs)); }
|
||||
};
|
||||
|
||||
typedef text_buffer_line_iterator iterator;
|
||||
typedef text_buffer_line_iterator const iterator_const;
|
||||
typedef text_buffer_line_iterator iterator;
|
||||
typedef text_buffer_line_iterator const iterator_const;
|
||||
|
||||
iterator begin() const;
|
||||
iterator end() const;
|
||||
iterator begin() const;
|
||||
iterator end() const;
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -15,8 +15,8 @@ template<int AddrWidth, int DataWidth, int AddrShift, endianness_t Endian>
|
||||
void device_rom_interface<AddrWidth, DataWidth, AddrShift, Endian>::override_address_width(u8 width)
|
||||
{
|
||||
// cach does not need level match, only specific does at this point
|
||||
// if(emu::detail::handler_entry_dispatch_level(AddrWidth) != emu::detail::handler_entry_dispatch_level(width))
|
||||
// emu_fatalerror("%s: Widths %d and %d are incompatible", device().tag(), width, AddrWidth);
|
||||
// if(emu::detail::handler_entry_dispatch_level(AddrWidth) != emu::detail::handler_entry_dispatch_level(width))
|
||||
// emu_fatalerror("%s: Widths %d and %d are incompatible", device().tag(), width, AddrWidth);
|
||||
|
||||
m_rom_config.m_addr_width = width;
|
||||
}
|
||||
|
@ -1941,7 +1941,7 @@ private:
|
||||
|
||||
|
||||
template<int Width, int AddrShift, endianness_t Endian>
|
||||
typename emu::detail::handler_entry_size<Width>::uX
|
||||
typename emu::detail::handler_entry_size<Width>::uX
|
||||
emu::detail::memory_access_cache<Width, AddrShift, Endian>::
|
||||
read_native(offs_t address, typename emu::detail::handler_entry_size<Width>::uX mask)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ template<int Width, int AddrShift, endianness_t Endian> std::string handler_entr
|
||||
}
|
||||
|
||||
|
||||
template<int Width, int AddrShift, endianness_t Endian> void handler_entry_write_unmapped<Width, AddrShift, Endian>::write(offs_t offset, uX data, uX mem_mask)const
|
||||
template<int Width, int AddrShift, endianness_t Endian> void handler_entry_write_unmapped<Width, AddrShift, Endian>::write(offs_t offset, uX data, uX mem_mask)const
|
||||
{
|
||||
if (inh::m_space->log_unmap() && !inh::m_space->m_manager.machine().side_effects_disabled())
|
||||
inh::m_space->device().logerror(inh::m_space->is_octal()
|
||||
|
@ -3520,14 +3520,14 @@ void analog_field::frame_update(running_machine &machine)
|
||||
// get the new raw analog value and its type
|
||||
input_item_class itemclass;
|
||||
s32 rawvalue = machine.input().seq_axis_value(m_field.seq(SEQ_TYPE_STANDARD), itemclass);
|
||||
|
||||
|
||||
// use programmatically set value if avaiable
|
||||
if (m_was_written)
|
||||
{
|
||||
m_was_written = false;
|
||||
rawvalue = m_prog_analog_value;
|
||||
}
|
||||
|
||||
|
||||
// if we got an absolute input, it overrides everything else
|
||||
if (itemclass == ITEM_CLASS_ABSOLUTE)
|
||||
{
|
||||
|
@ -459,7 +459,7 @@ enum
|
||||
// INPUT_STRING_8C_4C, // 0.500000
|
||||
// INPUT_STRING_6C_3C, // 0.500000
|
||||
INPUT_STRING_4C_2C, // 0.500000
|
||||
INPUT_STRING_5C_2C, // 0.500000
|
||||
INPUT_STRING_5C_2C, // 0.500000
|
||||
INPUT_STRING_2C_1C, // 0.500000
|
||||
// INPUT_STRING_9C_5C, // 0.555556
|
||||
// INPUT_STRING_7C_4C, // 0.571429
|
||||
@ -1266,10 +1266,10 @@ public:
|
||||
void read(ioport_value &value);
|
||||
float crosshair_read();
|
||||
void frame_update(running_machine &machine);
|
||||
|
||||
|
||||
// setters
|
||||
void set_value(s32 value);
|
||||
|
||||
|
||||
private:
|
||||
// helpers
|
||||
s32 apply_min_max(s32 value) const;
|
||||
|
@ -658,7 +658,7 @@ void natural_keyboard::build_codes(ioport_manager &manager)
|
||||
}
|
||||
|
||||
newcode.field[fieldnum] = &field;
|
||||
if (m_keycode_map.end() == found)
|
||||
if (m_keycode_map.end() == found)
|
||||
{
|
||||
keycode_map_list map_list;
|
||||
map_list.emplace_back(newcode);
|
||||
@ -882,7 +882,7 @@ const natural_keyboard::keycode_map_entry *natural_keyboard::find_code(char32_t
|
||||
keycode_map::const_iterator const found(m_keycode_map.find(ch));
|
||||
if (m_keycode_map.end() == found) return nullptr;
|
||||
for(const keycode_map_entry &entry : found->second)
|
||||
{
|
||||
{
|
||||
if (entry.condition.eval())
|
||||
return &entry;
|
||||
}
|
||||
@ -912,7 +912,7 @@ void natural_keyboard::dump(std::ostream &str) const
|
||||
{
|
||||
// identify the keys used
|
||||
for (std::size_t field = 0; (entry.field.size() > field) && entry.field[field]; ++field)
|
||||
util::stream_format(str, "%s'%s'", first ? "" : ", ", entry.field[field]->name());
|
||||
util::stream_format(str, "%s'%s'", first ? "" : ", ", entry.field[field]->name());
|
||||
|
||||
// carriage return
|
||||
str << '\n';
|
||||
|
@ -239,7 +239,7 @@ namespace
|
||||
}
|
||||
|
||||
private:
|
||||
std::array<std::pair<const char *, T>, SIZE> m_map;
|
||||
std::array<std::pair<const char *, T>, SIZE> m_map;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -508,7 +508,7 @@ bool imd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
|
||||
desc_pc_sector sects[256];
|
||||
|
||||
for(int i=0; i<m_sector_count.back(); i++) {
|
||||
uint8_t stype = img[pos++];
|
||||
uint8_t stype = img[pos++];
|
||||
sects[i].track = m_tnum.back().size() ? m_tnum.back()[i] : m_track.back();
|
||||
sects[i].head = m_hnum.back().size() ? m_hnum.back()[i] : m_head.back();
|
||||
sects[i].sector = m_snum.back()[i];
|
||||
@ -629,7 +629,7 @@ bool imd_format::save(io_generic* io, floppy_image* image)
|
||||
mode = 1;
|
||||
io_generic_write(io, &mode, pos++, 1);
|
||||
io_generic_write(io, &sdata, pos, actual_size);
|
||||
pos += actual_size;
|
||||
pos += actual_size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +99,7 @@
|
||||
NET_CONNECT(name, B, cB) \
|
||||
NET_CONNECT(name, C, cC) \
|
||||
NET_CONNECT(name, D, cD)
|
||||
|
||||
|
||||
#define TTL_74161(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_74161, __VA_ARGS__)
|
||||
|
||||
|
@ -157,7 +157,7 @@ namespace devices
|
||||
|
||||
if (doOUT)
|
||||
//for (std::size_t i = 0; i < m_NO; ++i)
|
||||
// m_Q[i].push((out >> i) & 1, tim[t[i]]);
|
||||
// m_Q[i].push((out >> i) & 1, tim[t[i]]);
|
||||
this->push(out, t);
|
||||
else
|
||||
{
|
||||
|
@ -13,8 +13,8 @@ NETLIST_START(perf)
|
||||
|
||||
ANALOG_INPUT(V5, 5)
|
||||
|
||||
CLOCK(CLK, 100) // clock for driving the 74393
|
||||
CLOCK(CLK2, 3) // off-beat clock for master reset
|
||||
CLOCK(CLK, 100) // clock for driving the 74393
|
||||
CLOCK(CLK2, 3) // off-beat clock for master reset
|
||||
TTL_74393_DIP(TESTCHIP)
|
||||
|
||||
NET_C(V5, CLK.VCC, CLK2.VCC, TESTCHIP.14)
|
||||
|
@ -2475,8 +2475,8 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// inline implementations - cold
|
||||
// -----------------------------------------------------------------------------
|
||||
|
@ -124,20 +124,20 @@ namespace factory {
|
||||
{ }
|
||||
|
||||
|
||||
template <std::size_t... Is>
|
||||
dev_uptr make_device(device_arena &pool,
|
||||
netlist_state_t &anetlist,
|
||||
const pstring &name, std::tuple<Args...>& args, std::index_sequence<Is...>)
|
||||
{
|
||||
return plib::make_unique<C>(pool, anetlist, name, std::forward<Args>(std::get<Is>(args))...);
|
||||
}
|
||||
template <std::size_t... Is>
|
||||
dev_uptr make_device(device_arena &pool,
|
||||
netlist_state_t &anetlist,
|
||||
const pstring &name, std::tuple<Args...>& args, std::index_sequence<Is...>)
|
||||
{
|
||||
return plib::make_unique<C>(pool, anetlist, name, std::forward<Args>(std::get<Is>(args))...);
|
||||
}
|
||||
|
||||
dev_uptr make_device(device_arena &pool,
|
||||
netlist_state_t &anetlist,
|
||||
const pstring &name, std::tuple<Args...>& args)
|
||||
{
|
||||
return make_device(pool, anetlist, name, args, std::index_sequence_for<Args...>{});
|
||||
}
|
||||
dev_uptr make_device(device_arena &pool,
|
||||
netlist_state_t &anetlist,
|
||||
const pstring &name, std::tuple<Args...>& args)
|
||||
{
|
||||
return make_device(pool, anetlist, name, args, std::index_sequence_for<Args...>{});
|
||||
}
|
||||
|
||||
dev_uptr make_device(device_arena &pool,
|
||||
netlist_state_t &anetlist,
|
||||
|
@ -32,21 +32,21 @@ namespace netlist
|
||||
/// The following code is an example on how to add the device to
|
||||
/// the netlist factory.
|
||||
///
|
||||
/// const pstring pin(m_in);
|
||||
/// pstring dname = pstring("OUT_") + pin;
|
||||
/// const pstring pin(m_in);
|
||||
/// pstring dname = pstring("OUT_") + pin;
|
||||
///
|
||||
/// const auto lambda = [this](auto &in, netlist::nl_fptype val)
|
||||
/// {
|
||||
/// this->cpu()->update_icount(in.exec().time());
|
||||
/// this->m_delegate(val, this->cpu()->local_time());
|
||||
/// this->cpu()->check_mame_abort_slice();
|
||||
/// };
|
||||
/// const auto lambda = [this](auto &in, netlist::nl_fptype val)
|
||||
/// {
|
||||
/// this->cpu()->update_icount(in.exec().time());
|
||||
/// this->m_delegate(val, this->cpu()->local_time());
|
||||
/// this->cpu()->check_mame_abort_slice();
|
||||
/// };
|
||||
///
|
||||
/// using lb_t = decltype(lambda);
|
||||
/// using cb_t = netlist::interface::NETLIB_NAME(analog_callback)<lb_t>;
|
||||
/// using lb_t = decltype(lambda);
|
||||
/// using cb_t = netlist::interface::NETLIB_NAME(analog_callback)<lb_t>;
|
||||
///
|
||||
/// parser.factory().add<cb_t, netlist::nl_fptype, lb_t>(dname,
|
||||
/// netlist::factory::properties("-", PSOURCELOC()), 1e-6, std::forward<lb_t>(lambda));
|
||||
/// parser.factory().add<cb_t, netlist::nl_fptype, lb_t>(dname,
|
||||
/// netlist::factory::properties("-", PSOURCELOC()), 1e-6, std::forward<lb_t>(lambda));
|
||||
///
|
||||
|
||||
template <typename FUNC>
|
||||
@ -232,7 +232,7 @@ namespace netlist
|
||||
object_array_t<param_fp_t, MAX_INPUT_CHANNELS> m_param_mults;
|
||||
object_array_t<param_fp_t, MAX_INPUT_CHANNELS> m_param_offsets;
|
||||
std::array<param_fp_t *, MAX_INPUT_CHANNELS> m_params;
|
||||
std::array<T *, MAX_INPUT_CHANNELS> m_buffers;
|
||||
std::array<T *, MAX_INPUT_CHANNELS> m_buffers;
|
||||
};
|
||||
|
||||
} // namespace interface
|
||||
|
@ -189,7 +189,7 @@ namespace plib {
|
||||
using base_allocator_typex = typename BASEARENA::template allocator_type<std::pair<void * const, info>>;
|
||||
std::unordered_map<void *, info, std::hash<void *>, std::equal_to<void *>,
|
||||
base_allocator_typex> m_info;
|
||||
// std::unordered_map<void *, info> m_info;
|
||||
// std::unordered_map<void *, info> m_info;
|
||||
std::vector<block *, typename BASEARENA::template allocator_type<block *>> m_blocks;
|
||||
|
||||
};
|
||||
|
@ -117,7 +117,7 @@ namespace plib {
|
||||
|| ci::os() == ci_os::EMSCRIPTEN)) ? 2 :
|
||||
(ci::type() == ci_compiler::CLANG || ci::type() == ci_compiler::GCC) ? 1 :
|
||||
(ci::type() == ci_compiler::MSC && ci::m64()) ? 3 :
|
||||
0
|
||||
0
|
||||
};
|
||||
};
|
||||
|
||||
@ -416,10 +416,10 @@ namespace plib {
|
||||
/// plib::late_pmfp<plib::pmfp<void, pstring>> a(&nld_7493::printer);
|
||||
/// // Store the a object somewhere
|
||||
///
|
||||
/// // After full construction ...
|
||||
/// // After full construction ...
|
||||
///
|
||||
/// auto dele = a(this);
|
||||
/// dele(pstring("Hello World!"));
|
||||
/// auto dele = a(this);
|
||||
/// dele(pstring("Hello World!"));
|
||||
///
|
||||
template<typename T>
|
||||
class late_pmfp
|
||||
|
@ -89,7 +89,7 @@ namespace plib {
|
||||
std::size_t capacity() const noexcept { return m_list.capacity() - 1; }
|
||||
bool empty() const noexcept { return (m_end == &m_list[1]); }
|
||||
|
||||
template<bool KEEPSTAT, typename... Args>
|
||||
template<bool KEEPSTAT, typename... Args>
|
||||
void emplace(Args&&... args) noexcept
|
||||
{
|
||||
// Lock
|
||||
|
@ -148,7 +148,7 @@ namespace plib
|
||||
using arch = std::integral_constant<ci_arch, ci_arch::ARM>;
|
||||
#elif defined(__MIPSEL__) || defined(__mips_isa_rev) || defined(__mips64)
|
||||
using arch = std::integral_constant<ci_arch, ci_arch::MIPS>;
|
||||
#else
|
||||
#else
|
||||
using arch = std::integral_constant<ci_arch, ci_arch::UNKNOWN>;
|
||||
#endif
|
||||
#if defined(__MINGW32__)
|
||||
|
@ -40,7 +40,7 @@
|
||||
|
||||
class bu3905_device : public device_t
|
||||
{
|
||||
public: // construction/destruction
|
||||
public: // construction/destruction
|
||||
bu3905_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
||||
|
||||
void write(offs_t offset, u8 data);
|
||||
|
@ -50,7 +50,7 @@
|
||||
// numeric instability. Also adjusts values of resistors associated with these
|
||||
// oscillators to maintain their frequency and voltage levels.
|
||||
|
||||
#define CONVERGENCE_FRONTIERS 1
|
||||
#define CONVERGENCE_FRONTIERS 1
|
||||
|
||||
|
||||
static NETLIST_START(mc3340)
|
||||
@ -61,7 +61,7 @@ static NETLIST_START(mc3340)
|
||||
// control signal, with a maximum gain of about 12-13 dB (about a
|
||||
// factor of 4 in voltage), and higher control voltages giving greater
|
||||
// attenuation, which scales logarithmically.
|
||||
|
||||
|
||||
// The netlist here is based on the circuit schematic given in
|
||||
// Motorola's own data books, especially the most recent ones
|
||||
// published in the 1990s (e.g. _Motorola Analog/Interface ICs Device
|
||||
@ -286,7 +286,7 @@ static NETLIST_START(280zzzap_schematics)
|
||||
// 280-ZZZAP schematic and the schematic for the earlier Laguna Racer
|
||||
// board, but this is a non-standard value. The nearest standard value
|
||||
// is 470 Kohm, and this may have been used in production. Need to
|
||||
// check against actual PCBs.
|
||||
// check against actual PCBs.
|
||||
RES(R51, RES_K(480)) // 470 Kohm in later Laguna and Super Speed Race
|
||||
RES(R46, RES_M(2)) // 2.2 Mohm in later Laguna and Super Speed Race
|
||||
RES(R47, RES_M(1))
|
||||
@ -840,13 +840,13 @@ NETLIST_START(280zzzap)
|
||||
|
||||
// All together, loosening both tolerances and reducing accuracy
|
||||
// increases speed by ~10%, but it also causes audible "crackling".
|
||||
// PARAM(Solver.RELTOL, 1e-2) // default 1e-3 (several % faster, but < quality)
|
||||
// PARAM(Solver.VNTOL, 5e-3) // default 1e-7 (several % faster, but < quality)
|
||||
// PARAM(Solver.ACCURACY, 1e-3) // default 1e-7 (few % faster)
|
||||
// PARAM(Solver.RELTOL, 1e-2) // default 1e-3 (several % faster, but < quality)
|
||||
// PARAM(Solver.VNTOL, 5e-3) // default 1e-7 (several % faster, but < quality)
|
||||
// PARAM(Solver.ACCURACY, 1e-3) // default 1e-7 (few % faster)
|
||||
|
||||
// PARAM(Solver.DYNAMIC_TS, 1)
|
||||
// PARAM(Solver.DYNAMIC_LTE, 1e-4) // default 1e-5
|
||||
// PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 1e-8) // default 1e-6
|
||||
// PARAM(Solver.DYNAMIC_TS, 1)
|
||||
// PARAM(Solver.DYNAMIC_LTE, 1e-4) // default 1e-5
|
||||
// PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 1e-8) // default 1e-6
|
||||
|
||||
ANALOG_INPUT(I_V12, 12)
|
||||
ANALOG_INPUT(I_V5, 5)
|
||||
@ -899,27 +899,27 @@ NETLIST_START(280zzzap)
|
||||
|
||||
// Power pins for logic inputs:
|
||||
NET_C(I_V5.Q,
|
||||
I_F4_2.VCC, I_F4_5.VCC, I_F4_7.VCC, I_F4_10.VCC,
|
||||
I_F5_2.VCC, I_F5_5.VCC, I_F5_7.VCC, I_F5_10.VCC,
|
||||
I_F5_12.VCC, I_F5_15.VCC)
|
||||
I_F4_2.VCC, I_F4_5.VCC, I_F4_7.VCC, I_F4_10.VCC,
|
||||
I_F5_2.VCC, I_F5_5.VCC, I_F5_7.VCC, I_F5_10.VCC,
|
||||
I_F5_12.VCC, I_F5_15.VCC)
|
||||
NET_C(GND,
|
||||
I_F4_2.GND, I_F4_5.GND, I_F4_7.GND, I_F4_10.GND,
|
||||
I_F5_2.GND, I_F5_5.GND, I_F5_7.GND, I_F5_10.GND,
|
||||
I_F5_12.GND, I_F5_15.GND)
|
||||
I_F4_2.GND, I_F4_5.GND, I_F4_7.GND, I_F4_10.GND,
|
||||
I_F5_2.GND, I_F5_5.GND, I_F5_7.GND, I_F5_10.GND,
|
||||
I_F5_12.GND, I_F5_15.GND)
|
||||
|
||||
// Power inputs for the LM3900 op-amps. These aren't shown on the
|
||||
// schematics, but it looks like 5-volt power is needed to get proper
|
||||
// results.
|
||||
NET_C(I_V5.Q,
|
||||
H4_1.VCC, H4_2.VCC, H4_3.VCC, H4_4.VCC,
|
||||
H5_1.VCC, H5_2.VCC, H5_3.VCC, H5_4.VCC,
|
||||
J3_1.VCC, J3_2.VCC, J3_3.VCC, J3_4.VCC,
|
||||
J5_1.VCC, J5_2.VCC, J5_3.VCC)
|
||||
H4_1.VCC, H4_2.VCC, H4_3.VCC, H4_4.VCC,
|
||||
H5_1.VCC, H5_2.VCC, H5_3.VCC, H5_4.VCC,
|
||||
J3_1.VCC, J3_2.VCC, J3_3.VCC, J3_4.VCC,
|
||||
J5_1.VCC, J5_2.VCC, J5_3.VCC)
|
||||
NET_C(GND,
|
||||
H4_1.GND, H4_2.GND, H4_3.GND, H4_4.GND,
|
||||
H5_1.GND, H5_2.GND, H5_3.GND, H5_4.GND,
|
||||
J3_1.GND, J3_2.GND, J3_3.GND, J3_4.GND,
|
||||
J5_1.GND, J5_2.GND, J5_3.GND)
|
||||
H4_1.GND, H4_2.GND, H4_3.GND, H4_4.GND,
|
||||
H5_1.GND, H5_2.GND, H5_3.GND, H5_4.GND,
|
||||
J3_1.GND, J3_2.GND, J3_3.GND, J3_4.GND,
|
||||
J5_1.GND, J5_2.GND, J5_3.GND)
|
||||
|
||||
// Power inputs for the CD4016 switches. Again, these aren't shown on
|
||||
// the schematics, but 5-volt power must be used for the switches to
|
||||
|
@ -274,7 +274,7 @@ void redalert_state::ww3_audio(machine_config &config)
|
||||
void redalert_state::panther_audio(machine_config &config)
|
||||
{
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
|
||||
redalert_audio_m37b(config);
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &redalert_state::panther_audio_map);
|
||||
}
|
||||
|
@ -2299,7 +2299,7 @@ ROM_END
|
||||
ROM_START( towerat2xx )
|
||||
ROM_REGION16_LE( 0x20000, "bios", 0 )
|
||||
ROM_SYSTEM_BIOS(0, "v2.02", "V2.02" ) // from a model 220
|
||||
ROM_SYSTEM_BIOS(1, "v2.01", "V2.01" )
|
||||
ROM_SYSTEM_BIOS(1, "v2.01", "V2.01" )
|
||||
ROM_SYSTEM_BIOS(2, "v1.07", "V1.07" ) // seen on a model 240 "mega"
|
||||
ROM_SYSTEM_BIOS(3, "v1.06", "V1.06" ) // from a model 220
|
||||
ROM_SYSTEM_BIOS(4, "v1.05a", "V1.05a" )
|
||||
|
@ -3302,11 +3302,11 @@ ROM_START( donpachihk )
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
When you press the 2p start button, it pauses the game (music still plays).
|
||||
Pressing the 1p start button unpauses the game.
|
||||
If you press both 1p start and 2p start at the same time, the game lets you play in slow motion (music still plays normally).
|
||||
When you press the 2p start button, it pauses the game (music still plays).
|
||||
Pressing the 1p start button unpauses the game.
|
||||
If you press both 1p start and 2p start at the same time, the game lets you play in slow motion (music still plays normally).
|
||||
|
||||
This was on the label of the ROM chip: 国内撮影用
|
||||
This was on the label of the ROM chip: 国内撮影用
|
||||
*/
|
||||
|
||||
ROM_START( donpachijs )
|
||||
|
@ -63,11 +63,11 @@ TODO:
|
||||
// TODO: NTSC system clock is 30.2098 MHz; additional 4.9152 MHz XTAL provided for UART
|
||||
#define CLOCK_A 30_MHz_XTAL
|
||||
|
||||
#define LOG_DVC (1 << 1)
|
||||
#define LOG_QUIZARD_READS (1 << 2)
|
||||
#define LOG_QUIZARD_WRITES (1 << 3)
|
||||
#define LOG_QUIZARD_OTHER (1 << 4)
|
||||
#define LOG_UART (1 << 5)
|
||||
#define LOG_DVC (1 << 1)
|
||||
#define LOG_QUIZARD_READS (1 << 2)
|
||||
#define LOG_QUIZARD_WRITES (1 << 3)
|
||||
#define LOG_QUIZARD_OTHER (1 << 4)
|
||||
#define LOG_UART (1 << 5)
|
||||
|
||||
#define VERBOSE (0)
|
||||
#include "logmacro.h"
|
||||
|
@ -690,7 +690,7 @@ void armchamp2_state::armchmp2_map(address_map &map)
|
||||
map(0x100000, 0x100001).portr("IN2").w(FUNC(armchamp2_state::scudhamm_oki_bank_w));
|
||||
map(0x100004, 0x100005).portr("DSW"); // DSW
|
||||
map(0x100008, 0x100009).portr("IN0").w(FUNC(armchamp2_state::output_w));
|
||||
map(0x10000d, 0x10000d).rw("adc", FUNC(adc0804_device::read), FUNC(adc0804_device::write));
|
||||
map(0x10000d, 0x10000d).rw("adc", FUNC(adc0804_device::read), FUNC(adc0804_device::write));
|
||||
map(0x100010, 0x100011).rw(FUNC(armchamp2_state::motor_status_r), FUNC(armchamp2_state::motor_command_w));
|
||||
// same hookup as acommand, most notably the "Arm Champs II" voice sample on title screen playbacks on oki1 mirror
|
||||
map(0x100014, 0x100017).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
|
||||
@ -2108,7 +2108,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cischeat_state::scudhamm_scanline)
|
||||
if(scanline == 240) // vblank-out irq
|
||||
m_maincpu->set_input_line(4, HOLD_LINE);
|
||||
|
||||
if(scanline == 16) // clears a flag, sprite end DMA?
|
||||
if(scanline == 16) // clears a flag, sprite end DMA?
|
||||
m_maincpu->set_input_line(2, HOLD_LINE);
|
||||
}
|
||||
|
||||
@ -2129,10 +2129,10 @@ void cischeat_state::scudhamm(machine_config &config)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
|
||||
// measured values for Arm Champs II: VSync: 59.1784Hz, HSync: 15082.0 kHz
|
||||
m_screen->set_raw(XTAL(12'000'000)/2,396,0,256,256,16,240);
|
||||
// m_screen->set_refresh_hz(30); //TODO: wrong!
|
||||
// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */);
|
||||
// m_screen->set_size(256, 256);
|
||||
// m_screen->set_visarea(0, 256-1, 0 +16, 256-1 -16);
|
||||
// m_screen->set_refresh_hz(30); //TODO: wrong!
|
||||
// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */);
|
||||
// m_screen->set_size(256, 256);
|
||||
// m_screen->set_visarea(0, 256-1, 0 +16, 256-1 -16);
|
||||
m_screen->set_screen_update(FUNC(cischeat_state::screen_update_scudhamm));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
|
@ -50,7 +50,7 @@ public:
|
||||
{ }
|
||||
|
||||
void cm1800(machine_config &config);
|
||||
|
||||
|
||||
private:
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
@ -84,8 +84,8 @@ void consoemt_state::io_map(address_map &map)
|
||||
map(0x220, 0x220).portr("NUMBUS-H");
|
||||
map(0x230, 0x230).portr("NUMFAB-L");
|
||||
map(0x240, 0x240).portr("NUMFAB-H");
|
||||
// map(0x250, 0x250).r // read on int2
|
||||
// map(0x260, 0x260).r // read on int1
|
||||
// map(0x250, 0x250).r // read on int2
|
||||
// map(0x260, 0x260).r // read on int1
|
||||
map(0x280, 0x281).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write));
|
||||
}
|
||||
|
||||
|
@ -8071,7 +8071,7 @@ ROM_START( sf2rk )
|
||||
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
|
||||
ROM_LOAD16_BYTE( "w6.u222", 0x000000, 0x80000, CRC(49422b6f) SHA1(69fe9147c7ee3f6fa29077df16f4ef1224495be3) )
|
||||
ROM_LOAD16_BYTE( "w5.u196", 0x000001, 0x80000, CRC(7e9c8c2f) SHA1(3d34a3920a771e1d62a41c104c8b16e3c6ac9405) )
|
||||
|
||||
|
||||
/* The dark screen issue is present on the real pcb, although much less noticable than in mame.
|
||||
The bootleggers have patched out the code which modifies the brightness/fade component of the palette word.
|
||||
This is somewhat strange as unlike some bootlegs, this board DOES have the brightness circuitry (2x 7407's, 12x resistor dac) populated!
|
||||
|
@ -751,10 +751,10 @@ void dec8_state::csilver_mcu_to_main_w(uint8_t data)
|
||||
{
|
||||
if (~data & 0x10)
|
||||
m_i8751_port0 = m_i8751_value >> 8;
|
||||
|
||||
|
||||
if (~data & 0x20)
|
||||
m_i8751_port1 = m_i8751_value & 0xff;
|
||||
|
||||
|
||||
if (~data & 0x40)
|
||||
{
|
||||
m_i8751_return = (m_i8751_return & 0xff) | (m_i8751_port0 << 8);
|
||||
@ -763,7 +763,7 @@ void dec8_state::csilver_mcu_to_main_w(uint8_t data)
|
||||
|
||||
if (~data & 0x80)
|
||||
m_i8751_return = (m_i8751_return & 0xff00) | m_i8751_port1;
|
||||
|
||||
|
||||
m_i8751_p2 = data;
|
||||
}
|
||||
|
||||
|
@ -35,13 +35,13 @@
|
||||
#define LOG_FDC_CTRL (1 << 6)
|
||||
#define LOG_FDC_PORT (1 << 7)
|
||||
#define LOG_FDC_CMD (1 << 8)
|
||||
#define LOG_FDC_MECH (1 << 9)
|
||||
#define LOG_FDC_MECH (1 << 9)
|
||||
#define LOG_OUTPUT_TIMING (1 << 10)
|
||||
#define LOG_BRUSH_ADDR (1 << 11)
|
||||
#define LOG_STORE_ADDR (1 << 12)
|
||||
#define LOG_COMBINER (1 << 13)
|
||||
#define LOG_SIZE_CARD (1 << 14)
|
||||
#define LOG_FILTER_CARD (1 << 15)
|
||||
#define LOG_STORE_ADDR (1 << 12)
|
||||
#define LOG_COMBINER (1 << 13)
|
||||
#define LOG_SIZE_CARD (1 << 14)
|
||||
#define LOG_FILTER_CARD (1 << 15)
|
||||
#define LOG_ALL (LOG_UNKNOWN | LOG_CSR | LOG_CTRLBUS | LOG_SYS_CTRL | LOG_FDC_CTRL | LOG_FDC_PORT | LOG_FDC_CMD | LOG_FDC_MECH | LOG_BRUSH_ADDR | \
|
||||
LOG_STORE_ADDR | LOG_COMBINER | LOG_SIZE_CARD | LOG_FILTER_CARD)
|
||||
|
||||
@ -1276,55 +1276,55 @@ void dpb7000_state::cpu_ctrlbus_w(uint16_t data)
|
||||
((data >> 8) & 0xf) == 6 ? "Initiate" : "Continue");
|
||||
/*if (((data >> 8) & 0xf) == 6)
|
||||
{
|
||||
m_size_h = 0;
|
||||
m_size_v = 0;
|
||||
m_size_h = 0;
|
||||
m_size_v = 0;
|
||||
}
|
||||
uint16_t disc_buffer_addr = 0;
|
||||
uint16_t bx = m_bxlen_counter - m_bxlen;
|
||||
uint16_t by = m_bylen_counter - m_bylen;
|
||||
while (m_diskbuf_data_count > 0 && m_bylen_counter < 0x1000)
|
||||
{
|
||||
uint8_t hv = (m_size_h << 4) | m_size_v;
|
||||
uint8_t hv_permuted = bitswap<8>(hv,4,6,0,2,5,7,1,3);
|
||||
uint8_t hv = (m_size_h << 4) | m_size_v;
|
||||
uint8_t hv_permuted = bitswap<8>(hv,4,6,0,2,5,7,1,3);
|
||||
|
||||
if (BIT(m_brush_addr_func, 7)) // Luma Enable
|
||||
{
|
||||
//printf("%02x ", m_diskbuf_ram[disc_buffer_addr]);
|
||||
m_brushstore_lum[by * 256 + hv_permuted] = m_diskbuf_ram[disc_buffer_addr];
|
||||
}
|
||||
if (BIT(m_brush_addr_func, 7)) // Luma Enable
|
||||
{
|
||||
//printf("%02x ", m_diskbuf_ram[disc_buffer_addr]);
|
||||
m_brushstore_lum[by * 256 + hv_permuted] = m_diskbuf_ram[disc_buffer_addr];
|
||||
}
|
||||
|
||||
disc_buffer_addr++;
|
||||
m_diskbuf_data_count--;
|
||||
disc_buffer_addr++;
|
||||
m_diskbuf_data_count--;
|
||||
|
||||
if (BIT(m_brush_addr_func, 8)) // Chroma Enable
|
||||
{
|
||||
m_brushstore_chr[by * 256 + hv_permuted] = m_diskbuf_ram[disc_buffer_addr];
|
||||
}
|
||||
if (BIT(m_brush_addr_func, 8)) // Chroma Enable
|
||||
{
|
||||
m_brushstore_chr[by * 256 + hv_permuted] = m_diskbuf_ram[disc_buffer_addr];
|
||||
}
|
||||
|
||||
disc_buffer_addr++;
|
||||
m_diskbuf_data_count--;
|
||||
disc_buffer_addr++;
|
||||
m_diskbuf_data_count--;
|
||||
|
||||
m_size_h++;
|
||||
if (m_size_h == 16)
|
||||
{
|
||||
m_size_h = 0;
|
||||
m_size_v++;
|
||||
if (m_size_v == 16)
|
||||
{
|
||||
m_size_v = 0;
|
||||
}
|
||||
}
|
||||
m_size_h++;
|
||||
if (m_size_h == 16)
|
||||
{
|
||||
m_size_h = 0;
|
||||
m_size_v++;
|
||||
if (m_size_v == 16)
|
||||
{
|
||||
m_size_v = 0;
|
||||
}
|
||||
}
|
||||
|
||||
bx++;
|
||||
m_bxlen_counter++;
|
||||
if (m_bxlen_counter == 0x1000)
|
||||
{
|
||||
bx = 0;
|
||||
by++;
|
||||
m_bxlen_counter = m_bxlen;
|
||||
m_bylen_counter++;
|
||||
//printf("\n");
|
||||
}
|
||||
bx++;
|
||||
m_bxlen_counter++;
|
||||
if (m_bxlen_counter == 0x1000)
|
||||
{
|
||||
bx = 0;
|
||||
by++;
|
||||
m_bxlen_counter = m_bxlen;
|
||||
m_bylen_counter++;
|
||||
//printf("\n");
|
||||
}
|
||||
}*/
|
||||
m_diskseq_complete_clk->adjust(attotime::from_msec(1));
|
||||
break;
|
||||
@ -1563,7 +1563,7 @@ void dpb7000_state::fdd_index_callback(floppy_image_device *floppy, int state)
|
||||
bit_idx++;
|
||||
//if ((bit_idx % 8) == 0)
|
||||
//{
|
||||
// printf("%02x ", (uint8_t)curr_window);
|
||||
// printf("%02x ", (uint8_t)curr_window);
|
||||
//}
|
||||
|
||||
if (!seen_pregap && curr_window == PREGAP_MARK)
|
||||
|
@ -480,7 +480,7 @@ void fp6000_state::fp6000(machine_config &config)
|
||||
|
||||
PALETTE(config, m_palette).set_entries(16);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx);
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx);
|
||||
|
||||
// audio hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
@ -1126,7 +1126,7 @@ IRQ_CALLBACK_MEMBER(galaxian_state::froggermc_audiocpu_irq_ack)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
uint8_t galaxian_state::frogf_ppi8255_r(offs_t offset)
|
||||
uint8_t galaxian_state::frogf_ppi8255_r(offs_t offset)
|
||||
{
|
||||
/* the decoding here is very simplistic, and you can address both simultaneously */
|
||||
uint8_t result = 0xff;
|
||||
|
@ -58,7 +58,7 @@ Biblical
|
||||
NOTE: Series 8 through 14 are "T3" sets as noted by the first 2 bytes of the questions ROMs.
|
||||
The question ROMs are 27256 (twice the size of previous question ROMs) and contain 3
|
||||
times the number of questions. ROM labels are yellow.
|
||||
|
||||
|
||||
|
||||
Series 8: (256K) Series 9: (256K) Series 10: (256K)
|
||||
---------------- ---------------- -----------------
|
||||
@ -88,13 +88,13 @@ NOTE: Series 15 and later are "T4" sets as noted by the first 2 bytes of the que
|
||||
pink.
|
||||
|
||||
|
||||
Series 15: (256K) Series 16: (256K) Series 17: (256K)
|
||||
Series 15: (256K) Series 16: (256K) Series 17: (256K)
|
||||
----------------- ----------------- -----------------
|
||||
Entertainment 2 Late TV Shows Night Time TV
|
||||
The Seventies The Eighties New Eighties
|
||||
Facts 2 People and Places History and Geography
|
||||
New Science 3 Potluck New Potpourri
|
||||
N F L Football N B A Basketball N H L Hockey
|
||||
N F L Football N B A Basketball N H L Hockey
|
||||
or alt: Adult Sex 6 or alt: Adult Sex 7 or alt: Adult Sex 8
|
||||
|
||||
|
||||
|
@ -62,8 +62,8 @@
|
||||
the High School Musical part has its own test mode which tests a different part of the ROM, use the same code but after selecting the game from menu
|
||||
|
||||
|
||||
--- the individual CS spaces could (and probably should?) be done with a bunch of extra memory spaces rather than the cs0_r / cs0_w etc. but that would mean yet
|
||||
another trip through the memory system for almost everything and at ~100Mhz that is slow.
|
||||
--- the individual CS spaces could (and probably should?) be done with a bunch of extra memory spaces rather than the cs0_r / cs0_w etc. but that would mean yet
|
||||
another trip through the memory system for almost everything and at ~100Mhz that is slow.
|
||||
|
||||
*/
|
||||
|
||||
|
@ -2,18 +2,18 @@
|
||||
// copyright-holders:David Haywood
|
||||
|
||||
/*
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
|
||||
----
|
||||
----
|
||||
|
||||
GPL16250 Mobigo support
|
||||
the original Mobigo is ROM+RAM config
|
||||
the Mobigo 2 is NAND+RAM config
|
||||
cartridges are compatible
|
||||
GPL16250 Mobigo support
|
||||
the original Mobigo is ROM+RAM config
|
||||
the Mobigo 2 is NAND+RAM config
|
||||
cartridges are compatible
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
|
@ -1,15 +1,15 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood
|
||||
/*
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
|
||||
----
|
||||
----
|
||||
|
||||
GPL16250 games using NAND + RAM configuration
|
||||
GPL16250 games using NAND + RAM configuration
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -1,15 +1,15 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood
|
||||
/*
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
|
||||
----
|
||||
----
|
||||
|
||||
GPL16250 games using ROM (no extra RAM) configuration
|
||||
GPL16250 games using ROM (no extra RAM) configuration
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
@ -329,7 +329,7 @@ static INPUT_PORTS_START( tkmag220 )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_DIPNAME( 0x0001, 0x0001, "IN2" ) // set 0x0001 and 0x0002 on to get a test mode (some of the ROM banks fail their test, but dumps were repeatable, should be verified on another unit)
|
||||
PORT_DIPNAME( 0x0001, 0x0001, "IN2" ) // set 0x0001 and 0x0002 on to get a test mode (some of the ROM banks fail their test, but dumps were repeatable, should be verified on another unit)
|
||||
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
||||
@ -403,8 +403,8 @@ ROM_END
|
||||
ROM_START( myac220 )
|
||||
//ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
|
||||
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 )
|
||||
|
||||
ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "myarcadegogamerportable.bin", 0x0000000, 0x8000000, BAD_DUMP CRC(c929a2fa) SHA1(e99007ccc45a268267b4ea0efaf22e3117f5a6bd) ) // again several sections seemed to be erased, was repaired with data from tkmag220, likely good but should be verified
|
||||
ROM_END
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood
|
||||
/*
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
|
||||
----
|
||||
----
|
||||
|
||||
GPL16250 games using ROM + RAM configuration
|
||||
GPL16250 games using ROM + RAM configuration
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
@ -324,7 +324,7 @@ void paccon_game_state::machine_reset()
|
||||
{
|
||||
jak_s500_game_state::machine_reset();
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x6593, 0x6593, read16smo_delegate(*this, FUNC(paccon_game_state::paccon_speedup_hack_r)));
|
||||
// install_speedup_hack(0x6593, 0x30033);
|
||||
// install_speedup_hack(0x6593, 0x30033);
|
||||
}
|
||||
|
||||
void jak_pf_game_state::machine_reset()
|
||||
|
@ -1,15 +1,15 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood
|
||||
/*
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
GPL16250 is the GeneralPlus / SunPlus part number
|
||||
GPAC800 is the JAKKS Pacific codename
|
||||
GMC384 / GCM420 is what is printed on the die
|
||||
|
||||
----
|
||||
----
|
||||
|
||||
GPL16250 games using SPI Flash + RAM configuration
|
||||
GPL16250 games using SPI Flash + RAM configuration
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
|
@ -29,24 +29,24 @@
|
||||
- MK5089N - DTMF generator
|
||||
- ...
|
||||
|
||||
high-resolution motherboard photo (enough to read chip numbers): http://deltacxx.insomnia247.nl/gridcompass/motherboard.jpg
|
||||
high-resolution motherboard photo (enough to read chip numbers): http://deltacxx.insomnia247.nl/gridcompass/motherboard.jpg
|
||||
|
||||
differences between models:
|
||||
- Compass 110x do not have GRiDROM slots.
|
||||
- Compass II (112x, 113x) have 4 of them.
|
||||
- Compass II 113x have 512x256 screen size
|
||||
- Compass 11x9 have 512K ram
|
||||
- Compass II have DMA addresses different from Compass 110x
|
||||
differences between models:
|
||||
- Compass 110x do not have GRiDROM slots.
|
||||
- Compass II (112x, 113x) have 4 of them.
|
||||
- Compass II 113x have 512x256 screen size
|
||||
- Compass 11x9 have 512K ram
|
||||
- Compass II have DMA addresses different from Compass 110x
|
||||
|
||||
to do:
|
||||
|
||||
- keyboard: decode and add the rest of keycodes
|
||||
keycode table can be found here on page A-2:
|
||||
http://deltacxx.insomnia247.nl/gridcompass/large_files/Yahoo%20group%20backup/RuGRiD-Laptop/files/6_GRiD-OS-Programming/3_GRiD-OS-Reference.pdf
|
||||
keycode table can be found here on page A-2:
|
||||
http://deltacxx.insomnia247.nl/gridcompass/large_files/Yahoo%20group%20backup/RuGRiD-Laptop/files/6_GRiD-OS-Programming/3_GRiD-OS-Reference.pdf
|
||||
- EAROM, RTC
|
||||
- serial port (incomplete), modem (incl. DTMF generator)
|
||||
- proper custom DMA logic timing
|
||||
- implement units other than 1101
|
||||
- proper custom DMA logic timing
|
||||
- implement units other than 1101
|
||||
|
||||
missing dumps:
|
||||
|
||||
@ -56,9 +56,9 @@
|
||||
- external floppy and hard disk (2101, 2102)
|
||||
|
||||
to boot CCOS 3.0.1:
|
||||
- convert GRIDOS.IMD to IMG format
|
||||
- convert GRIDOS.IMD to IMG format
|
||||
- create zero-filled 384K bubble memory image and attach it as -memcard
|
||||
- attach floppy with `-ieee_grid grid2102 -flop GRIDOS.IMG`
|
||||
- attach floppy with `-ieee_grid grid2102 -flop GRIDOS.IMG`
|
||||
- use grid1101 with 'ccos' ROM
|
||||
|
||||
***************************************************************************/
|
||||
|
@ -51,17 +51,17 @@ void gs6502_state::gs6502(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
M6502(config, m_maincpu, XTAL(1'843'200));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gs6502_state::gs6502_mem);
|
||||
|
||||
|
||||
// Configure UART (via m_acia)
|
||||
ACIA6850(config, m_acia, 0);
|
||||
m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
|
||||
// should this be reverse polarity?
|
||||
m_acia->irq_handler().set("rs232", FUNC(rs232_port_device::write_rts));
|
||||
|
||||
m_acia->irq_handler().set("rs232", FUNC(rs232_port_device::write_rts));
|
||||
|
||||
clock_device &acia_clock(CLOCK(config, "acia_clock", 1'843'200));
|
||||
acia_clock.signal_handler().set("acia", FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc));
|
||||
|
||||
|
||||
// Configure a "default terminal" to connect to the 6850, so we have a console
|
||||
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
|
||||
rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd));
|
||||
|
@ -51,17 +51,17 @@ void gs6809_state::gs6809(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
MC6809(config, m_maincpu, XTAL(7'372'800));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gs6809_state::gs6809_mem);
|
||||
|
||||
|
||||
// Configure UART (via m_acia)
|
||||
ACIA6850(config, m_acia, 0);
|
||||
m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
|
||||
// should this be reverse polarity?
|
||||
m_acia->irq_handler().set("rs232", FUNC(rs232_port_device::write_rts));
|
||||
|
||||
m_acia->irq_handler().set("rs232", FUNC(rs232_port_device::write_rts));
|
||||
|
||||
clock_device &acia_clock(CLOCK(config, "acia_clock", 7'372'800/4)); // E Clock from M6809
|
||||
acia_clock.signal_handler().set("acia", FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc));
|
||||
|
||||
|
||||
// Configure a "default terminal" to connect to the 6850, so we have a console
|
||||
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
|
||||
rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd));
|
||||
|
@ -3,7 +3,7 @@
|
||||
// http://searle.x10host.com/cpm/index.html
|
||||
// Written by Frank Palazzolo - frank@avoidspikes.com
|
||||
|
||||
// This driver uses a compact flash card as a hard disk device.
|
||||
// This driver uses a compact flash card as a hard disk device.
|
||||
// To create a virtual disk file, use the following (for a 128MB card):
|
||||
// chdman createhd -s 134217728 -o filename.chd
|
||||
// (or use -s 67108864 for 64MB card)
|
||||
@ -56,7 +56,7 @@ protected:
|
||||
void gscpm_state::gscpm_mem(address_map &map)
|
||||
{
|
||||
//map(0x0000, 0x3fff).rom("maincpu"); // This is ROM after reset, and RAM is switched in when CP/M is booted
|
||||
// (will install handlers dynamically)
|
||||
// (will install handlers dynamically)
|
||||
map(0x4000, 0xffff).ram();
|
||||
}
|
||||
|
||||
@ -166,13 +166,13 @@ void gscpm_state::gscpm(machine_config &config)
|
||||
m_sio->out_txdb_callback().set("rs232", FUNC(rs232_port_device::write_txd));
|
||||
m_sio->out_rtsb_callback().set("rs232", FUNC(rs232_port_device::write_rts));
|
||||
m_sio->out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0); // Connect interrupt pin to our Z80 INT line
|
||||
|
||||
|
||||
clock_device &sio_clock(CLOCK(config, "sio_clock", 7'372'800));
|
||||
sio_clock.signal_handler().set("sio", FUNC(z80sio_device::txca_w));
|
||||
sio_clock.signal_handler().append("sio", FUNC(z80sio_device::rxca_w));
|
||||
sio_clock.signal_handler().append("sio", FUNC(z80sio_device::txcb_w));
|
||||
sio_clock.signal_handler().append("sio", FUNC(z80sio_device::rxcb_w));
|
||||
|
||||
|
||||
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
|
||||
rs232.rxd_handler().set("sio", FUNC(z80sio_device::rxb_w));
|
||||
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); // must be below the DEVICE_INPUT_DEFAULTS_START block
|
||||
|
@ -20,7 +20,7 @@ class gsz80_state : public driver_device
|
||||
public:
|
||||
gsz80_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu") // Tag name for Z80 is "maincpu"
|
||||
, m_maincpu(*this, "maincpu") // Tag name for Z80 is "maincpu"
|
||||
, m_acia(*this, "acia") // Tag name for UART is "acia"
|
||||
{ }
|
||||
|
||||
@ -64,23 +64,23 @@ DEVICE_INPUT_DEFAULTS_END
|
||||
void gsz80_state::gsz80(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
|
||||
|
||||
// Configure member Z80 (via m_maincpu)
|
||||
Z80(config, m_maincpu, XTAL(7'372'800));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gsz80_state::gsz80_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &gsz80_state::gsz80_io);
|
||||
|
||||
|
||||
// Configure UART (via m_acia)
|
||||
ACIA6850(config, m_acia, 0);
|
||||
m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
|
||||
m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
|
||||
m_acia->irq_handler().set_inputline("maincpu", INPUT_LINE_IRQ0); // Connect interrupt pin to our Z80 INT line
|
||||
|
||||
|
||||
// Create a clock device to connect to the transmit and receive clock on the 6850
|
||||
clock_device &acia_clock(CLOCK(config, "acia_clock", 7'372'800));
|
||||
acia_clock.signal_handler().set("acia", FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc));
|
||||
|
||||
|
||||
// Configure a "default terminal" to connect to the 6850, so we have a console
|
||||
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
|
||||
rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd));
|
||||
|
@ -599,8 +599,8 @@ void gticlub_state::gn680_memmap(address_map &map)
|
||||
map(0x000000, 0x01ffff).rom();
|
||||
map(0x200000, 0x203fff).ram();
|
||||
map(0x300000, 0x300001).w(FUNC(gticlub_state::gn680_sysctrl_w));
|
||||
// map(0x310000, 0x311fff).nopw(); //056230 regs?
|
||||
// map(0x312000, 0x313fff).nopw(); //056230 ram?
|
||||
// map(0x310000, 0x311fff).nopw(); //056230 regs?
|
||||
// map(0x312000, 0x313fff).nopw(); //056230 ram?
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -232,7 +232,7 @@ void homelab3_state::homelab3_mem(address_map &map)
|
||||
map(0x4000, 0xcfff).ram();
|
||||
map(0xe800, 0xefff).r(FUNC(homelab3_state::exxx_r));
|
||||
map(0xf800, 0xffff).lr8(NAME([this] (offs_t offset) { if(m_ramhere) return m_ram[offset]; else return m_vram[offset]; }))
|
||||
.lw8(NAME([this] (offs_t offset, u8 data) { if(m_ramhere) m_ram[offset]=data; else m_vram[offset]=data; }));
|
||||
.lw8(NAME([this] (offs_t offset, u8 data) { if(m_ramhere) m_ram[offset]=data; else m_vram[offset]=data; }));
|
||||
}
|
||||
|
||||
void homelab3_state::homelab3_io(address_map &map)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user